diff --git a/.circleci/config.yml b/.circleci/config.yml index 8912109c5..2c58f395a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,7 +11,7 @@ jobs: steps: - run: | - sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.8/solc-static-linux -O /usr/local/bin/solc + sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.12/solc-static-linux -O /usr/local/bin/solc sudo chmod +x /usr/local/bin/solc - checkout - restore_cache: @@ -43,7 +43,7 @@ jobs: - attach_workspace: at: ~/repo - run: mkdir ~/junit - - run: TSC_ARGS="" MOCHA_FILE=~/junit/test-results.xml script/test + - run: MOCHA_FILE=~/junit/test-results.xml script/test - store_test_results: path: ~/junit - store_artifacts: @@ -61,24 +61,11 @@ jobs: keys: - v2-dependencies-{{ checksum "package.json" }} - v2-dependencies- - - restore_cache: - keys: - - v2-scenario/dependencies-{{ checksum "scenario/package.json" }} - - v2-scenario/dependencies- - run: yarn install - - run: cd scenario && yarn install - - run: - name: Ganache - command: script/ganache-coverage - background: true - save_cache: paths: - node_modules key: v2-dependencies-{{ checksum "package.json" }} - - save_cache: - paths: - - scenario/node_modules - key: v2-scenario-dependencies-{{ checksum "scenario/package.json" }} - attach_workspace: at: ~/repo - run: @@ -110,12 +97,12 @@ jobs: keys: - v2-scenario/dependencies-{{ checksum "scenario/package.json" }} - v2-scenario/dependencies- + - run: + | + sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.12/solc-static-linux -O /usr/local/bin/solc + sudo chmod +x /usr/local/bin/solc - run: yarn install - run: cd scenario && yarn install - - run: - name: Ganache - command: script/ganache-coverage - background: true - save_cache: paths: - node_modules diff --git a/.gitignore b/.gitignore index 8f47fc2bc..54d970931 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ networks/coverage.json networks/coverage-abi.json networks/development.json networks/development-abi.json +networks/coverage-contracts/* +networks/test-contracts/* networks/*-contracts.json networks/*-history networks/*-settings.json diff --git a/.solcover.js b/.solcover.js index 20908fd23..9dd166f41 100644 --- a/.solcover.js +++ b/.solcover.js @@ -1,8 +1,26 @@ +const {execSync} = require('child_process'); +async function moveCoverage(config) { + execSync('mv ./.coverage_artifacts/contracts ./networks/coverage-contracts'); +} + +async function moveCoverageBack() { + execSync('mv ./networks/coverage-contracts ./.coverage_artifacts/contracts'); +} + module.exports = { port: 8555, - norpc: true, - testCommand: process.env['TEST_COMMAND'] || 'NETWORK=coverage script/test', - skipFiles: ['FormalMoneyMarket.sol', 'test_contracts'].concat( + providerOpts: + { // See example coverage settings at https://github.com/sc-forks/solidity-coverage + gas: 0xfffffff, + gasPrice: 0x01 + }, + mocha: { + enableTimeouts: false, + grep: /@gas|@no-cov/, + invert: true + }, + onCompileComplete: moveCoverage, + onTestsComplete: moveCoverageBack, + skipFiles: ['test'].concat( process.env['SKIP_UNITROLLER'] ? ['Unitroller.sol'] : []), - deepSkip: true }; diff --git a/.soliumrc.json b/.soliumrc.json index bbc39e058..ea58a045c 100644 --- a/.soliumrc.json +++ b/.soliumrc.json @@ -8,9 +8,12 @@ "error", "double" ], - "indentation": [ + "indentation": "off", + "max-len": [ "error", - 4 - ] + 200 + ], + "security/no-inline-assembly": "off", + "security/no-low-level-calls": "off" } } diff --git a/contracts/CErc20.sol b/contracts/CErc20.sol index 0fd05d7cc..0fcf66e24 100644 --- a/contracts/CErc20.sol +++ b/contracts/CErc20.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CToken.sol"; @@ -7,15 +7,9 @@ import "./CToken.sol"; * @notice CTokens which wrap an EIP-20 underlying * @author Compound */ -contract CErc20 is CToken { - - /** - * @notice Underlying asset for this CToken - */ - address public underlying; - +contract CErc20 is CToken, CErc20Interface { /** - * @notice Construct a new money market + * @notice Initialize the new money market * @param underlying_ The address of the underlying asset * @param comptroller_ The address of the Comptroller * @param interestRateModel_ The address of the interest rate model @@ -24,18 +18,19 @@ contract CErc20 is CToken { * @param symbol_ ERC-20 symbol of this token * @param decimals_ ERC-20 decimal precision of this token */ - constructor(address underlying_, - ComptrollerInterface comptroller_, - InterestRateModel interestRateModel_, - uint initialExchangeRateMantissa_, - string memory name_, - string memory symbol_, - uint8 decimals_, - address payable admin_) public - CToken(comptroller_, interestRateModel_, initialExchangeRateMantissa_, name_, symbol_, decimals_, admin_) { - // Set underlying + function initialize(address underlying_, + ComptrollerInterface comptroller_, + InterestRateModel interestRateModel_, + uint initialExchangeRateMantissa_, + string memory name_, + string memory symbol_, + uint8 decimals_) public { + // CToken initialize does the bulk of the work + super.initialize(comptroller_, interestRateModel_, initialExchangeRateMantissa_, name_, symbol_, decimals_); + + // Set underlying and sanity check it underlying = underlying_; - EIP20Interface(underlying).totalSupply(); // Sanity check the underlying + EIP20Interface(underlying).totalSupply(); } /*** User Interface ***/ @@ -47,7 +42,8 @@ contract CErc20 is CToken { * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) */ function mint(uint mintAmount) external returns (uint) { - return mintInternal(mintAmount); + (uint err,) = mintInternal(mintAmount); + return err; } /** @@ -85,7 +81,8 @@ contract CErc20 is CToken { * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) */ function repayBorrow(uint repayAmount) external returns (uint) { - return repayBorrowInternal(repayAmount); + (uint err,) = repayBorrowInternal(repayAmount); + return err; } /** @@ -95,19 +92,30 @@ contract CErc20 is CToken { * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) */ function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint) { - return repayBorrowBehalfInternal(borrower, repayAmount); + (uint err,) = repayBorrowBehalfInternal(borrower, repayAmount); + return err; } /** * @notice The sender liquidates the borrowers collateral. * The collateral seized is transferred to the liquidator. * @param borrower The borrower of this cToken to be liquidated - * @param cTokenCollateral The market in which to seize collateral from the borrower * @param repayAmount The amount of the underlying borrowed asset to repay + * @param cTokenCollateral The market in which to seize collateral from the borrower * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) */ - function liquidateBorrow(address borrower, uint repayAmount, CToken cTokenCollateral) external returns (uint) { - return liquidateBorrowInternal(borrower, repayAmount, cTokenCollateral); + function liquidateBorrow(address borrower, uint repayAmount, CTokenInterface cTokenCollateral) external returns (uint) { + (uint err,) = liquidateBorrowInternal(borrower, repayAmount, cTokenCollateral); + return err; + } + + /** + * @notice The sender adds to reserves. + * @param addAmount The amount fo underlying token to add as reserves + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function _addReserves(uint addAmount) external returns (uint) { + return _addReservesInternal(addAmount); } /*** Safe Token ***/ @@ -141,44 +149,44 @@ contract CErc20 is CToken { } /** - * @dev Similar to EIP20 transfer, except it handles a False result from `transferFrom` and returns an explanatory - * error code rather than reverting. If caller has not called `checkTransferIn`, this may revert due to - * insufficient balance or insufficient allowance. If caller has called `checkTransferIn` prior to this call, - * and it returned Error.NO_ERROR, this should not revert in normal conditions. + * @dev Similar to EIP20 transfer, except it handles a False result from `transferFrom` reverts in that case. + * If caller has not called `checkTransferIn`, this may revert due to insufficient balance or insufficient + * allowance. If caller has called `checkTransferIn` prior to this call, and it returned Error.NO_ERROR, + * this should not revert in normal conditions. This function returns the actual amount received, + * with may be less than `amount` if there is a fee attached with the transfer. * * Note: This wrapper safely handles non-standard ERC-20 tokens that do not return a value. * See here: https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca */ - function doTransferIn(address from, uint amount) internal returns (Error) { + function doTransferIn(address from, uint amount) internal returns (uint) { EIP20NonStandardInterface token = EIP20NonStandardInterface(underlying); - bool result; - + uint balanceBefore = EIP20Interface(underlying).balanceOf(address(this)); token.transferFrom(from, address(this), amount); - // solium-disable-next-line security/no-inline-assembly + bool success; assembly { switch returndatasize() - case 0 { // This is a non-standard ERC-20 - result := not(0) // set result to true + case 0 { // This is a non-standard ERC-20 + success := not(0) // set success to true } - case 32 { // This is a complaint ERC-20 + case 32 { // This is a compliant ERC-20 returndatacopy(0, 0, 32) - result := mload(0) // Set `result = returndata` of external call + success := mload(0) // Set `success = returndata` of external call } - default { // This is an excessively non-compliant ERC-20, revert. + default { // This is an excessively non-compliant ERC-20, revert. revert(0, 0) } } + require(success, "TOKEN_TRANSFER_IN_FAILED"); - if (!result) { - return Error.TOKEN_TRANSFER_IN_FAILED; - } - - return Error.NO_ERROR; + // Calculate the amount that was *actually* transferred + uint balanceAfter = EIP20Interface(underlying).balanceOf(address(this)); + require(balanceAfter >= balanceBefore, "TOKEN_TRANSFER_IN_OVERFLOW"); + return balanceAfter - balanceBefore; // underflow already checked above, just subtract } /** - * @dev Similar to EIP20 transfer, except it handles a False result from `transfer` and returns an explanatory + * @dev Similar to EIP20 transfer, except it handles a False success from `transfer` and returns an explanatory * error code rather than reverting. If caller has not called checked protocol's balance, this may revert due to * insufficient cash held in this contract. If caller has checked protocol's balance prior to this call, and verified * it is >= amount, this should not revert in normal conditions. @@ -186,31 +194,24 @@ contract CErc20 is CToken { * Note: This wrapper safely handles non-standard ERC-20 tokens that do not return a value. * See here: https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca */ - function doTransferOut(address payable to, uint amount) internal returns (Error) { + function doTransferOut(address payable to, uint amount) internal { EIP20NonStandardInterface token = EIP20NonStandardInterface(underlying); - bool result; - token.transfer(to, amount); - // solium-disable-next-line security/no-inline-assembly + bool success; assembly { switch returndatasize() case 0 { // This is a non-standard ERC-20 - result := not(0) // set result to true + success := not(0) // set success to true } case 32 { // This is a complaint ERC-20 returndatacopy(0, 0, 32) - result := mload(0) // Set `result = returndata` of external call + success := mload(0) // Set `success = returndata` of external call } default { // This is an excessively non-compliant ERC-20, revert. revert(0, 0) } } - - if (!result) { - return Error.TOKEN_TRANSFER_OUT_FAILED; - } - - return Error.NO_ERROR; + require(success, "TOKEN_TRANSFER_OUT_FAILED"); } } diff --git a/contracts/CErc20Delegate.sol b/contracts/CErc20Delegate.sol new file mode 100644 index 000000000..d2cc77456 --- /dev/null +++ b/contracts/CErc20Delegate.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.5.12; + +import "./CErc20.sol"; + +/** + * @title Compound's CErc20Delegate Contract + * @notice CTokens which wrap an EIP-20 underlying and are delegated to + * @author Compound + */ +contract CErc20Delegate is CErc20, CDelegateInterface { + /** + * @notice Construct an empty delegate + */ + constructor() public {} + + /** + * @notice Called by the delegator on a delegate to initialize it for duty + * @param data The encoded bytes data for any initialization + */ + function _becomeImplementation(bytes memory data) public { + // Shh -- currently unused + data; + + // Shh -- we don't ever want this hook to be marked pure + if (false) { + implementation = address(0); + } + + require(msg.sender == admin, "only the admin may call _becomeImplementation"); + } + + /** + * @notice Called by the delegator on a delegate to forfeit its responsibility + */ + function _resignImplementation() public { + // Shh -- we don't ever want this hook to be marked pure + if (false) { + implementation = address(0); + } + + require(msg.sender == admin, "only the admin may call _resignImplementation"); + } +} diff --git a/contracts/CErc20Delegator.sol b/contracts/CErc20Delegator.sol new file mode 100644 index 000000000..5a6d6b336 --- /dev/null +++ b/contracts/CErc20Delegator.sol @@ -0,0 +1,467 @@ +pragma solidity ^0.5.12; + +import "./CTokenInterfaces.sol"; + +/** + * @title Compound's CErc20Delegator Contract + * @notice CTokens which wrap an EIP-20 underlying and delegate to an implementation + * @author Compound + */ +contract CErc20Delegator is CTokenInterface, CErc20Interface, CDelegatorInterface { + /** + * @notice Construct a new money market + * @param underlying_ The address of the underlying asset + * @param comptroller_ The address of the Comptroller + * @param interestRateModel_ The address of the interest rate model + * @param initialExchangeRateMantissa_ The initial exchange rate, scaled by 1e18 + * @param name_ ERC-20 name of this token + * @param symbol_ ERC-20 symbol of this token + * @param decimals_ ERC-20 decimal precision of this token + * @param admin_ Address of the administrator of this token + * @param implementation_ The address of the implementation the contract delegates to + * @param becomeImplementationData The encoded args for becomeImplmenetation + */ + constructor(address underlying_, + ComptrollerInterface comptroller_, + InterestRateModel interestRateModel_, + uint initialExchangeRateMantissa_, + string memory name_, + string memory symbol_, + uint8 decimals_, + address payable admin_, + address implementation_, + bytes memory becomeImplementationData) public { + // Creator of the contract is admin during initialization + admin = msg.sender; + + // First delegate gets to initialize the delegator (i.e. storage contract) + delegateTo(implementation_, abi.encodeWithSignature("initialize(address,address,address,uint256,string,string,uint8)", + underlying_, + comptroller_, + interestRateModel_, + initialExchangeRateMantissa_, + name_, + symbol_, + decimals_)); + + // New implementations always get set via the settor (post-initialize) + _setImplementation(implementation_, false, becomeImplementationData); + + // Set the proper admin now that initialization is done + admin = admin_; + } + + /** + * @notice Called by the admin to update the implementation of the delegator + * @param implementation_ The address of the new implementation for delegation + * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation + * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation + */ + function _setImplementation(address implementation_, bool allowResign, bytes memory becomeImplementationData) public { + require(msg.sender == admin, "CErc20Delegator::_setImplementation: Caller must be admin"); + + if (allowResign) { + delegateToImplementation(abi.encodeWithSignature("_resignImplementation()")); + } + + address oldImplementation = implementation; + implementation = implementation_; + + delegateToImplementation(abi.encodeWithSignature("_becomeImplementation(bytes)", becomeImplementationData)); + + emit NewImplementation(oldImplementation, implementation); + } + + /** + * @notice Sender supplies assets into the market and receives cTokens in exchange + * @dev Accrues interest whether or not the operation succeeds, unless reverted + * @param mintAmount The amount of the underlying asset to supply + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function mint(uint mintAmount) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("mint(uint256)", mintAmount)); + return abi.decode(data, (uint)); + } + + /** + * @notice Sender redeems cTokens in exchange for the underlying asset + * @dev Accrues interest whether or not the operation succeeds, unless reverted + * @param redeemTokens The number of cTokens to redeem into underlying + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function redeem(uint redeemTokens) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("redeem(uint256)", redeemTokens)); + return abi.decode(data, (uint)); + } + + /** + * @notice Sender redeems cTokens in exchange for a specified amount of underlying asset + * @dev Accrues interest whether or not the operation succeeds, unless reverted + * @param redeemAmount The amount of underlying to redeem + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function redeemUnderlying(uint redeemAmount) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("redeemUnderlying(uint256)", redeemAmount)); + return abi.decode(data, (uint)); + } + + /** + * @notice Sender borrows assets from the protocol to their own address + * @param borrowAmount The amount of the underlying asset to borrow + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function borrow(uint borrowAmount) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("borrow(uint256)", borrowAmount)); + return abi.decode(data, (uint)); + } + + /** + * @notice Sender repays their own borrow + * @param repayAmount The amount to repay + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function repayBorrow(uint repayAmount) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("repayBorrow(uint256)", repayAmount)); + return abi.decode(data, (uint)); + } + + /** + * @notice Sender repays a borrow belonging to borrower + * @param borrower the account with the debt being payed off + * @param repayAmount The amount to repay + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("repayBorrowBehalf(address,uint256)", borrower, repayAmount)); + return abi.decode(data, (uint)); + } + + /** + * @notice The sender liquidates the borrowers collateral. + * The collateral seized is transferred to the liquidator. + * @param borrower The borrower of this cToken to be liquidated + * @param cTokenCollateral The market in which to seize collateral from the borrower + * @param repayAmount The amount of the underlying borrowed asset to repay + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function liquidateBorrow(address borrower, uint repayAmount, CTokenInterface cTokenCollateral) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("liquidateBorrow(address,uint256,address)", borrower, repayAmount, cTokenCollateral)); + return abi.decode(data, (uint)); + } + + /** + * @notice Transfer `amount` tokens from `msg.sender` to `dst` + * @param dst The address of the destination account + * @param amount The number of tokens to transfer + * @return Whether or not the transfer succeeded + */ + function transfer(address dst, uint amount) external returns (bool) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("transfer(address,uint256)", dst, amount)); + return abi.decode(data, (bool)); + } + + /** + * @notice Transfer `amount` tokens from `src` to `dst` + * @param src The address of the source account + * @param dst The address of the destination account + * @param amount The number of tokens to transfer + * @return Whether or not the transfer succeeded + */ + function transferFrom(address src, address dst, uint256 amount) external returns (bool) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("transferFrom(address,address,uint256)", src, dst, amount)); + return abi.decode(data, (bool)); + } + + /** + * @notice Approve `spender` to transfer up to `amount` from `src` + * @dev This will overwrite the approval amount for `spender` + * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) + * @param spender The address of the account which may transfer tokens + * @param amount The number of tokens that are approved (-1 means infinite) + * @return Whether or not the approval succeeded + */ + function approve(address spender, uint256 amount) external returns (bool) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("approve(address,uint256)", spender, amount)); + return abi.decode(data, (bool)); + } + + /** + * @notice Get the current allowance from `owner` for `spender` + * @param owner The address of the account which owns the tokens to be spent + * @param spender The address of the account which may transfer tokens + * @return The number of tokens allowed to be spent (-1 means infinite) + */ + function allowance(address owner, address spender) external view returns (uint) { + bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("allowance(address,address)", owner, spender)); + return abi.decode(data, (uint)); + } + + /** + * @notice Get the token balance of the `owner` + * @param owner The address of the account to query + * @return The number of tokens owned by `owner` + */ + function balanceOf(address owner) external view returns (uint) { + bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("balanceOf(address)", owner)); + return abi.decode(data, (uint)); + } + + /** + * @notice Get the underlying balance of the `owner` + * @dev This also accrues interest in a transaction + * @param owner The address of the account to query + * @return The amount of underlying owned by `owner` + */ + function balanceOfUnderlying(address owner) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("balanceOfUnderlying(address)", owner)); + return abi.decode(data, (uint)); + } + + /** + * @notice Get a snapshot of the account's balances, and the cached exchange rate + * @dev This is used by comptroller to more efficiently perform liquidity checks. + * @param account Address of the account to snapshot + * @return (possible error, token balance, borrow balance, exchange rate mantissa) + */ + function getAccountSnapshot(address account) external view returns (uint, uint, uint, uint) { + bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("getAccountSnapshot(address)", account)); + return abi.decode(data, (uint, uint, uint, uint)); + } + + /** + * @notice Returns the current per-block borrow interest rate for this cToken + * @return The borrow interest rate per block, scaled by 1e18 + */ + function borrowRatePerBlock() external view returns (uint) { + bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("borrowRatePerBlock()")); + return abi.decode(data, (uint)); + } + + /** + * @notice Returns the current per-block supply interest rate for this cToken + * @return The supply interest rate per block, scaled by 1e18 + */ + function supplyRatePerBlock() external view returns (uint) { + bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("supplyRatePerBlock()")); + return abi.decode(data, (uint)); + } + + /** + * @notice Returns the current total borrows plus accrued interest + * @return The total borrows with interest + */ + function totalBorrowsCurrent() external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("totalBorrowsCurrent()")); + return abi.decode(data, (uint)); + } + + /** + * @notice Accrue interest to updated borrowIndex and then calculate account's borrow balance using the updated borrowIndex + * @param account The address whose balance should be calculated after updating borrowIndex + * @return The calculated balance + */ + function borrowBalanceCurrent(address account) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("borrowBalanceCurrent(address)", account)); + return abi.decode(data, (uint)); + } + + /** + * @notice Return the borrow balance of account based on stored data + * @param account The address whose balance should be calculated + * @return The calculated balance + */ + function borrowBalanceStored(address account) public view returns (uint) { + bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("borrowBalanceStored(address)", account)); + return abi.decode(data, (uint)); + } + + /** + * @notice Accrue interest then return the up-to-date exchange rate + * @return Calculated exchange rate scaled by 1e18 + */ + function exchangeRateCurrent() public returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("exchangeRateCurrent()")); + return abi.decode(data, (uint)); + } + + /** + * @notice Calculates the exchange rate from the underlying to the CToken + * @dev This function does not accrue interest before calculating the exchange rate + * @return Calculated exchange rate scaled by 1e18 + */ + function exchangeRateStored() public view returns (uint) { + bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("exchangeRateStored()")); + return abi.decode(data, (uint)); + } + + /** + * @notice Get cash balance of this cToken in the underlying asset + * @return The quantity of underlying asset owned by this contract + */ + function getCash() external view returns (uint) { + bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("getCash()")); + return abi.decode(data, (uint)); + } + + /** + * @notice Applies accrued interest to total borrows and reserves. + * @dev This calculates interest accrued from the last checkpointed block + * up to the current block and writes new checkpoint to storage. + */ + function accrueInterest() public returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("accrueInterest()")); + return abi.decode(data, (uint)); + } + + /** + * @notice Transfers collateral tokens (this market) to the liquidator. + * @dev Will fail unless called by another cToken during the process of liquidation. + * Its absolutely critical to use msg.sender as the borrowed cToken and not a parameter. + * @param liquidator The account receiving seized collateral + * @param borrower The account having collateral seized + * @param seizeTokens The number of cTokens to seize + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("seize(address,address,uint256)", liquidator, borrower, seizeTokens)); + return abi.decode(data, (uint)); + } + + /*** Admin Functions ***/ + + /** + * @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer. + * @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer. + * @param newPendingAdmin New pending admin. + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function _setPendingAdmin(address payable newPendingAdmin) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("_setPendingAdmin(address)", newPendingAdmin)); + return abi.decode(data, (uint)); + } + + /** + * @notice Sets a new comptroller for the market + * @dev Admin function to set a new comptroller + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function _setComptroller(ComptrollerInterface newComptroller) public returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("_setComptroller(address)", newComptroller)); + return abi.decode(data, (uint)); + } + + /** + * @notice accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh + * @dev Admin function to accrue interest and set a new reserve factor + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function _setReserveFactor(uint newReserveFactorMantissa) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("_setReserveFactor(uint256)", newReserveFactorMantissa)); + return abi.decode(data, (uint)); + } + + /** + * @notice Accepts transfer of admin rights. msg.sender must be pendingAdmin + * @dev Admin function for pending admin to accept role and update admin + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function _acceptAdmin() external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("_acceptAdmin()")); + return abi.decode(data, (uint)); + } + + /** + * @notice Accrues interest and adds reserves by transferring from admin + * @param addAmount Amount of reserves to add + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function _addReserves(uint addAmount) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("_addReserves(uint256)", addAmount)); + return abi.decode(data, (uint)); + } + + /** + * @notice Accrues interest and reduces reserves by transferring to admin + * @param reduceAmount Amount of reduction to reserves + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function _reduceReserves(uint reduceAmount) external returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("_reduceReserves(uint256)", reduceAmount)); + return abi.decode(data, (uint)); + } + + /** + * @notice Accrues interest and updates the interest rate model using _setInterestRateModelFresh + * @dev Admin function to accrue interest and update the interest rate model + * @param newInterestRateModel the new interest rate model to use + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function _setInterestRateModel(InterestRateModel newInterestRateModel) public returns (uint) { + bytes memory data = delegateToImplementation(abi.encodeWithSignature("_setInterestRateModel(address)", newInterestRateModel)); + return abi.decode(data, (uint)); + } + + /** + * @notice Internal method to delegate execution to another contract + * @dev It returns to the external caller whatever the implementation returns or forwards reverts + * @param callee The contract to delegatecall + * @param data The raw data to delegatecall + * @return The returned bytes from the delegatecall + */ + function delegateTo(address callee, bytes memory data) internal returns (bytes memory) { + (bool success, bytes memory returnData) = callee.delegatecall(data); + assembly { + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize) + } + } + return returnData; + } + + /** + * @notice Delegates execution to the implementation contract + * @dev It returns to the external caller whatever the implementation returns or forwards reverts + * @param data The raw data to delegatecall + * @return The returned bytes from the delegatecall + */ + function delegateToImplementation(bytes memory data) public returns (bytes memory) { + return delegateTo(implementation, data); + } + + /** + * @notice Delegates execution to an implementation contract + * @dev It returns to the external caller whatever the implementation returns or forwards reverts + * There are an additional 2 prefix uints from the wrapper returndata, which we ignore since we make an extra hop. + * @param data The raw data to delegatecall + * @return The returned bytes from the delegatecall + */ + function delegateToViewImplementation(bytes memory data) public view returns (bytes memory) { + (bool success, bytes memory returnData) = address(this).staticcall(abi.encodeWithSignature("delegateToImplementation(bytes)", data)); + assembly { + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize) + } + } + return abi.decode(returnData, (bytes)); + } + + /** + * @notice Delegates execution to an implementation contract + * @dev It returns to the external caller whatever the implementation returns or forwards reverts + */ + function () external payable { + require(msg.value == 0,"CErc20Delegator:fallback: cannot send value to fallback"); + + // delegate all other functions to current implementation + (bool success, ) = implementation.delegatecall(msg.data); + + assembly { + let free_mem_ptr := mload(0x40) + returndatacopy(free_mem_ptr, 0, returndatasize) + + switch success + case 0 { revert(free_mem_ptr, returndatasize) } + default { return(free_mem_ptr, returndatasize) } + } + } +} diff --git a/contracts/CErc20Immutable.sol b/contracts/CErc20Immutable.sol new file mode 100644 index 000000000..f5b669d61 --- /dev/null +++ b/contracts/CErc20Immutable.sol @@ -0,0 +1,39 @@ +pragma solidity ^0.5.12; + +import "./CErc20.sol"; + +/** + * @title Compound's CErc20Immutable Contract + * @notice CTokens which wrap an EIP-20 underlying and are immutable + * @author Compound + */ +contract CErc20Immutable is CErc20 { + /** + * @notice Construct a new money market + * @param underlying_ The address of the underlying asset + * @param comptroller_ The address of the Comptroller + * @param interestRateModel_ The address of the interest rate model + * @param initialExchangeRateMantissa_ The initial exchange rate, scaled by 1e18 + * @param name_ ERC-20 name of this token + * @param symbol_ ERC-20 symbol of this token + * @param decimals_ ERC-20 decimal precision of this token + * @param admin_ Address of the administrator of this token + */ + constructor(address underlying_, + ComptrollerInterface comptroller_, + InterestRateModel interestRateModel_, + uint initialExchangeRateMantissa_, + string memory name_, + string memory symbol_, + uint8 decimals_, + address payable admin_) public { + // Creator of the contract is admin during initialization + admin = msg.sender; + + // Initialize the market + initialize(underlying_, comptroller_, interestRateModel_, initialExchangeRateMantissa_, name_, symbol_, decimals_); + + // Set the proper admin now that initialization is done + admin = admin_; + } +} diff --git a/contracts/CEther.sol b/contracts/CEther.sol index adf148c4d..f234fd347 100644 --- a/contracts/CEther.sol +++ b/contracts/CEther.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CToken.sol"; @@ -16,6 +16,7 @@ contract CEther is CToken { * @param name_ ERC-20 name of this token * @param symbol_ ERC-20 symbol of this token * @param decimals_ ERC-20 decimal precision of this token + * @param admin_ Address of the administrator of this token */ constructor(ComptrollerInterface comptroller_, InterestRateModel interestRateModel_, @@ -23,8 +24,16 @@ contract CEther is CToken { string memory name_, string memory symbol_, uint8 decimals_, - address payable admin_) public - CToken(comptroller_, interestRateModel_, initialExchangeRateMantissa_, name_, symbol_, decimals_, admin_) {} + address payable admin_) public { + // Creator of the contract is admin during initialization + admin = msg.sender; + + initialize(comptroller_, interestRateModel_, initialExchangeRateMantissa_, name_, symbol_, decimals_); + + // Set the proper admin now that initialization is done + admin = admin_; + } + /*** User Interface ***/ @@ -33,7 +42,8 @@ contract CEther is CToken { * @dev Reverts upon any failure */ function mint() external payable { - requireNoError(mintInternal(msg.value), "mint failed"); + (uint err,) = mintInternal(msg.value); + requireNoError(err, "mint failed"); } /** @@ -70,7 +80,8 @@ contract CEther is CToken { * @dev Reverts upon any failure */ function repayBorrow() external payable { - requireNoError(repayBorrowInternal(msg.value), "repayBorrow failed"); + (uint err,) = repayBorrowInternal(msg.value); + requireNoError(err, "repayBorrow failed"); } /** @@ -79,7 +90,8 @@ contract CEther is CToken { * @param borrower the account with the debt being payed off */ function repayBorrowBehalf(address borrower) external payable { - requireNoError(repayBorrowBehalfInternal(borrower, msg.value), "repayBorrowBehalf failed"); + (uint err,) = repayBorrowBehalfInternal(borrower, msg.value); + requireNoError(err, "repayBorrowBehalf failed"); } /** @@ -90,14 +102,16 @@ contract CEther is CToken { * @param cTokenCollateral The market in which to seize collateral from the borrower */ function liquidateBorrow(address borrower, CToken cTokenCollateral) external payable { - requireNoError(liquidateBorrowInternal(borrower, msg.value, cTokenCollateral), "liquidateBorrow failed"); + (uint err,) = liquidateBorrowInternal(borrower, msg.value, cTokenCollateral); + requireNoError(err, "liquidateBorrow failed"); } /** * @notice Send Ether to CEther to mint */ function () external payable { - requireNoError(mintInternal(msg.value), "mint failed"); + (uint err,) = mintInternal(msg.value); + requireNoError(err, "mint failed"); } /*** Safe Token ***/ @@ -131,19 +145,18 @@ contract CEther is CToken { * @notice Perform the actual transfer in, which is a no-op * @param from Address sending the Ether * @param amount Amount of Ether being sent - * @return Success + * @return The actual amount of Ether transferred */ - function doTransferIn(address from, uint amount) internal returns (Error) { + function doTransferIn(address from, uint amount) internal returns (uint) { // Sanity checks require(msg.sender == from, "sender mismatch"); require(msg.value == amount, "value mismatch"); - return Error.NO_ERROR; + return amount; } - function doTransferOut(address payable to, uint amount) internal returns (Error) { + function doTransferOut(address payable to, uint amount) internal { /* Send the Ether, with minimal gas and revert on failure */ to.transfer(amount); - return Error.NO_ERROR; } function requireNoError(uint errCode, string memory message) internal pure { diff --git a/contracts/CToken.sol b/contracts/CToken.sol index fd5e88b31..f9bc314df 100644 --- a/contracts/CToken.sol +++ b/contracts/CToken.sol @@ -1,11 +1,11 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./ComptrollerInterface.sol"; +import "./CTokenInterfaces.sol"; import "./ErrorReporter.sol"; import "./Exponential.sol"; import "./EIP20Interface.sol"; import "./EIP20NonStandardInterface.sol"; -import "./ReentrancyGuard.sol"; import "./InterestRateModel.sol"; /** @@ -13,211 +13,32 @@ import "./InterestRateModel.sol"; * @notice Abstract base for CTokens * @author Compound */ -contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGuard { +contract CToken is CTokenInterface, Exponential, TokenErrorReporter { /** - * @notice Indicator that this is a CToken contract (for inspection) - */ - bool public constant isCToken = true; - - /** - * @notice EIP-20 token name for this token - */ - string public name; - - /** - * @notice EIP-20 token symbol for this token - */ - string public symbol; - - /** - * @notice EIP-20 token decimals for this token - */ - uint8 public decimals; - - /** - * @notice Maximum borrow rate that can ever be applied (.0005% / block) - */ - - uint internal constant borrowRateMaxMantissa = 0.0005e16; - - /** - * @notice Maximum fraction of interest that can be set aside for reserves - */ - uint internal constant reserveFactorMaxMantissa = 1e18; - - /** - * @notice Administrator for this contract - */ - address payable public admin; - - /** - * @notice Pending administrator for this contract - */ - address payable public pendingAdmin; - - /** - * @notice Contract which oversees inter-cToken operations - */ - ComptrollerInterface public comptroller; - - /** - * @notice Model which tells what the current interest rate should be - */ - InterestRateModel public interestRateModel; - - /** - * @notice Initial exchange rate used when minting the first CTokens (used when totalSupply = 0) - */ - uint public initialExchangeRateMantissa; - - /** - * @notice Fraction of interest currently set aside for reserves - */ - uint public reserveFactorMantissa; - - /** - * @notice Block number that interest was last accrued at - */ - uint public accrualBlockNumber; - - /** - * @notice Accumulator of the total earned interest rate since the opening of the market - */ - uint public borrowIndex; - - /** - * @notice Total amount of outstanding borrows of the underlying in this market - */ - uint public totalBorrows; - - /** - * @notice Total amount of reserves of the underlying held in this market - */ - uint public totalReserves; - - /** - * @notice Total number of tokens in circulation - */ - uint256 public totalSupply; - - /** - * @notice Official record of token balances for each account - */ - mapping (address => uint256) internal accountTokens; - - /** - * @notice Approved token transfer amounts on behalf of others - */ - mapping (address => mapping (address => uint256)) internal transferAllowances; - - /** - * @notice Container for borrow balance information - * @member principal Total balance (with accrued interest), after applying the most recent balance-changing action - * @member interestIndex Global borrowIndex as of the most recent balance-changing action - */ - struct BorrowSnapshot { - uint principal; - uint interestIndex; - } - - /** - * @notice Mapping of account addresses to outstanding borrow balances - */ - mapping(address => BorrowSnapshot) internal accountBorrows; - - - /*** Market Events ***/ - - /** - * @notice Event emitted when interest is accrued - */ - event AccrueInterest(uint interestAccumulated, uint borrowIndex, uint totalBorrows); - - /** - * @notice Event emitted when tokens are minted - */ - event Mint(address minter, uint mintAmount, uint mintTokens); - - /** - * @notice Event emitted when tokens are redeemed - */ - event Redeem(address redeemer, uint redeemAmount, uint redeemTokens); - - /** - * @notice Event emitted when underlying is borrowed - */ - event Borrow(address borrower, uint borrowAmount, uint accountBorrows, uint totalBorrows); - - /** - * @notice Event emitted when a borrow is repaid - */ - event RepayBorrow(address payer, address borrower, uint repayAmount, uint accountBorrows, uint totalBorrows); - - /** - * @notice Event emitted when a borrow is liquidated - */ - event LiquidateBorrow(address liquidator, address borrower, uint repayAmount, address cTokenCollateral, uint seizeTokens); - - - /*** Admin Events ***/ - - /** - * @notice Event emitted when pendingAdmin is changed - */ - event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin); - - /** - * @notice Event emitted when pendingAdmin is accepted, which means admin is updated - */ - event NewAdmin(address oldAdmin, address newAdmin); - - /** - * @notice Event emitted when comptroller is changed - */ - event NewComptroller(ComptrollerInterface oldComptroller, ComptrollerInterface newComptroller); - - /** - * @notice Event emitted when interestRateModel is changed - */ - event NewMarketInterestRateModel(InterestRateModel oldInterestRateModel, InterestRateModel newInterestRateModel); - - /** - * @notice Event emitted when the reserve factor is changed - */ - event NewReserveFactor(uint oldReserveFactorMantissa, uint newReserveFactorMantissa); - - /** - * @notice Event emitted when the reserves are reduced - */ - event ReservesReduced(address admin, uint reduceAmount, uint newTotalReserves); - - - /** - * @notice Construct a new money market + * @notice Initialize the money market * @param comptroller_ The address of the Comptroller * @param interestRateModel_ The address of the interest rate model * @param initialExchangeRateMantissa_ The initial exchange rate, scaled by 1e18 * @param name_ EIP-20 name of this token * @param symbol_ EIP-20 symbol of this token * @param decimals_ EIP-20 decimal precision of this token - * @param admin_ Administrator of this token */ - constructor(ComptrollerInterface comptroller_, - InterestRateModel interestRateModel_, - uint initialExchangeRateMantissa_, - string memory name_, - string memory symbol_, - uint8 decimals_, - address payable admin_) internal { + function initialize(ComptrollerInterface comptroller_, + InterestRateModel interestRateModel_, + uint initialExchangeRateMantissa_, + string memory name_, + string memory symbol_, + uint8 decimals_) public { + require(msg.sender == admin, "only admin may initialize the market"); + require(accrualBlockNumber == 0 && borrowIndex == 0, "market may only be initialized once"); + // Set initial exchange rate initialExchangeRateMantissa = initialExchangeRateMantissa_; - require(initialExchangeRateMantissa > 0, "Initial exchange rate must be greater than zero."); + require(initialExchangeRateMantissa > 0, "initial exchange rate must be greater than zero."); - // Temporarily set msg.sender to admin to set comptroller and interest rate model - admin = msg.sender; // Set the comptroller uint err = _setComptroller(comptroller_); - require(err == uint(Error.NO_ERROR), "Setting comptroller failed"); + require(err == uint(Error.NO_ERROR), "setting comptroller failed"); // Initialize block number and borrow index (block number mocks depend on comptroller being set) accrualBlockNumber = getBlockNumber(); @@ -225,14 +46,14 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu // Set the interest rate model (depends on block number / borrow index) err = _setInterestRateModelFresh(interestRateModel_); - require(err == uint(Error.NO_ERROR), "Setting interest rate model failed"); + require(err == uint(Error.NO_ERROR), "setting interest rate model failed"); name = name_; symbol = symbol_; decimals = decimals_; - // Set the proper admin now that initialization is done - admin = admin_; + // The counter starts true to prevent changing it from zero to non-zero (i.e. smaller cost/refund) + _notEntered = true; } /** @@ -369,7 +190,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu function balanceOfUnderlying(address owner) external returns (uint) { Exp memory exchangeRate = Exp({mantissa: exchangeRateCurrent()}); (MathError mErr, uint balance) = mulScalarTruncate(exchangeRate, accountTokens[owner]); - require(mErr == MathError.NO_ERROR); + require(mErr == MathError.NO_ERROR, "balance could not be calculated"); return balance; } @@ -412,9 +233,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @return The borrow interest rate per block, scaled by 1e18 */ function borrowRatePerBlock() external view returns (uint) { - (uint opaqueErr, uint borrowRateMantissa) = interestRateModel.getBorrowRate(getCashPrior(), totalBorrows, totalReserves); - require(opaqueErr == 0, "borrowRatePerBlock: interestRateModel.borrowRate failed"); // semi-opaque - return borrowRateMantissa; + return interestRateModel.getBorrowRate(getCashPrior(), totalBorrows, totalReserves); } /** @@ -422,29 +241,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @return The supply interest rate per block, scaled by 1e18 */ function supplyRatePerBlock() external view returns (uint) { - /* We calculate the supply rate: - * underlying = totalSupply × exchangeRate - * borrowsPer = totalBorrows ÷ underlying - * supplyRate = borrowRate × (1-reserveFactor) × borrowsPer - */ - uint exchangeRateMantissa = exchangeRateStored(); - - (uint e0, uint borrowRateMantissa) = interestRateModel.getBorrowRate(getCashPrior(), totalBorrows, totalReserves); - require(e0 == 0, "supplyRatePerBlock: calculating borrowRate failed"); // semi-opaque - - (MathError e1, Exp memory underlying) = mulScalar(Exp({mantissa: exchangeRateMantissa}), totalSupply); - require(e1 == MathError.NO_ERROR, "supplyRatePerBlock: calculating underlying failed"); - - (MathError e2, Exp memory borrowsPer) = divScalarByExp(totalBorrows, underlying); - require(e2 == MathError.NO_ERROR, "supplyRatePerBlock: calculating borrowsPer failed"); - - (MathError e3, Exp memory oneMinusReserveFactor) = subExp(Exp({mantissa: mantissaOne}), Exp({mantissa: reserveFactorMantissa})); - require(e3 == MathError.NO_ERROR, "supplyRatePerBlock: calculating oneMinusReserveFactor failed"); - - (MathError e4, Exp memory supplyRate) = mulExp3(Exp({mantissa: borrowRateMantissa}), oneMinusReserveFactor, borrowsPer); - require(e4 == MathError.NO_ERROR, "supplyRatePerBlock: calculating supplyRate failed"); - - return supplyRate.mantissa; + return interestRateModel.getSupplyRate(getCashPrior(), totalBorrows, totalReserves, reserveFactorMantissa); } /** @@ -594,26 +391,24 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu } /** - * @notice Applies accrued interest to total borrows and reserves. - * @dev This calculates interest accrued from the last checkpointed block - * up to the current block and writes new checkpoint to storage. - */ + * @notice Applies accrued interest to total borrows and reserves + * @dev This calculates interest accrued from the last checkpointed block + * up to the current block and writes new checkpoint to storage. + */ function accrueInterest() public returns (uint) { AccrueInterestLocalVars memory vars; + uint cashPrior = getCashPrior(); /* Calculate the current borrow interest rate */ - (vars.opaqueErr, vars.borrowRateMantissa) = interestRateModel.getBorrowRate(getCashPrior(), totalBorrows, totalReserves); + vars.borrowRateMantissa = interestRateModel.getBorrowRate(cashPrior, totalBorrows, totalReserves); require(vars.borrowRateMantissa <= borrowRateMaxMantissa, "borrow rate is absurdly high"); - if (vars.opaqueErr != 0) { - return failOpaque(Error.INTEREST_RATE_MODEL_ERROR, FailureInfo.ACCRUE_INTEREST_BORROW_RATE_CALCULATION_FAILED, vars.opaqueErr); - } /* Remember the initial block number */ vars.currentBlockNumber = getBlockNumber(); /* Calculate the number of blocks elapsed since the last accrual */ (vars.mathErr, vars.blockDelta) = subUInt(vars.currentBlockNumber, accrualBlockNumber); - assert(vars.mathErr == MathError.NO_ERROR); // Block delta should always succeed and if it doesn't, blow up. + require(vars.mathErr == MathError.NO_ERROR, "could not calculate block delta"); /* * Calculate the interest accumulated into borrows and reserves and the new index: @@ -659,7 +454,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu totalReserves = vars.totalReservesNew; /* We emit an AccrueInterest event */ - emit AccrueInterest(vars.interestAccumulated, vars.borrowIndexNew, totalBorrows); + emit AccrueInterest(cashPrior, vars.interestAccumulated, vars.borrowIndexNew, totalBorrows); return uint(Error.NO_ERROR); } @@ -668,13 +463,13 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @notice Sender supplies assets into the market and receives cTokens in exchange * @dev Accrues interest whether or not the operation succeeds, unless reverted * @param mintAmount The amount of the underlying asset to supply - * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual mint amount. */ - function mintInternal(uint mintAmount) internal nonReentrant returns (uint) { + function mintInternal(uint mintAmount) internal nonReentrant returns (uint, uint) { uint error = accrueInterest(); if (error != uint(Error.NO_ERROR)) { // accrueInterest emits logs on errors, but we still want to log the fact that an attempted borrow failed - return fail(Error(error), FailureInfo.MINT_ACCRUE_INTEREST_FAILED); + return (fail(Error(error), FailureInfo.MINT_ACCRUE_INTEREST_FAILED), 0); } // mintFresh emits the actual Mint event if successful and logs on errors, so we don't need to return mintFresh(msg.sender, mintAmount); @@ -687,6 +482,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu uint mintTokens; uint totalSupplyNew; uint accountTokensNew; + uint actualMintAmount; } /** @@ -694,18 +490,18 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @dev Assumes interest has already been accrued up to the current block * @param minter The address of the account which is supplying the assets * @param mintAmount The amount of the underlying asset to supply - * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual mint amount. */ - function mintFresh(address minter, uint mintAmount) internal returns (uint) { + function mintFresh(address minter, uint mintAmount) internal returns (uint, uint) { /* Fail if mint not allowed */ uint allowed = comptroller.mintAllowed(address(this), minter, mintAmount); if (allowed != 0) { - return failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.MINT_COMPTROLLER_REJECTION, allowed); + return (failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.MINT_COMPTROLLER_REJECTION, allowed), 0); } /* Verify market's block number equals current block number */ if (accrualBlockNumber != getBlockNumber()) { - return fail(Error.MARKET_NOT_FRESH, FailureInfo.MINT_FRESHNESS_CHECK); + return (fail(Error.MARKET_NOT_FRESH, FailureInfo.MINT_FRESHNESS_CHECK), 0); } MintLocalVars memory vars; @@ -713,22 +509,35 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu /* Fail if checkTransferIn fails */ vars.err = checkTransferIn(minter, mintAmount); if (vars.err != Error.NO_ERROR) { - return fail(vars.err, FailureInfo.MINT_TRANSFER_IN_NOT_POSSIBLE); + return (fail(vars.err, FailureInfo.MINT_TRANSFER_IN_NOT_POSSIBLE), 0); } - /* - * We get the current exchange rate and calculate the number of cTokens to be minted: - * mintTokens = mintAmount / exchangeRate - */ (vars.mathErr, vars.exchangeRateMantissa) = exchangeRateStoredInternal(); if (vars.mathErr != MathError.NO_ERROR) { - return failOpaque(Error.MATH_ERROR, FailureInfo.MINT_EXCHANGE_RATE_READ_FAILED, uint(vars.mathErr)); + return (failOpaque(Error.MATH_ERROR, FailureInfo.MINT_EXCHANGE_RATE_READ_FAILED, uint(vars.mathErr)), 0); } - (vars.mathErr, vars.mintTokens) = divScalarByExpTruncate(mintAmount, Exp({mantissa: vars.exchangeRateMantissa})); - if (vars.mathErr != MathError.NO_ERROR) { - return failOpaque(Error.MATH_ERROR, FailureInfo.MINT_EXCHANGE_CALCULATION_FAILED, uint(vars.mathErr)); - } + ///////////////////////// + // EFFECTS & INTERACTIONS + // (No safe failures beyond this point) + + /* + * We call `doTransferIn` for the minter and the mintAmount. + * Note: The cToken must handle variations between ERC-20 and ETH underlying. + * `doTransferIn` reverts if anything goes wrong, since we can't be sure if + * side-effects occurred. The function returns the amount actually transferred, + * in case of a fee. On success, the cToken holds an additional `actualMintAmount` + * of cash. + */ + vars.actualMintAmount = doTransferIn(minter, mintAmount); + + /* + * We get the current exchange rate and calculate the number of cTokens to be minted: + * mintTokens = actualMintAmount / exchangeRate + */ + + (vars.mathErr, vars.mintTokens) = divScalarByExpTruncate(vars.actualMintAmount, Exp({mantissa: vars.exchangeRateMantissa})); + require(vars.mathErr == MathError.NO_ERROR, "MINT_EXCHANGE_CALCULATION_FAILED"); /* * We calculate the new total supply of cTokens and minter token balance, checking for overflow: @@ -736,43 +545,23 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * accountTokensNew = accountTokens[minter] + mintTokens */ (vars.mathErr, vars.totalSupplyNew) = addUInt(totalSupply, vars.mintTokens); - if (vars.mathErr != MathError.NO_ERROR) { - return failOpaque(Error.MATH_ERROR, FailureInfo.MINT_NEW_TOTAL_SUPPLY_CALCULATION_FAILED, uint(vars.mathErr)); - } + require(vars.mathErr == MathError.NO_ERROR, "MINT_NEW_TOTAL_SUPPLY_CALCULATION_FAILED"); (vars.mathErr, vars.accountTokensNew) = addUInt(accountTokens[minter], vars.mintTokens); - if (vars.mathErr != MathError.NO_ERROR) { - return failOpaque(Error.MATH_ERROR, FailureInfo.MINT_NEW_ACCOUNT_BALANCE_CALCULATION_FAILED, uint(vars.mathErr)); - } - - ///////////////////////// - // EFFECTS & INTERACTIONS - // (No safe failures beyond this point) - - /* - * We call doTransferIn for the minter and the mintAmount - * Note: The cToken must handle variations between ERC-20 and ETH underlying. - * On success, the cToken holds an additional mintAmount of cash. - * If doTransferIn fails despite the fact we checked pre-conditions, - * we revert because we can't be sure if side effects occurred. - */ - vars.err = doTransferIn(minter, mintAmount); - if (vars.err != Error.NO_ERROR) { - return fail(vars.err, FailureInfo.MINT_TRANSFER_IN_FAILED); - } + require(vars.mathErr == MathError.NO_ERROR, "MINT_NEW_ACCOUNT_BALANCE_CALCULATION_FAILED"); /* We write previously calculated values into storage */ totalSupply = vars.totalSupplyNew; accountTokens[minter] = vars.accountTokensNew; /* We emit a Mint event, and a Transfer event */ - emit Mint(minter, mintAmount, vars.mintTokens); + emit Mint(minter, vars.actualMintAmount, vars.mintTokens); emit Transfer(address(this), minter, vars.mintTokens); /* We call the defense hook */ - comptroller.mintVerify(address(this), minter, mintAmount, vars.mintTokens); + comptroller.mintVerify(address(this), minter, vars.actualMintAmount, vars.mintTokens); - return uint(Error.NO_ERROR); + return (uint(Error.NO_ERROR), vars.actualMintAmount); } /** @@ -903,11 +692,9 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * We invoke doTransferOut for the redeemer and the redeemAmount. * Note: The cToken must handle variations between ERC-20 and ETH underlying. * On success, the cToken has redeemAmount less of cash. - * If doTransferOut fails despite the fact we checked pre-conditions, - * we revert because we can't be sure if side effects occurred. + * doTransferOut reverts if anything goes wrong, since we can't be sure if side effects occurred. */ - vars.err = doTransferOut(redeemer, vars.redeemAmount); - require(vars.err == Error.NO_ERROR, "redeem transfer out failed"); + doTransferOut(redeemer, vars.redeemAmount); /* We write previously calculated values into storage */ totalSupply = vars.totalSupplyNew; @@ -939,7 +726,6 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu } struct BorrowLocalVars { - Error err; MathError mathErr; uint accountBorrows; uint accountBorrowsNew; @@ -998,11 +784,9 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * We invoke doTransferOut for the borrower and the borrowAmount. * Note: The cToken must handle variations between ERC-20 and ETH underlying. * On success, the cToken borrowAmount less of cash. - * If doTransferOut fails despite the fact we checked pre-conditions, - * we revert because we can't be sure if side effects occurred. + * doTransferOut reverts if anything goes wrong, since we can't be sure if side effects occurred. */ - vars.err = doTransferOut(borrower, borrowAmount); - require(vars.err == Error.NO_ERROR, "borrow transfer out failed"); + doTransferOut(borrower, borrowAmount); /* We write the previously calculated values into storage */ accountBorrows[borrower].principal = vars.accountBorrowsNew; @@ -1021,13 +805,13 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu /** * @notice Sender repays their own borrow * @param repayAmount The amount to repay - * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount. */ - function repayBorrowInternal(uint repayAmount) internal nonReentrant returns (uint) { + function repayBorrowInternal(uint repayAmount) internal nonReentrant returns (uint, uint) { uint error = accrueInterest(); if (error != uint(Error.NO_ERROR)) { // accrueInterest emits logs on errors, but we still want to log the fact that an attempted borrow failed - return fail(Error(error), FailureInfo.REPAY_BORROW_ACCRUE_INTEREST_FAILED); + return (fail(Error(error), FailureInfo.REPAY_BORROW_ACCRUE_INTEREST_FAILED), 0); } // repayBorrowFresh emits repay-borrow-specific logs on errors, so we don't need to return repayBorrowFresh(msg.sender, msg.sender, repayAmount); @@ -1037,13 +821,13 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @notice Sender repays a borrow belonging to borrower * @param borrower the account with the debt being payed off * @param repayAmount The amount to repay - * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount. */ - function repayBorrowBehalfInternal(address borrower, uint repayAmount) internal nonReentrant returns (uint) { + function repayBorrowBehalfInternal(address borrower, uint repayAmount) internal nonReentrant returns (uint, uint) { uint error = accrueInterest(); if (error != uint(Error.NO_ERROR)) { // accrueInterest emits logs on errors, but we still want to log the fact that an attempted borrow failed - return fail(Error(error), FailureInfo.REPAY_BEHALF_ACCRUE_INTEREST_FAILED); + return (fail(Error(error), FailureInfo.REPAY_BEHALF_ACCRUE_INTEREST_FAILED), 0); } // repayBorrowFresh emits repay-borrow-specific logs on errors, so we don't need to return repayBorrowFresh(msg.sender, borrower, repayAmount); @@ -1057,6 +841,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu uint accountBorrows; uint accountBorrowsNew; uint totalBorrowsNew; + uint actualRepayAmount; } /** @@ -1064,18 +849,18 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @param payer the account paying off the borrow * @param borrower the account with the debt being payed off * @param repayAmount the amount of undelrying tokens being returned - * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount. */ - function repayBorrowFresh(address payer, address borrower, uint repayAmount) internal returns (uint) { + function repayBorrowFresh(address payer, address borrower, uint repayAmount) internal returns (uint, uint) { /* Fail if repayBorrow not allowed */ uint allowed = comptroller.repayBorrowAllowed(address(this), payer, borrower, repayAmount); if (allowed != 0) { - return failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.REPAY_BORROW_COMPTROLLER_REJECTION, allowed); + return (failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.REPAY_BORROW_COMPTROLLER_REJECTION, allowed), 0); } /* Verify market's block number equals current block number */ if (accrualBlockNumber != getBlockNumber()) { - return fail(Error.MARKET_NOT_FRESH, FailureInfo.REPAY_BORROW_FRESHNESS_CHECK); + return (fail(Error.MARKET_NOT_FRESH, FailureInfo.REPAY_BORROW_FRESHNESS_CHECK), 0); } RepayBorrowLocalVars memory vars; @@ -1086,7 +871,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu /* We fetch the amount the borrower owes, with accumulated interest */ (vars.mathErr, vars.accountBorrows) = borrowBalanceStoredInternal(borrower); if (vars.mathErr != MathError.NO_ERROR) { - return failOpaque(Error.MATH_ERROR, FailureInfo.REPAY_BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED, uint(vars.mathErr)); + return (failOpaque(Error.MATH_ERROR, FailureInfo.REPAY_BORROW_ACCUMULATED_BALANCE_CALCULATION_FAILED, uint(vars.mathErr)), 0); } /* If repayAmount == -1, repayAmount = accountBorrows */ @@ -1099,22 +884,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu /* Fail if checkTransferIn fails */ vars.err = checkTransferIn(payer, vars.repayAmount); if (vars.err != Error.NO_ERROR) { - return fail(vars.err, FailureInfo.REPAY_BORROW_TRANSFER_IN_NOT_POSSIBLE); - } - - /* - * We calculate the new borrower and total borrow balances, failing on underflow: - * accountBorrowsNew = accountBorrows - repayAmount - * totalBorrowsNew = totalBorrows - repayAmount - */ - (vars.mathErr, vars.accountBorrowsNew) = subUInt(vars.accountBorrows, vars.repayAmount); - if (vars.mathErr != MathError.NO_ERROR) { - return failOpaque(Error.MATH_ERROR, FailureInfo.REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED, uint(vars.mathErr)); - } - - (vars.mathErr, vars.totalBorrowsNew) = subUInt(totalBorrows, vars.repayAmount); - if (vars.mathErr != MathError.NO_ERROR) { - return failOpaque(Error.MATH_ERROR, FailureInfo.REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED, uint(vars.mathErr)); + return (fail(vars.err, FailureInfo.REPAY_BORROW_TRANSFER_IN_NOT_POSSIBLE), 0); } ///////////////////////// @@ -1125,11 +895,21 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * We call doTransferIn for the payer and the repayAmount * Note: The cToken must handle variations between ERC-20 and ETH underlying. * On success, the cToken holds an additional repayAmount of cash. - * If doTransferIn fails despite the fact we checked pre-conditions, - * we revert because we can't be sure if side effects occurred. + * doTransferIn reverts if anything goes wrong, since we can't be sure if side effects occurred. + * it returns the amount actually transferred, in case of a fee. + */ + vars.actualRepayAmount = doTransferIn(payer, vars.repayAmount); + + /* + * We calculate the new borrower and total borrow balances, failing on underflow: + * accountBorrowsNew = accountBorrows - actualRepayAmount + * totalBorrowsNew = totalBorrows - actualRepayAmount */ - vars.err = doTransferIn(payer, vars.repayAmount); - require(vars.err == Error.NO_ERROR, "repay borrow transfer in failed"); + (vars.mathErr, vars.accountBorrowsNew) = subUInt(vars.accountBorrows, vars.actualRepayAmount); + require(vars.mathErr == MathError.NO_ERROR, "REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED"); + + (vars.mathErr, vars.totalBorrowsNew) = subUInt(totalBorrows, vars.actualRepayAmount); + require(vars.mathErr == MathError.NO_ERROR, "REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED"); /* We write the previously calculated values into storage */ accountBorrows[borrower].principal = vars.accountBorrowsNew; @@ -1137,12 +917,12 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu totalBorrows = vars.totalBorrowsNew; /* We emit a RepayBorrow event */ - emit RepayBorrow(payer, borrower, vars.repayAmount, vars.accountBorrowsNew, vars.totalBorrowsNew); + emit RepayBorrow(payer, borrower, vars.actualRepayAmount, vars.accountBorrowsNew, vars.totalBorrowsNew); /* We call the defense hook */ - comptroller.repayBorrowVerify(address(this), payer, borrower, vars.repayAmount, vars.borrowerIndex); + comptroller.repayBorrowVerify(address(this), payer, borrower, vars.actualRepayAmount, vars.borrowerIndex); - return uint(Error.NO_ERROR); + return (uint(Error.NO_ERROR), vars.actualRepayAmount); } /** @@ -1151,19 +931,19 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @param borrower The borrower of this cToken to be liquidated * @param cTokenCollateral The market in which to seize collateral from the borrower * @param repayAmount The amount of the underlying borrowed asset to repay - * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount. */ - function liquidateBorrowInternal(address borrower, uint repayAmount, CToken cTokenCollateral) internal nonReentrant returns (uint) { + function liquidateBorrowInternal(address borrower, uint repayAmount, CTokenInterface cTokenCollateral) internal nonReentrant returns (uint, uint) { uint error = accrueInterest(); if (error != uint(Error.NO_ERROR)) { // accrueInterest emits logs on errors, but we still want to log the fact that an attempted liquidation failed - return fail(Error(error), FailureInfo.LIQUIDATE_ACCRUE_BORROW_INTEREST_FAILED); + return (fail(Error(error), FailureInfo.LIQUIDATE_ACCRUE_BORROW_INTEREST_FAILED), 0); } error = cTokenCollateral.accrueInterest(); if (error != uint(Error.NO_ERROR)) { // accrueInterest emits logs on errors, but we still want to log the fact that an attempted liquidation failed - return fail(Error(error), FailureInfo.LIQUIDATE_ACCRUE_COLLATERAL_INTEREST_FAILED); + return (fail(Error(error), FailureInfo.LIQUIDATE_ACCRUE_COLLATERAL_INTEREST_FAILED), 0); } // liquidateBorrowFresh emits borrow-specific logs on errors, so we don't need to @@ -1177,68 +957,76 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @param liquidator The address repaying the borrow and seizing collateral * @param cTokenCollateral The market in which to seize collateral from the borrower * @param repayAmount The amount of the underlying borrowed asset to repay - * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + * @return (uint, uint) An error code (0=success, otherwise a failure, see ErrorReporter.sol), and the actual repayment amount. */ - function liquidateBorrowFresh(address liquidator, address borrower, uint repayAmount, CToken cTokenCollateral) internal returns (uint) { + function liquidateBorrowFresh(address liquidator, address borrower, uint repayAmount, CTokenInterface cTokenCollateral) internal returns (uint, uint) { /* Fail if liquidate not allowed */ uint allowed = comptroller.liquidateBorrowAllowed(address(this), address(cTokenCollateral), liquidator, borrower, repayAmount); if (allowed != 0) { - return failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.LIQUIDATE_COMPTROLLER_REJECTION, allowed); + return (failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.LIQUIDATE_COMPTROLLER_REJECTION, allowed), 0); } /* Verify market's block number equals current block number */ if (accrualBlockNumber != getBlockNumber()) { - return fail(Error.MARKET_NOT_FRESH, FailureInfo.LIQUIDATE_FRESHNESS_CHECK); + return (fail(Error.MARKET_NOT_FRESH, FailureInfo.LIQUIDATE_FRESHNESS_CHECK), 0); } /* Verify cTokenCollateral market's block number equals current block number */ if (cTokenCollateral.accrualBlockNumber() != getBlockNumber()) { - return fail(Error.MARKET_NOT_FRESH, FailureInfo.LIQUIDATE_COLLATERAL_FRESHNESS_CHECK); + return (fail(Error.MARKET_NOT_FRESH, FailureInfo.LIQUIDATE_COLLATERAL_FRESHNESS_CHECK), 0); } /* Fail if borrower = liquidator */ if (borrower == liquidator) { - return fail(Error.INVALID_ACCOUNT_PAIR, FailureInfo.LIQUIDATE_LIQUIDATOR_IS_BORROWER); + return (fail(Error.INVALID_ACCOUNT_PAIR, FailureInfo.LIQUIDATE_LIQUIDATOR_IS_BORROWER), 0); } /* Fail if repayAmount = 0 */ if (repayAmount == 0) { - return fail(Error.INVALID_CLOSE_AMOUNT_REQUESTED, FailureInfo.LIQUIDATE_CLOSE_AMOUNT_IS_ZERO); + return (fail(Error.INVALID_CLOSE_AMOUNT_REQUESTED, FailureInfo.LIQUIDATE_CLOSE_AMOUNT_IS_ZERO), 0); } /* Fail if repayAmount = -1 */ if (repayAmount == uint(-1)) { - return fail(Error.INVALID_CLOSE_AMOUNT_REQUESTED, FailureInfo.LIQUIDATE_CLOSE_AMOUNT_IS_UINT_MAX); + return (fail(Error.INVALID_CLOSE_AMOUNT_REQUESTED, FailureInfo.LIQUIDATE_CLOSE_AMOUNT_IS_UINT_MAX), 0); } - /* We calculate the number of collateral tokens that will be seized */ - (uint amountSeizeError, uint seizeTokens) = comptroller.liquidateCalculateSeizeTokens(address(this), address(cTokenCollateral), repayAmount); - if (amountSeizeError != 0) { - return failOpaque(Error.COMPTROLLER_CALCULATION_ERROR, FailureInfo.LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED, amountSeizeError); - } - - /* Fail if seizeTokens > borrower collateral token balance */ - if (seizeTokens > cTokenCollateral.balanceOf(borrower)) { - return fail(Error.TOKEN_INSUFFICIENT_BALANCE, FailureInfo.LIQUIDATE_SEIZE_TOO_MUCH); - } /* Fail if repayBorrow fails */ - uint repayBorrowError = repayBorrowFresh(liquidator, borrower, repayAmount); + (uint repayBorrowError, uint actualRepayAmount) = repayBorrowFresh(liquidator, borrower, repayAmount); if (repayBorrowError != uint(Error.NO_ERROR)) { - return fail(Error(repayBorrowError), FailureInfo.LIQUIDATE_REPAY_BORROW_FRESH_FAILED); + return (fail(Error(repayBorrowError), FailureInfo.LIQUIDATE_REPAY_BORROW_FRESH_FAILED), 0); + } + + ///////////////////////// + // EFFECTS & INTERACTIONS + // (No safe failures beyond this point) + + /* We calculate the number of collateral tokens that will be seized */ + (uint amountSeizeError, uint seizeTokens) = comptroller.liquidateCalculateSeizeTokens(address(this), address(cTokenCollateral), actualRepayAmount); + require(amountSeizeError == uint(Error.NO_ERROR), "LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED"); + + /* Revert if borrower collateral token balance < seizeTokens */ + require(cTokenCollateral.balanceOf(borrower) >= seizeTokens, "LIQUIDATE_SEIZE_TOO_MUCH"); + + // If this is also the collateral, run seizeInternal to avoid re-entrancy, otherwise make an external call + uint seizeError; + if (address(cTokenCollateral) == address(this)) { + seizeError = seizeInternal(address(this), liquidator, borrower, seizeTokens); + } else { + seizeError = cTokenCollateral.seize(liquidator, borrower, seizeTokens); } /* Revert if seize tokens fails (since we cannot be sure of side effects) */ - uint seizeError = cTokenCollateral.seize(liquidator, borrower, seizeTokens); require(seizeError == uint(Error.NO_ERROR), "token seizure failed"); /* We emit a LiquidateBorrow event */ - emit LiquidateBorrow(liquidator, borrower, repayAmount, address(cTokenCollateral), seizeTokens); + emit LiquidateBorrow(liquidator, borrower, actualRepayAmount, address(cTokenCollateral), seizeTokens); /* We call the defense hook */ - comptroller.liquidateBorrowVerify(address(this), address(cTokenCollateral), liquidator, borrower, repayAmount, seizeTokens); + comptroller.liquidateBorrowVerify(address(this), address(cTokenCollateral), liquidator, borrower, actualRepayAmount, seizeTokens); - return uint(Error.NO_ERROR); + return (uint(Error.NO_ERROR), actualRepayAmount); } /** @@ -1251,8 +1039,22 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) */ function seize(address liquidator, address borrower, uint seizeTokens) external nonReentrant returns (uint) { + return seizeInternal(msg.sender, liquidator, borrower, seizeTokens); + } + + /** + * @notice Transfers collateral tokens (this market) to the liquidator. + * @dev Called only during an in-kind liquidation, or by liquidateBorrow during the liquidation of another CToken. + * Its absolutely critical to use msg.sender as the seizer cToken and not a parameter. + * @param seizerToken The contract seizing the collateral (i.e. borrowed cToken) + * @param liquidator The account receiving seized collateral + * @param borrower The account having collateral seized + * @param seizeTokens The number of cTokens to seize + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function seizeInternal(address seizerToken, address liquidator, address borrower, uint seizeTokens) internal returns (uint) { /* Fail if seize not allowed */ - uint allowed = comptroller.seizeAllowed(address(this), msg.sender, liquidator, borrower, seizeTokens); + uint allowed = comptroller.seizeAllowed(address(this), seizerToken, liquidator, borrower, seizeTokens); if (allowed != 0) { return failOpaque(Error.COMPTROLLER_REJECTION, FailureInfo.LIQUIDATE_SEIZE_COMPTROLLER_REJECTION, allowed); } @@ -1293,7 +1095,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu emit Transfer(borrower, liquidator, seizeTokens); /* We call the defense hook */ - comptroller.seizeVerify(address(this), msg.sender, liquidator, borrower, seizeTokens); + comptroller.seizeVerify(address(this), seizerToken, liquidator, borrower, seizeTokens); return uint(Error.NO_ERROR); } @@ -1420,6 +1222,69 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu return uint(Error.NO_ERROR); } + /** + * @notice Accrues interest and reduces reserves by transferring from msg.sender + * @param addAmount Amount of addition to reserves + * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) + */ + function _addReservesInternal(uint addAmount) internal nonReentrant returns (uint) { + uint error = accrueInterest(); + if (error != uint(Error.NO_ERROR)) { + // accrueInterest emits logs on errors, but on top of that we want to log the fact that an attempted reduce reserves failed. + return fail(Error(error), FailureInfo.ADD_RESERVES_ACCRUE_INTEREST_FAILED); + } + + // _addReservesFresh emits reserve-addition-specific logs on errors, so we don't need to. + (error, ) = _addReservesFresh(addAmount); + return error; + } + + /** + * @notice Add reserves by transferring from caller + * @dev Requires fresh interest accrual + * @param addAmount Amount of addition to reserves + * @return (uint, uint) An error code (0=success, otherwise a failure (see ErrorReporter.sol for details)) and the actual amount added, net token fees + */ + function _addReservesFresh(uint addAmount) internal returns (uint, uint) { + // totalReserves + actualAddAmount + uint totalReservesNew; + uint actualAddAmount; + + // We fail gracefully unless market's block number equals current block number + if (accrualBlockNumber != getBlockNumber()) { + return (fail(Error.MARKET_NOT_FRESH, FailureInfo.ADD_RESERVES_FRESH_CHECK), actualAddAmount); + } + + /* Fail if checkTransferIn fails */ + Error err = checkTransferIn(msg.sender, addAmount); + if (err != Error.NO_ERROR) { + return (fail(err, FailureInfo.ADD_RESERVES_TRANSFER_IN_NOT_POSSIBLE), actualAddAmount); + } + + + ///////////////////////// + // EFFECTS & INTERACTIONS + // (No safe failures beyond this point) + + /* actualAddAmount=invoke doTransferIn(msg.sender, addAmount) */ + actualAddAmount = doTransferIn(msg.sender, addAmount); + + totalReservesNew = totalReserves + actualAddAmount; + + /* Revert on overflow */ + require(totalReservesNew >= totalReserves, "add reserves unexpected overflow"); + + // Store reserves[n+1] = reserves[n] + actualAddAmount + totalReserves = totalReservesNew; + + /* Emit NewReserves(admin, actualAddAmount, reserves[n+1]) */ + emit ReservesAdded(msg.sender, actualAddAmount, totalReservesNew); + + /* Return (NO_ERROR, actualAddAmount) */ + return (uint(Error.NO_ERROR), actualAddAmount); + } + + /** * @notice Accrues interest and reduces reserves by transferring to admin * @param reduceAmount Amount of reduction to reserves @@ -1442,7 +1307,6 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) */ function _reduceReservesFresh(uint reduceAmount) internal returns (uint) { - Error err; // totalReserves - reduceAmount uint totalReservesNew; @@ -1477,10 +1341,8 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu // Store reserves[n+1] = reserves[n] - reduceAmount totalReserves = totalReservesNew; - // invoke doTransferOut(reduceAmount, admin) - err = doTransferOut(admin, reduceAmount); - // we revert on the failure of this command - require(err == Error.NO_ERROR, "reduce reserves transfer out failed"); + // doTransferOut reverts if anything goes wrong, since we can't be sure if side effects occurred. + doTransferOut(admin, reduceAmount); emit ReservesReduced(admin, reduceAmount, totalReservesNew); @@ -1496,7 +1358,7 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu function _setInterestRateModel(InterestRateModel newInterestRateModel) public returns (uint) { uint error = accrueInterest(); if (error != uint(Error.NO_ERROR)) { - // accrueInterest emits logs on errors, but on top of that we want to log the fact that an attempted change of interest rate model failed + // accrueInterest emits logs on errors, but on top of that we want to log the fact that an attempted increase of interest rate model failed return fail(Error(error), FailureInfo.SET_INTEREST_RATE_MODEL_ACCRUE_INTEREST_FAILED); } // _setInterestRateModelFresh emits interest-rate-model-update-specific logs on errors, so we don't need to. @@ -1555,16 +1417,29 @@ contract CToken is EIP20Interface, Exponential, TokenErrorReporter, ReentrancyGu function checkTransferIn(address from, uint amount) internal view returns (Error); /** - * @dev Performs a transfer in, ideally returning an explanatory error code upon failure rather than reverting. + * @dev Performs a transfer in, reverting upon failure. Returns the amount actually transferred to the protocol, in case of a fee. * If caller has not called `checkTransferIn`, this may revert due to insufficient balance or insufficient allowance. * If caller has called `checkTransferIn` successfully, this should not revert in normal conditions. */ - function doTransferIn(address from, uint amount) internal returns (Error); + function doTransferIn(address from, uint amount) internal returns (uint); /** * @dev Performs a transfer out, ideally returning an explanatory error code upon failure tather than reverting. * If caller has not called checked protocol's balance, may revert due to insufficient cash held in the contract. * If caller has checked protocol's balance, and verified it is >= amount, this should not revert in normal conditions. */ - function doTransferOut(address payable to, uint amount) internal returns (Error); + function doTransferOut(address payable to, uint amount) internal; + + + /*** Reentrancy Guard ***/ + + /** + * @dev Prevents a contract from calling itself, directly or indirectly. + */ + modifier nonReentrant() { + require(_notEntered, "re-entered"); + _notEntered = false; + _; + _notEntered = true; // get a gas-refund post-Istanbul + } } diff --git a/contracts/CTokenInterfaces.sol b/contracts/CTokenInterfaces.sol new file mode 100644 index 000000000..250ce21c4 --- /dev/null +++ b/contracts/CTokenInterfaces.sol @@ -0,0 +1,302 @@ +pragma solidity ^0.5.12; + +import "./ComptrollerInterface.sol"; +import "./InterestRateModel.sol"; + +contract CTokenStorage { + /** + * @dev Guard variable for re-entrancy checks + */ + bool internal _notEntered; + + /** + * @notice EIP-20 token name for this token + */ + string public name; + + /** + * @notice EIP-20 token symbol for this token + */ + string public symbol; + + /** + * @notice EIP-20 token decimals for this token + */ + uint8 public decimals; + + /** + * @notice Maximum borrow rate that can ever be applied (.0005% / block) + */ + + uint internal constant borrowRateMaxMantissa = 0.0005e16; + + /** + * @notice Maximum fraction of interest that can be set aside for reserves + */ + uint internal constant reserveFactorMaxMantissa = 1e18; + + /** + * @notice Administrator for this contract + */ + address payable public admin; + + /** + * @notice Pending administrator for this contract + */ + address payable public pendingAdmin; + + /** + * @notice Contract which oversees inter-cToken operations + */ + ComptrollerInterface public comptroller; + + /** + * @notice Model which tells what the current interest rate should be + */ + InterestRateModel public interestRateModel; + + /** + * @notice Initial exchange rate used when minting the first CTokens (used when totalSupply = 0) + */ + uint internal initialExchangeRateMantissa; + + /** + * @notice Fraction of interest currently set aside for reserves + */ + uint public reserveFactorMantissa; + + /** + * @notice Block number that interest was last accrued at + */ + uint public accrualBlockNumber; + + /** + * @notice Accumulator of the total earned interest rate since the opening of the market + */ + uint public borrowIndex; + + /** + * @notice Total amount of outstanding borrows of the underlying in this market + */ + uint public totalBorrows; + + /** + * @notice Total amount of reserves of the underlying held in this market + */ + uint public totalReserves; + + /** + * @notice Total number of tokens in circulation + */ + uint public totalSupply; + + /** + * @notice Official record of token balances for each account + */ + mapping (address => uint) internal accountTokens; + + /** + * @notice Approved token transfer amounts on behalf of others + */ + mapping (address => mapping (address => uint)) internal transferAllowances; + + /** + * @notice Container for borrow balance information + * @member principal Total balance (with accrued interest), after applying the most recent balance-changing action + * @member interestIndex Global borrowIndex as of the most recent balance-changing action + */ + struct BorrowSnapshot { + uint principal; + uint interestIndex; + } + + /** + * @notice Mapping of account addresses to outstanding borrow balances + */ + mapping(address => BorrowSnapshot) internal accountBorrows; +} + +contract CTokenInterface is CTokenStorage { + /** + * @notice Indicator that this is a CToken contract (for inspection) + */ + bool public constant isCToken = true; + + + /*** Market Events ***/ + + /** + * @notice Event emitted when interest is accrued + */ + event AccrueInterest(uint cashPrior, uint interestAccumulated, uint borrowIndex, uint totalBorrows); + + /** + * @notice Event emitted when tokens are minted + */ + event Mint(address minter, uint mintAmount, uint mintTokens); + + /** + * @notice Event emitted when tokens are redeemed + */ + event Redeem(address redeemer, uint redeemAmount, uint redeemTokens); + + /** + * @notice Event emitted when underlying is borrowed + */ + event Borrow(address borrower, uint borrowAmount, uint accountBorrows, uint totalBorrows); + + /** + * @notice Event emitted when a borrow is repaid + */ + event RepayBorrow(address payer, address borrower, uint repayAmount, uint accountBorrows, uint totalBorrows); + + /** + * @notice Event emitted when a borrow is liquidated + */ + event LiquidateBorrow(address liquidator, address borrower, uint repayAmount, address cTokenCollateral, uint seizeTokens); + + + /*** Admin Events ***/ + + /** + * @notice Event emitted when pendingAdmin is changed + */ + event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin); + + /** + * @notice Event emitted when pendingAdmin is accepted, which means admin is updated + */ + event NewAdmin(address oldAdmin, address newAdmin); + + /** + * @notice Event emitted when comptroller is changed + */ + event NewComptroller(ComptrollerInterface oldComptroller, ComptrollerInterface newComptroller); + + /** + * @notice Event emitted when interestRateModel is changed + */ + event NewMarketInterestRateModel(InterestRateModel oldInterestRateModel, InterestRateModel newInterestRateModel); + + /** + * @notice Event emitted when the reserve factor is changed + */ + event NewReserveFactor(uint oldReserveFactorMantissa, uint newReserveFactorMantissa); + + /** + * @notice Event emitted when the reserves are added + */ + event ReservesAdded(address benefactor, uint addAmount, uint newTotalReserves); + + /** + * @notice Event emitted when the reserves are reduced + */ + event ReservesReduced(address admin, uint reduceAmount, uint newTotalReserves); + + /** + * @notice EIP20 Transfer event + */ + event Transfer(address indexed from, address indexed to, uint amount); + + /** + * @notice EIP20 Approval event + */ + event Approval(address indexed owner, address indexed spender, uint amount); + + /** + * @notice Failure event + */ + event Failure(uint error, uint info, uint detail); + + + /*** User Interface ***/ + + function transfer(address dst, uint amount) external returns (bool); + function transferFrom(address src, address dst, uint amount) external returns (bool); + function approve(address spender, uint amount) external returns (bool); + function allowance(address owner, address spender) external view returns (uint); + function balanceOf(address owner) external view returns (uint); + function balanceOfUnderlying(address owner) external returns (uint); + function getAccountSnapshot(address account) external view returns (uint, uint, uint, uint); + function borrowRatePerBlock() external view returns (uint); + function supplyRatePerBlock() external view returns (uint); + function totalBorrowsCurrent() external returns (uint); + function borrowBalanceCurrent(address account) external returns (uint); + function borrowBalanceStored(address account) public view returns (uint); + function exchangeRateCurrent() public returns (uint); + function exchangeRateStored() public view returns (uint); + function getCash() external view returns (uint); + function accrueInterest() public returns (uint); + function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint); + + + /*** Admin Functions ***/ + + function _setPendingAdmin(address payable newPendingAdmin) external returns (uint); + function _acceptAdmin() external returns (uint); + function _setComptroller(ComptrollerInterface newComptroller) public returns (uint); + function _setReserveFactor(uint newReserveFactorMantissa) external returns (uint); + function _reduceReserves(uint reduceAmount) external returns (uint); + function _setInterestRateModel(InterestRateModel newInterestRateModel) public returns (uint); +} + +contract CErc20Storage { + /** + * @notice Underlying asset for this CToken + */ + address public underlying; +} + +contract CErc20Interface is CErc20Storage { + + /*** User Interface ***/ + + function mint(uint mintAmount) external returns (uint); + function redeem(uint redeemTokens) external returns (uint); + function redeemUnderlying(uint redeemAmount) external returns (uint); + function borrow(uint borrowAmount) external returns (uint); + function repayBorrow(uint repayAmount) external returns (uint); + function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint); + function liquidateBorrow(address borrower, uint repayAmount, CTokenInterface cTokenCollateral) external returns (uint); + + + /*** Admin Functions ***/ + + function _addReserves(uint addAmount) external returns (uint); +} + +contract CDelegationStorage { + /** + * @notice Implementation address for this contract + */ + address public implementation; +} + +contract CDelegatorInterface is CDelegationStorage { + /** + * @notice Emitted when implementation is changed + */ + event NewImplementation(address oldImplementation, address newImplementation); + + /** + * @notice Called by the admin to update the implementation of the delegator + * @param implementation_ The address of the new implementation for delegation + * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation + * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation + */ + function _setImplementation(address implementation_, bool allowResign, bytes memory becomeImplementationData) public; +} + +contract CDelegateInterface is CDelegationStorage { + /** + * @notice Called by the delegator on a delegate to initialize it for duty + * @dev Should revert if any issues arise which make it unfit for delegation + * @param data The encoded bytes data for any initialization + */ + function _becomeImplementation(bytes memory data) public; + + /** + * @notice Called by the delegator on a delegate to forfeit its responsibility + */ + function _resignImplementation() public; +} diff --git a/contracts/CarefulMath.sol b/contracts/CarefulMath.sol index 1670342c1..4408881de 100644 --- a/contracts/CarefulMath.sol +++ b/contracts/CarefulMath.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; /** * @title Careful Math diff --git a/contracts/Comptroller.sol b/contracts/Comptroller.sol index 516b53bbb..9c705939e 100644 --- a/contracts/Comptroller.sol +++ b/contracts/Comptroller.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CToken.sol"; import "./ErrorReporter.sol"; @@ -254,14 +254,14 @@ contract Comptroller is ComptrollerV2Storage, ComptrollerInterface, ComptrollerE * @notice Validates mint and reverts on rejection. May emit logs. * @param cToken Asset being minted * @param minter The address minting the tokens - * @param mintAmount The amount of the underlying asset being minted + * @param actualMintAmount The amount of the underlying asset being minted * @param mintTokens The number of tokens being minted */ - function mintVerify(address cToken, address minter, uint mintAmount, uint mintTokens) external { + function mintVerify(address cToken, address minter, uint actualMintAmount, uint mintTokens) external { // Shh - currently unused cToken; minter; - mintAmount; + actualMintAmount; mintTokens; // Shh - we don't ever want this hook to be marked pure @@ -419,19 +419,19 @@ contract Comptroller is ComptrollerV2Storage, ComptrollerInterface, ComptrollerE * @param cToken Asset being repaid * @param payer The address repaying the borrow * @param borrower The address of the borrower - * @param repayAmount The amount of underlying being repaid + * @param actualRepayAmount The amount of underlying being repaid */ function repayBorrowVerify( address cToken, address payer, address borrower, - uint repayAmount, + uint actualRepayAmount, uint borrowerIndex) external { // Shh - currently unused cToken; payer; borrower; - repayAmount; + actualRepayAmount; borrowerIndex; // Shh - we don't ever want this hook to be marked pure @@ -491,21 +491,21 @@ contract Comptroller is ComptrollerV2Storage, ComptrollerInterface, ComptrollerE * @param cTokenCollateral Asset which was used as collateral and will be seized * @param liquidator The address repaying the borrow and seizing the collateral * @param borrower The address of the borrower - * @param repayAmount The amount of underlying being repaid + * @param actualRepayAmount The amount of underlying being repaid */ function liquidateBorrowVerify( address cTokenBorrowed, address cTokenCollateral, address liquidator, address borrower, - uint repayAmount, + uint actualRepayAmount, uint seizeTokens) external { // Shh - currently unused cTokenBorrowed; cTokenCollateral; liquidator; borrower; - repayAmount; + actualRepayAmount; seizeTokens; // Shh - we don't ever want this hook to be marked pure @@ -751,10 +751,10 @@ contract Comptroller is ComptrollerV2Storage, ComptrollerInterface, ComptrollerE * @dev Used in liquidation (called in cToken.liquidateBorrowFresh) * @param cTokenBorrowed The address of the borrowed cToken * @param cTokenCollateral The address of the collateral cToken - * @param repayAmount The amount of cTokenBorrowed underlying to convert into cTokenCollateral tokens + * @param actualRepayAmount The amount of cTokenBorrowed underlying to convert into cTokenCollateral tokens * @return (errorCode, number of cTokenCollateral tokens to be seized in a liquidation) */ - function liquidateCalculateSeizeTokens(address cTokenBorrowed, address cTokenCollateral, uint repayAmount) external view returns (uint, uint) { + function liquidateCalculateSeizeTokens(address cTokenBorrowed, address cTokenCollateral, uint actualRepayAmount) external view returns (uint, uint) { /* Read oracle prices for borrowed and collateral markets */ uint priceBorrowedMantissa = oracle.getUnderlyingPrice(CToken(cTokenBorrowed)); uint priceCollateralMantissa = oracle.getUnderlyingPrice(CToken(cTokenCollateral)); @@ -764,9 +764,9 @@ contract Comptroller is ComptrollerV2Storage, ComptrollerInterface, ComptrollerE /* * Get the exchange rate and calculate the number of collateral tokens to seize: - * seizeAmount = repayAmount * liquidationIncentive * priceBorrowed / priceCollateral + * seizeAmount = actualRepayAmount * liquidationIncentive * priceBorrowed / priceCollateral * seizeTokens = seizeAmount / exchangeRate - * = repayAmount * (liquidationIncentive * priceBorrowed) / (priceCollateral * exchangeRate) + * = actualRepayAmount * (liquidationIncentive * priceBorrowed) / (priceCollateral * exchangeRate) */ uint exchangeRateMantissa = CToken(cTokenCollateral).exchangeRateStored(); // Note: reverts on error uint seizeTokens; @@ -790,7 +790,7 @@ contract Comptroller is ComptrollerV2Storage, ComptrollerInterface, ComptrollerE return (uint(Error.MATH_ERROR), 0); } - (mathErr, seizeTokens) = mulScalarTruncate(ratio, repayAmount); + (mathErr, seizeTokens) = mulScalarTruncate(ratio, actualRepayAmount); if (mathErr != MathError.NO_ERROR) { return (uint(Error.MATH_ERROR), 0); } @@ -1037,4 +1037,4 @@ contract Comptroller is ComptrollerV2Storage, ComptrollerInterface, ComptrollerE uint changeStatus = unitroller._acceptImplementation(); require(changeStatus == 0, "change not authorized"); } -} +} \ No newline at end of file diff --git a/contracts/ComptrollerG1.sol b/contracts/ComptrollerG1.sol index 4fcc32dc9..83781a3e7 100644 --- a/contracts/ComptrollerG1.sol +++ b/contracts/ComptrollerG1.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CToken.sol"; import "./ErrorReporter.sol"; diff --git a/contracts/ComptrollerInterface.sol b/contracts/ComptrollerInterface.sol index 255fb922b..f7b0ac1ad 100644 --- a/contracts/ComptrollerInterface.sol +++ b/contracts/ComptrollerInterface.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; interface ComptrollerInterface { /** diff --git a/contracts/ComptrollerStorage.sol b/contracts/ComptrollerStorage.sol index b2e61c857..e103ec72c 100644 --- a/contracts/ComptrollerStorage.sol +++ b/contracts/ComptrollerStorage.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CToken.sol"; import "./PriceOracle.sol"; diff --git a/contracts/EIP20Interface.sol b/contracts/EIP20Interface.sol index 522e17b5f..0c8935aae 100644 --- a/contracts/EIP20Interface.sol +++ b/contracts/EIP20Interface.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; /** * @title ERC 20 Token Standard Interface diff --git a/contracts/EIP20NonStandardInterface.sol b/contracts/EIP20NonStandardInterface.sol index 1abbcb4c8..3ff30d431 100644 --- a/contracts/EIP20NonStandardInterface.sol +++ b/contracts/EIP20NonStandardInterface.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; /** * @title EIP20NonStandardInterface diff --git a/contracts/ErrorReporter.sol b/contracts/ErrorReporter.sol index 4edbe4623..5676d6519 100644 --- a/contracts/ErrorReporter.sol +++ b/contracts/ErrorReporter.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; contract ComptrollerErrorReporter { enum Error { @@ -175,7 +175,10 @@ contract TokenErrorReporter { TRANSFER_COMPTROLLER_REJECTION, TRANSFER_NOT_ALLOWED, TRANSFER_NOT_ENOUGH, - TRANSFER_TOO_MUCH + TRANSFER_TOO_MUCH, + ADD_RESERVES_ACCRUE_INTEREST_FAILED, + ADD_RESERVES_FRESH_CHECK, + ADD_RESERVES_TRANSFER_IN_NOT_POSSIBLE } /** @@ -201,4 +204,4 @@ contract TokenErrorReporter { return uint(err); } -} +} \ No newline at end of file diff --git a/contracts/Exponential.sol b/contracts/Exponential.sol index ce9ff490a..3ddfd21bb 100644 --- a/contracts/Exponential.sol +++ b/contracts/Exponential.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CarefulMath.sol"; diff --git a/contracts/InterestRateModel.sol b/contracts/InterestRateModel.sol index 8ab34b586..89f512d82 100644 --- a/contracts/InterestRateModel.sol +++ b/contracts/InterestRateModel.sol @@ -1,29 +1,32 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; /** - * @title The Compound InterestRateModel Interface + * @title Compound's InterestRateModel Interface * @author Compound - * @notice Any interest rate model should derive from this contract. - * @dev These functions are specifically not marked `pure` as implementations of this - * contract may read from storage variables. */ interface InterestRateModel { /** - * @notice Gets the current borrow interest rate based on the given asset, total cash, total borrows - * and total reserves. - * @dev The return value should be scaled by 1e18, thus a return value of - * `(true, 1000000000000)` implies an interest rate of 0.000001 or 0.0001% *per block*. - * @param cash The total cash of the underlying asset in the CToken - * @param borrows The total borrows of the underlying asset in the CToken - * @param reserves The total reserves of the underlying asset in the CToken - * @return Success or failure and the borrow interest rate per block scaled by 10e18 + * @notice Indicator that this is an InterestRateModel contract (for inspection) + */ + function isInterestRateModel() external pure returns (bool); + + /** + * @notice Calculates the current borrow interest rate per block + * @param cash The total amount of cash the market has + * @param borrows The total amount of borrows the market has outstanding + * @param reserves The total amnount of reserves the market has + * @return The borrow rate per block (as a percentage, and scaled by 1e18) */ - function getBorrowRate(uint cash, uint borrows, uint reserves) external view returns (uint, uint); + function getBorrowRate(uint cash, uint borrows, uint reserves) external view returns (uint); /** - * @notice Marker function used for light validation when updating the interest rate model of a market - * @dev Marker function used for light validation when updating the interest rate model of a market. Implementations should simply return true. - * @return Success or failure + * @notice Calculates the current supply interest rate per block + * @param cash The total amount of cash the market has + * @param borrows The total amount of borrows the market has outstanding + * @param reserves The total amnount of reserves the market has + * @param reserveFactorMantissa The current reserve factor the market has + * @return The supply rate per block (as a percentage, and scaled by 1e18) */ - function isInterestRateModel() external view returns (bool); -} \ No newline at end of file + function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) external view returns (uint); + +} diff --git a/contracts/JumpRateModel.sol b/contracts/JumpRateModel.sol new file mode 100644 index 000000000..2048d1682 --- /dev/null +++ b/contracts/JumpRateModel.sol @@ -0,0 +1,111 @@ +pragma solidity ^0.5.12; + +import "./InterestRateModel.sol"; +import "./SafeMath.sol"; + +/** + * @title Compound's JumpRateModel Contract + * @author Compound + */ +contract JumpRateModel is InterestRateModel { + using SafeMath for uint; + + event NewInterestParams(uint baseRatePerBlock, uint multiplierPerBlock, uint kink, uint jump); + + /** + * @notice Indicator that this is an InterestRateModel contract (for inspection) + */ + bool public constant isInterestRateModel = true; + + /** + * @notice The approximate number of blocks per year that is assumed by the interest rate model + */ + uint public constant blocksPerYear = 2102400; + + /** + * @notice The multiplier of utilization rate that gives the slope of the interest rate + */ + uint public multiplierPerBlock; + + /** + * @notice The base interest rate which is the y-intercept when utilization rate is 0 + */ + uint public baseRatePerBlock; + + /** + * @notice the utilization point at which an additional multiplier is applied + */ + uint public kink; + + /** + * @notice the additional multiplier to be applied to multiplierPerBlock after hitting a specified utilization point + */ + uint public jump; + + /** + * @notice Construct an interest rate model + * @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18) + * @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18) + * @param kink_ The utilization point at which an additional multiplier is applied + * @param jump_ The additional multiplier to be applied to multiplierPerBlock after hitting a specified utilization point + */ + constructor(uint baseRatePerYear, uint multiplierPerYear, uint kink_, uint jump_) public { + baseRatePerBlock = baseRatePerYear.div(blocksPerYear); + multiplierPerBlock = multiplierPerYear.div(blocksPerYear); + kink = kink_; + jump = jump_; + + emit NewInterestParams(baseRatePerBlock, multiplierPerBlock, kink, jump); + } + + /** + * @notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)` + * @param cash The amount of cash in the market + * @param borrows The amount of borrows in the market + * @param reserves The amount of reserves in the market (currently unused) + * @return The utilization rate as a mantissa between [0, 1e18] + */ + function utilizationRate(uint cash, uint borrows, uint reserves) public pure returns (uint) { + // Utilization rate is 0 when there are no borrows + if (borrows == 0) { + return 0; + } + + return borrows.mul(1e18).div(cash.add(borrows).sub(reserves)); + } + + /** + * @notice Calculates the current borrow rate per block, with the error code expected by the market + * @param cash The amount of cash in the market + * @param borrows The amount of borrows in the market + * @param reserves The amount of reserves in the market + * @return The borrow rate percentage per block as a mantissa (scaled by 1e18) + */ + function getBorrowRate(uint cash, uint borrows, uint reserves) public view returns (uint) { + uint util = utilizationRate(cash, borrows, reserves); + + if (util <= kink) { + return util.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock); + } else { + uint normalRate = kink.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock); + uint excessUtil = util.sub(kink); + uint jumpMultiplier = multiplierPerBlock.mul(jump); + return excessUtil.mul(jumpMultiplier).div(1e18).add(normalRate); + } + } + + /** + * @notice Calculates the current supply rate per block + * @param cash The amount of cash in the market + * @param borrows The amount of borrows in the market + * @param reserves The amount of reserves in the market + * @param reserveFactorMantissa The current reserve factor for the market + * @return The supply rate percentage per block as a mantissa (scaled by 1e18) + */ + function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) public view returns (uint) { + uint oneMinusReserveFactor = uint(1e18).sub(reserveFactorMantissa); + uint borrowRate = getBorrowRate(cash, borrows, reserves); + uint rateToPool = borrowRate.mul(oneMinusReserveFactor).div(1e18); + return utilizationRate(cash, borrows, reserves).mul(rateToPool).div(1e18); + } +} diff --git a/contracts/Maximillion.sol b/contracts/Maximillion.sol index cfca4b2aa..fe05853b4 100644 --- a/contracts/Maximillion.sol +++ b/contracts/Maximillion.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CEther.sol"; diff --git a/contracts/PriceOracle.sol b/contracts/PriceOracle.sol index 6fbcb1ab4..48c009bd5 100644 --- a/contracts/PriceOracle.sol +++ b/contracts/PriceOracle.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CToken.sol"; diff --git a/contracts/PriceOracleProxy.sol b/contracts/PriceOracleProxy.sol index a562bf863..c89430290 100644 --- a/contracts/PriceOracleProxy.sol +++ b/contracts/PriceOracleProxy.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CErc20.sol"; import "./CToken.sol"; @@ -35,7 +35,12 @@ contract PriceOracleProxy is PriceOracle { address public cUsdcAddress; /** - * @notice address of the cDAI contract, which we hand pick a key for + * @notice address of the cSAI contract, which we hand pick a key for + */ + address public cSaiAddress; + + /** + * @notice address of the cDAI contract, which we peg to the SAI price */ address public cDaiAddress; @@ -45,9 +50,9 @@ contract PriceOracleProxy is PriceOracle { address constant usdcOracleKey = address(1); /** - * @notice address of the DAI contract, which we hand pick a key for + * @notice address of the SAI contract, which we hand pick a key for */ - address constant daiOracleKey = address(2); + address constant saiOracleKey = address(2); /** * @notice address of the asset which contains the USD/ETH price from Maker @@ -64,22 +69,25 @@ contract PriceOracleProxy is PriceOracle { * @param v1PriceOracle_ The address of the v1 price oracle, which will continue to operate and hold prices for collateral assets * @param cEthAddress_ The address of cETH, which will return a constant 1e18, since all prices relative to ether * @param cUsdcAddress_ The address of cUSDC, which will be read from a special oracle key - * @param cDaiAddress_ The address of cDAI, which will be read from a special oracle key + * @param cSaiAddress_ The address of cSAI, which will be read from a special oracle key + * @param cDaiAddress_ The address of cDAI, which will be pegged to the SAI price */ constructor(address comptroller_, address v1PriceOracle_, address cEthAddress_, address cUsdcAddress_, + address cSaiAddress_, address cDaiAddress_) public { comptroller = Comptroller(comptroller_); v1PriceOracle = V1PriceOracleInterface(v1PriceOracle_); cEthAddress = cEthAddress_; cUsdcAddress = cUsdcAddress_; + cSaiAddress = cSaiAddress_; cDaiAddress = cDaiAddress_; - if (cDaiAddress_ != address(0)) { - makerUsdOracleKey = CErc20(cDaiAddress_).underlying(); + if (cSaiAddress_ != address(0)) { + makerUsdOracleKey = CErc20(cSaiAddress_).underlying(); } } @@ -109,12 +117,12 @@ contract PriceOracleProxy is PriceOracle { return v1PriceOracle.assetPrices(makerUsdOracleKey).mul(1e12); // 1e(18 - 6) } - if (cTokenAddress == cDaiAddress) { + if (cTokenAddress == cSaiAddress || cTokenAddress == cDaiAddress) { // check and bound the DAI/USDC posted price ratio // and use that to scale the maker price (for a token w/ 18 decimals) uint makerUsdPrice = v1PriceOracle.assetPrices(makerUsdOracleKey); uint postedUsdcPrice = v1PriceOracle.assetPrices(usdcOracleKey); - uint postedScaledDaiPrice = v1PriceOracle.assetPrices(daiOracleKey).mul(1e12); + uint postedScaledDaiPrice = v1PriceOracle.assetPrices(saiOracleKey).mul(1e12); uint daiUsdcRatio = postedScaledDaiPrice.mul(1e18).div(postedUsdcPrice); if (daiUsdcRatio < 0.95e18) { diff --git a/contracts/ReentrancyGuard.sol b/contracts/ReentrancyGuard.sol deleted file mode 100644 index 6bf885d0f..000000000 --- a/contracts/ReentrancyGuard.sol +++ /dev/null @@ -1,32 +0,0 @@ -pragma solidity ^0.5.8; - -/** - * @title Helps contracts guard against reentrancy attacks. - * @author Remco Bloemen , Eenae - * @dev If you mark a function `nonReentrant`, you should also - * mark it `external`. - */ -contract ReentrancyGuard { - /// @dev counter to allow mutex lock with only one SSTORE operation - uint256 private _guardCounter; - - constructor () internal { - // The counter starts at one to prevent changing it from zero to a non-zero - // value, which is a more expensive operation. - _guardCounter = 1; - } - - /** - * @dev Prevents a contract from calling itself, directly or indirectly. - * Calling a `nonReentrant` function from another `nonReentrant` - * function is not supported. It is possible to prevent this from happening - * by making the `nonReentrant` function external, and make it call a - * `private` function that does the actual work. - */ - modifier nonReentrant() { - _guardCounter += 1; - uint256 localCounter = _guardCounter; - _; - require(localCounter == _guardCounter, "re-entered"); - } -} diff --git a/contracts/SafeMath.sol b/contracts/SafeMath.sol index 1217f8ff9..5374faf51 100644 --- a/contracts/SafeMath.sol +++ b/contracts/SafeMath.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol // Subject to the MIT license. diff --git a/contracts/SimplePriceOracle.sol b/contracts/SimplePriceOracle.sol index afe627a9f..f05f66cf1 100644 --- a/contracts/SimplePriceOracle.sol +++ b/contracts/SimplePriceOracle.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./PriceOracle.sol"; import "./CErc20.sol"; @@ -6,17 +6,22 @@ import "./CErc20.sol"; contract SimplePriceOracle is PriceOracle { mapping(address => uint) prices; bool public constant isPriceOracle = true; + event PricePosted(address asset, uint previousPriceMantissa, uint requestedPriceMantissa, uint newPriceMantissa); + function getUnderlyingPrice(CToken cToken) public view returns (uint) { return prices[address(CErc20(address(cToken)).underlying())]; } function setUnderlyingPrice(CToken cToken, uint underlyingPriceMantissa) public { - prices[address(CErc20(address(cToken)).underlying())] = underlyingPriceMantissa; + address asset = address(CErc20(address(cToken)).underlying()); + emit PricePosted(asset, prices[asset], underlyingPriceMantissa, underlyingPriceMantissa); + prices[asset] = underlyingPriceMantissa; } - function setDirectPrice(address a, uint price) public { - prices[a] = price; + function setDirectPrice(address asset, uint price) public { + emit PricePosted(asset, prices[asset], price, price); + prices[asset] = price; } // v1 price oracle interface for use as backing of proxy diff --git a/contracts/Timelock.sol b/contracts/Timelock.sol index c86e46bb6..72aebe714 100644 --- a/contracts/Timelock.sol +++ b/contracts/Timelock.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./SafeMath.sol"; diff --git a/contracts/Unitroller.sol b/contracts/Unitroller.sol index 1badc09c7..7627a8801 100644 --- a/contracts/Unitroller.sol +++ b/contracts/Unitroller.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./ErrorReporter.sol"; import "./ComptrollerStorage.sol"; @@ -136,7 +136,6 @@ contract Unitroller is UnitrollerAdminStorage, ComptrollerErrorReporter { // delegate all other functions to current implementation (bool success, ) = comptrollerImplementation.delegatecall(msg.data); - // solium-disable-next-line security/no-inline-assembly assembly { let free_mem_ptr := mload(0x40) returndatacopy(free_mem_ptr, 0, returndatasize) diff --git a/contracts/WhitePaperInterestRateModel.sol b/contracts/WhitePaperInterestRateModel.sol index 7a7c5b464..a98bdea8f 100644 --- a/contracts/WhitePaperInterestRateModel.sol +++ b/contracts/WhitePaperInterestRateModel.sol @@ -1,133 +1,90 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; -import "./Exponential.sol"; import "./InterestRateModel.sol"; +import "./SafeMath.sol"; /** - * @title The Compound Standard Interest Rate Model with pluggable constants + * @title Compound's WhitePaperInterestRateModel Contract * @author Compound - * @notice See Section 2.4 of the Compound Whitepaper + * @notice The parameterized model described in section 2.4 of the original Compound Protocol whitepaper */ -contract WhitePaperInterestRateModel is InterestRateModel, Exponential { +contract WhitePaperInterestRateModel is InterestRateModel { + using SafeMath for uint; + + event NewInterestParams(uint baseRatePerBlock, uint multiplierPerBlock); + /** * @notice Indicator that this is an InterestRateModel contract (for inspection) */ bool public constant isInterestRateModel = true; + /** + * @notice The approximate number of blocks per year that is assumed by the interest rate model + */ + uint public constant blocksPerYear = 2102400; + /** * @notice The multiplier of utilization rate that gives the slope of the interest rate */ - uint public multiplier; + uint public multiplierPerBlock; /** * @notice The base interest rate which is the y-intercept when utilization rate is 0 */ - uint public baseRate; + uint public baseRatePerBlock; /** - * @notice The approximate number of blocks per year that is assumed by the interest rate model + * @notice Construct an interest rate model + * @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18) + * @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18) */ - uint public constant blocksPerYear = 2102400; - - constructor(uint baseRate_, uint multiplier_) public { - baseRate = baseRate_; - multiplier = multiplier_; - } + constructor(uint baseRatePerYear, uint multiplierPerYear) public { + baseRatePerBlock = baseRatePerYear.div(blocksPerYear); + multiplierPerBlock = multiplierPerYear.div(blocksPerYear); - enum IRError { - NO_ERROR, - FAILED_TO_ADD_CASH_PLUS_BORROWS, - FAILED_TO_GET_EXP, - FAILED_TO_MUL_UTILIZATION_RATE, - FAILED_TO_ADD_BASE_RATE + emit NewInterestParams(baseRatePerBlock, multiplierPerBlock); } - /* - * @dev Calculates the utilization rate (borrows / (cash + borrows)) as an Exp + /** + * @notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)` + * @param cash The amount of cash in the market + * @param borrows The amount of borrows in the market + * @param reserves The amount of reserves in the market (currently unused) + * @return The utilization rate as a mantissa between [0, 1e18] */ - function getUtilizationRate(uint cash, uint borrows) pure internal returns (IRError, Exp memory) { + function utilizationRate(uint cash, uint borrows, uint reserves) public pure returns (uint) { + // Utilization rate is 0 when there are no borrows if (borrows == 0) { - // Utilization rate is zero when there's no borrows - return (IRError.NO_ERROR, Exp({mantissa: 0})); - } - - (MathError err0, uint cashPlusBorrows) = addUInt(cash, borrows); - if (err0 != MathError.NO_ERROR) { - return (IRError.FAILED_TO_ADD_CASH_PLUS_BORROWS, Exp({mantissa: 0})); - } - - (MathError err1, Exp memory utilizationRate) = getExp(borrows, cashPlusBorrows); - if (err1 != MathError.NO_ERROR) { - return (IRError.FAILED_TO_GET_EXP, Exp({mantissa: 0})); + return 0; } - return (IRError.NO_ERROR, utilizationRate); + return borrows.mul(1e18).div(cash.add(borrows).sub(reserves)); } - /* - * @dev Calculates the utilization and borrow rates for use by getBorrowRate function + /** + * @notice Calculates the current borrow rate per block, with the error code expected by the market + * @param cash The amount of cash in the market + * @param borrows The amount of borrows in the market + * @param reserves The amount of reserves in the market + * @return The borrow rate percentage per block as a mantissa (scaled by 1e18) */ - function getUtilizationAndAnnualBorrowRate(uint cash, uint borrows) view internal returns (IRError, Exp memory, Exp memory) { - (IRError err0, Exp memory utilizationRate) = getUtilizationRate(cash, borrows); - if (err0 != IRError.NO_ERROR) { - return (err0, Exp({mantissa: 0}), Exp({mantissa: 0})); - } - - // Borrow Rate is 5% + UtilizationRate * 45% (baseRate + UtilizationRate * multiplier); - // 45% of utilizationRate, is `rate * 45 / 100` - (MathError err1, Exp memory utilizationRateMuled) = mulScalar(utilizationRate, multiplier); - // `mulScalar` only overflows when the product is >= 2^256. - // utilizationRate is a real number on the interval [0,1], which means that - // utilizationRate.mantissa is in the interval [0e18,1e18], which means that 45 times - // that is in the interval [0e18,45e18]. That interval has no intersection with 2^256, and therefore - // this can never overflow for the standard rates. - if (err1 != MathError.NO_ERROR) { - return (IRError.FAILED_TO_MUL_UTILIZATION_RATE, Exp({mantissa: 0}), Exp({mantissa: 0})); - } - - (MathError err2, Exp memory utilizationRateScaled) = divScalar(utilizationRateMuled, mantissaOne); - // 100 is a constant, and therefore cannot be zero, which is the only error case of divScalar. - assert(err2 == MathError.NO_ERROR); - - // Add the 5% for (5% + 45% * Ua) - (MathError err3, Exp memory annualBorrowRate) = addExp(utilizationRateScaled, Exp({mantissa: baseRate})); - // `addExp` only fails when the addition of mantissas overflow. - // As per above, utilizationRateMuled is capped at 45e18, - // and utilizationRateScaled is capped at 4.5e17. mantissaFivePercent = 0.5e17, and thus the addition - // is capped at 5e17, which is less than 2^256. This only applies to the standard rates - if (err3 != MathError.NO_ERROR) { - return (IRError.FAILED_TO_ADD_BASE_RATE, Exp({mantissa: 0}), Exp({mantissa: 0})); - } - - return (IRError.NO_ERROR, utilizationRate, annualBorrowRate); + function getBorrowRate(uint cash, uint borrows, uint reserves) public view returns (uint) { + uint ur = utilizationRate(cash, borrows, reserves); + return ur.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock); } /** - * @notice Gets the current borrow interest rate based on the given asset, total cash, total borrows - * and total reserves. - * @dev The return value should be scaled by 1e18, thus a return value of - * `(true, 1000000000000)` implies an interest rate of 0.000001 or 0.0001% *per block*. - * @param cash The total cash of the underlying asset in the CToken - * @param borrows The total borrows of the underlying asset in the CToken - * @param _reserves The total reserves of the underlying asset in the CToken - * @return Success or failure and the borrow interest rate per block scaled by 10e18 - */ - function getBorrowRate(uint cash, uint borrows, uint _reserves) public view returns (uint, uint) { - _reserves; // pragma ignore unused argument - - (IRError err0, Exp memory _utilizationRate, Exp memory annualBorrowRate) = getUtilizationAndAnnualBorrowRate(cash, borrows); - if (err0 != IRError.NO_ERROR) { - return (uint(err0), 0); - } - - // And then divide down by blocks per year. - (MathError err1, Exp memory borrowRate) = divScalar(annualBorrowRate, blocksPerYear); // basis points * blocks per year - // divScalar only fails when divisor is zero. This is clearly not the case. - assert(err1 == MathError.NO_ERROR); - - _utilizationRate; // pragma ignore unused variable - - // Note: mantissa is the rate scaled 1e18, which matches the expected result - return (uint(IRError.NO_ERROR), borrowRate.mantissa); + * @notice Calculates the current supply rate per block + * @param cash The amount of cash in the market + * @param borrows The amount of borrows in the market + * @param reserves The amount of reserves in the market + * @param reserveFactorMantissa The current reserve factor for the market + * @return The supply rate percentage per block as a mantissa (scaled by 1e18) + */ + function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) public view returns (uint) { + uint oneMinusReserveFactor = uint(1e18).sub(reserveFactorMantissa); + uint borrowRate = getBorrowRate(cash, borrows, reserves); + uint rateToPool = borrowRate.mul(oneMinusReserveFactor).div(1e18); + return utilizationRate(cash, borrows, reserves).mul(rateToPool).div(1e18); } } diff --git a/networks/kovan-abi.json b/networks/kovan-abi.json index 1694872a4..e6ba5ba46 100644 --- a/networks/kovan-abi.json +++ b/networks/kovan-abi.json @@ -1,69 +1,124 @@ { "ZRX": [ { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ + "inputs": [ { - "name": "", + "internalType": "uint256", + "name": "_initialAmount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_tokenName", + "type": "string" + }, + { + "internalType": "uint8", + "name": "_decimalUnits", + "type": "uint8" + }, + { + "internalType": "string", + "name": "_tokenSymbol", "type": "string" } ], "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x06fdde03" + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_owner", + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { + "indexed": false, + "internalType": "uint256", "name": "value", "type": "uint256" } ], - "name": "allocateTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x08bca566" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_spender", + "indexed": true, + "internalType": "address", + "name": "from", "type": "address" }, { - "name": "_value", + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "name": "approve", - "outputs": [ + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": false, + "inputs": [ { - "name": "", - "type": "bool" + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], + "name": "allocateTo", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0x08bca566" }, { "constant": true, - "inputs": [], - "name": "totalSupply", + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -71,27 +126,26 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x18160ddd" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "_from", - "type": "address" - }, - { - "name": "_to", + "internalType": "address", + "name": "_spender", "type": "address" }, { + "internalType": "uint256", "name": "_value", "type": "uint256" } ], - "name": "transferFrom", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -99,7 +153,29 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" }, { "constant": true, @@ -107,6 +183,7 @@ "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", "type": "uint8" } @@ -120,10 +197,12 @@ "constant": false, "inputs": [ { + "internalType": "address", "name": "_spender", "type": "address" }, { + "internalType": "uint256", "name": "_subtractedValue", "type": "uint256" } @@ -131,6 +210,7 @@ "name": "decreaseApproval", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -141,24 +221,47 @@ "signature": "0x66188463" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "_owner", + "internalType": "address", + "name": "_spender", "type": "address" + }, + { + "internalType": "uint256", + "name": "_addedValue", + "type": "uint256" } ], - "name": "balanceOf", + "name": "increaseApproval", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd73dd623" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0x06fdde03" }, { "constant": true, @@ -166,6 +269,7 @@ "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", "type": "string" } @@ -175,14 +279,32 @@ "type": "function", "signature": "0x95d89b41" }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "_to", "type": "address" }, { + "internalType": "uint256", "name": "_value", "type": "uint256" } @@ -190,6 +312,7 @@ "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -203,17 +326,25 @@ "constant": false, "inputs": [ { - "name": "_spender", + "internalType": "address", + "name": "_from", "type": "address" }, { - "name": "_addedValue", + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "increaseApproval", + "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -221,49 +352,51 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd73dd623" - }, + "signature": "0x23b872dd" + } + ], + "cUSDC": [ { - "constant": true, "inputs": [ { - "name": "_owner", + "internalType": "address", + "name": "underlying_", "type": "address" }, { - "name": "_spender", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", "type": "address" - } - ], - "name": "allowance", - "outputs": [ + }, { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdd62ed3e" - }, - { - "inputs": [ + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, { - "name": "_initialAmount", + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" }, { - "name": "_tokenName", + "internalType": "string", + "name": "name_", "type": "string" }, { - "name": "_decimalUnits", + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", "type": "uint8" }, { - "name": "_tokenSymbol", - "type": "string" + "internalType": "address payable", + "name": "admin_", + "type": "address" } ], "payable": false, @@ -275,267 +408,453 @@ "anonymous": false, "inputs": [ { - "indexed": true, - "name": "owner", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" }, { - "indexed": true, - "name": "spender", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" }, { "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "Approval", + "name": "AccrueInterest", "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { "anonymous": false, "inputs": [ { "indexed": true, - "name": "from", + "internalType": "address", + "name": "owner", "type": "address" }, { "indexed": true, - "name": "to", + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "Transfer", + "name": "Approval", "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - } - ], - "cUSDC": [ + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "string" + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x06fdde03" + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "spender", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" }, { - "name": "amount", + "indexed": false, + "internalType": "uint256", + "name": "info", "type": "uint256" - } - ], - "name": "approve", - "outputs": [ + }, { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x095ea7b3" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": false, + "anonymous": false, "inputs": [ { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", "name": "repayAmount", "type": "uint256" - } - ], - "name": "repayBorrow", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x0e752702" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x173b9904" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "account", + "indexed": false, + "internalType": "address", + "name": "oldAdmin", "type": "address" - } - ], - "name": "borrowBalanceCurrent", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x17bfdfbc" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x182df0f5" + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "src", + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", "type": "address" }, { - "name": "dst", + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", "type": "address" - }, - { - "name": "amount", - "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "borrower", + "indexed": false, + "internalType": "address", + "name": "redeemer", "type": "address" }, { - "name": "repayAmount", + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" - } - ], - "name": "repayBorrowBehalf", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x2608f818" + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { - "constant": true, - "inputs": [], - "name": "pendingAdmin", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "address" + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x26782247" + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { - "constant": true, + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": false, "inputs": [], - "name": "decimals", + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x313ce567" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "owner", - "type": "address" + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" } ], - "name": "balanceOfUnderlying", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -543,27 +862,35 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x3af9e669" + "signature": "0x3e941010" }, { - "constant": true, - "inputs": [], - "name": "getCash", + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + } + ], + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x601a0bf1" }, { "constant": false, "inputs": [ { + "internalType": "contract ComptrollerInterface", "name": "newComptroller", "type": "address" } @@ -571,6 +898,7 @@ "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -581,46 +909,62 @@ "signature": "0x4576b5db" }, { - "constant": true, - "inputs": [], - "name": "totalBorrows", + "constant": false, + "inputs": [ + { + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x47bd3718" + "signature": "0xf2b3abbd" }, { - "constant": true, - "inputs": [], - "name": "comptroller", + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5fe3b567" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "_reduceReserves", + "name": "_setReserveFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -628,14 +972,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0xfca7820b" }, { "constant": true, "inputs": [], - "name": "initialExchangeRateMantissa", + "name": "accrualBlockNumber", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -643,29 +988,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x675d972c" + "signature": "0x6c540baf" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "accrualBlockNumber", + "name": "accrueInterest", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x6c540baf" + "signature": "0xa6afed95" }, { "constant": true, "inputs": [], - "name": "underlying", + "name": "admin", "outputs": [ { + "internalType": "address payable", "name": "", "type": "address" } @@ -673,124 +1020,119 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6f307dc3" + "signature": "0xf851a440" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "owner", "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "spender", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" - }, - { - "constant": false, - "inputs": [], - "name": "totalBorrowsCurrent", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x73acee98" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "redeemAmount", + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "redeemUnderlying", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x852a12e3" + "signature": "0x095ea7b3" }, { "constant": true, - "inputs": [], - "name": "totalReserves", - "outputs": [ + "inputs": [ { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "owner", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x8f840ddd" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0x70a08231" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "owner", "type": "address" } ], - "name": "borrowBalanceStored", + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95dd9193" + "signature": "0x3af9e669" }, { "constant": false, "inputs": [ { - "name": "mintAmount", + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], - "name": "mint", + "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -798,46 +1140,51 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa0712d68" + "signature": "0xc5ebeaec" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", - "outputs": [ + "inputs": [ { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0x17bfdfbc" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "dst", + "internalType": "address", + "name": "account", "type": "address" - }, - { - "name": "amount", - "type": "uint256" } ], - "name": "transfer", + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x95dd9193" }, { "constant": true, @@ -845,6 +1192,7 @@ "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -857,9 +1205,10 @@ { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -867,47 +1216,47 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0xf8f9da28" }, { - "constant": false, - "inputs": [ - { - "name": "liquidator", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ { - "name": "borrower", + "internalType": "contract ComptrollerInterface", + "name": "", "type": "address" - }, - { - "name": "seizeTokens", - "type": "uint256" } ], - "name": "seize", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5fe3b567" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0x313ce567" }, { "constant": false, - "inputs": [ - { - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "_setPendingAdmin", + "inputs": [], + "name": "exchangeRateCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -915,27 +1264,29 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb71d1a0c" + "signature": "0xbd6d894d" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "exchangeRateCurrent", + "name": "exchangeRateStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xbd6d894d" + "signature": "0x182df0f5" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" } @@ -943,18 +1294,22 @@ "name": "getAccountSnapshot", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" }, { + "internalType": "uint256", "name": "", "type": "uint256" }, { + "internalType": "uint256", "name": "", "type": "uint256" }, { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -965,131 +1320,155 @@ "signature": "0xc37f68e2" }, { - "constant": false, - "inputs": [ - { - "name": "borrowAmount", - "type": "uint256" - } - ], - "name": "borrow", + "constant": true, + "inputs": [], + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0x3b1d21a2" }, { "constant": false, "inputs": [ { - "name": "redeemTokens", - "type": "uint256" - } - ], - "name": "redeem", - "outputs": [ + "internalType": "address", + "name": "underlying_", + "type": "address" + }, { - "name": "", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xdb006a75" + "signature": "0x1a31d465" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "owner", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", "type": "address" }, { - "name": "spender", + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", "type": "address" - } - ], - "name": "allowance", - "outputs": [ + }, { - "name": "", + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdd62ed3e" - }, - { - "constant": false, - "inputs": [], - "name": "_acceptAdmin", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x99d8c1b4" }, { - "constant": false, - "inputs": [ - { - "name": "newInterestRateModel", - "type": "address" - } - ], - "name": "_setInterestRateModel", + "constant": true, + "inputs": [], + "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0xf3fdb15a" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0xfe9c44ae" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "borrower", "type": "address" }, { + "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { + "internalType": "contract CTokenInterface", "name": "cTokenCollateral", "type": "address" } @@ -1097,6 +1476,7 @@ "name": "liquidateBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -1106,47 +1486,73 @@ "type": "function", "signature": "0xf5e3c462" }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa0712d68" + }, { "constant": true, "inputs": [], - "name": "admin", + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "address" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0x06fdde03" }, { "constant": true, "inputs": [], - "name": "borrowRatePerBlock", + "name": "pendingAdmin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf8f9da28" + "signature": "0x26782247" }, { "constant": false, "inputs": [ { - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "_setReserveFactor", + "name": "redeem", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -1154,488 +1560,529 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xfca7820b" + "signature": "0xdb006a75" }, { - "constant": true, - "inputs": [], - "name": "isCToken", + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xfe9c44ae" + "signature": "0x852a12e3" }, { + "constant": false, "inputs": [ { - "name": "underlying_", - "type": "address" - }, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", + "outputs": [ { - "name": "comptroller_", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" + }, + { + "constant": false, + "inputs": [ { - "name": "interestRateModel_", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "initialExchangeRateMantissa_", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrowBehalf", + "outputs": [ { - "name": "name_", - "type": "string" + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "liquidator", + "type": "address" }, { - "name": "symbol_", - "type": "string" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "name": "decimals_", + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seize", + "outputs": [ + { + "internalType": "uint256", + "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "type": "function", + "signature": "0xb2a02ff1" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ { - "indexed": false, - "name": "interestAccumulated", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xae9d70b0" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "indexed": false, - "name": "borrowIndex", - "type": "uint256" - }, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "AccrueInterest", - "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" }, { - "anonymous": false, - "inputs": [ + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ { - "indexed": false, - "name": "minter", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" + }, + { + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ { - "indexed": false, - "name": "mintAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f840ddd" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "indexed": false, - "name": "mintTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "redeemer", + "internalType": "address", + "name": "dst", "type": "address" }, { - "indexed": false, - "name": "redeemAmount", + "internalType": "uint256", + "name": "amount", "type": "uint256" - }, + } + ], + "name": "transfer", + "outputs": [ { - "indexed": false, - "name": "redeemTokens", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "Redeem", - "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "src", "type": "address" }, { - "indexed": false, - "name": "borrowAmount", - "type": "uint256" + "internalType": "address", + "name": "dst", + "type": "address" }, { - "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "amount", "type": "uint256" - }, + } + ], + "name": "transferFrom", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ { - "indexed": false, - "name": "payer", + "internalType": "address", + "name": "", "type": "address" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" + } + ], + "PriceOracle": [ + { + "anonymous": false, + "inputs": [ { "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "asset", "type": "address" }, { "indexed": false, - "name": "repayAmount", + "internalType": "uint256", + "name": "previousPriceMantissa", "type": "uint256" }, { "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "requestedPriceMantissa", "type": "uint256" }, { "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "newPriceMantissa", "type": "uint256" } ], - "name": "RepayBorrow", + "name": "PricePosted", "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "signature": "0xdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae7" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "liquidator", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", - "type": "address" - }, - { - "indexed": false, - "name": "repayAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "cTokenCollateral", - "type": "address" - }, - { - "indexed": false, - "name": "seizeTokens", - "type": "uint256" - } - ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" - }, - { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" - }, - { - "indexed": false, - "name": "newPendingAdmin", + "internalType": "address", + "name": "asset", "type": "address" } ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldAdmin", - "type": "address" - }, + "name": "assetPrices", + "outputs": [ { - "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5e9a523c" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": false, - "name": "oldComptroller", - "type": "address" - }, - { - "indexed": false, - "name": "newComptroller", + "internalType": "contract CToken", + "name": "cToken", "type": "address" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldInterestRateModel", - "type": "address" - }, + "name": "getUnderlyingPrice", + "outputs": [ { - "indexed": false, - "name": "newInterestRateModel", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xfc57d4df" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldReserveFactorMantissa", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "isPriceOracle", + "outputs": [ { - "indexed": false, - "name": "newReserveFactorMantissa", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x66331bba" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "admin", + "internalType": "address", + "name": "asset", "type": "address" }, { - "indexed": false, - "name": "reduceAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "newTotalReserves", + "internalType": "uint256", + "name": "price", "type": "uint256" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "name": "setDirectPrice", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x09a8acb0" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "error", - "type": "uint256" - }, - { - "indexed": false, - "name": "info", - "type": "uint256" + "internalType": "contract CToken", + "name": "cToken", + "type": "address" }, { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "underlyingPriceMantissa", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - }, + "name": "setUnderlyingPrice", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x127ffda0" + } + ], + "PriceOracleProxy": [ { - "anonymous": false, "inputs": [ { - "indexed": true, - "name": "from", + "internalType": "address", + "name": "comptroller_", "type": "address" }, { - "indexed": true, - "name": "to", + "internalType": "address", + "name": "v1PriceOracle_", "type": "address" }, { - "indexed": false, - "name": "amount", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", + "internalType": "address", + "name": "cEthAddress_", "type": "address" }, { - "indexed": true, - "name": "spender", + "internalType": "address", + "name": "cUsdcAddress_", "type": "address" }, { - "indexed": false, - "name": "amount", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "PriceOracle": [ - { - "constant": false, - "inputs": [ - { - "name": "cToken", + "internalType": "address", + "name": "cSaiAddress_", "type": "address" }, { - "name": "underlyingPriceMantissa", - "type": "uint256" + "internalType": "address", + "name": "cDaiAddress_", + "type": "address" } ], - "name": "setUnderlyingPrice", - "outputs": [], "payable": false, "stateMutability": "nonpayable", - "type": "function", - "signature": "0x127ffda0" + "type": "constructor", + "signature": "constructor" }, { "constant": true, - "inputs": [ - { - "name": "asset", - "type": "address" - } - ], - "name": "assetPrices", + "inputs": [], + "name": "cDaiAddress", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5e9a523c" + "signature": "0xf2c65bf9" }, { "constant": true, "inputs": [], - "name": "isPriceOracle", + "name": "cEthAddress", "outputs": [ { + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x66331bba" + "signature": "0x2ed58e15" }, { "constant": true, - "inputs": [ - { - "name": "cToken", - "type": "address" - } - ], - "name": "getUnderlyingPrice", + "inputs": [], + "name": "cSaiAddress", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfc57d4df" - } - ], - "PriceOracleProxy": [ + "signature": "0x21b49128" + }, { "constant": true, "inputs": [], - "name": "comptroller", + "name": "cUsdcAddress", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -1643,57 +2090,77 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5fe3b567" + "signature": "0xff11439b" }, { "constant": true, "inputs": [], - "name": "isPriceOracle", + "name": "comptroller", "outputs": [ { + "internalType": "contract Comptroller", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x66331bba" + "signature": "0x5fe3b567" }, { "constant": true, - "inputs": [], - "name": "cEtherAddress", + "inputs": [ + { + "internalType": "contract CToken", + "name": "cToken", + "type": "address" + } + ], + "name": "getUnderlyingPrice", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xde836acf" + "signature": "0xfc57d4df" }, { "constant": true, - "inputs": [ + "inputs": [], + "name": "isPriceOracle", + "outputs": [ { - "name": "cToken", - "type": "address" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "getUnderlyingPrice", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x66331bba" + }, + { + "constant": true, + "inputs": [], + "name": "makerUsdOracleKey", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfc57d4df" + "signature": "0xbc8a4ef4" }, { "constant": true, @@ -1701,6 +2168,7 @@ "name": "v1PriceOracle", "outputs": [ { + "internalType": "contract V1PriceOracleInterface", "name": "", "type": "address" } @@ -1709,19 +2177,14 @@ "stateMutability": "view", "type": "function", "signature": "0xfe10c98d" - }, + } + ], + "Maximillion": [ { "inputs": [ { - "name": "comptroller_", - "type": "address" - }, - { - "name": "v1PriceOracle_", - "type": "address" - }, - { - "name": "cEtherAddress_", + "internalType": "contract CEther", + "name": "cEther_", "type": "address" } ], @@ -1729,15 +2192,14 @@ "stateMutability": "nonpayable", "type": "constructor", "signature": "constructor" - } - ], - "Maximillion": [ + }, { "constant": true, "inputs": [], "name": "cEther", "outputs": [ { + "internalType": "contract CEther", "name": "", "type": "address" } @@ -1751,432 +2213,553 @@ "constant": false, "inputs": [ { + "internalType": "address", "name": "borrower", "type": "address" - }, - { - "name": "cEther_", - "type": "address" } ], - "name": "repayBehalfExplicit", + "name": "repayBehalf", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function", - "signature": "0x367b7f05" + "signature": "0x9f35c3d5" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "borrower", "type": "address" + }, + { + "internalType": "contract CEther", + "name": "cEther_", + "type": "address" } ], - "name": "repayBehalf", + "name": "repayBehalfExplicit", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function", - "signature": "0x9f35c3d5" - }, - { - "inputs": [ - { - "name": "cEther_", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "signature": "0x367b7f05" } ], "cDAI": [ { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x06fdde03" - }, - { - "constant": false, "inputs": [ { - "name": "spender", + "internalType": "address", + "name": "underlying_", "type": "address" }, { - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x095ea7b3" - }, - { - "constant": false, - "inputs": [ + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, { - "name": "repayAmount", + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "name": "repayBorrow", - "outputs": [ + }, { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x0e752702" - }, - { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", - "outputs": [ + "internalType": "string", + "name": "name_", + "type": "string" + }, { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x173b9904" - }, - { - "constant": false, - "inputs": [ + "internalType": "string", + "name": "symbol_", + "type": "string" + }, { - "name": "account", + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "address payable", + "name": "admin_", "type": "address" - } - ], - "name": "borrowBalanceCurrent", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "implementation_", + "type": "address" + }, + { + "internalType": "bytes", + "name": "becomeImplementationData", + "type": "bytes" } ], "payable": false, "stateMutability": "nonpayable", - "type": "function", - "signature": "0x17bfdfbc" + "type": "constructor", + "signature": "constructor" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x182df0f5" + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "src", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "dst", + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { + "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { - "constant": false, + "anonymous": false, "inputs": [ { + "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { - "name": "repayAmount", + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" - } - ], - "name": "repayBorrowBehalf", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x2608f818" + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" }, { - "constant": true, - "inputs": [], - "name": "pendingAdmin", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x26782247" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x313ce567" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "owner", + "indexed": false, + "internalType": "address", + "name": "minter", "type": "address" - } - ], - "name": "balanceOfUnderlying", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x3af9e669" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": true, - "inputs": [], - "name": "getCash", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x3b1d21a2" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { - "constant": false, + "anonymous": false, "inputs": [ { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", "name": "newComptroller", "type": "address" } ], - "name": "_setComptroller", - "outputs": [ + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newImplementation", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x4576b5db" + "name": "NewImplementation", + "type": "event", + "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a" }, { - "constant": true, - "inputs": [], - "name": "totalBorrows", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x47bd3718" + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { - "constant": true, - "inputs": [], - "name": "comptroller", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x5fe3b567" + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "reduceAmount", + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", "type": "uint256" - } - ], - "name": "_reduceReserves", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x601a0bf1" + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { - "constant": true, - "inputs": [], - "name": "initialExchangeRateMantissa", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x675d972c" + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { - "constant": true, - "inputs": [], - "name": "accrualBlockNumber", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x6c540baf" + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { - "constant": true, - "inputs": [], - "name": "underlying", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "benefactor", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x6f307dc3" + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "owner", + "indexed": false, + "internalType": "address", + "name": "admin", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "name": "balanceOf", - "outputs": [ + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" }, { "constant": false, "inputs": [], - "name": "totalBorrowsCurrent", + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2184,19 +2767,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x73acee98" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "redeemAmount", + "internalType": "uint256", + "name": "addAmount", "type": "uint256" } ], - "name": "redeemUnderlying", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2204,69 +2789,91 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x852a12e3" + "signature": "0x3e941010" }, { - "constant": true, - "inputs": [], - "name": "totalReserves", + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + } + ], + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x8f840ddd" + "signature": "0x601a0bf1" }, { - "constant": true, - "inputs": [], - "name": "symbol", + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95d89b41" + "signature": "0x4576b5db" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "implementation_", "type": "address" - } - ], - "name": "borrowBalanceStored", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "allowResign", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "becomeImplementationData", + "type": "bytes" } ], + "name": "_setImplementation", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95dd9193" + "signature": "0x555bcc40" }, { "constant": false, "inputs": [ { - "name": "mintAmount", - "type": "uint256" + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "name": "mint", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2274,14 +2881,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa0712d68" + "signature": "0xf2b3abbd" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", + "inputs": [ + { + "internalType": "address payable", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2289,38 +2903,37 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "dst", - "type": "address" - }, - { - "name": "amount", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "transfer", + "name": "_setReserveFactor", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0xfca7820b" }, { "constant": true, "inputs": [], - "name": "borrowIndex", + "name": "accrualBlockNumber", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2328,122 +2941,143 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0x6c540baf" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "supplyRatePerBlock", + "name": "accrueInterest", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa6afed95" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0xf851a440" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "liquidator", + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "borrower", + "internalType": "address", + "name": "spender", "type": "address" - }, - { - "name": "seizeTokens", - "type": "uint256" } ], - "name": "seize", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", + "internalType": "address", + "name": "spender", "type": "address" - } - ], - "name": "_setPendingAdmin", - "outputs": [ + }, { - "name": "", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xb71d1a0c" - }, - { - "constant": false, - "inputs": [], - "name": "exchangeRateCurrent", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbd6d894d" + "signature": "0x095ea7b3" }, { "constant": true, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "owner", "type": "address" } ], - "name": "getAccountSnapshot", + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [ { - "name": "", - "type": "uint256" - }, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", + "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xc37f68e2" + "signature": "0x3af9e669" }, { "constant": false, "inputs": [ { + "internalType": "uint256", "name": "borrowAmount", "type": "uint256" } @@ -2451,6 +3085,7 @@ "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2464,13 +3099,15 @@ "constant": false, "inputs": [ { - "name": "redeemTokens", - "type": "uint256" + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "redeem", + "name": "borrowBalanceCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2478,23 +3115,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xdb006a75" + "signature": "0x17bfdfbc" }, { "constant": true, "inputs": [ { - "name": "owner", - "type": "address" - }, - { - "name": "spender", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "allowance", + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2502,77 +3137,123 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0x95dd9193" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0xaa5af0fd" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", + "outputs": [ { - "name": "newInterestRateModel", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "_setInterestRateModel", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf8f9da28" + }, + { + "constant": true, + "inputs": [], + "name": "comptroller", "outputs": [ { + "internalType": "contract ComptrollerInterface", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0x5fe3b567" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "address" + "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0x313ce567" }, { "constant": false, "inputs": [ { - "name": "borrower", - "type": "address" - }, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "delegateToImplementation", + "outputs": [ { - "name": "repayAmount", - "type": "uint256" - }, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0933c1ed" + }, + { + "constant": true, + "inputs": [ { - "name": "cTokenCollateral", - "type": "address" + "internalType": "bytes", + "name": "data", + "type": "bytes" } ], - "name": "liquidateBorrow", + "name": "delegateToViewImplementation", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x4487152f" + }, + { + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2580,29 +3261,68 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf5e3c462" + "signature": "0xbd6d894d" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "exchangeRateStored", "outputs": [ { + "internalType": "uint256", "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x182df0f5" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", "type": "address" } ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0xc37f68e2" }, { "constant": true, "inputs": [], - "name": "borrowRatePerBlock", + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2610,27 +3330,39 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf8f9da28" + "signature": "0x3b1d21a2" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "implementation", + "outputs": [ { - "name": "newReserveFactorMantissa", - "type": "uint256" + "internalType": "address", + "name": "", + "type": "address" } ], - "name": "_setReserveFactor", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5c60da1b" + }, + { + "constant": true, + "inputs": [], + "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xfca7820b" + "signature": "0xf3fdb15a" }, { "constant": true, @@ -2638,6 +3370,7 @@ "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -2648,394 +3381,464 @@ "signature": "0xfe9c44ae" }, { + "constant": false, "inputs": [ { - "name": "underlying_", - "type": "address" - }, - { - "name": "comptroller_", - "type": "address" - }, - { - "name": "interestRateModel_", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "initialExchangeRateMantissa_", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" }, { - "name": "name_", - "type": "string" - }, - { - "name": "symbol_", - "type": "string" - }, + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [ { - "name": "decimals_", + "internalType": "uint256", + "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "type": "function", + "signature": "0xf5e3c462" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "interestAccumulated", - "type": "uint256" - }, - { - "indexed": false, - "name": "borrowIndex", + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" - }, + } + ], + "name": "mint", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "AccrueInterest", - "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa0712d68" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "minter", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ { - "indexed": false, - "name": "mintAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "mintTokens", - "type": "uint256" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ { - "indexed": false, - "name": "redeemer", + "internalType": "address payable", + "name": "", "type": "address" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ { - "indexed": false, - "name": "redeemAmount", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" - }, + } + ], + "name": "redeem", + "outputs": [ { - "indexed": false, - "name": "redeemTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Redeem", - "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xdb006a75" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "borrower", - "type": "address" - }, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", + "outputs": [ { - "indexed": false, - "name": "borrowAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x852a12e3" + }, + { + "constant": false, + "inputs": [ { - "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrow", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "payer", - "type": "address" - }, - { - "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { - "indexed": false, + "internalType": "uint256", "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrowBehalf", + "outputs": [ { - "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "RepayBorrow", - "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, + "internalType": "address", "name": "liquidator", "type": "address" }, { - "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { - "indexed": false, - "name": "repayAmount", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" - }, - { - "indexed": false, - "name": "cTokenCollateral", - "type": "address" - }, + } + ], + "name": "seize", + "outputs": [ { - "indexed": false, - "name": "seizeTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb2a02ff1" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ { - "indexed": false, - "name": "newPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xae9d70b0" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldComptroller", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ { - "indexed": false, - "name": "newComptroller", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldInterestRateModel", - "type": "address" - }, + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ { - "indexed": false, - "name": "newInterestRateModel", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ { - "indexed": false, - "name": "oldReserveFactorMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f840ddd" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "indexed": false, - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "admin", + "internalType": "address", + "name": "dst", "type": "address" }, { - "indexed": false, - "name": "reduceAmount", + "internalType": "uint256", + "name": "amount", "type": "uint256" - }, + } + ], + "name": "transfer", + "outputs": [ { - "indexed": false, - "name": "newTotalReserves", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "error", - "type": "uint256" + "internalType": "address", + "name": "src", + "type": "address" }, { - "indexed": false, - "name": "info", - "type": "uint256" + "internalType": "address", + "name": "dst", + "type": "address" }, { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" + } + ], + "DAI": [ { "anonymous": false, "inputs": [ { "indexed": true, - "name": "from", + "internalType": "address", + "name": "owner", "type": "address" }, { "indexed": true, - "name": "to", + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "Transfer", + "name": "Approval", "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { "anonymous": false, "inputs": [ { "indexed": true, - "name": "owner", + "internalType": "address", + "name": "from", "type": "address" }, { "indexed": true, - "name": "spender", + "internalType": "address", + "name": "to", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "Approval", + "name": "Transfer", "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "DAI": [ + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { + "internalType": "string", "name": "", "type": "string" } @@ -3046,47 +3849,36 @@ "signature": "0x06fdde03" }, { - "constant": false, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "name": "value", - "type": "uint256" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "allocateTo", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x08bca566" + "signature": "0x95d89b41" }, { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", + "constant": true, + "inputs": [], + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "bool" + "type": "uint8" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x095ea7b3" + "signature": "0x313ce567" }, { "constant": true, @@ -3094,6 +3886,7 @@ "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -3104,348 +3897,418 @@ "signature": "0x18160ddd" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "_from", - "type": "address" - }, - { - "name": "_to", + "internalType": "address", + "name": "owner", "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", + "name": "balanceOf", "outputs": [ { - "name": "", - "type": "uint8" + "internalType": "uint256", + "name": "balance", + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x313ce567" + "signature": "0x70a08231" }, { "constant": false, "inputs": [ { - "name": "_spender", + "internalType": "address", + "name": "dst", "type": "address" }, { - "name": "_subtractedValue", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "decreaseApproval", + "name": "transfer", "outputs": [ { - "name": "", + "internalType": "bool", + "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x66188463" + "signature": "0xa9059cbb" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "_owner", + "internalType": "address", + "name": "src", "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ + }, { - "name": "", + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", + "name": "transferFrom", "outputs": [ { - "name": "", - "type": "string" + "internalType": "bool", + "name": "success", + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95d89b41" + "signature": "0x23b872dd" }, { "constant": false, "inputs": [ { - "name": "_to", + "internalType": "address", + "name": "spender", "type": "address" }, { - "name": "_value", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "transfer", + "name": "approve", "outputs": [ { - "name": "", + "internalType": "bool", + "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x095ea7b3" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "_spender", + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "_addedValue", - "type": "uint256" + "internalType": "address", + "name": "spender", + "type": "address" } ], - "name": "increaseApproval", + "name": "allowance", "outputs": [ { - "name": "", - "type": "bool" + "internalType": "uint256", + "name": "remaining", + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xd73dd623" + "signature": "0xdd62ed3e" + } + ], + "StdComptroller": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "_owner", - "type": "address" + "indexed": false, + "internalType": "string", + "name": "action", + "type": "string" }, { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "bool", + "name": "pauseState", + "type": "bool" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdd62ed3e" + "name": "ActionPaused", + "type": "event", + "signature": "0xef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de0" }, { + "anonymous": false, "inputs": [ { - "name": "_initialAmount", + "indexed": false, + "internalType": "uint256", + "name": "error", "type": "uint256" }, { - "name": "_tokenName", - "type": "string" - }, - { - "name": "_decimalUnits", - "type": "uint8" + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" }, { - "name": "_tokenSymbol", - "type": "string" + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { "indexed": false, - "name": "value", - "type": "uint256" + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "Approval", + "name": "MarketEntered", "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "from", + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { - "indexed": true, - "name": "to", + "indexed": false, + "internalType": "address", + "name": "account", "type": "address" - }, + } + ], + "name": "MarketExited", + "type": "event", + "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" + }, + { + "anonymous": false, + "inputs": [ { "indexed": false, - "name": "value", - "type": "uint256" + "internalType": "contract CToken", + "name": "cToken", + "type": "address" } ], - "name": "Transfer", + "name": "MarketListed", "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - } - ], - "StdComptroller": [ + "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" + }, { - "constant": true, - "inputs": [], - "name": "isComptroller", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "uint256", + "name": "oldCloseFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCloseFactorMantissa", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x007e3dd2" + "name": "NewCloseFactor", + "type": "event", + "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" }, { - "constant": false, + "anonymous": false, "inputs": [ { + "indexed": false, + "internalType": "contract CToken", "name": "cToken", "type": "address" }, { - "name": "payer", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "oldCollateralFactorMantissa", + "type": "uint256" }, { - "name": "borrower", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "newCollateralFactorMantissa", + "type": "uint256" + } + ], + "name": "NewCollateralFactor", + "type": "event", + "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldLiquidationIncentiveMantissa", + "type": "uint256" }, { - "name": "repayAmount", + "indexed": false, + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" + } + ], + "name": "NewLiquidationIncentive", + "type": "event", + "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldMaxAssets", "type": "uint256" }, { - "name": "borrowerIndex", + "indexed": false, + "internalType": "uint256", + "name": "newMaxAssets", "type": "uint256" } ], - "name": "repayBorrowVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x1ededc91" + "name": "NewMaxAssets", + "type": "event", + "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cToken", + "indexed": false, + "internalType": "address", + "name": "oldPauseGuardian", "type": "address" }, { - "name": "payer", + "indexed": false, + "internalType": "address", + "name": "newPauseGuardian", "type": "address" - }, + } + ], + "name": "NewPauseGuardian", + "type": "event", + "signature": "0x0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e" + }, + { + "anonymous": false, + "inputs": [ { - "name": "borrower", + "indexed": false, + "internalType": "contract PriceOracle", + "name": "oldPriceOracle", "type": "address" }, { - "name": "repayAmount", - "type": "uint256" + "indexed": false, + "internalType": "contract PriceOracle", + "name": "newPriceOracle", + "type": "address" } ], - "name": "repayBorrowAllowed", - "outputs": [ + "name": "NewPriceOracle", + "type": "event", + "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" + }, + { + "constant": false, + "inputs": [ { - "name": "", - "type": "uint256" + "internalType": "contract Unitroller", + "name": "unitroller", + "type": "address" } ], + "name": "_become", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x24008a62" + "signature": "0x1d504dc6" }, { - "constant": true, - "inputs": [], - "name": "pendingAdmin", + "constant": false, + "inputs": [ + { + "internalType": "bool", + "name": "state", + "type": "bool" + } + ], + "name": "_setBorrowPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x26782247" + "signature": "0x56133fc8" }, { "constant": false, "inputs": [ { + "internalType": "uint256", "name": "newCloseFactorMantissa", "type": "uint256" } @@ -3453,6 +4316,7 @@ "name": "_setCloseFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -3466,149 +4330,108 @@ "constant": false, "inputs": [ { - "name": "unitroller", - "type": "address" - }, - { - "name": "_oracle", + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { - "name": "_closeFactorMantissa", + "internalType": "uint256", + "name": "newCollateralFactorMantissa", "type": "uint256" - }, + } + ], + "name": "_setCollateralFactor", + "outputs": [ { - "name": "_maxAssets", + "internalType": "uint256", + "name": "", "type": "uint256" - }, - { - "name": "reinitializing", - "type": "bool" } ], - "name": "_become", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x32000e00" + "signature": "0xe4028eee" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "minter", - "type": "address" - }, - { - "name": "mintAmount", + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", "type": "uint256" - }, + } + ], + "name": "_setLiquidationIncentive", + "outputs": [ { - "name": "mintTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "mintVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x41c728b9" + "signature": "0x4fd42e17" }, { "constant": false, "inputs": [ { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" - }, - { - "name": "seizeTokens", + "internalType": "uint256", + "name": "newMaxAssets", "type": "uint256" } ], - "name": "liquidateBorrowVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x47ef3b3b" - }, - { - "constant": true, - "inputs": [], - "name": "liquidationIncentiveMantissa", + "name": "_setMaxAssets", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x4ada90af" + "signature": "0xd9226ced" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "minter", - "type": "address" - }, - { - "name": "mintAmount", - "type": "uint256" + "internalType": "bool", + "name": "state", + "type": "bool" } ], - "name": "mintAllowed", + "name": "_setMintPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4ef4c3e1" + "signature": "0x9845f280" }, { "constant": false, "inputs": [ { - "name": "newLiquidationIncentiveMantissa", - "type": "uint256" + "internalType": "address", + "name": "newPauseGuardian", + "type": "address" } ], - "name": "_setLiquidationIncentive", + "name": "_setPauseGuardian", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -3616,247 +4439,223 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4fd42e17" + "signature": "0x5f5af1aa" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "redeemer", + "internalType": "contract PriceOracle", + "name": "newOracle", "type": "address" - }, - { - "name": "redeemAmount", - "type": "uint256" - }, + } + ], + "name": "_setPriceOracle", + "outputs": [ { - "name": "redeemTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "redeemVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x51dff989" + "signature": "0x55ee1fe1" }, { "constant": false, "inputs": [ { - "name": "newOracle", - "type": "address" + "internalType": "bool", + "name": "state", + "type": "bool" } ], - "name": "_setPriceOracle", + "name": "_setSeizePaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x55ee1fe1" + "signature": "0x2d70db78" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, + "internalType": "bool", + "name": "state", + "type": "bool" + } + ], + "name": "_setTransferPaused", + "outputs": [ { - "name": "borrowAmount", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "borrowVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x5c778605" + "signature": "0x8ebf6364" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "contract CToken", + "name": "cToken", "type": "address" } ], - "name": "getAccountLiquidity", + "name": "_supportMarket", "outputs": [ { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5ec88c79" + "signature": "0xa76b3fda" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", + "internalType": "address", + "name": "", "type": "address" }, { - "name": "repayAmount", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "liquidateBorrowAllowed", + "name": "accountAssets", "outputs": [ { + "internalType": "contract CToken", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x5fc7e71e" + "signature": "0xdce15449" }, { - "constant": false, - "inputs": [ - { - "name": "cToken", - "type": "address" - }, - { - "name": "src", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ { - "name": "dst", + "internalType": "address", + "name": "", "type": "address" - }, - { - "name": "transferTokens", - "type": "uint256" } ], - "name": "transferVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x6a56947e" + "signature": "0xf851a440" }, { "constant": false, "inputs": [ { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "liquidator", + "internalType": "address", + "name": "cToken", "type": "address" }, { + "internalType": "address", "name": "borrower", "type": "address" }, { - "name": "seizeTokens", + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrowAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "seizeVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x6d35bf91" + "signature": "0xda3d454c" }, { "constant": true, "inputs": [], - "name": "oracle", + "name": "borrowGuardianPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x7dc0d1d0" + "signature": "0x9530f644" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "", + "internalType": "address", + "name": "cToken", "type": "address" - } - ], - "name": "markets", - "outputs": [ + }, { - "name": "isListed", - "type": "bool" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "name": "collateralFactorMantissa", + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], + "name": "borrowVerify", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x8e8f294b" + "signature": "0x5c778605" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" }, { + "internalType": "contract CToken", "name": "cToken", "type": "address" } @@ -3864,6 +4663,7 @@ "name": "checkMembership", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -3876,9 +4676,10 @@ { "constant": true, "inputs": [], - "name": "maxAssets", + "name": "closeFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -3886,285 +4687,340 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x94b2294b" + "signature": "0xe8755446" + }, + { + "constant": true, + "inputs": [], + "name": "comptrollerImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xbb82aa5e" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" + "internalType": "address[]", + "name": "cTokens", + "type": "address[]" } ], - "name": "_supportMarket", + "name": "enterMarkets", "outputs": [ { + "internalType": "uint256[]", "name": "", - "type": "uint256" + "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa76b3fda" + "signature": "0xc2998238" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "cTokenAddress", "type": "address" } ], - "name": "getAssetsIn", + "name": "exitMarket", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address[]" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xabfceffc" + "signature": "0xede4edd0" }, { "constant": true, - "inputs": [], - "name": "comptrollerImplementation", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountLiquidity", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xbb82aa5e" + "signature": "0x5ec88c79" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "internalType": "address", + "name": "account", "type": "address" - }, - { - "name": "transferTokens", - "type": "uint256" } ], - "name": "transferAllowed", + "name": "getAssetsIn", "outputs": [ { + "internalType": "contract CToken[]", "name": "", - "type": "uint256" + "type": "address[]" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xbdcdc258" + "signature": "0xabfceffc" }, { - "constant": false, - "inputs": [ - { - "name": "cTokens", - "type": "address[]" - } - ], - "name": "enterMarkets", + "constant": true, + "inputs": [], + "name": "isComptroller", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256[]" + "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc2998238" + "signature": "0x007e3dd2" }, { - "constant": true, + "constant": false, "inputs": [ { + "internalType": "address", "name": "cTokenBorrowed", "type": "address" }, { + "internalType": "address", "name": "cTokenCollateral", "type": "address" }, { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", "name": "repayAmount", "type": "uint256" } ], - "name": "liquidateCalculateSeizeTokens", + "name": "liquidateBorrowAllowed", "outputs": [ { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xc488847b" + "signature": "0x5fc7e71e" }, { "constant": false, "inputs": [ { - "name": "cTokenCollateral", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" }, { - "name": "cTokenBorrowed", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { + "internalType": "address", "name": "liquidator", "type": "address" }, { + "internalType": "address", "name": "borrower", "type": "address" }, { - "name": "seizeTokens", + "internalType": "uint256", + "name": "actualRepayAmount", "type": "uint256" - } - ], - "name": "seizeAllowed", - "outputs": [ + }, { - "name": "", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], + "name": "liquidateBorrowVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd02f7351" + "signature": "0x47ef3b3b" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "newMaxAssets", + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "uint256", + "name": "actualRepayAmount", "type": "uint256" } ], - "name": "_setMaxAssets", + "name": "liquidateCalculateSeizeTokens", "outputs": [ { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xd9226ced" + "signature": "0xc488847b" }, { - "constant": false, - "inputs": [ - { - "name": "cToken", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "borrowAmount", - "type": "uint256" - } - ], - "name": "borrowAllowed", + "constant": true, + "inputs": [], + "name": "liquidationIncentiveMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xda3d454c" + "signature": "0x4ada90af" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "", "type": "address" - }, - { - "name": "", - "type": "uint256" } ], - "name": "accountAssets", + "name": "markets", "outputs": [ { - "name": "", - "type": "address" + "internalType": "bool", + "name": "isListed", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "collateralFactorMantissa", + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdce15449" + "signature": "0x8e8f294b" }, { "constant": true, "inputs": [], - "name": "pendingComptrollerImplementation", + "name": "maxAssets", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdcfbc0c7" + "signature": "0x94b2294b" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "cToken", "type": "address" }, { - "name": "newCollateralFactorMantissa", + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" } ], - "name": "_setCollateralFactor", + "name": "mintAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4172,77 +5028,94 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe4028eee" + "signature": "0x4ef4c3e1" }, { "constant": true, "inputs": [], - "name": "closeFactorMantissa", + "name": "mintGuardianPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xe8755446" + "signature": "0x5dce0515" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "cToken", "type": "address" }, { - "name": "redeemer", + "internalType": "address", + "name": "minter", "type": "address" }, { - "name": "redeemTokens", + "internalType": "uint256", + "name": "actualMintAmount", "type": "uint256" - } - ], - "name": "redeemAllowed", - "outputs": [ + }, { - "name": "", + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], + "name": "mintVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xeabe7d91" + "signature": "0x41c728b9" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "oracle", + "outputs": [ { - "name": "cTokenAddress", + "internalType": "contract PriceOracle", + "name": "", "type": "address" } ], - "name": "exitMarket", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x7dc0d1d0" + }, + { + "constant": true, + "inputs": [], + "name": "pauseGuardian", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xede4edd0" + "signature": "0x24a3d622" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "pendingAdmin", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -4250,240 +5123,282 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0x26782247" }, { + "constant": true, "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - }, - { - "anonymous": false, - "inputs": [ + "name": "pendingComptrollerImplementation", + "outputs": [ { - "indexed": false, - "name": "cToken", + "internalType": "address", + "name": "", "type": "address" } ], - "name": "MarketListed", - "type": "event", - "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdcfbc0c7" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, + "internalType": "address", "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "account", + "internalType": "address", + "name": "redeemer", "type": "address" + }, + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" } ], - "name": "MarketEntered", - "type": "event", - "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" + "name": "redeemAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xeabe7d91" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, + "internalType": "address", "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "account", + "internalType": "address", + "name": "redeemer", "type": "address" - } - ], - "name": "MarketExited", - "type": "event", - "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" - }, - { - "anonymous": false, - "inputs": [ + }, { - "indexed": false, - "name": "oldCloseFactorMantissa", + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" }, { - "indexed": false, - "name": "newCloseFactorMantissa", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "NewCloseFactor", - "type": "event", - "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" + "name": "redeemVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x51dff989" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, + "internalType": "address", "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "oldCollateralFactorMantissa", - "type": "uint256" + "internalType": "address", + "name": "payer", + "type": "address" }, { - "indexed": false, - "name": "newCollateralFactorMantissa", + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "NewCollateralFactor", - "type": "event", - "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldLiquidationIncentiveMantissa", - "type": "uint256" - }, + "name": "repayBorrowAllowed", + "outputs": [ { - "indexed": false, - "name": "newLiquidationIncentiveMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewLiquidationIncentive", - "type": "event", - "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x24008a62" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldMaxAssets", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "actualRepayAmount", "type": "uint256" }, { - "indexed": false, - "name": "newMaxAssets", + "internalType": "uint256", + "name": "borrowerIndex", "type": "uint256" } ], - "name": "NewMaxAssets", - "type": "event", - "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" + "name": "repayBorrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1ededc91" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldPriceOracle", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { - "indexed": false, - "name": "newPriceOracle", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" - } - ], - "name": "NewPriceOracle", - "type": "event", - "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" - }, - { - "anonymous": false, - "inputs": [ + }, { - "indexed": false, - "name": "error", - "type": "uint256" + "internalType": "address", + "name": "liquidator", + "type": "address" }, { - "indexed": false, - "name": "info", - "type": "uint256" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - } - ], - "Unitroller": [ + "name": "seizeAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd02f7351" + }, { "constant": true, "inputs": [], - "name": "pendingAdmin", + "name": "seizeGuardianPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x26782247" + "signature": "0xac0b0bb7" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" - } - ], - "name": "_setPendingAdmin", - "outputs": [ + }, { - "name": "", + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], + "name": "seizeVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb71d1a0c" + "signature": "0x6d35bf91" }, { - "constant": true, - "inputs": [], - "name": "comptrollerImplementation", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", "type": "address" + }, + { + "internalType": "uint256", + "name": "transferTokens", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xbb82aa5e" - }, - { - "constant": false, - "inputs": [], - "name": "_acceptImplementation", + "name": "transferAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4491,73 +5406,57 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xc1e80334" + "signature": "0xbdcdc258" }, { "constant": true, "inputs": [], - "name": "pendingComptrollerImplementation", + "name": "transferGuardianPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdcfbc0c7" + "signature": "0x87f76303" }, { "constant": false, "inputs": [ { - "name": "newPendingImplementation", + "internalType": "address", + "name": "cToken", "type": "address" - } - ], - "name": "_setPendingImplementation", - "outputs": [ + }, { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xe992a041" - }, - { - "constant": false, - "inputs": [], - "name": "_acceptAdmin", - "outputs": [ + "internalType": "address", + "name": "src", + "type": "address" + }, { - "name": "", + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "transferTokens", "type": "uint256" } ], + "name": "transferVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe9c714f2" - }, - { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf851a440" - }, + "signature": "0x6a56947e" + } + ], + "Unitroller": [ { "inputs": [], "payable": false, @@ -4566,38 +5465,63 @@ "signature": "constructor" }, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldPendingImplementation", + "internalType": "address", + "name": "oldAdmin", "type": "address" }, { "indexed": false, - "name": "newPendingImplementation", + "internalType": "address", + "name": "newAdmin", "type": "address" } ], - "name": "NewPendingImplementation", + "name": "NewAdmin", "type": "event", - "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { "anonymous": false, "inputs": [ { "indexed": false, + "internalType": "address", "name": "oldImplementation", "type": "address" }, { "indexed": false, + "internalType": "address", "name": "newImplementation", "type": "address" } @@ -4611,11 +5535,13 @@ "inputs": [ { "indexed": false, + "internalType": "address", "name": "oldPendingAdmin", "type": "address" }, { "indexed": false, + "internalType": "address", "name": "newPendingAdmin", "type": "address" } @@ -4629,63 +5555,63 @@ "inputs": [ { "indexed": false, - "name": "oldAdmin", + "internalType": "address", + "name": "oldPendingImplementation", "type": "address" }, { "indexed": false, - "name": "newAdmin", + "internalType": "address", + "name": "newPendingImplementation", "type": "address" } ], - "name": "NewAdmin", + "name": "NewPendingImplementation", "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "error", - "type": "uint256" - }, - { - "indexed": false, - "name": "info", - "type": "uint256" - }, + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - } - ], - "Comptroller": [ + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe9c714f2" + }, { - "constant": true, + "constant": false, "inputs": [], - "name": "pendingAdmin", + "name": "_acceptImplementation", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x26782247" + "signature": "0xc1e80334" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "newPendingAdmin", "type": "address" } @@ -4693,6 +5619,7 @@ "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4703,26 +5630,18 @@ "signature": "0xb71d1a0c" }, { - "constant": true, - "inputs": [], - "name": "comptrollerImplementation", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "address", + "name": "newPendingImplementation", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xbb82aa5e" - }, - { - "constant": false, - "inputs": [], - "name": "_acceptImplementation", + "name": "_setPendingImplementation", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4730,14 +5649,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xc1e80334" + "signature": "0xe992a041" }, { "constant": true, "inputs": [], - "name": "pendingComptrollerImplementation", + "name": "admin", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -4745,49 +5665,47 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdcfbc0c7" + "signature": "0xf851a440" }, { - "constant": false, - "inputs": [ - { - "name": "newPendingImplementation", - "type": "address" - } - ], - "name": "_setPendingImplementation", + "constant": true, + "inputs": [], + "name": "comptrollerImplementation", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe992a041" + "signature": "0xbb82aa5e" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "pendingAdmin", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x26782247" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "pendingComptrollerImplementation", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -4795,8 +5713,10 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" - }, + "signature": "0xdcfbc0c7" + } + ], + "Comptroller": [ { "inputs": [], "payable": false, @@ -4805,38 +5725,63 @@ "signature": "constructor" }, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldPendingImplementation", + "internalType": "address", + "name": "oldAdmin", "type": "address" }, { "indexed": false, - "name": "newPendingImplementation", + "internalType": "address", + "name": "newAdmin", "type": "address" } ], - "name": "NewPendingImplementation", + "name": "NewAdmin", "type": "event", - "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { "anonymous": false, "inputs": [ { "indexed": false, + "internalType": "address", "name": "oldImplementation", "type": "address" }, { "indexed": false, + "internalType": "address", "name": "newImplementation", "type": "address" } @@ -4850,11 +5795,13 @@ "inputs": [ { "indexed": false, + "internalType": "address", "name": "oldPendingAdmin", "type": "address" }, { "indexed": false, + "internalType": "address", "name": "newPendingAdmin", "type": "address" } @@ -4868,111 +5815,93 @@ "inputs": [ { "indexed": false, - "name": "oldAdmin", + "internalType": "address", + "name": "oldPendingImplementation", "type": "address" }, { "indexed": false, - "name": "newAdmin", + "internalType": "address", + "name": "newPendingImplementation", "type": "address" } ], - "name": "NewAdmin", + "name": "NewPendingImplementation", "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" }, { - "anonymous": false, - "inputs": [ + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ { - "indexed": false, - "name": "error", - "type": "uint256" - }, - { - "indexed": false, - "name": "info", - "type": "uint256" - }, - { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe9c714f2" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "isComptroller", + "name": "_acceptImplementation", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x007e3dd2" + "signature": "0xc1e80334" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "payer", - "type": "address" - }, - { - "name": "borrower", + "internalType": "address", + "name": "newPendingAdmin", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" - }, + } + ], + "name": "_setPendingAdmin", + "outputs": [ { - "name": "borrowerIndex", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "repayBorrowVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x1ededc91" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "payer", - "type": "address" - }, - { - "name": "borrower", + "internalType": "address", + "name": "newPendingImplementation", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" } ], - "name": "repayBorrowAllowed", + "name": "_setPendingImplementation", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4980,14 +5909,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x24008a62" + "signature": "0xe992a041" }, { "constant": true, "inputs": [], - "name": "pendingAdmin", + "name": "admin", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -4995,222 +5925,298 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x26782247" + "signature": "0xf851a440" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "comptrollerImplementation", + "outputs": [ { - "name": "newCloseFactorMantissa", - "type": "uint256" + "internalType": "address", + "name": "", + "type": "address" } ], - "name": "_setCloseFactor", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xbb82aa5e" + }, + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x317b0b77" + "signature": "0x26782247" }, { - "constant": false, - "inputs": [ - { - "name": "unitroller", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "pendingComptrollerImplementation", + "outputs": [ { - "name": "_oracle", + "internalType": "address", + "name": "", "type": "address" - }, - { - "name": "_closeFactorMantissa", - "type": "uint256" - }, - { - "name": "_maxAssets", - "type": "uint256" - }, - { - "name": "reinitializing", - "type": "bool" } ], - "name": "_become", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x32000e00" + "signature": "0xdcfbc0c7" }, { - "constant": false, + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "minter", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" }, { - "name": "mintAmount", + "indexed": false, + "internalType": "uint256", + "name": "info", "type": "uint256" }, { - "name": "mintTokens", + "indexed": false, + "internalType": "uint256", + "name": "detail", "type": "uint256" } ], - "name": "mintVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x41c728b9" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cTokenBorrowed", + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { - "name": "cTokenCollateral", + "indexed": false, + "internalType": "address", + "name": "account", "type": "address" - }, + } + ], + "name": "MarketEntered", + "type": "event", + "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" + }, + { + "anonymous": false, + "inputs": [ { - "name": "liquidator", + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { - "name": "borrower", + "indexed": false, + "internalType": "address", + "name": "account", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" - }, + } + ], + "name": "MarketExited", + "type": "event", + "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" + }, + { + "anonymous": false, + "inputs": [ { - "name": "seizeTokens", - "type": "uint256" + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", + "type": "address" } ], - "name": "liquidateBorrowVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x47ef3b3b" + "name": "MarketListed", + "type": "event", + "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" }, { - "constant": true, - "inputs": [], - "name": "liquidationIncentiveMantissa", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "oldCloseFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCloseFactorMantissa", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x4ada90af" + "name": "NewCloseFactor", + "type": "event", + "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" }, { - "constant": false, + "anonymous": false, "inputs": [ { + "indexed": false, + "internalType": "contract CToken", "name": "cToken", "type": "address" }, { - "name": "minter", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "oldCollateralFactorMantissa", + "type": "uint256" }, { - "name": "mintAmount", + "indexed": false, + "internalType": "uint256", + "name": "newCollateralFactorMantissa", "type": "uint256" } ], - "name": "mintAllowed", - "outputs": [ + "name": "NewCollateralFactor", + "type": "event", + "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "oldLiquidationIncentiveMantissa", "type": "uint256" - } + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" + } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x4ef4c3e1" + "name": "NewLiquidationIncentive", + "type": "event", + "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "newLiquidationIncentiveMantissa", + "indexed": false, + "internalType": "uint256", + "name": "oldMaxAssets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMaxAssets", "type": "uint256" } ], - "name": "_setLiquidationIncentive", - "outputs": [ + "name": "NewMaxAssets", + "type": "event", + "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract PriceOracle", + "name": "oldPriceOracle", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract PriceOracle", + "name": "newPriceOracle", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x4fd42e17" + "name": "NewPriceOracle", + "type": "event", + "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "contract Unitroller", + "name": "unitroller", "type": "address" }, { - "name": "redeemer", + "internalType": "contract PriceOracle", + "name": "_oracle", "type": "address" }, { - "name": "redeemAmount", + "internalType": "uint256", + "name": "_closeFactorMantissa", "type": "uint256" }, { - "name": "redeemTokens", + "internalType": "uint256", + "name": "_maxAssets", "type": "uint256" + }, + { + "internalType": "bool", + "name": "reinitializing", + "type": "bool" } ], - "name": "redeemVerify", + "name": "_become", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x51dff989" + "signature": "0x32000e00" }, { "constant": false, "inputs": [ { - "name": "newOracle", - "type": "address" + "internalType": "uint256", + "name": "newCloseFactorMantissa", + "type": "uint256" } ], - "name": "_setPriceOracle", + "name": "_setCloseFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5218,86 +6224,92 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x55ee1fe1" + "signature": "0x317b0b77" }, { "constant": false, "inputs": [ { + "internalType": "contract CToken", "name": "cToken", "type": "address" }, { - "name": "borrower", - "type": "address" - }, + "internalType": "uint256", + "name": "newCollateralFactorMantissa", + "type": "uint256" + } + ], + "name": "_setCollateralFactor", + "outputs": [ { - "name": "borrowAmount", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "borrowVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x5c778605" + "signature": "0xe4028eee" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", - "type": "address" + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" } ], - "name": "getAccountLiquidity", + "name": "_setLiquidationIncentive", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4fd42e17" + }, + { + "constant": false, + "inputs": [ { - "name": "", + "internalType": "uint256", + "name": "newMaxAssets", "type": "uint256" - }, + } + ], + "name": "_setMaxAssets", + "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5ec88c79" + "signature": "0xd9226ced" }, { "constant": false, "inputs": [ { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", + "internalType": "contract PriceOracle", + "name": "newOracle", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" } ], - "name": "liquidateBorrowAllowed", + "name": "_setPriceOracle", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5305,72 +6317,64 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x5fc7e71e" + "signature": "0x55ee1fe1" }, { "constant": false, "inputs": [ { + "internalType": "contract CToken", "name": "cToken", "type": "address" - }, - { - "name": "src", - "type": "address" - }, - { - "name": "dst", - "type": "address" - }, + } + ], + "name": "_supportMarket", + "outputs": [ { - "name": "transferTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "transferVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x6a56947e" + "signature": "0xa76b3fda" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "cTokenBorrowed", + "internalType": "address", + "name": "", "type": "address" }, { - "name": "liquidator", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "accountAssets", + "outputs": [ { - "name": "borrower", + "internalType": "contract CToken", + "name": "", "type": "address" - }, - { - "name": "seizeTokens", - "type": "uint256" } ], - "name": "seizeVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x6d35bf91" + "signature": "0xdce15449" }, { "constant": true, "inputs": [], - "name": "oracle", + "name": "admin", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -5378,40 +6382,76 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x7dc0d1d0" + "signature": "0xf851a440" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" } ], - "name": "markets", + "name": "borrowAllowed", "outputs": [ { - "name": "isListed", - "type": "bool" + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xda3d454c" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" }, { - "name": "collateralFactorMantissa", + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], + "name": "borrowVerify", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x8e8f294b" + "signature": "0x5c778605" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" }, { + "internalType": "contract CToken", "name": "cToken", "type": "address" } @@ -5419,6 +6459,7 @@ "name": "checkMembership", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -5431,9 +6472,10 @@ { "constant": true, "inputs": [], - "name": "maxAssets", + "name": "closeFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5441,86 +6483,59 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x94b2294b" + "signature": "0xe8755446" }, { - "constant": false, - "inputs": [ - { - "name": "cToken", - "type": "address" - } - ], - "name": "_supportMarket", + "constant": true, + "inputs": [], + "name": "comptrollerImplementation", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa76b3fda" + "signature": "0xbb82aa5e" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", - "type": "address" - } - ], - "name": "getAssetsIn", - "outputs": [ - { - "name": "", + "internalType": "address[]", + "name": "cTokens", "type": "address[]" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xabfceffc" - }, - { - "constant": true, - "inputs": [], - "name": "comptrollerImplementation", + "name": "enterMarkets", "outputs": [ { + "internalType": "uint256[]", "name": "", - "type": "address" + "type": "uint256[]" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xbb82aa5e" + "signature": "0xc2998238" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "internalType": "address", + "name": "cTokenAddress", "type": "address" - }, - { - "name": "transferTokens", - "type": "uint256" } ], - "name": "transferAllowed", + "name": "exitMarket", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5528,87 +6543,111 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbdcdc258" + "signature": "0xede4edd0" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cTokens", - "type": "address[]" + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "enterMarkets", + "name": "getAccountLiquidity", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "uint256[]" + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc2998238" + "signature": "0x5ec88c79" }, { "constant": true, "inputs": [ { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", + "internalType": "address", + "name": "account", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" } ], - "name": "liquidateCalculateSeizeTokens", + "name": "getAssetsIn", "outputs": [ { + "internalType": "contract CToken[]", "name": "", - "type": "uint256" - }, + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xabfceffc" + }, + { + "constant": true, + "inputs": [], + "name": "isComptroller", + "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xc488847b" + "signature": "0x007e3dd2" }, { "constant": false, "inputs": [ { - "name": "cTokenCollateral", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" }, { - "name": "cTokenBorrowed", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { + "internalType": "address", "name": "liquidator", "type": "address" }, { + "internalType": "address", "name": "borrower", "type": "address" }, { - "name": "seizeTokens", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "seizeAllowed", + "name": "liquidateBorrowAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5616,125 +6655,136 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd02f7351" + "signature": "0x5fc7e71e" }, { "constant": false, "inputs": [ { - "name": "newMaxAssets", - "type": "uint256" - } - ], - "name": "_setMaxAssets", - "outputs": [ + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xd9226ced" - }, - { - "constant": false, - "inputs": [ + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, { - "name": "cToken", + "internalType": "address", + "name": "liquidator", "type": "address" }, { + "internalType": "address", "name": "borrower", "type": "address" }, { - "name": "borrowAmount", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - } - ], - "name": "borrowAllowed", - "outputs": [ + }, { - "name": "", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], + "name": "liquidateBorrowVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xda3d454c" + "signature": "0x47ef3b3b" }, { "constant": true, "inputs": [ { - "name": "", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" }, { - "name": "", + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "accountAssets", + "name": "liquidateCalculateSeizeTokens", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdce15449" + "signature": "0xc488847b" }, { "constant": true, "inputs": [], - "name": "pendingComptrollerImplementation", + "name": "liquidationIncentiveMantissa", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdcfbc0c7" + "signature": "0x4ada90af" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "", "type": "address" - }, - { - "name": "newCollateralFactorMantissa", - "type": "uint256" } ], - "name": "_setCollateralFactor", + "name": "markets", "outputs": [ { - "name": "", + "internalType": "bool", + "name": "isListed", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "collateralFactorMantissa", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe4028eee" + "signature": "0x8e8f294b" }, { "constant": true, "inputs": [], - "name": "closeFactorMantissa", + "name": "maxAssets", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5742,27 +6792,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xe8755446" + "signature": "0x94b2294b" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "cToken", "type": "address" }, { - "name": "redeemer", + "internalType": "address", + "name": "minter", "type": "address" }, { - "name": "redeemTokens", + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" } ], - "name": "redeemAllowed", + "name": "mintAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5770,34 +6824,62 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xeabe7d91" + "signature": "0x4ef4c3e1" }, { "constant": false, "inputs": [ { - "name": "cTokenAddress", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "minter", "type": "address" + }, + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" } ], - "name": "exitMarket", + "name": "mintVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x41c728b9" + }, + { + "constant": true, + "inputs": [], + "name": "oracle", "outputs": [ { + "internalType": "contract PriceOracle", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xede4edd0" + "signature": "0x7dc0d1d0" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "pendingAdmin", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -5805,436 +6887,617 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0x26782247" }, { + "constant": true, "inputs": [], + "name": "pendingComptrollerImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "stateMutability": "view", + "type": "function", + "signature": "0xdcfbc0c7" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, + "internalType": "address", "name": "cToken", "type": "address" - } - ], - "name": "MarketListed", - "type": "event", - "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" - }, - { - "anonymous": false, - "inputs": [ + }, { - "indexed": false, - "name": "cToken", + "internalType": "address", + "name": "redeemer", "type": "address" }, { - "indexed": false, - "name": "account", - "type": "address" + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" } ], - "name": "MarketEntered", - "type": "event", - "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" + "name": "redeemAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xeabe7d91" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, + "internalType": "address", "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "account", + "internalType": "address", + "name": "redeemer", "type": "address" - } - ], - "name": "MarketExited", - "type": "event", - "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" - }, - { - "anonymous": false, - "inputs": [ + }, { - "indexed": false, - "name": "oldCloseFactorMantissa", + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" }, { - "indexed": false, - "name": "newCloseFactorMantissa", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "NewCloseFactor", - "type": "event", - "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" + "name": "redeemVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x51dff989" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, + "internalType": "address", "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "oldCollateralFactorMantissa", - "type": "uint256" + "internalType": "address", + "name": "payer", + "type": "address" }, { - "indexed": false, - "name": "newCollateralFactorMantissa", + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "NewCollateralFactor", - "type": "event", - "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldLiquidationIncentiveMantissa", - "type": "uint256" - }, + "name": "repayBorrowAllowed", + "outputs": [ { - "indexed": false, - "name": "newLiquidationIncentiveMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewLiquidationIncentive", - "type": "event", - "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x24008a62" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldMaxAssets", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" }, { - "indexed": false, - "name": "newMaxAssets", + "internalType": "uint256", + "name": "borrowerIndex", "type": "uint256" } ], - "name": "NewMaxAssets", - "type": "event", - "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" + "name": "repayBorrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1ededc91" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldPriceOracle", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { - "indexed": false, - "name": "newPriceOracle", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" - } - ], - "name": "NewPriceOracle", - "type": "event", - "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" - }, - { - "anonymous": false, - "inputs": [ + }, { - "indexed": false, - "name": "error", - "type": "uint256" + "internalType": "address", + "name": "liquidator", + "type": "address" }, { - "indexed": false, - "name": "info", - "type": "uint256" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - } - ], - "cBAT": [ - { - "constant": true, - "inputs": [], - "name": "name", + "name": "seizeAllowed", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x06fdde03" + "signature": "0xd02f7351" }, { "constant": false, "inputs": [ { - "name": "spender", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, { - "name": "", - "type": "bool" + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" } ], + "name": "seizeVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0x6d35bf91" }, { "constant": false, "inputs": [ { - "name": "repayAmount", - "type": "uint256" - } - ], - "name": "repayBorrow", - "outputs": [ + "internalType": "address", + "name": "cToken", + "type": "address" + }, { - "name": "", + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "transferTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x0e752702" - }, - { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", + "name": "transferAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x173b9904" + "signature": "0xbdcdc258" }, { "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "cToken", "type": "address" - } - ], - "name": "borrowBalanceCurrent", - "outputs": [ + }, { - "name": "", + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "transferTokens", "type": "uint256" } ], + "name": "transferVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x17bfdfbc" + "signature": "0x6a56947e" }, { - "constant": true, "inputs": [], - "name": "totalSupply", - "outputs": [ + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "string", + "name": "action", + "type": "string" + }, + { + "indexed": false, + "internalType": "bool", + "name": "pauseState", + "type": "bool" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" + "name": "ActionPaused", + "type": "event", + "signature": "0xef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de0" }, { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x182df0f5" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "src", + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { - "name": "dst", + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MarketEntered", + "type": "event", + "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { - "name": "amount", - "type": "uint256" + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "transferFrom", - "outputs": [ + "name": "MarketExited", + "type": "event", + "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" + "name": "MarketListed", + "type": "event", + "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "borrower", + "indexed": false, + "internalType": "uint256", + "name": "oldCloseFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCloseFactorMantissa", + "type": "uint256" + } + ], + "name": "NewCloseFactor", + "type": "event", + "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { - "name": "repayAmount", + "indexed": false, + "internalType": "uint256", + "name": "oldCollateralFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCollateralFactorMantissa", "type": "uint256" } ], - "name": "repayBorrowBehalf", - "outputs": [ + "name": "NewCollateralFactor", + "type": "event", + "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "oldLiquidationIncentiveMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x2608f818" + "name": "NewLiquidationIncentive", + "type": "event", + "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" }, { - "constant": true, - "inputs": [], - "name": "pendingAdmin", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "oldMaxAssets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMaxAssets", + "type": "uint256" + } + ], + "name": "NewMaxAssets", + "type": "event", + "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPauseGuardian", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPauseGuardian", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x26782247" + "name": "NewPauseGuardian", + "type": "event", + "signature": "0x0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e" }, { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract PriceOracle", + "name": "oldPriceOracle", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract PriceOracle", + "name": "newPriceOracle", + "type": "address" + } + ], + "name": "NewPriceOracle", + "type": "event", + "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract Unitroller", + "name": "unitroller", + "type": "address" } ], + "name": "_become", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x313ce567" + "signature": "0x1d504dc6" }, { "constant": false, "inputs": [ { - "name": "owner", - "type": "address" + "internalType": "bool", + "name": "state", + "type": "bool" } ], - "name": "balanceOfUnderlying", + "name": "_setBorrowPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x3af9e669" + "signature": "0x56133fc8" }, { - "constant": true, - "inputs": [], - "name": "getCash", + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newCloseFactorMantissa", + "type": "uint256" + } + ], + "name": "_setCloseFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x317b0b77" }, { "constant": false, "inputs": [ { - "name": "newComptroller", + "internalType": "contract CToken", + "name": "cToken", "type": "address" + }, + { + "internalType": "uint256", + "name": "newCollateralFactorMantissa", + "type": "uint256" } ], - "name": "_setComptroller", + "name": "_setCollateralFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6242,49 +7505,43 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4576b5db" + "signature": "0xe4028eee" }, { - "constant": true, - "inputs": [], - "name": "totalBorrows", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x47bd3718" - }, - { - "constant": true, - "inputs": [], - "name": "comptroller", + "name": "_setLiquidationIncentive", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5fe3b567" + "signature": "0x4fd42e17" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", + "internalType": "uint256", + "name": "newMaxAssets", "type": "uint256" } ], - "name": "_reduceReserves", + "name": "_setMaxAssets", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6292,99 +7549,131 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0xd9226ced" }, { - "constant": true, - "inputs": [], - "name": "initialExchangeRateMantissa", + "constant": false, + "inputs": [ + { + "internalType": "bool", + "name": "state", + "type": "bool" + } + ], + "name": "_setMintPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x675d972c" + "signature": "0x9845f280" }, { - "constant": true, - "inputs": [], - "name": "accrualBlockNumber", + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newPauseGuardian", + "type": "address" + } + ], + "name": "_setPauseGuardian", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x6c540baf" + "signature": "0x5f5af1aa" }, { - "constant": true, - "inputs": [], - "name": "underlying", + "constant": false, + "inputs": [ + { + "internalType": "contract PriceOracle", + "name": "newOracle", + "type": "address" + } + ], + "name": "_setPriceOracle", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x6f307dc3" + "signature": "0x55ee1fe1" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "owner", - "type": "address" + "internalType": "bool", + "name": "state", + "type": "bool" } ], - "name": "balanceOf", + "name": "_setSeizePaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x70a08231" + "signature": "0x2d70db78" }, { "constant": false, - "inputs": [], - "name": "totalBorrowsCurrent", + "inputs": [ + { + "internalType": "bool", + "name": "state", + "type": "bool" + } + ], + "name": "_setTransferPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x73acee98" + "signature": "0x8ebf6364" }, { "constant": false, "inputs": [ { - "name": "redeemAmount", - "type": "uint256" + "internalType": "contract CToken", + "name": "cToken", + "type": "address" } ], - "name": "redeemUnderlying", + "name": "_supportMarket", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6392,123 +7681,159 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x852a12e3" + "signature": "0xa76b3fda" }, { "constant": true, - "inputs": [], - "name": "totalReserves", - "outputs": [ + "inputs": [ { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", "name": "", "type": "uint256" } ], + "name": "accountAssets", + "outputs": [ + { + "internalType": "contract CToken", + "name": "", + "type": "address" + } + ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x8f840ddd" + "signature": "0xdce15449" }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "admin", "outputs": [ { + "internalType": "address", "name": "", - "type": "string" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0xf851a440" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" } ], - "name": "borrowBalanceStored", + "name": "borrowAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95dd9193" + "signature": "0xda3d454c" }, { - "constant": false, - "inputs": [ - { - "name": "mintAmount", - "type": "uint256" - } - ], - "name": "mint", + "constant": true, + "inputs": [], + "name": "borrowGuardianPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa0712d68" + "signature": "0x9530f644" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", - "outputs": [ + "inputs": [ { - "name": "", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], + "name": "borrowVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0x5c778605" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "dst", + "internalType": "address", + "name": "account", "type": "address" }, { - "name": "amount", - "type": "uint256" + "internalType": "contract CToken", + "name": "cToken", + "type": "address" } ], - "name": "transfer", + "name": "checkMembership", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x929fe9a1" }, { "constant": true, "inputs": [], - "name": "borrowIndex", + "name": "closeFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6516,77 +7841,59 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0xe8755446" }, { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "comptrollerImplementation", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0xbb82aa5e" }, { "constant": false, "inputs": [ { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "seizeTokens", - "type": "uint256" + "internalType": "address[]", + "name": "cTokens", + "type": "address[]" } ], - "name": "seize", + "name": "enterMarkets", "outputs": [ { + "internalType": "uint256[]", "name": "", - "type": "uint256" + "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0xc2998238" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", + "internalType": "address", + "name": "cTokenAddress", "type": "address" } ], - "name": "_setPendingAdmin", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xb71d1a0c" - }, - { - "constant": false, - "inputs": [], - "name": "exchangeRateCurrent", + "name": "exitMarket", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6594,31 +7901,31 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbd6d894d" + "signature": "0xede4edd0" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" } ], - "name": "getAccountSnapshot", + "name": "getAccountLiquidity", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" }, { + "internalType": "uint256", "name": "", "type": "uint256" }, { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6626,39 +7933,79 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xc37f68e2" + "signature": "0x5ec88c79" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "borrowAmount", - "type": "uint256" + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "borrow", + "name": "getAssetsIn", "outputs": [ { + "internalType": "contract CToken[]", "name": "", - "type": "uint256" + "type": "address[]" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0xabfceffc" + }, + { + "constant": true, + "inputs": [], + "name": "isComptroller", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x007e3dd2" }, { "constant": false, "inputs": [ { - "name": "redeemTokens", + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "redeem", + "name": "liquidateBorrowAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6666,23 +8013,77 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xdb006a75" + "signature": "0x5fc7e71e" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "actualRepayAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "liquidateBorrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x47ef3b3b" }, { "constant": true, "inputs": [ { - "name": "owner", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" }, { - "name": "spender", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" + }, + { + "internalType": "uint256", + "name": "actualRepayAmount", + "type": "uint256" } ], - "name": "allowance", + "name": "liquidateCalculateSeizeTokens", "outputs": [ { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6690,77 +8091,90 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0xc488847b" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "liquidationIncentiveMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x4ada90af" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "newInterestRateModel", + "internalType": "address", + "name": "", "type": "address" } ], - "name": "_setInterestRateModel", + "name": "markets", "outputs": [ { - "name": "", + "internalType": "bool", + "name": "isListed", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "collateralFactorMantissa", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0x8e8f294b" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "maxAssets", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0x94b2294b" }, { "constant": false, "inputs": [ { - "name": "borrower", + "internalType": "address", + "name": "cToken", "type": "address" }, { - "name": "repayAmount", - "type": "uint256" + "internalType": "address", + "name": "minter", + "type": "address" }, { - "name": "cTokenCollateral", - "type": "address" + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" } ], - "name": "liquidateBorrow", + "name": "mintAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6768,930 +8182,1119 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf5e3c462" + "signature": "0x4ef4c3e1" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "mintGuardianPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0x5dce0515" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "internalType": "uint256", + "name": "actualMintAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" + } + ], + "name": "mintVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x41c728b9" }, { "constant": true, "inputs": [], - "name": "borrowRatePerBlock", + "name": "oracle", "outputs": [ { + "internalType": "contract PriceOracle", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf8f9da28" + "signature": "0x7dc0d1d0" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "pauseGuardian", + "outputs": [ { - "name": "newReserveFactorMantissa", - "type": "uint256" + "internalType": "address", + "name": "", + "type": "address" } ], - "name": "_setReserveFactor", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x24a3d622" + }, + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xfca7820b" + "signature": "0x26782247" }, { "constant": true, "inputs": [], - "name": "isCToken", + "name": "pendingComptrollerImplementation", "outputs": [ { + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe9c44ae" + "signature": "0xdcfbc0c7" }, { + "constant": false, "inputs": [ { - "name": "underlying_", - "type": "address" - }, - { - "name": "comptroller_", + "internalType": "address", + "name": "cToken", "type": "address" }, { - "name": "interestRateModel_", + "internalType": "address", + "name": "redeemer", "type": "address" }, { - "name": "initialExchangeRateMantissa_", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" - }, - { - "name": "name_", - "type": "string" - }, - { - "name": "symbol_", - "type": "string" - }, + } + ], + "name": "redeemAllowed", + "outputs": [ { - "name": "decimals_", + "internalType": "uint256", + "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "type": "function", + "signature": "0xeabe7d91" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "interestAccumulated", - "type": "uint256" + "internalType": "address", + "name": "cToken", + "type": "address" }, { - "indexed": false, - "name": "borrowIndex", + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" }, { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "AccrueInterest", - "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" + "name": "redeemVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x51dff989" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "minter", + "internalType": "address", + "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "mintAmount", - "type": "uint256" + "internalType": "address", + "name": "payer", + "type": "address" }, { - "indexed": false, - "name": "mintTokens", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "redeemer", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "indexed": false, - "name": "redeemAmount", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrowAllowed", + "outputs": [ { - "indexed": false, - "name": "redeemTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Redeem", - "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x24008a62" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "borrowAmount", - "type": "uint256" + "internalType": "address", + "name": "payer", + "type": "address" }, { - "indexed": false, - "name": "accountBorrows", + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "actualRepayAmount", "type": "uint256" }, { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "borrowerIndex", "type": "uint256" } ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + "name": "repayBorrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1ededc91" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "payer", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { - "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" }, { - "indexed": false, - "name": "repayAmount", - "type": "uint256" + "internalType": "address", + "name": "liquidator", + "type": "address" }, { - "indexed": false, - "name": "accountBorrows", - "type": "uint256" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "RepayBorrow", - "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "name": "seizeAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd02f7351" }, { - "anonymous": false, + "constant": true, + "inputs": [], + "name": "seizeGuardianPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xac0b0bb7" + }, + { + "constant": false, "inputs": [ { - "indexed": false, - "name": "liquidator", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { - "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" }, { - "indexed": false, - "name": "repayAmount", - "type": "uint256" + "internalType": "address", + "name": "liquidator", + "type": "address" }, { - "indexed": false, - "name": "cTokenCollateral", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "indexed": false, + "internalType": "uint256", "name": "seizeTokens", "type": "uint256" } ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + "name": "seizeVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x6d35bf91" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldPendingAdmin", + "internalType": "address", + "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "newPendingAdmin", + "internalType": "address", + "name": "src", "type": "address" - } - ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" - }, - { - "anonymous": false, - "inputs": [ + }, { - "indexed": false, - "name": "oldAdmin", + "internalType": "address", + "name": "dst", "type": "address" }, { - "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "uint256", + "name": "transferTokens", + "type": "uint256" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "name": "transferAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbdcdc258" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldComptroller", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "transferGuardianPaused", + "outputs": [ { - "indexed": false, - "name": "newComptroller", - "type": "address" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x87f76303" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldInterestRateModel", + "internalType": "address", + "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "newInterestRateModel", + "internalType": "address", + "name": "src", "type": "address" - } - ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" - }, - { - "anonymous": false, - "inputs": [ + }, { - "indexed": false, - "name": "oldReserveFactorMantissa", - "type": "uint256" + "internalType": "address", + "name": "dst", + "type": "address" }, { - "indexed": false, - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "transferTokens", "type": "uint256" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" - }, + "name": "transferVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x6a56947e" + } + ], + "cBAT": [ { - "anonymous": false, "inputs": [ { - "indexed": false, - "name": "admin", + "internalType": "address", + "name": "underlying_", "type": "address" }, { - "indexed": false, - "name": "reduceAmount", - "type": "uint256" + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" }, { - "indexed": false, - "name": "newTotalReserves", - "type": "uint256" + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "address payable", + "name": "admin_", + "type": "address" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "error", + "internalType": "uint256", + "name": "cashPrior", "type": "uint256" }, { "indexed": false, - "name": "info", + "internalType": "uint256", + "name": "interestAccumulated", "type": "uint256" }, { "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "Failure", + "name": "AccrueInterest", "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { "anonymous": false, "inputs": [ { "indexed": true, - "name": "from", + "internalType": "address", + "name": "owner", "type": "address" }, { "indexed": true, - "name": "to", + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "Transfer", + "name": "Approval", "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "owner", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" }, { - "indexed": true, - "name": "spender", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" }, { "indexed": false, - "name": "amount", + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "Approval", + "name": "Borrow", "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "Base0bps_Slope2000bps": [ + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "cash", + "indexed": false, + "internalType": "uint256", + "name": "error", "type": "uint256" }, { - "name": "borrows", + "indexed": false, + "internalType": "uint256", + "name": "info", "type": "uint256" }, { - "name": "_reserves", + "indexed": false, + "internalType": "uint256", + "name": "detail", "type": "uint256" } ], - "name": "getBorrowRate", - "outputs": [ + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" }, { - "name": "", + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x15f24053" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": true, - "inputs": [], - "name": "multiplier", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x1b3ed722" - }, - { - "constant": true, - "inputs": [], - "name": "baseRate", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x1f68f20a" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": true, - "inputs": [], - "name": "isInterestRateModel", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x2191f92a" - }, - { - "constant": true, - "inputs": [], - "name": "blocksPerYear", - "outputs": [ + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xa385fb96" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { + "anonymous": false, "inputs": [ { - "name": "baseRate_", - "type": "uint256" + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" }, { - "name": "multiplier_", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - } - ], - "BAT": [ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x06fdde03" + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_owner", + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", "type": "address" }, { - "name": "value", - "type": "uint256" + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "name": "allocateTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x08bca566" + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_spender", + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", "type": "address" }, { - "name": "_value", - "type": "uint256" + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" } ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x095ea7b3" + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_from", + "indexed": false, + "internalType": "address", + "name": "payer", "type": "address" }, { - "name": "_to", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "_value", + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "transferFrom", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint8" + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x313ce567" + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_spender", + "indexed": false, + "internalType": "address", + "name": "admin", "type": "address" }, { - "name": "_subtractedValue", + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", "type": "uint256" } ], - "name": "decreaseApproval", + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x66188463" + "signature": "0xe9c714f2" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "_owner", - "type": "address" + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" } ], - "name": "balanceOf", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x70a08231" + "signature": "0x3e941010" }, { - "constant": true, - "inputs": [], - "name": "symbol", + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + } + ], + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95d89b41" + "signature": "0x601a0bf1" }, { "constant": false, "inputs": [ { - "name": "_to", + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", "type": "address" - }, + } + ], + "name": "_setComptroller", + "outputs": [ { - "name": "_value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "transfer", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x4576b5db" }, { "constant": false, "inputs": [ { - "name": "_spender", + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", "type": "address" - }, - { - "name": "_addedValue", - "type": "uint256" } ], - "name": "increaseApproval", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd73dd623" + "signature": "0xf2b3abbd" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", + "internalType": "address payable", + "name": "newPendingAdmin", "type": "address" } ], - "name": "allowance", + "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0xb71d1a0c" }, { + "constant": false, "inputs": [ { - "name": "_initialAmount", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" - }, - { - "name": "_tokenName", - "type": "string" - }, - { - "name": "_decimalUnits", - "type": "uint8" - }, + } + ], + "name": "_setReserveFactor", + "outputs": [ { - "name": "_tokenSymbol", - "type": "string" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "type": "function", + "signature": "0xfca7820b" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ { - "indexed": true, - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6c540baf" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address" - }, + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ { - "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - } - ], - "cETH": [ + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa6afed95" + }, { "constant": true, "inputs": [], - "name": "name", + "name": "admin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "string" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x06fdde03" + "signature": "0xf851a440" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "spender", + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" + "internalType": "address", + "name": "spender", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x095ea7b3" - }, - { - "constant": false, - "inputs": [], - "name": "mint", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function", - "signature": "0x1249c58b" - }, - { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7699,49 +9302,48 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x173b9904" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "spender", "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "borrowBalanceCurrent", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x17bfdfbc" + "signature": "0x095ea7b3" }, { "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "inputs": [ { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "owner", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7749,77 +9351,65 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x182df0f5" + "signature": "0x70a08231" }, { "constant": false, "inputs": [ { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "internalType": "address", + "name": "owner", "type": "address" - }, - { - "name": "amount", - "type": "uint256" } ], - "name": "transferFrom", + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0x3af9e669" }, { - "constant": true, - "inputs": [], - "name": "pendingAdmin", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", - "type": "address" + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x26782247" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", + "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x313ce567" + "signature": "0xc5ebeaec" }, { "constant": false, "inputs": [ { - "name": "owner", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "balanceOfUnderlying", + "name": "borrowBalanceCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7827,14 +9417,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x3af9e669" + "signature": "0x17bfdfbc" }, { "constant": true, - "inputs": [], - "name": "getCash", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7842,34 +9439,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x95dd9193" }, { - "constant": false, - "inputs": [ - { - "name": "newComptroller", - "type": "address" - } - ], - "name": "_setComptroller", + "constant": true, + "inputs": [], + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x4576b5db" + "signature": "0xaa5af0fd" }, { "constant": true, "inputs": [], - "name": "totalBorrows", + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7877,17 +9471,7 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x47bd3718" - }, - { - "constant": false, - "inputs": [], - "name": "repayBorrow", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function", - "signature": "0x4e4d9fea" + "signature": "0xf8f9da28" }, { "constant": true, @@ -7895,6 +9479,7 @@ "name": "comptroller", "outputs": [ { + "internalType": "contract ComptrollerInterface", "name": "", "type": "address" } @@ -7905,46 +9490,44 @@ "signature": "0x5fe3b567" }, { - "constant": false, - "inputs": [ - { - "name": "reduceAmount", - "type": "uint256" - } - ], - "name": "_reduceReserves", + "constant": true, + "inputs": [], + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x601a0bf1" + "signature": "0x313ce567" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "initialExchangeRateMantissa", + "name": "exchangeRateCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x675d972c" + "signature": "0xbd6d894d" }, { "constant": true, "inputs": [], - "name": "accrualBlockNumber", + "name": "exchangeRateStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7952,19 +9535,36 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6c540baf" + "signature": "0x182df0f5" }, { "constant": true, "inputs": [ { - "name": "owner", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "balanceOf", + "name": "getAccountSnapshot", "outputs": [ { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7972,99 +9572,166 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0xc37f68e2" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "totalBorrowsCurrent", + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x73acee98" + "signature": "0x3b1d21a2" }, { "constant": false, "inputs": [ { - "name": "redeemAmount", + "internalType": "address", + "name": "underlying_", + "type": "address" + }, + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], - "name": "redeemUnderlying", - "outputs": [ + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1a31d465" + }, + { + "constant": false, + "inputs": [ { - "name": "", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x852a12e3" + "signature": "0x99d8c1b4" }, { "constant": true, "inputs": [], - "name": "totalReserves", + "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x8f840ddd" + "signature": "0xf3fdb15a" }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", - "type": "string" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0xfe9c44ae" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "borrower", "type": "address" - } - ], - "name": "borrowBalanceStored", - "outputs": [ + }, { - "name": "", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x95dd9193" - }, - { - "constant": false, - "inputs": [], - "name": "accrueInterest", + "name": "liquidateBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8072,100 +9739,75 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0xf5e3c462" }, { "constant": false, "inputs": [ { - "name": "dst", - "type": "address" - }, - { - "name": "amount", + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" } ], - "name": "transfer", + "name": "mint", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0xa0712d68" }, { "constant": true, "inputs": [], - "name": "borrowIndex", + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xaa5af0fd" - }, - { - "constant": false, - "inputs": [ - { - "name": "borrower", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - } - ], - "name": "liquidateBorrow", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function", - "signature": "0xaae40a2a" + "signature": "0x06fdde03" }, { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "pendingAdmin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0x26782247" }, { "constant": false, "inputs": [ { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "seizeTokens", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "seize", + "name": "redeem", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8173,19 +9815,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0xdb006a75" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" } ], - "name": "_setPendingAdmin", + "name": "redeemUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8193,14 +9837,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb71d1a0c" + "signature": "0x852a12e3" }, { "constant": false, - "inputs": [], - "name": "exchangeRateCurrent", + "inputs": [ + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8208,71 +9859,74 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbd6d894d" + "signature": "0x0e752702" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "borrower", "type": "address" - } - ], - "name": "getAccountSnapshot", - "outputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" }, { - "name": "", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrowBehalf", + "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xc37f68e2" + "signature": "0x2608f818" }, { - "constant": false, - "inputs": [ - { - "name": "borrowAmount", - "type": "uint256" - } - ], - "name": "borrow", + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0x173b9904" }, { "constant": false, "inputs": [ { - "name": "redeemTokens", + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "redeem", + "name": "seize", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8280,23 +9934,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xdb006a75" + "signature": "0xb2a02ff1" }, { "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "spender", - "type": "address" - } - ], - "name": "allowance", + "inputs": [], + "name": "supplyRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8304,49 +9950,47 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0xae9d70b0" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "name": "borrower", - "type": "address" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "repayBorrowBehalf", - "outputs": [], - "payable": true, - "stateMutability": "payable", + "payable": false, + "stateMutability": "view", "type": "function", - "signature": "0xe5974619" + "signature": "0x95d89b41" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "totalBorrows", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x47bd3718" }, { "constant": false, - "inputs": [ - { - "name": "newInterestRateModel", - "type": "address" - } - ], - "name": "_setInterestRateModel", + "inputs": [], + "name": "totalBorrowsCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8354,112 +9998,127 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0x73acee98" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "totalReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0x8f840ddd" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0x18160ddd" }, { - "constant": true, - "inputs": [], - "name": "borrowRatePerBlock", + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xf8f9da28" + "signature": "0xa9059cbb" }, { "constant": false, "inputs": [ { - "name": "newReserveFactorMantissa", + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "_setReserveFactor", + "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xfca7820b" + "signature": "0x23b872dd" }, { "constant": true, "inputs": [], - "name": "isCToken", + "name": "underlying", "outputs": [ { + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe9c44ae" - }, + "signature": "0x6f307dc3" + } + ], + "Base0bps_Slope2000bps": [ { "inputs": [ { - "name": "comptroller_", - "type": "address" - }, - { - "name": "interestRateModel_", - "type": "address" - }, - { - "name": "initialExchangeRateMantissa_", + "internalType": "uint256", + "name": "baseRatePerYear", "type": "uint256" }, { - "name": "name_", - "type": "string" - }, - { - "name": "symbol_", - "type": "string" - }, - { - "name": "decimals_", + "internalType": "uint256", + "name": "multiplierPerYear", "type": "uint256" } ], @@ -8468,326 +10127,266 @@ "type": "constructor", "signature": "constructor" }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "interestAccumulated", - "type": "uint256" - }, - { - "indexed": false, - "name": "borrowIndex", + "internalType": "uint256", + "name": "baseRatePerBlock", "type": "uint256" }, { "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "multiplierPerBlock", "type": "uint256" } ], - "name": "AccrueInterest", + "name": "NewInterestParams", "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" + "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "minter", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "baseRatePerBlock", + "outputs": [ { - "indexed": false, - "name": "mintAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf14039de" + }, + { + "constant": true, + "inputs": [], + "name": "blocksPerYear", + "outputs": [ { - "indexed": false, - "name": "mintTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xa385fb96" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": false, - "name": "redeemer", - "type": "address" + "internalType": "uint256", + "name": "cash", + "type": "uint256" }, { - "indexed": false, - "name": "redeemAmount", + "internalType": "uint256", + "name": "borrows", "type": "uint256" }, { - "indexed": false, - "name": "redeemTokens", + "internalType": "uint256", + "name": "reserves", "type": "uint256" } ], - "name": "Redeem", - "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "name": "getBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x15f24053" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": false, - "name": "borrower", - "type": "address" + "internalType": "uint256", + "name": "cash", + "type": "uint256" }, { - "indexed": false, - "name": "borrowAmount", + "internalType": "uint256", + "name": "borrows", "type": "uint256" }, { - "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "reserves", "type": "uint256" }, { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "reserveFactorMantissa", "type": "uint256" } ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + "name": "getSupplyRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xb8168816" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "isInterestRateModel", + "outputs": [ { - "indexed": false, - "name": "payer", - "type": "address" - }, + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x2191f92a" + }, + { + "constant": true, + "inputs": [], + "name": "multiplierPerBlock", + "outputs": [ { - "indexed": false, - "name": "borrower", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8726bb89" + }, + { + "constant": true, + "inputs": [ { - "indexed": false, - "name": "repayAmount", + "internalType": "uint256", + "name": "cash", "type": "uint256" }, { - "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "borrows", "type": "uint256" }, { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "reserves", "type": "uint256" } ], - "name": "RepayBorrow", - "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "liquidator", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", - "type": "address" - }, - { - "indexed": false, - "name": "repayAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "cTokenCollateral", - "type": "address" - }, + "name": "utilizationRate", + "outputs": [ { - "indexed": false, - "name": "seizeTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" - }, + "payable": false, + "stateMutability": "pure", + "type": "function", + "signature": "0x6e71e2d8" + } + ], + "BAT": [ { - "anonymous": false, "inputs": [ { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "_initialAmount", + "type": "uint256" }, { - "indexed": false, - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldAdmin", - "type": "address" + "internalType": "string", + "name": "_tokenName", + "type": "string" }, { - "indexed": false, - "name": "newAdmin", - "type": "address" - } - ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldComptroller", - "type": "address" + "internalType": "uint8", + "name": "_decimalUnits", + "type": "uint8" }, { - "indexed": false, - "name": "newComptroller", - "type": "address" + "internalType": "string", + "name": "_tokenSymbol", + "type": "string" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "oldInterestRateModel", - "type": "address" - }, - { - "indexed": false, - "name": "newInterestRateModel", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" - } - ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldReserveFactorMantissa", - "type": "uint256" }, { - "indexed": false, - "name": "newReserveFactorMantissa", - "type": "uint256" - } - ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "admin", + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, - "name": "reduceAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "newTotalReserves", - "type": "uint256" - } - ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "error", - "type": "uint256" - }, - { - "indexed": false, - "name": "info", - "type": "uint256" - }, - { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "name": "Failure", + "name": "Approval", "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { "anonymous": false, "inputs": [ { "indexed": true, + "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, + "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, - "name": "amount", + "internalType": "uint256", + "name": "value", "type": "uint256" } ], @@ -8796,53 +10395,44 @@ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", + "internalType": "address", + "name": "_owner", "type": "address" }, { - "indexed": false, - "name": "amount", + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "Base500bps_Slope1200bps": [ + "name": "allocateTo", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x08bca566" + }, { "constant": true, "inputs": [ { - "name": "cash", - "type": "uint256" - }, - { - "name": "borrows", - "type": "uint256" + "internalType": "address", + "name": "_owner", + "type": "address" }, { - "name": "_reserves", - "type": "uint256" + "internalType": "address", + "name": "_spender", + "type": "address" } ], - "name": "getBorrowRate", + "name": "allowance", "outputs": [ { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8850,668 +10440,682 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x15f24053" + "signature": "0xdd62ed3e" }, { - "constant": true, - "inputs": [], - "name": "multiplier", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x1b3ed722" - }, - { - "constant": true, - "inputs": [], - "name": "baseRate", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x1f68f20a" + "signature": "0x095ea7b3" }, { "constant": true, - "inputs": [], - "name": "isInterestRateModel", + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x2191f92a" + "signature": "0x70a08231" }, { "constant": true, "inputs": [], - "name": "blocksPerYear", + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xa385fb96" + "signature": "0x313ce567" }, { + "constant": false, "inputs": [ { - "name": "baseRate_", - "type": "uint256" + "internalType": "address", + "name": "_spender", + "type": "address" }, { - "name": "multiplier_", + "internalType": "uint256", + "name": "_subtractedValue", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - } - ], - "Base200bps_Slope3000bps": [ - { - "constant": true, - "inputs": [ - { - "name": "cash", - "type": "uint256" - }, - { - "name": "borrows", - "type": "uint256" - }, - { - "name": "_reserves", - "type": "uint256" - } - ], - "name": "getBorrowRate", + "name": "decreaseApproval", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x15f24053" + "signature": "0x66188463" }, { - "constant": true, - "inputs": [], - "name": "multiplier", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_addedValue", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x1b3ed722" - }, - { - "constant": true, - "inputs": [], - "name": "baseRate", + "name": "increaseApproval", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x1f68f20a" + "signature": "0xd73dd623" }, { "constant": true, "inputs": [], - "name": "isInterestRateModel", + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "bool" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x2191f92a" + "signature": "0x06fdde03" }, { "constant": true, "inputs": [], - "name": "blocksPerYear", + "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xa385fb96" + "signature": "0x95d89b41" }, - { - "inputs": [ - { - "name": "baseRate_", - "type": "uint256" - }, - { - "name": "multiplier_", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - } - ], - "cREP": [ { "constant": true, "inputs": [], - "name": "name", + "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x06fdde03" + "signature": "0x18160ddd" }, { "constant": false, "inputs": [ { - "name": "spender", + "internalType": "address", + "name": "_to", "type": "address" }, { - "name": "amount", + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], + "name": "transfer", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0xa9059cbb" }, { "constant": false, "inputs": [ { - "name": "repayAmount", - "type": "uint256" - } - ], - "name": "repayBorrow", - "outputs": [ + "internalType": "address", + "name": "_from", + "type": "address" + }, { - "name": "", + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], + "name": "transferFrom", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x0e752702" - }, + "signature": "0x23b872dd" + } + ], + "cErc20Delegate": [ { - "constant": true, "inputs": [], - "name": "reserveFactorMantissa", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x173b9904" + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "account", - "type": "address" - } - ], - "name": "borrowBalanceCurrent", - "outputs": [ + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x17bfdfbc" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x182df0f5" + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "src", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "dst", + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { + "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { - "constant": false, + "anonymous": false, "inputs": [ { + "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { - "name": "repayAmount", + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" - } - ], - "name": "repayBorrowBehalf", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x2608f818" - }, - { - "constant": true, - "inputs": [], - "name": "pendingAdmin", - "outputs": [ + }, { - "name": "", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x26782247" + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" }, { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x313ce567" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "owner", + "indexed": false, + "internalType": "address", + "name": "liquidator", "type": "address" - } - ], - "name": "balanceOfUnderlying", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x3af9e669" - }, - { - "constant": true, - "inputs": [], - "name": "getCash", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x3b1d21a2" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "newComptroller", + "indexed": false, + "internalType": "address", + "name": "minter", "type": "address" - } - ], - "name": "_setComptroller", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x4576b5db" - }, - { - "constant": true, - "inputs": [], - "name": "totalBorrows", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x47bd3718" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": true, - "inputs": [], - "name": "comptroller", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x5fe3b567" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "reduceAmount", - "type": "uint256" - } - ], - "name": "_reduceReserves", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x601a0bf1" - }, - { - "constant": true, - "inputs": [], - "name": "initialExchangeRateMantissa", - "outputs": [ + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x675d972c" + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { - "constant": true, - "inputs": [], - "name": "accrualBlockNumber", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x6c540baf" - }, - { - "constant": true, - "inputs": [], - "name": "underlying", - "outputs": [ + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, { - "name": "", + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x6f307dc3" + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "owner", + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" }, { - "constant": false, - "inputs": [], - "name": "totalBorrowsCurrent", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x73acee98" + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { - "constant": false, + "anonymous": false, "inputs": [ { + "indexed": false, + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", "name": "redeemAmount", "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" } ], - "name": "redeemUnderlying", - "outputs": [ + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x852a12e3" + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { - "constant": true, - "inputs": [], - "name": "totalReserves", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x8f840ddd" + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" }, { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "string" + "indexed": false, + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x95d89b41" + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "account", + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "borrowBalanceStored", + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95dd9193" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "mintAmount", + "internalType": "uint256", + "name": "addAmount", "type": "uint256" } ], - "name": "mint", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9519,96 +11123,91 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa0712d68" + "signature": "0x3e941010" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", - "outputs": [ + "inputs": [ { - "name": "", - "type": "uint256" + "internalType": "bytes", + "name": "data", + "type": "bytes" } ], + "name": "_becomeImplementation", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0x56e67728" }, { "constant": false, "inputs": [ { - "name": "dst", - "type": "address" - }, - { - "name": "amount", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" } ], - "name": "transfer", + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x601a0bf1" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "borrowIndex", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], + "name": "_resignImplementation", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0x153ab505" }, { - "constant": true, - "inputs": [], - "name": "supplyRatePerBlock", + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xae9d70b0" + "signature": "0x4576b5db" }, { "constant": false, "inputs": [ { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", "type": "address" - }, - { - "name": "seizeTokens", - "type": "uint256" } ], - "name": "seize", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9616,12 +11215,13 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0xf2b3abbd" }, { "constant": false, "inputs": [ { + "internalType": "address payable", "name": "newPendingAdmin", "type": "address" } @@ -9629,6 +11229,7 @@ "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9640,10 +11241,17 @@ }, { "constant": false, - "inputs": [], - "name": "exchangeRateCurrent", + "inputs": [ + { + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "_setReserveFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9651,31 +11259,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbd6d894d" + "signature": "0xfca7820b" }, { "constant": true, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "getAccountSnapshot", + "inputs": [], + "name": "accrualBlockNumber", "outputs": [ { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9683,19 +11275,15 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xc37f68e2" + "signature": "0x6c540baf" }, { "constant": false, - "inputs": [ - { - "name": "borrowAmount", - "type": "uint256" - } - ], - "name": "borrow", + "inputs": [], + "name": "accrueInterest", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9703,36 +11291,34 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0xa6afed95" }, { - "constant": false, - "inputs": [ - { - "name": "redeemTokens", - "type": "uint256" - } - ], - "name": "redeem", + "constant": true, + "inputs": [], + "name": "admin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xdb006a75" + "signature": "0xf851a440" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "owner", "type": "address" }, { + "internalType": "address", "name": "spender", "type": "address" } @@ -9740,6 +11326,7 @@ "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9751,30 +11338,66 @@ }, { "constant": false, - "inputs": [], - "name": "_acceptAdmin", - "outputs": [ + "inputs": [ { - "name": "", + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" }, { "constant": false, "inputs": [ { - "name": "newInterestRateModel", + "internalType": "address", + "name": "owner", "type": "address" } ], - "name": "_setInterestRateModel", + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9782,65 +11405,89 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0x3af9e669" }, { - "constant": true, - "inputs": [], - "name": "interestRateModel", + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0xc5ebeaec" }, { "constant": false, "inputs": [ { - "name": "borrower", + "internalType": "address", + "name": "account", "type": "address" - }, + } + ], + "name": "borrowBalanceCurrent", + "outputs": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x17bfdfbc" + }, + { + "constant": true, + "inputs": [ { - "name": "cTokenCollateral", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "liquidateBorrow", + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xf5e3c462" + "signature": "0x95dd9193" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0xaa5af0fd" }, { "constant": true, @@ -9848,6 +11495,7 @@ "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9857,368 +11505,683 @@ "type": "function", "signature": "0xf8f9da28" }, + { + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5fe3b567" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, { "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbd6d894d" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x182df0f5" + }, + { + "constant": true, "inputs": [ { - "name": "newReserveFactorMantissa", + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "_setReserveFactor", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xc37f68e2" + }, + { + "constant": true, + "inputs": [], + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xfca7820b" + "signature": "0x3b1d21a2" }, { "constant": true, "inputs": [], - "name": "isCToken", + "name": "implementation", "outputs": [ { + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe9c44ae" + "signature": "0x5c60da1b" }, { + "constant": false, "inputs": [ { + "internalType": "address", "name": "underlying_", "type": "address" }, { + "internalType": "contract ComptrollerInterface", "name": "comptroller_", "type": "address" }, { + "internalType": "contract InterestRateModel", "name": "interestRateModel_", "type": "address" }, { + "internalType": "uint256", "name": "initialExchangeRateMantissa_", "type": "uint256" }, { + "internalType": "string", "name": "name_", "type": "string" }, { + "internalType": "string", "name": "symbol_", "type": "string" }, { + "internalType": "uint8", "name": "decimals_", - "type": "uint256" + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "type": "function", + "signature": "0x1a31d465" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "interestAccumulated", - "type": "uint256" + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" }, { - "indexed": false, - "name": "borrowIndex", - "type": "uint256" + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" }, { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "name": "AccrueInterest", - "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" - }, - { - "anonymous": false, - "inputs": [ + }, { - "indexed": false, - "name": "minter", - "type": "address" + "internalType": "string", + "name": "name_", + "type": "string" }, { - "indexed": false, - "name": "mintAmount", - "type": "uint256" + "internalType": "string", + "name": "symbol_", + "type": "string" }, { - "indexed": false, - "name": "mintTokens", - "type": "uint256" + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x99d8c1b4" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "interestRateModel", + "outputs": [ { - "indexed": false, - "name": "redeemer", + "internalType": "contract InterestRateModel", + "name": "", "type": "address" - }, - { - "indexed": false, - "name": "redeemAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "redeemTokens", - "type": "uint256" } ], - "name": "Redeem", - "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf3fdb15a" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "borrower", - "type": "address" - }, - { - "indexed": false, - "name": "borrowAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "accountBorrows", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "isCToken", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xfe9c44ae" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "payer", - "type": "address" - }, - { - "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { - "indexed": false, + "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { - "indexed": false, - "name": "accountBorrows", - "type": "uint256" - }, + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "RepayBorrow", - "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf5e3c462" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "liquidator", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", - "type": "address" - }, - { - "indexed": false, - "name": "repayAmount", + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" - }, - { - "indexed": false, - "name": "cTokenCollateral", - "type": "address" - }, + } + ], + "name": "mint", + "outputs": [ { - "indexed": false, - "name": "seizeTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa0712d68" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ { - "indexed": false, - "name": "newPendingAdmin", - "type": "address" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ { - "indexed": false, - "name": "newAdmin", + "internalType": "address payable", + "name": "", "type": "address" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldComptroller", - "type": "address" - }, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ { - "indexed": false, - "name": "newComptroller", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xdb006a75" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldInterestRateModel", - "type": "address" - }, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", + "outputs": [ { - "indexed": false, - "name": "newInterestRateModel", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x852a12e3" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldReserveFactorMantissa", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrow", + "outputs": [ { - "indexed": false, - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "admin", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "indexed": false, - "name": "reduceAmount", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrowBehalf", + "outputs": [ { - "indexed": false, - "name": "newTotalReserves", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "error", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ { - "indexed": false, - "name": "info", + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb2a02ff1" + }, + { + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xae9d70b0" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" + }, + { + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f840ddd" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" + } + ], + "StdComptrollerG1": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "detail", "type": "uint256" } @@ -10231,71 +12194,6650 @@ "anonymous": false, "inputs": [ { - "indexed": true, - "name": "from", + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MarketEntered", + "type": "event", + "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MarketExited", + "type": "event", + "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", + "type": "address" + } + ], + "name": "MarketListed", + "type": "event", + "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldCloseFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCloseFactorMantissa", + "type": "uint256" + } + ], + "name": "NewCloseFactor", + "type": "event", + "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract CToken", + "name": "cToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oldCollateralFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCollateralFactorMantissa", + "type": "uint256" + } + ], + "name": "NewCollateralFactor", + "type": "event", + "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldLiquidationIncentiveMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" + } + ], + "name": "NewLiquidationIncentive", + "type": "event", + "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldMaxAssets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMaxAssets", + "type": "uint256" + } + ], + "name": "NewMaxAssets", + "type": "event", + "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract PriceOracle", + "name": "oldPriceOracle", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract PriceOracle", + "name": "newPriceOracle", + "type": "address" + } + ], + "name": "NewPriceOracle", + "type": "event", + "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract Unitroller", + "name": "unitroller", + "type": "address" + }, + { + "internalType": "contract PriceOracle", + "name": "_oracle", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_closeFactorMantissa", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxAssets", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "reinitializing", + "type": "bool" + } + ], + "name": "_become", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x32000e00" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newCloseFactorMantissa", + "type": "uint256" + } + ], + "name": "_setCloseFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x317b0b77" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract CToken", + "name": "cToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newCollateralFactorMantissa", + "type": "uint256" + } + ], + "name": "_setCollateralFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe4028eee" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" + } + ], + "name": "_setLiquidationIncentive", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4fd42e17" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newMaxAssets", + "type": "uint256" + } + ], + "name": "_setMaxAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd9226ced" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract PriceOracle", + "name": "newOracle", + "type": "address" + } + ], + "name": "_setPriceOracle", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x55ee1fe1" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract CToken", + "name": "cToken", + "type": "address" + } + ], + "name": "_supportMarket", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa76b3fda" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "accountAssets", + "outputs": [ + { + "internalType": "contract CToken", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdce15449" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrowAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xda3d454c" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x5c778605" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "contract CToken", + "name": "cToken", + "type": "address" + } + ], + "name": "checkMembership", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x929fe9a1" + }, + { + "constant": true, + "inputs": [], + "name": "closeFactorMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xe8755446" + }, + { + "constant": true, + "inputs": [], + "name": "comptrollerImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xbb82aa5e" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "cTokens", + "type": "address[]" + } + ], + "name": "enterMarkets", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xc2998238" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cTokenAddress", + "type": "address" + } + ], + "name": "exitMarket", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xede4edd0" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5ec88c79" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAssetsIn", + "outputs": [ + { + "internalType": "contract CToken[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xabfceffc" + }, + { + "constant": true, + "inputs": [], + "name": "isComptroller", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x007e3dd2" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "liquidateBorrowAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x5fc7e71e" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "liquidateBorrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x47ef3b3b" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "liquidateCalculateSeizeTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xc488847b" + }, + { + "constant": true, + "inputs": [], + "name": "liquidationIncentiveMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x4ada90af" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "markets", + "outputs": [ + { + "internalType": "bool", + "name": "isListed", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "collateralFactorMantissa", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8e8f294b" + }, + { + "constant": true, + "inputs": [], + "name": "maxAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x94b2294b" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mintAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4ef4c3e1" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" + } + ], + "name": "mintVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x41c728b9" + }, + { + "constant": true, + "inputs": [], + "name": "oracle", + "outputs": [ + { + "internalType": "contract PriceOracle", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x7dc0d1d0" + }, + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": true, + "inputs": [], + "name": "pendingComptrollerImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdcfbc0c7" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeemAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xeabe7d91" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeemVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x51dff989" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrowAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x24008a62" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowerIndex", + "type": "uint256" + } + ], + "name": "repayBorrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1ededc91" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seizeAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd02f7351" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "address", + "name": "cTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seizeVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x6d35bf91" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "transferTokens", + "type": "uint256" + } + ], + "name": "transferAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbdcdc258" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "transferTokens", + "type": "uint256" + } + ], + "name": "transferVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x6a56947e" + } + ], + "cETH": [ + { + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "address payable", + "name": "admin_", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe9c714f2" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + } + ], + "name": "_reduceReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x601a0bf1" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "_setComptroller", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4576b5db" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "_setInterestRateModel", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2b3abbd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb71d1a0c" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "_setReserveFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xfca7820b" + }, + { + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6c540baf" + }, + { + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa6afed95" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3af9e669" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xc5ebeaec" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x17bfdfbc" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95dd9193" + }, + { + "constant": true, + "inputs": [], + "name": "borrowIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xaa5af0fd" + }, + { + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf8f9da28" + }, + { + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5fe3b567" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbd6d894d" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x182df0f5" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xc37f68e2" + }, + { + "constant": true, + "inputs": [], + "name": "getCash", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x3b1d21a2" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x99d8c1b4" + }, + { + "constant": true, + "inputs": [], + "name": "interestRateModel", + "outputs": [ + { + "internalType": "contract InterestRateModel", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf3fdb15a" + }, + { + "constant": true, + "inputs": [], + "name": "isCToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xfe9c44ae" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "contract CToken", + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0xaae40a2a" + }, + { + "constant": false, + "inputs": [], + "name": "mint", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x1249c58b" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xdb006a75" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x852a12e3" + }, + { + "constant": false, + "inputs": [], + "name": "repayBorrow", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x4e4d9fea" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + } + ], + "name": "repayBorrowBehalf", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0xe5974619" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb2a02ff1" + }, + { + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xae9d70b0" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" + }, + { + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f840ddd" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + } + ], + "Base500bps_Slope1200bps": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "baseRatePerYear", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "multiplierPerYear", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "baseRatePerBlock", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "multiplierPerBlock", + "type": "uint256" + } + ], + "name": "NewInterestParams", + "type": "event", + "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27" + }, + { + "constant": true, + "inputs": [], + "name": "baseRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf14039de" + }, + { + "constant": true, + "inputs": [], + "name": "blocksPerYear", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xa385fb96" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + } + ], + "name": "getBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x15f24053" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa", + "type": "uint256" + } + ], + "name": "getSupplyRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xb8168816" + }, + { + "constant": true, + "inputs": [], + "name": "isInterestRateModel", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x2191f92a" + }, + { + "constant": true, + "inputs": [], + "name": "multiplierPerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8726bb89" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + } + ], + "name": "utilizationRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function", + "signature": "0x6e71e2d8" + } + ], + "cSAI": [ + { + "inputs": [ + { + "internalType": "address", + "name": "underlying_", + "type": "address" + }, + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "address payable", + "name": "admin_", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe9c714f2" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + } + ], + "name": "_addReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3e941010" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + } + ], + "name": "_reduceReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x601a0bf1" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "_setComptroller", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4576b5db" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "_setInterestRateModel", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2b3abbd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb71d1a0c" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "_setReserveFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xfca7820b" + }, + { + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6c540baf" + }, + { + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa6afed95" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3af9e669" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xc5ebeaec" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x17bfdfbc" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95dd9193" + }, + { + "constant": true, + "inputs": [], + "name": "borrowIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xaa5af0fd" + }, + { + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf8f9da28" + }, + { + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5fe3b567" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbd6d894d" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x182df0f5" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xc37f68e2" + }, + { + "constant": true, + "inputs": [], + "name": "getCash", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x3b1d21a2" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "underlying_", + "type": "address" + }, + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1a31d465" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x99d8c1b4" + }, + { + "constant": true, + "inputs": [], + "name": "interestRateModel", + "outputs": [ + { + "internalType": "contract InterestRateModel", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf3fdb15a" + }, + { + "constant": true, + "inputs": [], + "name": "isCToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xfe9c44ae" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf5e3c462" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa0712d68" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xdb006a75" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x852a12e3" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrowBehalf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb2a02ff1" + }, + { + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xae9d70b0" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" + }, + { + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f840ddd" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" + } + ], + "Base200bps_Slope3000bps": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "baseRatePerYear", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "multiplierPerYear", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "baseRatePerBlock", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "multiplierPerBlock", + "type": "uint256" + } + ], + "name": "NewInterestParams", + "type": "event", + "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27" + }, + { + "constant": true, + "inputs": [], + "name": "baseRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf14039de" + }, + { + "constant": true, + "inputs": [], + "name": "blocksPerYear", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xa385fb96" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + } + ], + "name": "getBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x15f24053" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa", + "type": "uint256" + } + ], + "name": "getSupplyRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xb8168816" + }, + { + "constant": true, + "inputs": [], + "name": "isInterestRateModel", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x2191f92a" + }, + { + "constant": true, + "inputs": [], + "name": "multiplierPerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8726bb89" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + } + ], + "name": "utilizationRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function", + "signature": "0x6e71e2d8" + } + ], + "cREP": [ + { + "inputs": [ + { + "internalType": "address", + "name": "underlying_", + "type": "address" + }, + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "address payable", + "name": "admin_", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe9c714f2" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + } + ], + "name": "_addReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3e941010" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + } + ], + "name": "_reduceReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x601a0bf1" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "_setComptroller", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4576b5db" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "_setInterestRateModel", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2b3abbd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb71d1a0c" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "_setReserveFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xfca7820b" + }, + { + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6c540baf" + }, + { + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa6afed95" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3af9e669" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xc5ebeaec" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x17bfdfbc" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95dd9193" + }, + { + "constant": true, + "inputs": [], + "name": "borrowIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xaa5af0fd" + }, + { + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf8f9da28" + }, + { + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5fe3b567" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbd6d894d" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x182df0f5" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xc37f68e2" + }, + { + "constant": true, + "inputs": [], + "name": "getCash", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x3b1d21a2" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "underlying_", + "type": "address" + }, + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1a31d465" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x99d8c1b4" + }, + { + "constant": true, + "inputs": [], + "name": "interestRateModel", + "outputs": [ + { + "internalType": "contract InterestRateModel", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf3fdb15a" + }, + { + "constant": true, + "inputs": [], + "name": "isCToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xfe9c44ae" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf5e3c462" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa0712d68" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xdb006a75" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x852a12e3" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrowBehalf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb2a02ff1" + }, + { + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xae9d70b0" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" + }, + { + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f840ddd" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" + } + ], + "WBTC": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "burner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event", + "signature": "0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event", + "signature": "0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885" + }, + { + "anonymous": false, + "inputs": [], + "name": "MintFinished", + "type": "event", + "signature": "0xae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa08" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + } + ], + "name": "OwnershipRenounced", + "type": "event", + "signature": "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event", + "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0" + }, + { + "anonymous": false, + "inputs": [], + "name": "Pause", + "type": "event", + "signature": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "anonymous": false, + "inputs": [], + "name": "Unpause", + "type": "event", + "signature": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "allocateTo", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x08bca566" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x42966c68" + }, + { + "constant": false, + "inputs": [], + "name": "claimOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4e71e0c8" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x66188463" + }, + { + "constant": false, + "inputs": [], + "name": "finishMinting", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x7d64bcb4" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_addedValue", + "type": "uint256" + } + ], + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd73dd623" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x40c10f19" + }, + { + "constant": true, + "inputs": [], + "name": "mintingFinished", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x05d2035b" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8da5cb5b" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x8456cb59" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5c975abb" + }, + { + "constant": true, + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xe30c3978" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ERC20Basic", + "name": "_token", + "type": "address" + } + ], + "name": "reclaimToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x17ffc320" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x715018a6" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2fde38b" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3f4ba83a" + } + ], + "SAI": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { "indexed": true, - "name": "to", + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "Transfer", + "name": "Approval", "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { "anonymous": false, "inputs": [ { "indexed": true, - "name": "owner", + "internalType": "address", + "name": "from", "type": "address" }, { "indexed": true, - "name": "spender", + "internalType": "address", + "name": "to", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "Approval", + "name": "Transfer", "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "WBTC": [ + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, { "constant": true, "inputs": [], - "name": "mintingFinished", + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "bool" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x05d2035b" + "signature": "0x06fdde03" }, { "constant": true, "inputs": [], - "name": "name", + "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", "type": "string" } @@ -10303,226 +18845,337 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x06fdde03" + "signature": "0x95d89b41" }, { - "constant": false, + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": true, "inputs": [ { - "name": "_owner", + "internalType": "address", + "name": "owner", "type": "address" - }, + } + ], + "name": "balanceOf", + "outputs": [ { - "name": "value", + "internalType": "uint256", + "name": "balance", "type": "uint256" } ], - "name": "allocateTo", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x08bca566" + "signature": "0x70a08231" }, { "constant": false, "inputs": [ { - "name": "_spender", + "internalType": "address", + "name": "dst", "type": "address" }, { - "name": "_value", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "approve", + "name": "transfer", "outputs": [ { - "name": "", + "internalType": "bool", + "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0xa9059cbb" }, { "constant": false, "inputs": [ { - "name": "_token", + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "reclaimToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x17ffc320" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", + "name": "transferFrom", "outputs": [ { - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "success", + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x18160ddd" + "signature": "0x23b872dd" }, { "constant": false, "inputs": [ { - "name": "_from", - "type": "address" - }, - { - "name": "_to", + "internalType": "address", + "name": "spender", "type": "address" }, { - "name": "_value", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "transferFrom", + "name": "approve", "outputs": [ { - "name": "", + "internalType": "bool", + "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0x095ea7b3" }, { "constant": true, - "inputs": [], - "name": "decimals", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { - "name": "", - "type": "uint8" + "internalType": "uint256", + "name": "remaining", + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x313ce567" - }, + "signature": "0xdd62ed3e" + } + ], + "REP": [ { - "constant": false, - "inputs": [], - "name": "unpause", - "outputs": [], + "inputs": [ + { + "internalType": "uint256", + "name": "_initialAmount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_tokenName", + "type": "string" + }, + { + "internalType": "uint8", + "name": "_decimalUnits", + "type": "uint8" + }, + { + "internalType": "string", + "name": "_tokenSymbol", + "type": "string" + } + ], "payable": false, "stateMutability": "nonpayable", - "type": "function", - "signature": "0x3f4ba83a" + "type": "constructor", + "signature": "constructor" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_to", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "_amount", + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "name": "mint", - "outputs": [ + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", - "type": "bool" + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x40c10f19" + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { "constant": false, "inputs": [ { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint256", "name": "value", "type": "uint256" } ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x42966c68" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", + "name": "allocateTo", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4e71e0c8" + "signature": "0x08bca566" }, { "constant": true, - "inputs": [], - "name": "paused", + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5c975abb" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "_spender", "type": "address" }, { - "name": "_subtractedValue", + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "decreaseApproval", + "name": "approve", "outputs": [ { - "name": "success", + "internalType": "bool", + "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x66188463" + "signature": "0x095ea7b3" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "_owner", "type": "address" } @@ -10530,6 +19183,7 @@ "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -10540,21 +19194,39 @@ "signature": "0x70a08231" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "renounceOwnership", - "outputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x715018a6" + "signature": "0x313ce567" }, { "constant": false, - "inputs": [], - "name": "finishMinting", + "inputs": [ + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseApproval", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -10562,32 +19234,50 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x7d64bcb4" + "signature": "0x66188463" }, { "constant": false, - "inputs": [], - "name": "pause", - "outputs": [], + "inputs": [ + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_addedValue", + "type": "uint256" + } + ], + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x8456cb59" + "signature": "0xd73dd623" }, { "constant": true, "inputs": [], - "name": "owner", + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "address" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x8da5cb5b" + "signature": "0x06fdde03" }, { "constant": true, @@ -10595,6 +19285,7 @@ "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", "type": "string" } @@ -10604,14 +19295,32 @@ "type": "function", "signature": "0x95d89b41" }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "_to", "type": "address" }, { + "internalType": "uint256", "name": "_value", "type": "uint256" } @@ -10619,6 +19328,7 @@ "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -10632,585 +19342,557 @@ "constant": false, "inputs": [ { - "name": "_spender", + "internalType": "address", + "name": "_from", "type": "address" }, { - "name": "_addedValue", + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "increaseApproval", + "name": "transferFrom", "outputs": [ { - "name": "success", + "internalType": "bool", + "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd73dd623" - }, + "signature": "0x23b872dd" + } + ], + "cZRX": [ { - "constant": true, "inputs": [ { - "name": "_owner", + "internalType": "address", + "name": "underlying_", "type": "address" }, { - "name": "_spender", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", "type": "address" - } - ], - "name": "allowance", - "outputs": [ + }, { - "name": "", + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdd62ed3e" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ + }, { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xe30c3978" - }, - { - "constant": false, - "inputs": [ + "internalType": "string", + "name": "name_", + "type": "string" + }, { - "name": "newOwner", + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "address payable", + "name": "admin_", "type": "address" } ], - "name": "transferOwnership", - "outputs": [], "payable": false, "stateMutability": "nonpayable", - "type": "function", - "signature": "0xf2fde38b" - }, - { - "anonymous": false, - "inputs": [], - "name": "Pause", - "type": "event", - "signature": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625" - }, - { - "anonymous": false, - "inputs": [], - "name": "Unpause", - "type": "event", - "signature": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33" + "type": "constructor", + "signature": "constructor" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "burner", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" }, { "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "Burn", + "name": "AccrueInterest", "type": "event", - "signature": "0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5" + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { "anonymous": false, "inputs": [ { "indexed": true, - "name": "to", + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "Mint", - "type": "event", - "signature": "0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885" - }, - { - "anonymous": false, - "inputs": [], - "name": "MintFinished", + "name": "Approval", "type": "event", - "signature": "0xae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa08" + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "previousOwner", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" - } - ], - "name": "OwnershipRenounced", - "type": "event", - "signature": "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820" - }, - { - "anonymous": false, - "inputs": [ + }, { - "indexed": true, - "name": "previousOwner", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" }, { - "indexed": true, - "name": "newOwner", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" } ], - "name": "OwnershipTransferred", + "name": "Borrow", "type": "event", - "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0" + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "owner", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" }, { - "indexed": true, - "name": "spender", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" }, { "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "detail", "type": "uint256" } ], - "name": "Approval", + "name": "Failure", "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "from", + "indexed": false, + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "indexed": true, - "name": "to", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" }, { "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - } - ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - } - ], - "REP": [ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x06fdde03" - }, - { - "constant": false, - "inputs": [ + }, { - "name": "_owner", + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { - "name": "value", + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "allocateTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x08bca566" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_spender", + "indexed": false, + "internalType": "address", + "name": "minter", "type": "address" }, { - "name": "_value", + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x095ea7b3" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_from", + "indexed": false, + "internalType": "address", + "name": "oldAdmin", "type": "address" }, { - "name": "_to", + "indexed": false, + "internalType": "address", + "name": "newAdmin", "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint8" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x313ce567" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_spender", + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", "type": "address" }, { - "name": "_subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseApproval", - "outputs": [ - { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x66188463" + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "_owner", + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "string" + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x95d89b41" + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_to", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" }, { - "name": "_value", + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xa9059cbb" + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_spender", + "indexed": false, + "internalType": "address", + "name": "redeemer", "type": "address" }, { - "name": "_addedValue", + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" - } - ], - "name": "increaseApproval", - "outputs": [ + }, { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xd73dd623" + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "_owner", + "indexed": false, + "internalType": "address", + "name": "payer", "type": "address" }, { - "name": "_spender", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" - } - ], - "name": "allowance", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdd62ed3e" + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { + "anonymous": false, "inputs": [ { - "name": "_initialAmount", - "type": "uint256" - }, - { - "name": "_tokenName", - "type": "string" + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" }, { - "name": "_decimalUnits", - "type": "uint8" + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" }, { - "name": "_tokenSymbol", - "type": "string" + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "owner", + "indexed": false, + "internalType": "address", + "name": "admin", "type": "address" }, { - "indexed": true, - "name": "spender", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" }, { "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "newTotalReserves", "type": "uint256" } ], - "name": "Approval", + "name": "ReservesReduced", "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" }, { "anonymous": false, "inputs": [ { "indexed": true, + "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, + "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event", "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - } - ], - "cZRX": [ + }, { - "constant": true, + "constant": false, "inputs": [], - "name": "name", + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x06fdde03" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "spender", - "type": "address" - }, - { - "name": "amount", + "internalType": "uint256", + "name": "addAmount", "type": "uint256" } ], - "name": "approve", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0x3e941010" }, { "constant": false, "inputs": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" } ], - "name": "repayBorrow", + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11218,34 +19900,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x0e752702" - }, - { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x173b9904" + "signature": "0x601a0bf1" }, { "constant": false, "inputs": [ { - "name": "account", + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", "type": "address" } ], - "name": "borrowBalanceCurrent", + "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11253,81 +19922,65 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x17bfdfbc" + "signature": "0x4576b5db" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", - "type": "uint256" + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x182df0f5" + "signature": "0xf2b3abbd" }, { "constant": false, "inputs": [ { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "internalType": "address payable", + "name": "newPendingAdmin", "type": "address" - }, - { - "name": "amount", - "type": "uint256" } ], - "name": "transferFrom", + "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "repayBorrowBehalf", + "name": "_setReserveFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11335,64 +19988,74 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x2608f818" + "signature": "0xfca7820b" }, { "constant": true, "inputs": [], - "name": "pendingAdmin", + "name": "accrualBlockNumber", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x26782247" + "signature": "0x6c540baf" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "decimals", + "name": "accrueInterest", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x313ce567" + "signature": "0xa6afed95" }, { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "balanceOfUnderlying", + "constant": true, + "inputs": [], + "name": "admin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x3af9e669" + "signature": "0xf851a440" }, { "constant": true, - "inputs": [], - "name": "getCash", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11400,34 +20063,48 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "newComptroller", + "internalType": "address", + "name": "spender", "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "_setComptroller", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4576b5db" + "signature": "0x095ea7b3" }, { "constant": true, - "inputs": [], - "name": "totalBorrows", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11435,34 +20112,43 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x47bd3718" + "signature": "0x70a08231" }, { - "constant": true, - "inputs": [], - "name": "comptroller", + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5fe3b567" + "signature": "0x3af9e669" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], - "name": "_reduceReserves", + "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11470,29 +20156,43 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0xc5ebeaec" }, { - "constant": true, - "inputs": [], - "name": "initialExchangeRateMantissa", + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x675d972c" + "signature": "0x17bfdfbc" }, { "constant": true, - "inputs": [], - "name": "accrualBlockNumber", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11500,34 +20200,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6c540baf" + "signature": "0x95dd9193" }, { "constant": true, "inputs": [], - "name": "underlying", + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6f307dc3" + "signature": "0xaa5af0fd" }, { "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", + "inputs": [], + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11535,84 +20232,100 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0xf8f9da28" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "totalBorrowsCurrent", + "name": "comptroller", "outputs": [ { + "internalType": "contract ComptrollerInterface", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x73acee98" + "signature": "0x5fe3b567" }, { - "constant": false, - "inputs": [ - { - "name": "redeemAmount", - "type": "uint256" - } - ], - "name": "redeemUnderlying", + "constant": true, + "inputs": [], + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x852a12e3" + "signature": "0x313ce567" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "totalReserves", + "name": "exchangeRateCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x8f840ddd" + "signature": "0xbd6d894d" }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "exchangeRateStored", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0x182df0f5" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" } ], - "name": "borrowBalanceStored", + "name": "getAccountSnapshot", "outputs": [ { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11620,116 +20333,166 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95dd9193" + "signature": "0xc37f68e2" }, { - "constant": false, - "inputs": [ - { - "name": "mintAmount", - "type": "uint256" - } - ], - "name": "mint", + "constant": true, + "inputs": [], + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa0712d68" + "signature": "0x3b1d21a2" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", - "outputs": [ + "inputs": [ { - "name": "", + "internalType": "address", + "name": "underlying_", + "type": "address" + }, + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0x1a31d465" }, { "constant": false, "inputs": [ { - "name": "dst", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", "type": "address" }, { - "name": "amount", + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ + }, { - "name": "", - "type": "bool" + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x99d8c1b4" }, { "constant": true, "inputs": [], - "name": "borrowIndex", + "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0xf3fdb15a" }, { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0xfe9c44ae" }, { "constant": false, "inputs": [ { - "name": "liquidator", - "type": "address" - }, - { + "internalType": "address", "name": "borrower", "type": "address" }, { - "name": "seizeTokens", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" } ], - "name": "seize", + "name": "liquidateBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11737,19 +20500,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0xf5e3c462" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" } ], - "name": "_setPendingAdmin", + "name": "mint", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11757,66 +20522,75 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb71d1a0c" + "signature": "0xa0712d68" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "exchangeRateCurrent", + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xbd6d894d" + "signature": "0x06fdde03" }, { "constant": true, - "inputs": [ + "inputs": [], + "name": "pendingAdmin", + "outputs": [ { - "name": "account", + "internalType": "address payable", + "name": "", "type": "address" } ], - "name": "getAccountSnapshot", - "outputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ { - "name": "", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" - }, + } + ], + "name": "redeem", + "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xc37f68e2" + "signature": "0xdb006a75" }, { "constant": false, "inputs": [ { - "name": "borrowAmount", + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" } ], - "name": "borrow", + "name": "redeemUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11824,19 +20598,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0x852a12e3" }, { "constant": false, "inputs": [ { - "name": "redeemTokens", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "redeem", + "name": "repayBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11844,58 +20620,74 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xdb006a75" + "signature": "0x0e752702" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "owner", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "spender", - "type": "address" + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" } ], - "name": "allowance", + "name": "repayBorrowBehalf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0x2608f818" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "reserveFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x173b9904" }, { "constant": false, "inputs": [ { - "name": "newInterestRateModel", + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" } ], - "name": "_setInterestRateModel", + "name": "seize", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11903,42 +20695,63 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0xb2a02ff1" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "supplyRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0xae9d70b0" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "name": "borrower", - "type": "address" - }, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, - { - "name": "cTokenCollateral", - "type": "address" } ], - "name": "liquidateBorrow", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11946,29 +20759,31 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf5e3c462" + "signature": "0x73acee98" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "totalReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0x8f840ddd" }, { "constant": true, "inputs": [], - "name": "borrowRatePerBlock", + "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11976,72 +20791,126 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf8f9da28" + "signature": "0x18160ddd" }, { "constant": false, "inputs": [ { - "name": "newReserveFactorMantissa", + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "_setReserveFactor", + "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xfca7820b" + "signature": "0x23b872dd" }, { "constant": true, "inputs": [], - "name": "isCToken", + "name": "underlying", "outputs": [ { + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe9c44ae" - }, + "signature": "0x6f307dc3" + } + ], + "cWBTC": [ { "inputs": [ { + "internalType": "address", "name": "underlying_", "type": "address" }, { + "internalType": "contract ComptrollerInterface", "name": "comptroller_", "type": "address" }, { + "internalType": "contract InterestRateModel", "name": "interestRateModel_", "type": "address" }, { + "internalType": "uint256", "name": "initialExchangeRateMantissa_", "type": "uint256" }, { + "internalType": "string", "name": "name_", "type": "string" }, { + "internalType": "string", "name": "symbol_", "type": "string" }, { + "internalType": "uint8", "name": "decimals_", - "type": "uint256" + "type": "uint8" + }, + { + "internalType": "address payable", + "name": "admin_", + "type": "address" } ], "payable": false, @@ -12054,90 +20923,83 @@ "inputs": [ { "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", "name": "interestAccumulated", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "borrowIndex", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "AccrueInterest", "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "minter", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "indexed": false, - "name": "mintAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "mintTokens", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "redeemer", + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, - "name": "redeemAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "redeemTokens", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "Redeem", + "name": "Approval", "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { "anonymous": false, "inputs": [ { "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "borrowAmount", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "accountBorrows", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } @@ -12151,59 +21013,57 @@ "inputs": [ { "indexed": false, - "name": "payer", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", - "type": "address" - }, - { - "indexed": false, - "name": "repayAmount", + "internalType": "uint256", + "name": "error", "type": "uint256" }, { "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "info", "type": "uint256" }, { "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "detail", "type": "uint256" } ], - "name": "RepayBorrow", + "name": "Failure", "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { "anonymous": false, "inputs": [ { "indexed": false, + "internalType": "address", "name": "liquidator", "type": "address" }, { "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "indexed": false, + "internalType": "address", "name": "cTokenCollateral", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "seizeTokens", "type": "uint256" } @@ -12217,29 +21077,39 @@ "inputs": [ { "indexed": false, - "name": "oldPendingAdmin", + "internalType": "address", + "name": "minter", "type": "address" }, { "indexed": false, - "name": "newPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" } ], - "name": "NewPendingAdmin", + "name": "Mint", "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { "anonymous": false, "inputs": [ { "indexed": false, + "internalType": "address", "name": "oldAdmin", "type": "address" }, { "indexed": false, + "internalType": "address", "name": "newAdmin", "type": "address" } @@ -12253,11 +21123,13 @@ "inputs": [ { "indexed": false, + "internalType": "contract ComptrollerInterface", "name": "oldComptroller", "type": "address" }, { "indexed": false, + "internalType": "contract ComptrollerInterface", "name": "newComptroller", "type": "address" } @@ -12271,29 +21143,53 @@ "inputs": [ { "indexed": false, + "internalType": "contract InterestRateModel", "name": "oldInterestRateModel", "type": "address" }, { "indexed": false, - "name": "newInterestRateModel", + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", "type": "address" } ], - "name": "NewMarketInterestRateModel", + "name": "NewPendingAdmin", "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" }, { "anonymous": false, "inputs": [ { "indexed": false, + "internalType": "uint256", "name": "oldReserveFactorMantissa", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "newReserveFactorMantissa", "type": "uint256" } @@ -12307,145 +21203,194 @@ "inputs": [ { "indexed": false, - "name": "admin", + "internalType": "address", + "name": "redeemer", "type": "address" }, { "indexed": false, - "name": "reduceAmount", + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" }, { "indexed": false, - "name": "newTotalReserves", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "ReservesReduced", + "name": "Redeem", "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "error", + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" }, { "indexed": false, - "name": "info", + "internalType": "uint256", + "name": "accountBorrows", "type": "uint256" }, { "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "Failure", + "name": "RepayBorrow", "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "from", + "indexed": false, + "internalType": "address", + "name": "benefactor", "type": "address" }, { - "indexed": true, - "name": "to", + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "admin", "type": "address" }, { "indexed": false, - "name": "amount", + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", "type": "uint256" } ], - "name": "Transfer", + "name": "ReservesReduced", "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" }, { "anonymous": false, "inputs": [ { "indexed": true, - "name": "owner", + "internalType": "address", + "name": "from", "type": "address" }, { "indexed": true, - "name": "spender", + "internalType": "address", + "name": "to", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "Approval", + "name": "Transfer", "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "cWBTC": [ + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, { - "constant": true, + "constant": false, "inputs": [], - "name": "name", + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x06fdde03" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "spender", - "type": "address" - }, - { - "name": "amount", + "internalType": "uint256", + "name": "addAmount", "type": "uint256" } ], - "name": "approve", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0x3e941010" }, { "constant": false, "inputs": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" } ], - "name": "repayBorrow", + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12453,34 +21398,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x0e752702" - }, - { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x173b9904" + "signature": "0x601a0bf1" }, { "constant": false, "inputs": [ { - "name": "account", + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", "type": "address" } ], - "name": "borrowBalanceCurrent", + "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12488,81 +21420,65 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x17bfdfbc" + "signature": "0x4576b5db" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", - "type": "uint256" + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x182df0f5" + "signature": "0xf2b3abbd" }, { "constant": false, "inputs": [ { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "internalType": "address payable", + "name": "newPendingAdmin", "type": "address" - }, - { - "name": "amount", - "type": "uint256" } ], - "name": "transferFrom", + "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "repayBorrowBehalf", + "name": "_setReserveFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12570,64 +21486,74 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x2608f818" + "signature": "0xfca7820b" }, { "constant": true, "inputs": [], - "name": "pendingAdmin", + "name": "accrualBlockNumber", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x26782247" + "signature": "0x6c540baf" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "decimals", + "name": "accrueInterest", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x313ce567" + "signature": "0xa6afed95" }, { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "balanceOfUnderlying", + "constant": true, + "inputs": [], + "name": "admin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x3af9e669" + "signature": "0xf851a440" }, { "constant": true, - "inputs": [], - "name": "getCash", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12635,34 +21561,48 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "newComptroller", + "internalType": "address", + "name": "spender", "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "_setComptroller", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4576b5db" + "signature": "0x095ea7b3" }, { "constant": true, - "inputs": [], - "name": "totalBorrows", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12670,34 +21610,43 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x47bd3718" + "signature": "0x70a08231" }, { - "constant": true, - "inputs": [], - "name": "comptroller", + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5fe3b567" + "signature": "0x3af9e669" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], - "name": "_reduceReserves", + "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12705,29 +21654,43 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0xc5ebeaec" }, { - "constant": true, - "inputs": [], - "name": "initialExchangeRateMantissa", + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x675d972c" + "signature": "0x17bfdfbc" }, { "constant": true, - "inputs": [], - "name": "accrualBlockNumber", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12735,34 +21698,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6c540baf" + "signature": "0x95dd9193" }, { "constant": true, "inputs": [], - "name": "underlying", + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6f307dc3" + "signature": "0xaa5af0fd" }, { "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", + "inputs": [], + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12770,84 +21730,100 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0xf8f9da28" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "totalBorrowsCurrent", + "name": "comptroller", "outputs": [ { + "internalType": "contract ComptrollerInterface", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x73acee98" + "signature": "0x5fe3b567" }, { - "constant": false, - "inputs": [ - { - "name": "redeemAmount", - "type": "uint256" - } - ], - "name": "redeemUnderlying", + "constant": true, + "inputs": [], + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x852a12e3" + "signature": "0x313ce567" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "totalReserves", + "name": "exchangeRateCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x8f840ddd" + "signature": "0xbd6d894d" }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "exchangeRateStored", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0x182df0f5" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" } ], - "name": "borrowBalanceStored", + "name": "getAccountSnapshot", "outputs": [ { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12855,116 +21831,166 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95dd9193" + "signature": "0xc37f68e2" }, { - "constant": false, - "inputs": [ - { - "name": "mintAmount", - "type": "uint256" - } - ], - "name": "mint", + "constant": true, + "inputs": [], + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa0712d68" + "signature": "0x3b1d21a2" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", - "outputs": [ + "inputs": [ { - "name": "", + "internalType": "address", + "name": "underlying_", + "type": "address" + }, + { + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0x1a31d465" }, { "constant": false, "inputs": [ { - "name": "dst", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", "type": "address" }, { - "name": "amount", + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ + }, { - "name": "", - "type": "bool" + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x99d8c1b4" }, { "constant": true, "inputs": [], - "name": "borrowIndex", + "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0xf3fdb15a" }, { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0xfe9c44ae" }, { "constant": false, "inputs": [ { - "name": "liquidator", - "type": "address" - }, - { + "internalType": "address", "name": "borrower", "type": "address" }, { - "name": "seizeTokens", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" } ], - "name": "seize", + "name": "liquidateBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12972,34 +21998,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0xf5e3c462" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "_setPendingAdmin", - "outputs": [ - { - "name": "", + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xb71d1a0c" - }, - { - "constant": false, - "inputs": [], - "name": "exchangeRateCurrent", + "name": "mint", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13007,64 +22020,45 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbd6d894d" + "signature": "0xa0712d68" }, { "constant": true, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "getAccountSnapshot", + "inputs": [], + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xc37f68e2" + "signature": "0x06fdde03" }, { - "constant": false, - "inputs": [ - { - "name": "borrowAmount", - "type": "uint256" - } - ], - "name": "borrow", + "constant": true, + "inputs": [], + "name": "pendingAdmin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0x26782247" }, { "constant": false, "inputs": [ { + "internalType": "uint256", "name": "redeemTokens", "type": "uint256" } @@ -13072,6 +22066,7 @@ "name": "redeem", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13082,35 +22077,40 @@ "signature": "0xdb006a75" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "owner", - "type": "address" - }, - { - "name": "spender", - "type": "address" + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" } ], - "name": "allowance", + "name": "redeemUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0x852a12e3" }, { "constant": false, - "inputs": [], - "name": "_acceptAdmin", + "inputs": [ + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13118,19 +22118,26 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x0e752702" }, { "constant": false, "inputs": [ { - "name": "newInterestRateModel", + "internalType": "address", + "name": "borrower", "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" } ], - "name": "_setInterestRateModel", + "name": "repayBorrowBehalf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13138,42 +22145,47 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0x2608f818" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "reserveFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0x173b9904" }, { "constant": false, "inputs": [ { - "name": "borrower", + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "name": "repayAmount", - "type": "uint256" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "name": "cTokenCollateral", - "type": "address" + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" } ], - "name": "liquidateBorrow", + "name": "seize", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13181,49 +22193,63 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf5e3c462" + "signature": "0xb2a02ff1" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "supplyRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0xae9d70b0" }, { "constant": true, "inputs": [], - "name": "borrowRatePerBlock", + "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf8f9da28" + "signature": "0x95d89b41" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ { - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "_setReserveFactor", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13231,412 +22257,371 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xfca7820b" + "signature": "0x73acee98" }, { "constant": true, "inputs": [], - "name": "isCToken", + "name": "totalReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe9c44ae" + "signature": "0x8f840ddd" }, { - "inputs": [ - { - "name": "underlying_", - "type": "address" - }, - { - "name": "comptroller_", - "type": "address" - }, - { - "name": "interestRateModel_", - "type": "address" - }, - { - "name": "initialExchangeRateMantissa_", - "type": "uint256" - }, - { - "name": "name_", - "type": "string" - }, - { - "name": "symbol_", - "type": "string" - }, + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "name": "decimals_", + "internalType": "uint256", + "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "interestAccumulated", - "type": "uint256" + "internalType": "address", + "name": "dst", + "type": "address" }, { - "indexed": false, - "name": "borrowIndex", + "internalType": "uint256", + "name": "amount", "type": "uint256" - }, + } + ], + "name": "transfer", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "AccrueInterest", - "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "minter", + "internalType": "address", + "name": "src", "type": "address" }, { - "indexed": false, - "name": "mintAmount", - "type": "uint256" + "internalType": "address", + "name": "dst", + "type": "address" }, { - "indexed": false, - "name": "mintTokens", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "redeemer", - "type": "address" - }, - { - "indexed": false, - "name": "redeemAmount", - "type": "uint256" - }, + "name": "transferFrom", + "outputs": [ { - "indexed": false, - "name": "redeemTokens", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "Redeem", - "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ { - "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "", "type": "address" - }, - { - "indexed": false, - "name": "borrowAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "accountBorrows", - "type": "uint256" - }, - { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" } ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" - }, + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" + } + ], + "USDC": [ { - "anonymous": false, "inputs": [ { - "indexed": false, - "name": "payer", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", - "type": "address" + "internalType": "uint256", + "name": "_initialAmount", + "type": "uint256" }, { - "indexed": false, - "name": "repayAmount", - "type": "uint256" + "internalType": "string", + "name": "_tokenName", + "type": "string" }, { - "indexed": false, - "name": "accountBorrows", - "type": "uint256" + "internalType": "uint8", + "name": "_decimalUnits", + "type": "uint8" }, { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" + "internalType": "string", + "name": "_tokenSymbol", + "type": "string" } ], - "name": "RepayBorrow", - "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "liquidator", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "indexed": false, - "name": "repayAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "cTokenCollateral", + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, - "name": "seizeTokens", + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "name": "LiquidateBorrow", + "name": "Approval", "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "oldPendingAdmin", + "indexed": true, + "internalType": "address", + "name": "from", "type": "address" }, { - "indexed": false, - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldAdmin", + "indexed": true, + "internalType": "address", + "name": "to", "type": "address" }, { "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "name": "NewAdmin", + "name": "Transfer", "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldComptroller", + "internalType": "address", + "name": "_owner", "type": "address" }, { - "indexed": false, - "name": "newComptroller", - "type": "address" + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "name": "allocateTo", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x08bca566" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": false, - "name": "oldInterestRateModel", + "internalType": "address", + "name": "_owner", "type": "address" }, { - "indexed": false, - "name": "newInterestRateModel", + "internalType": "address", + "name": "_spender", "type": "address" } ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldReserveFactorMantissa", - "type": "uint256" - }, + "name": "allowance", + "outputs": [ { - "indexed": false, - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "admin", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "indexed": false, - "name": "reduceAmount", + "internalType": "uint256", + "name": "_value", "type": "uint256" - }, + } + ], + "name": "approve", + "outputs": [ { - "indexed": false, - "name": "newTotalReserves", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": false, - "name": "error", - "type": "uint256" - }, + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ { - "indexed": false, - "name": "info", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ { - "indexed": false, - "name": "detail", - "type": "uint256" + "internalType": "uint8", + "name": "", + "type": "uint8" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "indexed": false, - "name": "amount", + "internalType": "uint256", + "name": "_subtractedValue", "type": "uint256" } ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "name": "decreaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x66188463" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "indexed": false, - "name": "amount", + "internalType": "uint256", + "name": "_addedValue", "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "USDC": [ + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd73dd623" + }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { + "internalType": "string", "name": "", "type": "string" } @@ -13647,39 +22632,55 @@ "signature": "0x06fdde03" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "name": "_owner", - "type": "address" - }, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "name": "value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "allocateTo", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x08bca566" + "signature": "0x18160ddd" }, { "constant": false, "inputs": [ { - "name": "_spender", + "internalType": "address", + "name": "_to", "type": "address" }, { + "internalType": "uint256", "name": "_value", "type": "uint256" } ], - "name": "approve", + "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -13687,35 +22688,23 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" + "signature": "0xa9059cbb" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "_from", "type": "address" }, { + "internalType": "address", "name": "_to", "type": "address" }, { + "internalType": "uint256", "name": "_value", "type": "uint256" } @@ -13723,6 +22712,7 @@ "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -13731,57 +22721,76 @@ "stateMutability": "nonpayable", "type": "function", "signature": "0x23b872dd" - }, + } + ], + "Base200bps_Slope222bps_Kink90_Jump10": [ { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ + "inputs": [ { - "name": "", - "type": "uint8" + "internalType": "uint256", + "name": "baseRatePerYear", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "multiplierPerYear", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "jump_", + "type": "uint256" } ], "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x313ce567" + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_spender", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "baseRatePerBlock", + "type": "uint256" }, { - "name": "_subtractedValue", + "indexed": false, + "internalType": "uint256", + "name": "multiplierPerBlock", "type": "uint256" - } - ], - "name": "decreaseApproval", - "outputs": [ + }, { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "jump", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x66188463" + "name": "NewInterestParams", + "type": "event", + "signature": "0x6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d" }, { "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", + "inputs": [], + "name": "baseRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13789,86 +22798,116 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0xf14039de" }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "blocksPerYear", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0xa385fb96" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "_to", - "type": "address" + "internalType": "uint256", + "name": "cash", + "type": "uint256" }, { - "name": "_value", + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", "type": "uint256" } ], - "name": "transfer", + "name": "getBorrowRate", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x15f24053" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "_spender", - "type": "address" + "internalType": "uint256", + "name": "cash", + "type": "uint256" }, { - "name": "_addedValue", + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa", "type": "uint256" } ], - "name": "increaseApproval", + "name": "getSupplyRate", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xd73dd623" + "signature": "0xb8168816" }, { "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, + "inputs": [], + "name": "isInterestRateModel", + "outputs": [ { - "name": "_spender", - "type": "address" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "allowance", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x2191f92a" + }, + { + "constant": true, + "inputs": [], + "name": "jump", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13876,77 +22915,71 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0x8f6c696b" }, { - "inputs": [ + "constant": true, + "inputs": [], + "name": "kink", + "outputs": [ { - "name": "_initialAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, - { - "name": "_tokenName", - "type": "string" - }, - { - "name": "_decimalUnits", - "type": "uint8" - }, - { - "name": "_tokenSymbol", - "type": "string" } ], "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "stateMutability": "view", + "type": "function", + "signature": "0xfd2da339" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "multiplierPerBlock", + "outputs": [ { - "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8726bb89" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": true, - "name": "from", - "type": "address" + "internalType": "uint256", + "name": "cash", + "type": "uint256" }, { - "indexed": true, - "name": "to", - "type": "address" + "internalType": "uint256", + "name": "borrows", + "type": "uint256" }, { - "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "reserves", "type": "uint256" } ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "name": "utilizationRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function", + "signature": "0x6e71e2d8" } ] } \ No newline at end of file diff --git a/networks/kovan.json b/networks/kovan.json index e96a24792..a2992b7c8 100644 --- a/networks/kovan.json +++ b/networks/kovan.json @@ -1,93 +1,117 @@ { "Contracts": { - "ZRX": "0x7CfF490cfb21B130619055Ba62665ECCDCc12C17", - "cUSDC": "0xDff375162cfE7D77473C1BEC4560dEDE974E138c", - "PriceOracle": "0x5C46CBeEa623dAD6e08560ee487d5aC5afD57997", - "PriceOracleProxy": "0x0314440102f1b2be6b4Dd797371fc2E42d8F9c5f", - "Maximillion": "0x2B536482a01E620eE111747F8334B395a42A555E", - "cDAI": "0x0A1e4D0B5c71B955c0a5993023fc48bA6E380496", - "DAI": "0xbF7A7169562078c96f0eC1A8aFD6aE50f12e5A99", - "StdComptroller": "0x04396A3e673980dAfa3BCC1EfD3632f075E57447", - "Unitroller": "0x142D11CB90a2b40f7d0C55ed1804988DfC316fAe", - "Comptroller": "0x142D11CB90a2b40f7d0C55ed1804988DfC316fAe", - "cBAT": "0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd", - "Base0bps_Slope2000bps": "0xb081cf57B1e422B3E627544Ec95992CBe8Eaf9cb", - "BAT": "0xddea378A6dDC8AfeC82C36E9b0078826bf9e68B6", - "cETH": "0xD83F707f003A1f0B1535028AB356FCE2667ab855", - "Base500bps_Slope1200bps": "0x5dEA9621f23e79003eCC294b4cc1e4c9362dFECc", - "Base200bps_Slope3000bps": "0xe622DB19D5bf1F4e61Dd57FB11FE887100E5e59E", - "cREP": "0x8a9447df1FB47209D36204e6D56767a33bf20f9f", - "WBTC": "0x19787bcF63E228a6669d905E90aF397DCA313CFC", - "REP": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa", - "cZRX": "0x9636246bf34E688c6652Af544418B38eB51D2c43", - "cWBTC": "0x189CA88bE39C9c1B8c8dd437F5ff1DB1f584b14b", - "USDC": "0x6e894660985207feb7cf89Faf048998c71E8EE89" + "ZRX": "0x29eb28bAF3B296b9F14e5e858C52269b57b4dF6E", + "cUSDC": "0xcfC9bB230F00bFFDB560fCe2428b4E05F3442E35", + "PriceOracle": "0x7a1289ae33674031E0F29C558652e4396Ab76072", + "PriceOracleProxy": "0x6998ED7daf969Ea0950E01071aCeeEe54CCCbab5", + "Maximillion": "0x9A86176971440e442c1B2cE7859a77ED3efcd3f9", + "cDAI": "0xe7bc397DBd069fC7d0109C0636d06888bb50668c", + "DAI": "0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa", + "StdComptroller": "0x3Afec0b1Ec510E59A757133059039828640839c7", + "Unitroller": "0x1f5D7F3CaAC149fE41b8bd62A3673FE6eC0AB73b", + "Comptroller": "0x1f5D7F3CaAC149fE41b8bd62A3673FE6eC0AB73b", + "cBAT": "0xd5ff020f970462816fDD31a603Cb7D120E48376E", + "Base0bps_Slope2000bps": "0x0AfC973Ef2B0Ad9a380ef12080B5a4d334940867", + "BAT": "0x9dDB308C14f700d397bB26F584Ac2E303cdc7365", + "cErc20Delegate": "0x64DaE45c5bbDB89C6091b69ea82705CD16A85eA7", + "StdComptrollerG1": "0x551f0396f016F75d1bd8E125899581Ad30aA2f2B", + "cETH": "0xf92FbE0D3C0dcDAE407923b2Ac17eC223b1084E4", + "Base500bps_Slope1200bps": "0xbF4C2e71FaaaCD47D037C93789132D6B7AcB3a3E", + "cSAI": "0x63c344BF8651222346DD870be254D4347c9359f7", + "Base200bps_Slope3000bps": "0x4051dfb935EAfBEebfC5cEb4FA9EDeBd078D4535", + "cREP": "0xFd874BE7e6733bDc6Dca9c7CDd97c225ec235D39", + "WBTC": "0xA0A5aD2296b38Bd3e3Eb59AAEAF1589E8d9a29A9", + "SAI": "0xC4375B7De8af5a38a93548eb8453a498222C4fF2", + "REP": "0x4E5cB5A0CAca30d1ad27D8CD8200a907854FB518", + "cZRX": "0xC014DC10A57aC78350C5fddB26Bb66f1Cb0960a0", + "cWBTC": "0x3659728876EfB2780f498Ce829C5b076e496E0e3", + "USDC": "0x75B0622Cec14130172EaE9Cf166B92E5C112FaFF", + "Base200bps_Slope222bps_Kink90_Jump10": "0xE057EF4be5c6C712e13E24d4408f5F257fEd4d3f" }, "Blocks": { - "ZRX": 12162495, - "cUSDC": 12162506, - "PriceOracle": 12162487, - "PriceOracleProxy": 12162521, - "Maximillion": 12162508, - "cDAI": 12162503, - "DAI": 12162497, - "StdComptroller": 12162489, - "Unitroller": 12162488, - "cBAT": 12162502, - "Base0bps_Slope2000bps": 12162493, - "BAT": 12162496, - "cETH": 12162505, - "Base500bps_Slope1200bps": 12162492, - "Base200bps_Slope3000bps": 12162494, - "cREP": 12162504, - "WBTC": 12162500, - "REP": 12162498, - "cZRX": 12162501, - "cWBTC": 12162507, - "USDC": 12162499 + "ZRX": 14981231, + "cUSDC": 14981241, + "PriceOracle": 14981219, + "PriceOracleProxy": 14981272, + "Maximillion": 14981247, + "cDAI": 14981244, + "StdComptroller": 14981224, + "Unitroller": 14981220, + "cBAT": 14981237, + "Base0bps_Slope2000bps": 14981228, + "BAT": 14981232, + "cErc20Delegate": 14981243, + "StdComptrollerG1": 14981221, + "cETH": 14981240, + "Base500bps_Slope1200bps": 14981227, + "cSAI": 14981238, + "Base200bps_Slope3000bps": 14981229, + "cREP": 14981239, + "WBTC": 14981235, + "REP": 14981233, + "cZRX": 14981236, + "cWBTC": 14981242, + "USDC": 14981234, + "Base200bps_Slope222bps_Kink90_Jump10": 14981230 }, "PriceOracle": { "description": "Simple Price Oracle", - "address": "0x5C46CBeEa623dAD6e08560ee487d5aC5afD57997" + "address": "0x7a1289ae33674031E0F29C558652e4396Ab76072" + }, + "PriceOracleProxy": { + "description": "Price Oracle Proxy", + "cETH": "0xf92FbE0D3C0dcDAE407923b2Ac17eC223b1084E4", + "cUSDC": "0xcfC9bB230F00bFFDB560fCe2428b4E05F3442E35", + "cSAI": "0x63c344BF8651222346DD870be254D4347c9359f7", + "cDAI": "0xe7bc397DBd069fC7d0109C0636d06888bb50668c", + "address": "0x6998ED7daf969Ea0950E01071aCeeEe54CCCbab5" }, "Maximillion": { "description": "Maximillion", - "cEtherAddress": "0xD83F707f003A1f0B1535028AB356FCE2667ab855", - "address": "0x2B536482a01E620eE111747F8334B395a42A555E" + "cEtherAddress": "0xf92FbE0D3C0dcDAE407923b2Ac17eC223b1084E4", + "address": "0x9A86176971440e442c1B2cE7859a77ED3efcd3f9" }, "Unitroller": { "description": "Unitroller", - "address": "0x142D11CB90a2b40f7d0C55ed1804988DfC316fAe" + "address": "0x1f5D7F3CaAC149fE41b8bd62A3673FE6eC0AB73b" }, "Comptroller": { + "StdComptrollerG1": { + "address": "0x551f0396f016F75d1bd8E125899581Ad30aA2f2B", + "contract": "ComptrollerG1", + "description": "StandardG1 Comptroller Impl" + }, "StdComptroller": { - "address": "0x04396A3e673980dAfa3BCC1EfD3632f075E57447", + "address": "0x3Afec0b1Ec510E59A757133059039828640839c7", "contract": "Comptroller", "description": "Standard Comptroller Impl" } }, "Constructors": { "ZRX": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002307800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035a52580000000000000000000000000000000000000000000000000000000000", - "cUSDC": "0x0000000000000000000000006e894660985207feb7cf89faf048998c71e8ee89000000000000000000000000142d11cb90a2b40f7d0c55ed1804988dfc316fae000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb0000000000000000000000000000000000000000000000000000b5e620f4800000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016436f6d706f756e642055534420436f696e20f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000056355534443000000000000000000000000000000000000000000000000000000", + "cUSDC": "0x00000000000000000000000075b0622cec14130172eae9cf166b92e5c112faff0000000000000000000000001f5d7f3caac149fe41b8bd62a3673fe6ec0ab73b0000000000000000000000000afc973ef2b0ad9a380ef12080b5a4d3349408670000000000000000000000000000000000000000000000000000b5e620f48000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a776184fd6f545dae5f51361dbcc9018549a97490000000000000000000000000000000000000000000000000000000000000016436f6d706f756e642055534420436f696e20f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000056355534443000000000000000000000000000000000000000000000000000000", "PriceOracle": "0x", - "PriceOracleProxy": "0x000000000000000000000000142d11cb90a2b40f7d0c55ed1804988dfc316fae0000000000000000000000005c46cbeea623dad6e08560ee487d5ac5afd57997000000000000000000000000d83f707f003a1f0b1535028ab356fce2667ab855", - "Maximillion": "0x000000000000000000000000d83f707f003a1f0b1535028ab356fce2667ab855", - "cDAI": "0x000000000000000000000000bf7a7169562078c96f0ec1a8afd6ae50f12e5a99000000000000000000000000142d11cb90a2b40f7d0c55ed1804988dfc316fae0000000000000000000000005dea9621f23e79003ecc294b4cc1e4c9362dfecc000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000011436f6d706f756e642044616920f09f938800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046344414900000000000000000000000000000000000000000000000000000000", - "DAI": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003446169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034441490000000000000000000000000000000000000000000000000000000000", + "PriceOracleProxy": "0x0000000000000000000000001f5d7f3caac149fe41b8bd62a3673fe6ec0ab73b0000000000000000000000007a1289ae33674031e0f29c558652e4396ab76072000000000000000000000000f92fbe0d3c0dcdae407923b2ac17ec223b1084e4000000000000000000000000cfc9bb230f00bffdb560fce2428b4e05f3442e3500000000000000000000000063c344bf8651222346dd870be254d4347c9359f7000000000000000000000000e7bc397dbd069fc7d0109c0636d06888bb50668c", + "Maximillion": "0x000000000000000000000000f92fbe0d3c0dcdae407923b2ac17ec223b1084e4", + "cDAI": "0x0000000000000000000000004f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa0000000000000000000000001f5d7f3caac149fe41b8bd62a3673fe6ec0ab73b000000000000000000000000e057ef4be5c6c712e13e24d4408f5f257fed4d3f000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a776184fd6f545dae5f51361dbcc9018549a974900000000000000000000000064dae45c5bbdb89c6091b69ea82705cd16a85ea700000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000021436f6d706f756e64204d756c7469436f6c6c61746572616c2044414920f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004634441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", "StdComptroller": "0x", "Unitroller": "0x", - "cBAT": "0x000000000000000000000000ddea378a6ddc8afec82c36e9b0078826bf9e68b6000000000000000000000000142d11cb90a2b40f7d0c55ed1804988dfc316fae000000000000000000000000e622db19d5bf1f4e61dd57fb11fe887100e5e59e000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000023436f6d706f756e6420426173696320417474656e74696f6e20546f6b656e20f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046342415400000000000000000000000000000000000000000000000000000000", + "cBAT": "0x0000000000000000000000009ddb308c14f700d397bb26f584ac2e303cdc73650000000000000000000000001f5d7f3caac149fe41b8bd62a3673fe6ec0ab73b0000000000000000000000004051dfb935eafbeebfc5ceb4fa9edebd078d4535000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a776184fd6f545dae5f51361dbcc9018549a97490000000000000000000000000000000000000000000000000000000000000023436f6d706f756e6420426173696320417474656e74696f6e20546f6b656e20f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046342415400000000000000000000000000000000000000000000000000000000", "Base0bps_Slope2000bps": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb140000", "BAT": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000015426173696320417474656e74696f6e20546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000034241540000000000000000000000000000000000000000000000000000000000", - "cETH": "0x000000000000000000000000142d11cb90a2b40f7d0c55ed1804988dfc316fae000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420457468657220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046345544800000000000000000000000000000000000000000000000000000000", + "cErc20Delegate": "0x", + "StdComptrollerG1": "0x", + "cETH": "0x0000000000000000000000001f5d7f3caac149fe41b8bd62a3673fe6ec0ab73b0000000000000000000000000afc973ef2b0ad9a380ef12080b5a4d334940867000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a776184fd6f545dae5f51361dbcc9018549a97490000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420457468657220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046345544800000000000000000000000000000000000000000000000000000000", "Base500bps_Slope1200bps": "0x00000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000000001aa535d3d0c0000", + "cSAI": "0x000000000000000000000000c4375b7de8af5a38a93548eb8453a498222c4ff20000000000000000000000001f5d7f3caac149fe41b8bd62a3673fe6ec0ab73b000000000000000000000000bf4c2e71faaacd47d037c93789132d6b7acb3a3e000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a776184fd6f545dae5f51361dbcc9018549a97490000000000000000000000000000000000000000000000000000000000000011436f6d706f756e642053414920f09f938800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046353414900000000000000000000000000000000000000000000000000000000", "Base200bps_Slope3000bps": "0x00000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000429d069189e0000", - "cREP": "0x0000000000000000000000005592ec0cfb4dbc12d3ab100b257153436a1f0fea000000000000000000000000142d11cb90a2b40f7d0c55ed1804988dfc316fae000000000000000000000000e622db19d5bf1f4e61dd57fb11fe887100e5e59e000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420417567757220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000", + "cREP": "0x0000000000000000000000004e5cb5a0caca30d1ad27d8cd8200a907854fb5180000000000000000000000001f5d7f3caac149fe41b8bd62a3673fe6ec0ab73b0000000000000000000000004051dfb935eafbeebfc5ceb4fa9edebd078d4535000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a776184fd6f545dae5f51361dbcc9018549a97490000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420417567757220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000", "WBTC": "0x", "REP": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000005417567757200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035245500000000000000000000000000000000000000000000000000000000000", - "cZRX": "0x0000000000000000000000007cff490cfb21b130619055ba62665eccdcc12c17000000000000000000000000142d11cb90a2b40f7d0c55ed1804988dfc316fae000000000000000000000000e622db19d5bf1f4e61dd57fb11fe887100e5e59e000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010436f6d706f756e6420307820f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004635a525800000000000000000000000000000000000000000000000000000000", - "cWBTC": "0x00000000000000000000000019787bcf63e228a6669d905e90af397dca313cfc000000000000000000000000142d11cb90a2b40f7d0c55ed1804988dfc316fae000000000000000000000000e622db19d5bf1f4e61dd57fb11fe887100e5e59e00000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000019436f6d706f756e6420577261707065642042544320f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000", - "USDC": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000855534420436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000" + "cZRX": "0x00000000000000000000000029eb28baf3b296b9f14e5e858c52269b57b4df6e0000000000000000000000001f5d7f3caac149fe41b8bd62a3673fe6ec0ab73b0000000000000000000000004051dfb935eafbeebfc5ceb4fa9edebd078d4535000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a776184fd6f545dae5f51361dbcc9018549a97490000000000000000000000000000000000000000000000000000000000000010436f6d706f756e6420307820f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004635a525800000000000000000000000000000000000000000000000000000000", + "cWBTC": "0x000000000000000000000000a0a5ad2296b38bd3e3eb59aaeaf1589e8d9a29a90000000000000000000000001f5d7f3caac149fe41b8bd62a3673fe6ec0ab73b0000000000000000000000004051dfb935eafbeebfc5ceb4fa9edebd078d453500000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a776184fd6f545dae5f51361dbcc9018549a97490000000000000000000000000000000000000000000000000000000000000019436f6d706f756e6420577261707065642042544320f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000", + "USDC": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000855534420436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000", + "Base200bps_Slope222bps_Kink90_Jump10": "0x00000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000004ef2fe4dac8cc00000000000000000000000000000000000000000000000000c7d713b49da0000000000000000000000000000000000000000000000000000000000000000000a" }, "Tokens": { "ZRX": { @@ -96,42 +120,45 @@ "symbol": "ZRX", "decimals": 18, "contract": "FaucetToken", - "address": "0x7CfF490cfb21B130619055Ba62665ECCDCc12C17" + "address": "0x29eb28bAF3B296b9F14e5e858C52269b57b4dF6E" }, "cUSDC": { "name": "Compound USD Coin 📈", "symbol": "cUSDC", "decimals": 8, - "underlying": "0x6e894660985207feb7cf89Faf048998c71E8EE89", - "contract": "CErc20", + "underlying": "0x75B0622Cec14130172EaE9Cf166B92E5C112FaFF", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "200000000000000", - "address": "0xDff375162cfE7D77473C1BEC4560dEDE974E138c" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xcfC9bB230F00bFFDB560fCe2428b4E05F3442E35" }, "cDAI": { - "name": "Compound Dai 📈", + "name": "Compound MultiCollateral DAI 📈", "symbol": "cDAI", "decimals": 8, - "underlying": "0xbF7A7169562078c96f0eC1A8aFD6aE50f12e5A99", - "contract": "CErc20", + "underlying": "0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa", + "contract": "CErc20Delegator", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x0A1e4D0B5c71B955c0a5993023fc48bA6E380496" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xe7bc397DBd069fC7d0109C0636d06888bb50668c" }, "DAI": { - "description": "Standard", - "name": "Dai", - "symbol": "DAI", + "description": "Existing", "decimals": 18, - "contract": "FaucetToken", - "address": "0xbF7A7169562078c96f0eC1A8aFD6aE50f12e5A99" + "name": "DAI", + "symbol": "DAI", + "contract": "ExistingToken", + "address": "0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa" }, "cBAT": { "name": "Compound Basic Attention Token 📈", "symbol": "cBAT", "decimals": 8, - "underlying": "0xddea378A6dDC8AfeC82C36E9b0078826bf9e68B6", - "contract": "CErc20", + "underlying": "0x9dDB308C14f700d397bB26F584Ac2E303cdc7365", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xd5ff020f970462816fDD31a603Cb7D120E48376E" }, "BAT": { "description": "NonStandard", @@ -139,7 +166,7 @@ "symbol": "BAT", "decimals": 18, "contract": "FaucetNonStandardToken", - "address": "0xddea378A6dDC8AfeC82C36E9b0078826bf9e68B6" + "address": "0x9dDB308C14f700d397bB26F584Ac2E303cdc7365" }, "cETH": { "name": "Compound Ether 📈", @@ -148,16 +175,28 @@ "underlying": "", "contract": "CEther", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xD83F707f003A1f0B1535028AB356FCE2667ab855" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xf92FbE0D3C0dcDAE407923b2Ac17eC223b1084E4" + }, + "cSAI": { + "name": "Compound SAI 📈", + "symbol": "cSAI", + "decimals": 8, + "underlying": "0xC4375B7De8af5a38a93548eb8453a498222C4fF2", + "contract": "CErc20Immutable", + "initial_exchange_rate_mantissa": "200000000000000000000000000", + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0x63c344BF8651222346DD870be254D4347c9359f7" }, "cREP": { "name": "Compound Augur 📈", "symbol": "cREP", "decimals": 8, - "underlying": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa", - "contract": "CErc20", + "underlying": "0x4E5cB5A0CAca30d1ad27D8CD8200a907854FB518", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x8a9447df1FB47209D36204e6D56767a33bf20f9f" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xFd874BE7e6733bDc6Dca9c7CDd97c225ec235D39" }, "WBTC": { "description": "WBTC", @@ -165,7 +204,15 @@ "symbol": "WBTC", "decimals": 8, "contract": "WBTCToken", - "address": "0x19787bcF63E228a6669d905E90aF397DCA313CFC" + "address": "0xA0A5aD2296b38Bd3e3Eb59AAEAF1589E8d9a29A9" + }, + "SAI": { + "description": "Existing", + "decimals": 18, + "name": "SAI (Legacy Dai)", + "symbol": "SAI", + "contract": "ExistingToken", + "address": "0xC4375B7De8af5a38a93548eb8453a498222C4fF2" }, "REP": { "description": "Standard", @@ -173,25 +220,27 @@ "symbol": "REP", "decimals": 18, "contract": "FaucetToken", - "address": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa" + "address": "0x4E5cB5A0CAca30d1ad27D8CD8200a907854FB518" }, "cZRX": { "name": "Compound 0x 📈", "symbol": "cZRX", "decimals": 8, - "underlying": "0x7CfF490cfb21B130619055Ba62665ECCDCc12C17", - "contract": "CErc20", + "underlying": "0x29eb28bAF3B296b9F14e5e858C52269b57b4dF6E", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x9636246bf34E688c6652Af544418B38eB51D2c43" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xC014DC10A57aC78350C5fddB26Bb66f1Cb0960a0" }, "cWBTC": { "name": "Compound Wrapped BTC 📈", "symbol": "cWBTC", "decimals": 8, - "underlying": "0x19787bcF63E228a6669d905E90aF397DCA313CFC", + "underlying": "0xA0A5aD2296b38Bd3e3Eb59AAEAF1589E8d9a29A9", "contract": "CErc20", "initial_exchange_rate_mantissa": "20000000000000000", - "address": "0x189CA88bE39C9c1B8c8dd437F5ff1DB1f584b14b" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0x3659728876EfB2780f498Ce829C5b076e496E0e3" }, "USDC": { "description": "Standard", @@ -199,7 +248,14 @@ "symbol": "USDC", "decimals": 6, "contract": "FaucetToken", - "address": "0x6e894660985207feb7cf89Faf048998c71E8EE89" + "address": "0x75B0622Cec14130172EaE9Cf166B92E5C112FaFF" + } + }, + "CTokenDelegate": { + "cErc20Delegate": { + "address": "0x64DaE45c5bbDB89C6091b69ea82705CD16A85eA7", + "contract": "CErc20Delegate", + "description": "Standard CErc20 Delegate" } }, "cTokens": { @@ -207,37 +263,41 @@ "name": "Compound 0x 📈", "symbol": "cZRX", "decimals": 8, - "underlying": "0x7CfF490cfb21B130619055Ba62665ECCDCc12C17", - "contract": "CErc20", + "underlying": "0x29eb28bAF3B296b9F14e5e858C52269b57b4dF6E", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x9636246bf34E688c6652Af544418B38eB51D2c43" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xC014DC10A57aC78350C5fddB26Bb66f1Cb0960a0" }, "cBAT": { "name": "Compound Basic Attention Token 📈", "symbol": "cBAT", "decimals": 8, - "underlying": "0xddea378A6dDC8AfeC82C36E9b0078826bf9e68B6", - "contract": "CErc20", + "underlying": "0x9dDB308C14f700d397bB26F584Ac2E303cdc7365", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xd5ff020f970462816fDD31a603Cb7D120E48376E" }, - "cDAI": { - "name": "Compound Dai 📈", - "symbol": "cDAI", + "cSAI": { + "name": "Compound SAI 📈", + "symbol": "cSAI", "decimals": 8, - "underlying": "0xbF7A7169562078c96f0eC1A8aFD6aE50f12e5A99", - "contract": "CErc20", + "underlying": "0xC4375B7De8af5a38a93548eb8453a498222C4fF2", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x0A1e4D0B5c71B955c0a5993023fc48bA6E380496" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0x63c344BF8651222346DD870be254D4347c9359f7" }, "cREP": { "name": "Compound Augur 📈", "symbol": "cREP", "decimals": 8, - "underlying": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa", - "contract": "CErc20", + "underlying": "0x4E5cB5A0CAca30d1ad27D8CD8200a907854FB518", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x8a9447df1FB47209D36204e6D56767a33bf20f9f" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xFd874BE7e6733bDc6Dca9c7CDd97c225ec235D39" }, "cETH": { "name": "Compound Ether 📈", @@ -246,25 +306,38 @@ "underlying": "", "contract": "CEther", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xD83F707f003A1f0B1535028AB356FCE2667ab855" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xf92FbE0D3C0dcDAE407923b2Ac17eC223b1084E4" }, "cUSDC": { "name": "Compound USD Coin 📈", "symbol": "cUSDC", "decimals": 8, - "underlying": "0x6e894660985207feb7cf89Faf048998c71E8EE89", - "contract": "CErc20", + "underlying": "0x75B0622Cec14130172EaE9Cf166B92E5C112FaFF", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "200000000000000", - "address": "0xDff375162cfE7D77473C1BEC4560dEDE974E138c" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xcfC9bB230F00bFFDB560fCe2428b4E05F3442E35" }, "cWBTC": { "name": "Compound Wrapped BTC 📈", "symbol": "cWBTC", "decimals": 8, - "underlying": "0x19787bcF63E228a6669d905E90aF397DCA313CFC", - "contract": "CErc20", + "underlying": "0xA0A5aD2296b38Bd3e3Eb59AAEAF1589E8d9a29A9", + "contract": "CErc20Immutable", "initial_exchange_rate_mantissa": "20000000000000000", - "address": "0x189CA88bE39C9c1B8c8dd437F5ff1DB1f584b14b" + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0x3659728876EfB2780f498Ce829C5b076e496E0e3" + }, + "cDAI": { + "name": "Compound MultiCollateral DAI 📈", + "symbol": "cDAI", + "decimals": 8, + "underlying": "0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa", + "contract": "CErc20Delegator", + "initial_exchange_rate_mantissa": "200000000000000000000000000", + "admin": "0xa776184fd6f545dae5f51361dbcc9018549a9749", + "address": "0xe7bc397DBd069fC7d0109C0636d06888bb50668c" } }, "InterestRateModel": { @@ -274,7 +347,7 @@ "description": "WhitePaper baseRate=50000000000000000 multiplier=120000000000000000", "base": "50000000000000000", "slope": "120000000000000000", - "address": "0x5dEA9621f23e79003eCC294b4cc1e4c9362dFECc" + "address": "0xbF4C2e71FaaaCD47D037C93789132D6B7AcB3a3E" }, "Base0bps_Slope2000bps": { "name": "Base0bps_Slope2000bps", @@ -282,7 +355,7 @@ "description": "WhitePaper baseRate=0 multiplier=200000000000000000", "base": "0", "slope": "200000000000000000", - "address": "0xb081cf57B1e422B3E627544Ec95992CBe8Eaf9cb" + "address": "0x0AfC973Ef2B0Ad9a380ef12080B5a4d334940867" }, "Base200bps_Slope3000bps": { "name": "Base200bps_Slope3000bps", @@ -290,7 +363,17 @@ "description": "WhitePaper baseRate=20000000000000000 multiplier=300000000000000000", "base": "20000000000000000", "slope": "300000000000000000", - "address": "0xe622DB19D5bf1F4e61Dd57FB11FE887100E5e59E" + "address": "0x4051dfb935EAfBEebfC5cEb4FA9EDeBd078D4535" + }, + "Base200bps_Slope222bps_Kink90_Jump10": { + "name": "Base200bps_Slope222bps_Kink90_Jump10", + "contract": "JumpRateModel", + "description": "JumpRate model baseRate=20000000000000000 multiplier=22222222222200000 kink=900000000000000000 jump=10", + "base": "20000000000000000", + "slope": "22222222222200000", + "kink": "900000000000000000", + "jump": "10", + "address": "0xE057EF4be5c6C712e13E24d4408f5F257fEd4d3f" } } } \ No newline at end of file diff --git a/networks/mainnet-abi.json b/networks/mainnet-abi.json index a3637252b..d409b77f5 100644 --- a/networks/mainnet-abi.json +++ b/networks/mainnet-abi.json @@ -1937,12 +1937,51 @@ } ], "PriceOracleProxy": [ + { + "inputs": [ + { + "internalType": "address", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "address", + "name": "v1PriceOracle_", + "type": "address" + }, + { + "internalType": "address", + "name": "cEthAddress_", + "type": "address" + }, + { + "internalType": "address", + "name": "cUsdcAddress_", + "type": "address" + }, + { + "internalType": "address", + "name": "cSaiAddress_", + "type": "address" + }, + { + "internalType": "address", + "name": "cDaiAddress_", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, { "constant": true, "inputs": [], - "name": "cEthAddress", + "name": "cDaiAddress", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -1950,14 +1989,15 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x2ed58e15" + "signature": "0xf2c65bf9" }, { "constant": true, "inputs": [], - "name": "comptroller", + "name": "cEthAddress", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -1965,29 +2005,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5fe3b567" + "signature": "0x2ed58e15" }, { "constant": true, "inputs": [], - "name": "isPriceOracle", + "name": "cSaiAddress", "outputs": [ { + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x66331bba" + "signature": "0x21b49128" }, { "constant": true, "inputs": [], - "name": "makerUsdOracleKey", + "name": "cUsdcAddress", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -1995,14 +2037,15 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xbc8a4ef4" + "signature": "0xff11439b" }, { "constant": true, "inputs": [], - "name": "cDaiAddress", + "name": "comptroller", "outputs": [ { + "internalType": "contract Comptroller", "name": "", "type": "address" } @@ -2010,12 +2053,13 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf2c65bf9" + "signature": "0x5fe3b567" }, { "constant": true, "inputs": [ { + "internalType": "contract CToken", "name": "cToken", "type": "address" } @@ -2023,6 +2067,7 @@ "name": "getUnderlyingPrice", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2035,24 +2080,26 @@ { "constant": true, "inputs": [], - "name": "v1PriceOracle", + "name": "isPriceOracle", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe10c98d" + "signature": "0x66331bba" }, { "constant": true, "inputs": [], - "name": "cUsdcAddress", + "name": "makerUsdOracleKey", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -2060,35 +2107,23 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xff11439b" + "signature": "0xbc8a4ef4" }, { - "inputs": [ - { - "name": "comptroller_", - "type": "address" - }, - { - "name": "v1PriceOracle_", - "type": "address" - }, - { - "name": "cEthAddress_", - "type": "address" - }, - { - "name": "cUsdcAddress_", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "v1PriceOracle", + "outputs": [ { - "name": "cDaiAddress_", + "internalType": "contract V1PriceOracleInterface", + "name": "", "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "stateMutability": "view", + "type": "function", + "signature": "0xfe10c98d" } ], "Maximillion": [ @@ -2156,160 +2191,3371 @@ ], "cDAI": [ { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x06fdde03" - }, - { - "constant": false, "inputs": [ { - "name": "spender", + "internalType": "address", + "name": "underlying_", "type": "address" }, { - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x095ea7b3" - }, - { - "constant": false, - "inputs": [ + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, { - "name": "repayAmount", + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "name": "repayBorrow", - "outputs": [ + }, { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x0e752702" - }, - { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", - "outputs": [ + "internalType": "string", + "name": "name_", + "type": "string" + }, { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x173b9904" - }, - { - "constant": false, - "inputs": [ + "internalType": "string", + "name": "symbol_", + "type": "string" + }, { - "name": "account", + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "address payable", + "name": "admin_", "type": "address" - } - ], - "name": "borrowBalanceCurrent", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "implementation_", + "type": "address" + }, + { + "internalType": "bytes", + "name": "becomeImplementationData", + "type": "bytes" } ], "payable": false, "stateMutability": "nonpayable", - "type": "function", - "signature": "0x17bfdfbc" + "type": "constructor", + "signature": "constructor" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x182df0f5" + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "src", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "dst", + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { + "indexed": false, + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { - "constant": false, + "anonymous": false, "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "NewImplementation", + "type": "event", + "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" + } + ], + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" + } + ], + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe9c714f2" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + } + ], + "name": "_addReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3e941010" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + } + ], + "name": "_reduceReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x601a0bf1" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "_setComptroller", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4576b5db" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "implementation_", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowResign", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "becomeImplementationData", + "type": "bytes" + } + ], + "name": "_setImplementation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x555bcc40" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "_setInterestRateModel", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2b3abbd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb71d1a0c" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "_setReserveFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xfca7820b" + }, + { + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6c540baf" + }, + { + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa6afed95" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3af9e669" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xc5ebeaec" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x17bfdfbc" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95dd9193" + }, + { + "constant": true, + "inputs": [], + "name": "borrowIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xaa5af0fd" + }, + { + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf8f9da28" + }, + { + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5fe3b567" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "delegateToImplementation", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0933c1ed" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "delegateToViewImplementation", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x4487152f" + }, + { + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbd6d894d" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x182df0f5" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xc37f68e2" + }, + { + "constant": true, + "inputs": [], + "name": "getCash", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x3b1d21a2" + }, + { + "constant": true, + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5c60da1b" + }, + { + "constant": true, + "inputs": [], + "name": "interestRateModel", + "outputs": [ + { + "internalType": "contract InterestRateModel", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf3fdb15a" + }, + { + "constant": true, + "inputs": [], + "name": "isCToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xfe9c44ae" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf5e3c462" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa0712d68" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xdb006a75" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x852a12e3" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrowBehalf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb2a02ff1" + }, + { + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xae9d70b0" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" + }, + { + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f840ddd" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" + } + ], + "DAI": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + } + ], + "StdComptroller": [ + { + "constant": true, + "inputs": [], + "name": "isComptroller", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x007e3dd2" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "payer", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "repayAmount", + "type": "uint256" + }, + { + "name": "borrowerIndex", + "type": "uint256" + } + ], + "name": "repayBorrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1ededc91" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "payer", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrowAllowed", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x24008a62" + }, + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ + { + "name": "newCloseFactorMantissa", + "type": "uint256" + } + ], + "name": "_setCloseFactor", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x317b0b77" + }, + { + "constant": false, + "inputs": [ + { + "name": "unitroller", + "type": "address" + }, + { + "name": "_oracle", + "type": "address" + }, + { + "name": "_closeFactorMantissa", + "type": "uint256" + }, + { + "name": "_maxAssets", + "type": "uint256" + }, + { + "name": "reinitializing", + "type": "bool" + } + ], + "name": "_become", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x32000e00" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "minter", + "type": "address" + }, + { + "name": "mintAmount", + "type": "uint256" + }, + { + "name": "mintTokens", + "type": "uint256" + } + ], + "name": "mintVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x41c728b9" + }, + { + "constant": false, + "inputs": [ + { + "name": "cTokenBorrowed", + "type": "address" + }, + { + "name": "cTokenCollateral", + "type": "address" + }, + { + "name": "liquidator", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "repayAmount", + "type": "uint256" + }, + { + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "liquidateBorrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x47ef3b3b" + }, + { + "constant": true, + "inputs": [], + "name": "liquidationIncentiveMantissa", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x4ada90af" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "minter", + "type": "address" + }, + { + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mintAllowed", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4ef4c3e1" + }, + { + "constant": false, + "inputs": [ + { + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" + } + ], + "name": "_setLiquidationIncentive", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4fd42e17" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "redeemer", + "type": "address" + }, + { + "name": "redeemAmount", + "type": "uint256" + }, + { + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeemVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x51dff989" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOracle", + "type": "address" + } + ], + "name": "_setPriceOracle", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x55ee1fe1" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x5c778605" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "getAccountLiquidity", + "outputs": [ + { + "name": "", + "type": "uint256" + }, + { + "name": "", + "type": "uint256" + }, + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5ec88c79" + }, + { + "constant": false, + "inputs": [ + { + "name": "cTokenBorrowed", + "type": "address" + }, + { + "name": "cTokenCollateral", + "type": "address" + }, + { + "name": "liquidator", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "liquidateBorrowAllowed", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x5fc7e71e" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "src", + "type": "address" + }, + { + "name": "dst", + "type": "address" + }, + { + "name": "transferTokens", + "type": "uint256" + } + ], + "name": "transferVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x6a56947e" + }, + { + "constant": false, + "inputs": [ + { + "name": "cTokenCollateral", + "type": "address" + }, + { + "name": "cTokenBorrowed", + "type": "address" + }, + { + "name": "liquidator", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seizeVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x6d35bf91" + }, + { + "constant": true, + "inputs": [], + "name": "oracle", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x7dc0d1d0" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "markets", + "outputs": [ + { + "name": "isListed", + "type": "bool" + }, + { + "name": "collateralFactorMantissa", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8e8f294b" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + }, + { + "name": "cToken", + "type": "address" + } + ], + "name": "checkMembership", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x929fe9a1" + }, + { + "constant": true, + "inputs": [], + "name": "maxAssets", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x94b2294b" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + } + ], + "name": "_supportMarket", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa76b3fda" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "getAssetsIn", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xabfceffc" + }, + { + "constant": true, + "inputs": [], + "name": "comptrollerImplementation", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xbb82aa5e" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "src", + "type": "address" + }, + { + "name": "dst", + "type": "address" + }, + { + "name": "transferTokens", + "type": "uint256" + } + ], + "name": "transferAllowed", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbdcdc258" + }, + { + "constant": false, + "inputs": [ + { + "name": "cTokens", + "type": "address[]" + } + ], + "name": "enterMarkets", + "outputs": [ + { + "name": "", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xc2998238" + }, + { + "constant": true, + "inputs": [ + { + "name": "cTokenBorrowed", + "type": "address" + }, + { + "name": "cTokenCollateral", + "type": "address" + }, + { + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "liquidateCalculateSeizeTokens", + "outputs": [ + { + "name": "", + "type": "uint256" + }, + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xc488847b" + }, + { + "constant": false, + "inputs": [ + { + "name": "cTokenCollateral", + "type": "address" + }, + { + "name": "cTokenBorrowed", + "type": "address" + }, + { + "name": "liquidator", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "seizeTokens", + "type": "uint256" + } + ], + "name": "seizeAllowed", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd02f7351" + }, + { + "constant": false, + "inputs": [ + { + "name": "newMaxAssets", + "type": "uint256" + } + ], + "name": "_setMaxAssets", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd9226ced" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrowAllowed", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xda3d454c" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "uint256" + } + ], + "name": "accountAssets", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdce15449" + }, + { + "constant": true, + "inputs": [], + "name": "pendingComptrollerImplementation", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdcfbc0c7" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "newCollateralFactorMantissa", + "type": "uint256" + } + ], + "name": "_setCollateralFactor", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe4028eee" + }, + { + "constant": true, + "inputs": [], + "name": "closeFactorMantissa", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xe8755446" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "redeemer", + "type": "address" + }, + { + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeemAllowed", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xeabe7d91" + }, + { + "constant": false, + "inputs": [ + { + "name": "cTokenAddress", + "type": "address" + } + ], + "name": "exitMarket", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xede4edd0" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "cToken", + "type": "address" + } + ], + "name": "MarketListed", + "type": "event", + "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "cToken", + "type": "address" + }, + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "MarketEntered", + "type": "event", + "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "cToken", + "type": "address" + }, + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "MarketExited", + "type": "event", + "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldCloseFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "name": "newCloseFactorMantissa", + "type": "uint256" + } + ], + "name": "NewCloseFactor", + "type": "event", + "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "cToken", + "type": "address" + }, + { + "indexed": false, + "name": "oldCollateralFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "name": "newCollateralFactorMantissa", + "type": "uint256" + } + ], + "name": "NewCollateralFactor", + "type": "event", + "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldLiquidationIncentiveMantissa", + "type": "uint256" + }, + { + "indexed": false, + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" + } + ], + "name": "NewLiquidationIncentive", + "type": "event", + "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldMaxAssets", + "type": "uint256" + }, + { + "indexed": false, + "name": "newMaxAssets", + "type": "uint256" + } + ], + "name": "NewMaxAssets", + "type": "event", + "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldPriceOracle", + "type": "address" + }, + { + "indexed": false, + "name": "newPriceOracle", + "type": "address" + } + ], + "name": "NewPriceOracle", + "type": "event", + "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + } + ], + "Unitroller": [ + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ + { + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb71d1a0c" + }, + { + "constant": true, + "inputs": [], + "name": "comptrollerImplementation", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xbb82aa5e" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptImplementation", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xc1e80334" + }, + { + "constant": true, + "inputs": [], + "name": "pendingComptrollerImplementation", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdcfbc0c7" + }, + { + "constant": false, + "inputs": [ + { + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "_setPendingImplementation", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe992a041" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe9c714f2" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldPendingImplementation", + "type": "address" + }, + { + "indexed": false, + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "NewPendingImplementation", + "type": "event", + "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": false, + "name": "newImplementation", + "type": "address" + } + ], + "name": "NewImplementation", + "type": "event", + "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "name": "newAdmin", + "type": "address" + } + ], + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + } + ], + "Comptroller": [ + { + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ + { + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb71d1a0c" + }, + { + "constant": true, + "inputs": [], + "name": "comptrollerImplementation", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xbb82aa5e" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptImplementation", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xc1e80334" + }, + { + "constant": true, + "inputs": [], + "name": "pendingComptrollerImplementation", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdcfbc0c7" + }, + { + "constant": false, + "inputs": [ + { + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "_setPendingImplementation", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe992a041" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe9c714f2" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldPendingImplementation", + "type": "address" + }, + { + "indexed": false, + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "NewPendingImplementation", + "type": "event", + "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": false, + "name": "newImplementation", + "type": "address" + } + ], + "name": "NewImplementation", + "type": "event", + "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "name": "newAdmin", + "type": "address" + } + ], + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "error", + "type": "uint256" + }, + { + "indexed": false, + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "name": "detail", + "type": "uint256" + } + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + }, + { + "constant": true, + "inputs": [], + "name": "isComptroller", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x007e3dd2" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "payer", + "type": "address" + }, { "name": "borrower", "type": "address" @@ -2317,9 +5563,40 @@ { "name": "repayAmount", "type": "uint256" + }, + { + "name": "borrowerIndex", + "type": "uint256" } ], - "name": "repayBorrowBehalf", + "name": "repayBorrowVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1ededc91" + }, + { + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "payer", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrowAllowed", "outputs": [ { "name": "", @@ -2329,7 +5606,7 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x2608f818" + "signature": "0x24008a62" }, { "constant": true, @@ -2337,54 +5614,132 @@ "name": "pendingAdmin", "outputs": [ { - "name": "", - "type": "address" + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": false, + "inputs": [ + { + "name": "newCloseFactorMantissa", + "type": "uint256" + } + ], + "name": "_setCloseFactor", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x317b0b77" + }, + { + "constant": false, + "inputs": [ + { + "name": "unitroller", + "type": "address" + }, + { + "name": "_oracle", + "type": "address" + }, + { + "name": "_closeFactorMantissa", + "type": "uint256" + }, + { + "name": "_maxAssets", + "type": "uint256" + }, + { + "name": "reinitializing", + "type": "bool" } ], + "name": "_become", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x26782247" + "signature": "0x32000e00" }, { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "name": "cToken", + "type": "address" + }, + { + "name": "minter", + "type": "address" + }, + { + "name": "mintAmount", + "type": "uint256" + }, + { + "name": "mintTokens", "type": "uint256" } ], + "name": "mintVerify", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x313ce567" + "signature": "0x41c728b9" }, { "constant": false, "inputs": [ { - "name": "owner", + "name": "cTokenBorrowed", "type": "address" - } - ], - "name": "balanceOfUnderlying", - "outputs": [ + }, { - "name": "", + "name": "cTokenCollateral", + "type": "address" + }, + { + "name": "liquidator", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "repayAmount", + "type": "uint256" + }, + { + "name": "seizeTokens", "type": "uint256" } ], + "name": "liquidateBorrowVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x3af9e669" + "signature": "0x47ef3b3b" }, { "constant": true, "inputs": [], - "name": "getCash", + "name": "liquidationIncentiveMantissa", "outputs": [ { "name": "", @@ -2394,17 +5749,25 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x4ada90af" }, { "constant": false, "inputs": [ { - "name": "newComptroller", + "name": "cToken", + "type": "address" + }, + { + "name": "minter", "type": "address" + }, + { + "name": "mintAmount", + "type": "uint256" } ], - "name": "_setComptroller", + "name": "mintAllowed", "outputs": [ { "name": "", @@ -2414,77 +5777,64 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4576b5db" + "signature": "0x4ef4c3e1" }, { - "constant": true, - "inputs": [], - "name": "totalBorrows", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "name": "newLiquidationIncentiveMantissa", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x47bd3718" - }, - { - "constant": true, - "inputs": [], - "name": "comptroller", + "name": "_setLiquidationIncentive", "outputs": [ { "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5fe3b567" + "signature": "0x4fd42e17" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", + "name": "cToken", + "type": "address" + }, + { + "name": "redeemer", + "type": "address" + }, + { + "name": "redeemAmount", "type": "uint256" - } - ], - "name": "_reduceReserves", - "outputs": [ + }, { - "name": "", + "name": "redeemTokens", "type": "uint256" } ], + "name": "redeemVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0x51dff989" }, { - "constant": true, - "inputs": [], - "name": "initialExchangeRateMantissa", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", - "type": "uint256" + "name": "newOracle", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x675d972c" - }, - { - "constant": true, - "inputs": [], - "name": "accrualBlockNumber", + "name": "_setPriceOracle", "outputs": [ { "name": "", @@ -2492,35 +5842,51 @@ } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x6c540baf" + "signature": "0x55ee1fe1" }, { - "constant": true, - "inputs": [], - "name": "underlying", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "name": "cToken", "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "borrowAmount", + "type": "uint256" } ], + "name": "borrowVerify", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x6f307dc3" + "signature": "0x5c778605" }, { "constant": true, "inputs": [ { - "name": "owner", + "name": "account", "type": "address" } ], - "name": "balanceOf", + "name": "getAccountLiquidity", "outputs": [ + { + "name": "", + "type": "uint256" + }, + { + "name": "", + "type": "uint256" + }, { "name": "", "type": "uint256" @@ -2529,12 +5895,33 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0x5ec88c79" }, { "constant": false, - "inputs": [], - "name": "totalBorrowsCurrent", + "inputs": [ + { + "name": "cTokenBorrowed", + "type": "address" + }, + { + "name": "cTokenCollateral", + "type": "address" + }, + { + "name": "liquidator", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "liquidateBorrowAllowed", "outputs": [ { "name": "", @@ -2544,102 +5931,133 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x73acee98" + "signature": "0x5fc7e71e" }, { "constant": false, "inputs": [ { - "name": "redeemAmount", - "type": "uint256" - } - ], - "name": "redeemUnderlying", - "outputs": [ + "name": "cToken", + "type": "address" + }, { - "name": "", + "name": "src", + "type": "address" + }, + { + "name": "dst", + "type": "address" + }, + { + "name": "transferTokens", "type": "uint256" } ], + "name": "transferVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x852a12e3" + "signature": "0x6a56947e" }, { - "constant": true, - "inputs": [], - "name": "totalReserves", - "outputs": [ + "constant": false, + "inputs": [ + { + "name": "cTokenCollateral", + "type": "address" + }, + { + "name": "cTokenBorrowed", + "type": "address" + }, + { + "name": "liquidator", + "type": "address" + }, { - "name": "", + "name": "borrower", + "type": "address" + }, + { + "name": "seizeTokens", "type": "uint256" } ], + "name": "seizeVerify", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x8f840ddd" + "signature": "0x6d35bf91" }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "oracle", "outputs": [ { "name": "", - "type": "string" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0x7dc0d1d0" }, { "constant": true, "inputs": [ { - "name": "account", + "name": "", "type": "address" } ], - "name": "borrowBalanceStored", + "name": "markets", "outputs": [ { - "name": "", + "name": "isListed", + "type": "bool" + }, + { + "name": "collateralFactorMantissa", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95dd9193" + "signature": "0x8e8f294b" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "mintAmount", - "type": "uint256" + "name": "account", + "type": "address" + }, + { + "name": "cToken", + "type": "address" } ], - "name": "mint", + "name": "checkMembership", "outputs": [ { "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa0712d68" + "signature": "0x929fe9a1" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "accrueInterest", + "name": "maxAssets", "outputs": [ { "name": "", @@ -2647,81 +6065,86 @@ } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa6afed95" + "signature": "0x94b2294b" }, { "constant": false, "inputs": [ { - "name": "dst", + "name": "cToken", "type": "address" - }, - { - "name": "amount", - "type": "uint256" } ], - "name": "transfer", + "name": "_supportMarket", "outputs": [ { "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0xa76b3fda" }, { "constant": true, - "inputs": [], - "name": "borrowIndex", + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "getAssetsIn", "outputs": [ { "name": "", - "type": "uint256" + "type": "address[]" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0xabfceffc" }, { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "comptrollerImplementation", "outputs": [ { "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0xbb82aa5e" }, { "constant": false, "inputs": [ { - "name": "liquidator", + "name": "cToken", "type": "address" }, { - "name": "borrower", + "name": "src", "type": "address" }, { - "name": "seizeTokens", + "name": "dst", + "type": "address" + }, + { + "name": "transferTokens", "type": "uint256" } ], - "name": "seize", + "name": "transferAllowed", "outputs": [ { "name": "", @@ -2731,61 +6154,46 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0xbdcdc258" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "_setPendingAdmin", - "outputs": [ - { - "name": "", - "type": "uint256" + "name": "cTokens", + "type": "address[]" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xb71d1a0c" - }, - { - "constant": false, - "inputs": [], - "name": "exchangeRateCurrent", + "name": "enterMarkets", "outputs": [ { "name": "", - "type": "uint256" + "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbd6d894d" + "signature": "0xc2998238" }, { "constant": true, "inputs": [ { - "name": "account", + "name": "cTokenBorrowed", "type": "address" - } - ], - "name": "getAccountSnapshot", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "name": "cTokenCollateral", + "type": "address" }, { - "name": "", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "liquidateCalculateSeizeTokens", + "outputs": [ { "name": "", "type": "uint256" @@ -2798,17 +6206,33 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xc37f68e2" + "signature": "0xc488847b" }, { "constant": false, "inputs": [ { - "name": "borrowAmount", + "name": "cTokenCollateral", + "type": "address" + }, + { + "name": "cTokenBorrowed", + "type": "address" + }, + { + "name": "liquidator", + "type": "address" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "seizeTokens", "type": "uint256" } ], - "name": "borrow", + "name": "seizeAllowed", "outputs": [ { "name": "", @@ -2818,17 +6242,17 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0xd02f7351" }, { "constant": false, "inputs": [ { - "name": "redeemTokens", + "name": "newMaxAssets", "type": "uint256" } ], - "name": "redeem", + "name": "_setMaxAssets", "outputs": [ { "name": "", @@ -2838,36 +6262,25 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xdb006a75" + "signature": "0xd9226ced" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "owner", + "name": "cToken", "type": "address" }, { - "name": "spender", + "name": "borrower", "type": "address" - } - ], - "name": "allowance", - "outputs": [ + }, { - "name": "", + "name": "borrowAmount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdd62ed3e" - }, - { - "constant": false, - "inputs": [], - "name": "_acceptAdmin", + "name": "borrowAllowed", "outputs": [ { "name": "", @@ -2877,32 +6290,36 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe9c714f2" + "signature": "0xda3d454c" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "newInterestRateModel", + "name": "", "type": "address" + }, + { + "name": "", + "type": "uint256" } ], - "name": "_setInterestRateModel", + "name": "accountAssets", "outputs": [ { "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0xdce15449" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "pendingComptrollerImplementation", "outputs": [ { "name": "", @@ -2912,25 +6329,21 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0xdcfbc0c7" }, { "constant": false, "inputs": [ { - "name": "borrower", + "name": "cToken", "type": "address" }, { - "name": "repayAmount", + "name": "newCollateralFactorMantissa", "type": "uint256" - }, - { - "name": "cTokenCollateral", - "type": "address" } ], - "name": "liquidateBorrow", + "name": "_setCollateralFactor", "outputs": [ { "name": "", @@ -2940,27 +6353,40 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf5e3c462" + "signature": "0xe4028eee" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "closeFactorMantissa", "outputs": [ { "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0xe8755446" }, { - "constant": true, - "inputs": [], - "name": "borrowRatePerBlock", + "constant": false, + "inputs": [ + { + "name": "cToken", + "type": "address" + }, + { + "name": "redeemer", + "type": "address" + }, + { + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeemAllowed", "outputs": [ { "name": "", @@ -2968,19 +6394,19 @@ } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xf8f9da28" + "signature": "0xeabe7d91" }, { "constant": false, "inputs": [ { - "name": "newReserveFactorMantissa", - "type": "uint256" + "name": "cTokenAddress", + "type": "address" } ], - "name": "_setReserveFactor", + "name": "exitMarket", "outputs": [ { "name": "", @@ -2990,473 +6416,529 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xfca7820b" + "signature": "0xede4edd0" }, { "constant": true, "inputs": [], - "name": "isCToken", + "name": "admin", "outputs": [ { "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe9c44ae" + "signature": "0xf851a440" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { + "anonymous": false, "inputs": [ { - "name": "underlying_", + "indexed": false, + "name": "cToken", "type": "address" - }, + } + ], + "name": "MarketListed", + "type": "event", + "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" + }, + { + "anonymous": false, + "inputs": [ { - "name": "comptroller_", + "indexed": false, + "name": "cToken", "type": "address" }, { - "name": "interestRateModel_", + "indexed": false, + "name": "account", "type": "address" - }, - { - "name": "initialExchangeRateMantissa_", - "type": "uint256" - }, - { - "name": "name_", - "type": "string" - }, - { - "name": "symbol_", - "type": "string" - }, - { - "name": "decimals_", - "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "name": "MarketEntered", + "type": "event", + "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "interestAccumulated", - "type": "uint256" + "name": "cToken", + "type": "address" }, { "indexed": false, - "name": "borrowIndex", + "name": "account", + "type": "address" + } + ], + "name": "MarketExited", + "type": "event", + "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldCloseFactorMantissa", "type": "uint256" }, { "indexed": false, - "name": "totalBorrows", + "name": "newCloseFactorMantissa", "type": "uint256" } ], - "name": "AccrueInterest", + "name": "NewCloseFactor", "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" + "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "minter", + "name": "cToken", "type": "address" }, { "indexed": false, - "name": "mintAmount", + "name": "oldCollateralFactorMantissa", "type": "uint256" }, { "indexed": false, - "name": "mintTokens", + "name": "newCollateralFactorMantissa", "type": "uint256" } ], - "name": "Mint", + "name": "NewCollateralFactor", "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "redeemer", - "type": "address" + "name": "oldLiquidationIncentiveMantissa", + "type": "uint256" }, { "indexed": false, - "name": "redeemAmount", + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" + } + ], + "name": "NewLiquidationIncentive", + "type": "event", + "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "oldMaxAssets", "type": "uint256" }, { "indexed": false, - "name": "redeemTokens", + "name": "newMaxAssets", "type": "uint256" } ], - "name": "Redeem", + "name": "NewMaxAssets", "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "borrower", + "name": "oldPriceOracle", "type": "address" }, { "indexed": false, - "name": "borrowAmount", + "name": "newPriceOracle", + "type": "address" + } + ], + "name": "NewPriceOracle", + "type": "event", + "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "error", "type": "uint256" }, { "indexed": false, - "name": "accountBorrows", + "name": "info", "type": "uint256" }, { "indexed": false, - "name": "totalBorrows", + "name": "detail", "type": "uint256" } ], - "name": "Borrow", + "name": "Failure", "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + } + ], + "cBAT": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "payer", + "name": "spender", "type": "address" }, { - "indexed": false, - "name": "borrower", - "type": "address" - }, + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": false, + "inputs": [ { - "indexed": false, "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrow", + "outputs": [ { - "indexed": false, - "name": "accountBorrows", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x17bfdfbc" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", + "name": "", "type": "uint256" } ], - "name": "RepayBorrow", - "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x182df0f5" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "liquidator", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", + "name": "src", "type": "address" }, { - "indexed": false, - "name": "repayAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "cTokenCollateral", + "name": "dst", "type": "address" }, { - "indexed": false, - "name": "seizeTokens", + "name": "amount", "type": "uint256" } ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" - }, + "name": "transferFrom", + "outputs": [ { - "indexed": false, - "name": "newPendingAdmin", - "type": "address" + "name": "", + "type": "bool" } ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldAdmin", + "name": "borrower", "type": "address" }, { - "indexed": false, - "name": "newAdmin", - "type": "address" + "name": "repayAmount", + "type": "uint256" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldComptroller", - "type": "address" - }, + "name": "repayBorrowBehalf", + "outputs": [ { - "indexed": false, - "name": "newComptroller", - "type": "address" + "name": "", + "type": "uint256" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldInterestRateModel", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ { - "indexed": false, - "name": "newInterestRateModel", + "name": "", "type": "address" } ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldReserveFactorMantissa", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ { - "indexed": false, - "name": "newReserveFactorMantissa", + "name": "", "type": "uint256" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "admin", + "name": "owner", "type": "address" - }, - { - "indexed": false, - "name": "reduceAmount", - "type": "uint256" - }, + } + ], + "name": "balanceOfUnderlying", + "outputs": [ { - "indexed": false, - "name": "newTotalReserves", + "name": "", "type": "uint256" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3af9e669" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "error", - "type": "uint256" - }, - { - "indexed": false, - "name": "info", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "getCash", + "outputs": [ { - "indexed": false, - "name": "detail", + "name": "", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x3b1d21a2" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", + "name": "newComptroller", "type": "address" - }, + } + ], + "name": "_setComptroller", + "outputs": [ { - "indexed": false, - "name": "amount", + "name": "", "type": "uint256" } ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x4576b5db" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ { - "indexed": false, - "name": "amount", + "name": "", "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "StdComptroller": [ + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" + }, { "constant": true, "inputs": [], - "name": "isComptroller", + "name": "comptroller", "outputs": [ { "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x007e3dd2" + "signature": "0x5fe3b567" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "payer", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", + "name": "reduceAmount", "type": "uint256" - }, + } + ], + "name": "_reduceReserves", + "outputs": [ { - "name": "borrowerIndex", + "name": "", "type": "uint256" } ], - "name": "repayBorrowVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x1ededc91" + "signature": "0x601a0bf1" }, { - "constant": false, - "inputs": [ - { - "name": "cToken", - "type": "address" - }, - { - "name": "payer", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "initialExchangeRateMantissa", + "outputs": [ { - "name": "repayAmount", + "name": "", "type": "uint256" } ], - "name": "repayBorrowAllowed", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x675d972c" + }, + { + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", "outputs": [ { "name": "", @@ -3464,14 +6946,14 @@ } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x24008a62" + "signature": "0x6c540baf" }, { "constant": true, "inputs": [], - "name": "pendingAdmin", + "name": "underlying", "outputs": [ { "name": "", @@ -3481,17 +6963,17 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x26782247" + "signature": "0x6f307dc3" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "newCloseFactorMantissa", - "type": "uint256" + "name": "owner", + "type": "address" } ], - "name": "_setCloseFactor", + "name": "balanceOf", "outputs": [ { "name": "", @@ -3499,135 +6981,84 @@ } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x317b0b77" + "signature": "0x70a08231" }, { "constant": false, - "inputs": [ - { - "name": "unitroller", - "type": "address" - }, - { - "name": "_oracle", - "type": "address" - }, - { - "name": "_closeFactorMantissa", - "type": "uint256" - }, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ { - "name": "_maxAssets", + "name": "", "type": "uint256" - }, - { - "name": "reinitializing", - "type": "bool" } ], - "name": "_become", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x32000e00" + "signature": "0x73acee98" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "minter", - "type": "address" - }, - { - "name": "mintAmount", + "name": "redeemAmount", "type": "uint256" - }, + } + ], + "name": "redeemUnderlying", + "outputs": [ { - "name": "mintTokens", + "name": "", "type": "uint256" } ], - "name": "mintVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x41c728b9" + "signature": "0x852a12e3" }, { - "constant": false, - "inputs": [ - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ { - "name": "seizeTokens", + "name": "", "type": "uint256" } ], - "name": "liquidateBorrowVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x47ef3b3b" + "signature": "0x8f840ddd" }, { "constant": true, "inputs": [], - "name": "liquidationIncentiveMantissa", + "name": "symbol", "outputs": [ { "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x4ada90af" + "signature": "0x95d89b41" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "minter", + "name": "account", "type": "address" - }, - { - "name": "mintAmount", - "type": "uint256" } ], - "name": "mintAllowed", + "name": "borrowBalanceStored", "outputs": [ { "name": "", @@ -3635,19 +7066,19 @@ } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x4ef4c3e1" + "signature": "0x95dd9193" }, { "constant": false, "inputs": [ { - "name": "newLiquidationIncentiveMantissa", + "name": "mintAmount", "type": "uint256" } ], - "name": "_setLiquidationIncentive", + "name": "mint", "outputs": [ { "name": "", @@ -3657,96 +7088,67 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4fd42e17" + "signature": "0xa0712d68" }, { "constant": false, - "inputs": [ - { - "name": "cToken", - "type": "address" - }, - { - "name": "redeemer", - "type": "address" - }, - { - "name": "redeemAmount", - "type": "uint256" - }, + "inputs": [], + "name": "accrueInterest", + "outputs": [ { - "name": "redeemTokens", + "name": "", "type": "uint256" } ], - "name": "redeemVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x51dff989" + "signature": "0xa6afed95" }, { "constant": false, "inputs": [ { - "name": "newOracle", + "name": "dst", "type": "address" + }, + { + "name": "amount", + "type": "uint256" } ], - "name": "_setPriceOracle", + "name": "transfer", "outputs": [ { "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x55ee1fe1" + "signature": "0xa9059cbb" }, { - "constant": false, - "inputs": [ - { - "name": "cToken", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "borrowIndex", + "outputs": [ { - "name": "borrowAmount", + "name": "", "type": "uint256" } ], - "name": "borrowVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x5c778605" + "signature": "0xaa5af0fd" }, - { - "constant": true, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "getAccountLiquidity", + { + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", "outputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, { "name": "", "type": "uint256" @@ -3755,19 +7157,11 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5ec88c79" + "signature": "0xae9d70b0" }, { "constant": false, "inputs": [ - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, { "name": "liquidator", "type": "address" @@ -3777,11 +7171,11 @@ "type": "address" }, { - "name": "repayAmount", + "name": "seizeTokens", "type": "uint256" } ], - "name": "liquidateBorrowAllowed", + "name": "seize", "outputs": [ { "name": "", @@ -3791,133 +7185,84 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x5fc7e71e" + "signature": "0xb2a02ff1" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "name": "newPendingAdmin", "type": "address" - }, - { - "name": "transferTokens", - "type": "uint256" } ], - "name": "transferVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x6a56947e" - }, - { - "constant": false, - "inputs": [ - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, + "name": "_setPendingAdmin", + "outputs": [ { - "name": "seizeTokens", + "name": "", "type": "uint256" } ], - "name": "seizeVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x6d35bf91" + "signature": "0xb71d1a0c" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "oracle", + "name": "exchangeRateCurrent", "outputs": [ { "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x7dc0d1d0" + "signature": "0xbd6d894d" }, { "constant": true, "inputs": [ { - "name": "", + "name": "account", "type": "address" } ], - "name": "markets", + "name": "getAccountSnapshot", "outputs": [ { - "name": "isListed", - "type": "bool" + "name": "", + "type": "uint256" }, { - "name": "collateralFactorMantissa", + "name": "", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x8e8f294b" - }, - { - "constant": true, - "inputs": [ - { - "name": "account", - "type": "address" }, { - "name": "cToken", - "type": "address" - } - ], - "name": "checkMembership", - "outputs": [ + "name": "", + "type": "uint256" + }, { "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x929fe9a1" + "signature": "0xc37f68e2" }, { - "constant": true, - "inputs": [], - "name": "maxAssets", + "constant": false, + "inputs": [ + { + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", "outputs": [ { "name": "", @@ -3925,19 +7270,19 @@ } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x94b2294b" + "signature": "0xc5ebeaec" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" + "name": "redeemTokens", + "type": "uint256" } ], - "name": "_supportMarket", + "name": "redeem", "outputs": [ { "name": "", @@ -3947,64 +7292,56 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa76b3fda" + "signature": "0xdb006a75" }, { "constant": true, "inputs": [ { - "name": "account", + "name": "owner", + "type": "address" + }, + { + "name": "spender", "type": "address" } ], - "name": "getAssetsIn", + "name": "allowance", "outputs": [ { "name": "", - "type": "address[]" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xabfceffc" + "signature": "0xdd62ed3e" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "comptrollerImplementation", + "name": "_acceptAdmin", "outputs": [ { "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xbb82aa5e" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "name": "newInterestRateModel", "type": "address" - }, - { - "name": "transferTokens", - "type": "uint256" } ], - "name": "transferAllowed", + "name": "_setInterestRateModel", "outputs": [ { "name": "", @@ -4014,85 +7351,70 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbdcdc258" + "signature": "0xf2b3abbd" }, { - "constant": false, - "inputs": [ - { - "name": "cTokens", - "type": "address[]" - } - ], - "name": "enterMarkets", + "constant": true, + "inputs": [], + "name": "interestRateModel", "outputs": [ { "name": "", - "type": "uint256[]" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc2998238" + "signature": "0xf3fdb15a" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", + "name": "borrower", "type": "address" }, { "name": "repayAmount", "type": "uint256" + }, + { + "name": "cTokenCollateral", + "type": "address" } ], - "name": "liquidateCalculateSeizeTokens", + "name": "liquidateBorrow", "outputs": [ - { - "name": "", - "type": "uint256" - }, { "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xc488847b" + "signature": "0xf5e3c462" }, { - "constant": false, - "inputs": [ - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ { - "name": "borrower", + "name": "", "type": "address" - }, - { - "name": "seizeTokens", - "type": "uint256" } ], - "name": "seizeAllowed", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", "outputs": [ { "name": "", @@ -4100,19 +7422,19 @@ } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xd02f7351" + "signature": "0xf8f9da28" }, { "constant": false, "inputs": [ { - "name": "newMaxAssets", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "_setMaxAssets", + "name": "_setReserveFactor", "outputs": [ { "name": "", @@ -4122,328 +7444,406 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd9226ced" + "signature": "0xfca7820b" + }, + { + "constant": true, + "inputs": [], + "name": "isCToken", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xfe9c44ae" }, { - "constant": false, "inputs": [ { - "name": "cToken", + "name": "underlying_", "type": "address" }, { - "name": "borrower", + "name": "comptroller_", "type": "address" }, { - "name": "borrowAmount", + "name": "interestRateModel_", + "type": "address" + }, + { + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "name": "borrowAllowed", - "outputs": [ + }, { - "name": "", + "name": "name_", + "type": "string" + }, + { + "name": "symbol_", + "type": "string" + }, + { + "name": "decimals_", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", - "type": "function", - "signature": "0xda3d454c" + "type": "constructor", + "signature": "constructor" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "", - "type": "address" + "indexed": false, + "name": "interestAccumulated", + "type": "uint256" }, { - "name": "", + "indexed": false, + "name": "borrowIndex", "type": "uint256" - } - ], - "name": "accountAssets", - "outputs": [ + }, { - "name": "", - "type": "address" + "indexed": false, + "name": "totalBorrows", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdce15449" + "name": "AccrueInterest", + "type": "event", + "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" }, { - "constant": true, - "inputs": [], - "name": "pendingComptrollerImplementation", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "name": "minter", "type": "address" + }, + { + "indexed": false, + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "mintTokens", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdcfbc0c7" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cToken", + "indexed": false, + "name": "redeemer", "type": "address" }, { - "name": "newCollateralFactorMantissa", + "indexed": false, + "name": "redeemAmount", "type": "uint256" - } - ], - "name": "_setCollateralFactor", - "outputs": [ + }, { - "name": "", + "indexed": false, + "name": "redeemTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xe4028eee" + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { - "constant": true, - "inputs": [], - "name": "closeFactorMantissa", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "name": "borrowAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xe8755446" + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cToken", + "indexed": false, + "name": "payer", "type": "address" }, { - "name": "redeemer", + "indexed": false, + "name": "borrower", "type": "address" }, { - "name": "redeemTokens", + "indexed": false, + "name": "repayAmount", "type": "uint256" - } - ], - "name": "redeemAllowed", - "outputs": [ + }, { - "name": "", + "indexed": false, + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xeabe7d91" + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cTokenAddress", + "indexed": false, + "name": "liquidator", "type": "address" - } - ], - "name": "exitMarket", - "outputs": [ + }, { - "name": "", + "indexed": false, + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "name": "seizeTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xede4edd0" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "name": "newPendingAdmin", "type": "address" } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf851a440" - }, - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + ], + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "cToken", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "name": "newAdmin", "type": "address" } ], - "name": "MarketListed", + "name": "NewAdmin", "type": "event", - "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "cToken", + "name": "oldComptroller", "type": "address" }, { "indexed": false, - "name": "account", + "name": "newComptroller", "type": "address" } ], - "name": "MarketEntered", + "name": "NewComptroller", "type": "event", - "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "cToken", + "name": "oldInterestRateModel", "type": "address" }, { "indexed": false, - "name": "account", + "name": "newInterestRateModel", "type": "address" } ], - "name": "MarketExited", + "name": "NewMarketInterestRateModel", "type": "event", - "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldCloseFactorMantissa", + "name": "oldReserveFactorMantissa", "type": "uint256" }, { "indexed": false, - "name": "newCloseFactorMantissa", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "NewCloseFactor", + "name": "NewReserveFactor", "type": "event", - "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "cToken", + "name": "admin", "type": "address" }, { "indexed": false, - "name": "oldCollateralFactorMantissa", + "name": "reduceAmount", "type": "uint256" }, { "indexed": false, - "name": "newCollateralFactorMantissa", + "name": "newTotalReserves", "type": "uint256" } ], - "name": "NewCollateralFactor", + "name": "ReservesReduced", "type": "event", - "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldLiquidationIncentiveMantissa", + "name": "error", "type": "uint256" }, { "indexed": false, - "name": "newLiquidationIncentiveMantissa", + "name": "info", + "type": "uint256" + }, + { + "indexed": false, + "name": "detail", "type": "uint256" } ], - "name": "NewLiquidationIncentive", + "name": "Failure", "type": "event", - "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "oldMaxAssets", - "type": "uint256" + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" }, { "indexed": false, - "name": "newMaxAssets", + "name": "amount", "type": "uint256" } ], - "name": "NewMaxAssets", + "name": "Transfer", "type": "event", - "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "oldPriceOracle", + "indexed": true, + "name": "owner", "type": "address" }, { - "indexed": false, - "name": "newPriceOracle", + "indexed": true, + "name": "spender", "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" } ], - "name": "NewPriceOracle", + "name": "Approval", "type": "event", - "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" - }, + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + } + ], + "StableCoinInterestRateModel": [ { "anonymous": false, "inputs": [ @@ -4464,65 +7864,108 @@ } ], "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - } - ], - "Unitroller": [ + "type": "event" + }, { "constant": true, - "inputs": [], - "name": "pendingAdmin", + "inputs": [ + { + "name": "_asset", + "type": "address" + }, + { + "name": "cash", + "type": "uint256" + }, + { + "name": "borrows", + "type": "uint256" + } + ], + "name": "getSupplyRate", "outputs": [ { "name": "", - "type": "address" + "type": "uint256" + }, + { + "name": "", + "type": "uint256" } ], "payable": false, "stateMutability": "view", - "type": "function", - "signature": "0x26782247" + "type": "function" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "newPendingAdmin", + "name": "_asset", "type": "address" + }, + { + "name": "cash", + "type": "uint256" + }, + { + "name": "borrows", + "type": "uint256" } ], - "name": "_setPendingAdmin", + "name": "getBorrowRate", "outputs": [ + { + "name": "", + "type": "uint256" + }, { "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xb71d1a0c" - }, + "stateMutability": "view", + "type": "function" + } + ], + "Base0bps_Slope2000bps": [ { "constant": true, - "inputs": [], - "name": "comptrollerImplementation", + "inputs": [ + { + "name": "cash", + "type": "uint256" + }, + { + "name": "borrows", + "type": "uint256" + }, + { + "name": "_reserves", + "type": "uint256" + } + ], + "name": "getBorrowRate", "outputs": [ { "name": "", - "type": "address" + "type": "uint256" + }, + { + "name": "", + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xbb82aa5e" + "signature": "0x15f24053" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptImplementation", + "name": "multiplier", "outputs": [ { "name": "", @@ -4530,49 +7973,44 @@ } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc1e80334" + "signature": "0x1b3ed722" }, { "constant": true, "inputs": [], - "name": "pendingComptrollerImplementation", + "name": "baseRate", "outputs": [ { "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdcfbc0c7" + "signature": "0x1f68f20a" }, { - "constant": false, - "inputs": [ - { - "name": "newPendingImplementation", - "type": "address" - } - ], - "name": "_setPendingImplementation", + "constant": true, + "inputs": [], + "name": "isInterestRateModel", "outputs": [ { "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe992a041" + "signature": "0x2191f92a" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "blocksPerYear", "outputs": [ { "name": "", @@ -4580,25 +8018,28 @@ } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0xa385fb96" }, { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ + "inputs": [ { - "name": "", - "type": "address" + "name": "baseRate_", + "type": "uint256" + }, + { + "name": "multiplier_", + "type": "uint256" } ], "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf851a440" - }, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + } + ], + "cErc20Delegate": [ { "inputs": [], "payable": false, @@ -4606,98 +8047,114 @@ "type": "constructor", "signature": "constructor" }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldPendingImplementation", - "type": "address" + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" }, { "indexed": false, - "name": "newPendingImplementation", - "type": "address" + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" } ], - "name": "NewPendingImplementation", + "name": "AccrueInterest", "type": "event", - "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "oldImplementation", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "indexed": false, - "name": "newImplementation", + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "NewImplementation", + "name": "Approval", "type": "event", - "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a" + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldPendingAdmin", + "internalType": "address", + "name": "borrower", "type": "address" }, { "indexed": false, - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" - }, - { - "anonymous": false, - "inputs": [ + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, { "indexed": false, - "name": "oldAdmin", - "type": "address" + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" }, { "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" } ], - "name": "NewAdmin", + "name": "Borrow", "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" }, { "anonymous": false, "inputs": [ { "indexed": false, + "internalType": "uint256", "name": "error", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "info", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "detail", "type": "uint256" } @@ -4705,315 +8162,380 @@ "name": "Failure", "type": "event", "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - } - ], - "Comptroller": [ - { - "constant": true, - "inputs": [], - "name": "pendingAdmin", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x26782247" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "newPendingAdmin", + "indexed": false, + "internalType": "address", + "name": "liquidator", "type": "address" - } - ], - "name": "_setPendingAdmin", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xb71d1a0c" - }, - { - "constant": true, - "inputs": [], - "name": "comptrollerImplementation", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xbb82aa5e" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": false, - "inputs": [], - "name": "_acceptImplementation", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xc1e80334" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": true, - "inputs": [], - "name": "pendingComptrollerImplementation", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdcfbc0c7" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "newPendingImplementation", + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", "type": "address" - } - ], - "name": "_setPendingImplementation", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xe992a041" + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { - "constant": false, - "inputs": [], - "name": "_acceptAdmin", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xe9c714f2" + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf851a440" - }, - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" }, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldPendingImplementation", + "internalType": "address", + "name": "redeemer", "type": "address" }, { "indexed": false, - "name": "newPendingImplementation", - "type": "address" + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" } ], - "name": "NewPendingImplementation", + "name": "Redeem", "type": "event", - "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldImplementation", + "internalType": "address", + "name": "payer", "type": "address" }, { "indexed": false, - "name": "newImplementation", + "internalType": "address", + "name": "borrower", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", + "type": "uint256" } ], - "name": "NewImplementation", + "name": "RepayBorrow", "type": "event", - "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a" + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldPendingAdmin", + "internalType": "address", + "name": "benefactor", "type": "address" }, { "indexed": false, - "name": "newPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "name": "NewPendingAdmin", + "name": "ReservesAdded", "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldAdmin", + "internalType": "address", + "name": "admin", "type": "address" }, { "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "name": "NewAdmin", + "name": "ReservesReduced", "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "error", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" }, { - "indexed": false, - "name": "info", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" }, { "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "Failure", + "name": "Transfer", "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "isComptroller", + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x007e3dd2" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "payer", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", + "internalType": "uint256", + "name": "addAmount", "type": "uint256" - }, + } + ], + "name": "_addReserves", + "outputs": [ { - "name": "borrowerIndex", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "repayBorrowVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x1ededc91" + "signature": "0x3e941010" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "payer", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "_becomeImplementation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x56e67728" + }, + { + "constant": false, + "inputs": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" } ], - "name": "repayBorrowAllowed", + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5021,34 +8543,53 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x24008a62" + "signature": "0x601a0bf1" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "pendingAdmin", + "name": "_resignImplementation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x153ab505" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" + } + ], + "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x26782247" + "signature": "0x4576b5db" }, { "constant": false, "inputs": [ { - "name": "newCloseFactorMantissa", - "type": "uint256" + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "name": "_setCloseFactor", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5056,202 +8597,189 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x317b0b77" + "signature": "0xf2b3abbd" }, { "constant": false, "inputs": [ { - "name": "unitroller", - "type": "address" - }, - { - "name": "_oracle", + "internalType": "address payable", + "name": "newPendingAdmin", "type": "address" - }, - { - "name": "_closeFactorMantissa", - "type": "uint256" - }, + } + ], + "name": "_setPendingAdmin", + "outputs": [ { - "name": "_maxAssets", + "internalType": "uint256", + "name": "", "type": "uint256" - }, - { - "name": "reinitializing", - "type": "bool" } ], - "name": "_become", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x32000e00" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "minter", - "type": "address" - }, - { - "name": "mintAmount", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" - }, + } + ], + "name": "_setReserveFactor", + "outputs": [ { - "name": "mintTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "mintVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x41c728b9" + "signature": "0xfca7820b" }, { - "constant": false, - "inputs": [ - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6c540baf" + }, + { + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ { - "name": "seizeTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "liquidateBorrowVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x47ef3b3b" + "signature": "0xa6afed95" }, { "constant": true, "inputs": [], - "name": "liquidationIncentiveMantissa", + "name": "admin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x4ada90af" + "signature": "0xf851a440" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "minter", + "internalType": "address", + "name": "spender", "type": "address" - }, - { - "name": "mintAmount", - "type": "uint256" } ], - "name": "mintAllowed", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x4ef4c3e1" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "newLiquidationIncentiveMantissa", + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "_setLiquidationIncentive", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4fd42e17" + "signature": "0x095ea7b3" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "redeemer", + "internalType": "address", + "name": "owner", "type": "address" - }, - { - "name": "redeemAmount", - "type": "uint256" - }, + } + ], + "name": "balanceOf", + "outputs": [ { - "name": "redeemTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "redeemVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x51dff989" + "signature": "0x70a08231" }, { "constant": false, "inputs": [ { - "name": "newOracle", + "internalType": "address", + "name": "owner", "type": "address" } ], - "name": "_setPriceOracle", + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5259,159 +8787,113 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x55ee1fe1" + "signature": "0x3af9e669" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { + "internalType": "uint256", "name": "borrowAmount", "type": "uint256" } ], - "name": "borrowVerify", - "outputs": [], + "name": "borrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x5c778605" + "signature": "0xc5ebeaec" }, { - "constant": true, + "constant": false, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" } ], - "name": "getAccountLiquidity", + "name": "borrowBalanceCurrent", "outputs": [ { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5ec88c79" + "signature": "0x17bfdfbc" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", + "internalType": "address", + "name": "account", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" } ], - "name": "liquidateBorrowAllowed", + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x5fc7e71e" + "signature": "0x95dd9193" }, { - "constant": false, - "inputs": [ - { - "name": "cToken", - "type": "address" - }, - { - "name": "src", - "type": "address" - }, - { - "name": "dst", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "borrowIndex", + "outputs": [ { - "name": "transferTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "transferVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x6a56947e" + "signature": "0xaa5af0fd" }, { - "constant": false, - "inputs": [ - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", + "outputs": [ { - "name": "seizeTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "seizeVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x6d35bf91" + "signature": "0xf8f9da28" }, { "constant": true, "inputs": [], - "name": "oracle", + "name": "comptroller", "outputs": [ { + "internalType": "contract ComptrollerInterface", "name": "", "type": "address" } @@ -5419,149 +8901,267 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x7dc0d1d0" + "signature": "0x5fe3b567" }, { "constant": true, - "inputs": [ + "inputs": [], + "name": "decimals", + "outputs": [ { + "internalType": "uint8", "name": "", - "type": "address" + "type": "uint8" } ], - "name": "markets", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", "outputs": [ { - "name": "isListed", - "type": "bool" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbd6d894d" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ { - "name": "collateralFactorMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x8e8f294b" + "signature": "0x182df0f5" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" }, { - "name": "cToken", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "checkMembership", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xc37f68e2" + }, + { + "constant": true, + "inputs": [], + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x929fe9a1" + "signature": "0x3b1d21a2" }, { "constant": true, "inputs": [], - "name": "maxAssets", + "name": "implementation", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x94b2294b" + "signature": "0x5c60da1b" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "underlying_", "type": "address" - } - ], - "name": "_supportMarket", - "outputs": [ + }, { - "name": "", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa76b3fda" + "signature": "0x1a31d465" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], - "name": "getAssetsIn", + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x99d8c1b4" + }, + { + "constant": true, + "inputs": [], + "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", - "type": "address[]" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xabfceffc" + "signature": "0xf3fdb15a" }, { "constant": true, "inputs": [], - "name": "comptrollerImplementation", + "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xbb82aa5e" + "signature": "0xfe9c44ae" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "src", - "type": "address" + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" }, { - "name": "dst", + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", "type": "address" - }, - { - "name": "transferTokens", - "type": "uint256" } ], - "name": "transferAllowed", + "name": "liquidateBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5569,107 +9169,75 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbdcdc258" + "signature": "0xf5e3c462" }, { "constant": false, "inputs": [ { - "name": "cTokens", - "type": "address[]" + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" } ], - "name": "enterMarkets", + "name": "mint", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "uint256[]" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xc2998238" + "signature": "0xa0712d68" }, { "constant": true, - "inputs": [ - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" - } - ], - "name": "liquidateCalculateSeizeTokens", + "inputs": [], + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xc488847b" + "signature": "0x06fdde03" }, { - "constant": false, - "inputs": [ - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "seizeTokens", - "type": "uint256" - } - ], - "name": "seizeAllowed", + "constant": true, + "inputs": [], + "name": "pendingAdmin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xd02f7351" + "signature": "0x26782247" }, { "constant": false, "inputs": [ { - "name": "newMaxAssets", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "_setMaxAssets", + "name": "redeem", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5677,27 +9245,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd9226ced" + "signature": "0xdb006a75" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "borrowAmount", + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" } ], - "name": "borrowAllowed", + "name": "redeemUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5705,62 +9267,48 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xda3d454c" + "signature": "0x852a12e3" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "", - "type": "address" - }, - { - "name": "", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "accountAssets", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdce15449" - }, - { - "constant": true, - "inputs": [], - "name": "pendingComptrollerImplementation", + "name": "repayBorrow", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xdcfbc0c7" + "signature": "0x0e752702" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "newCollateralFactorMantissa", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "_setCollateralFactor", + "name": "repayBorrowBehalf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5768,14 +9316,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe4028eee" + "signature": "0x2608f818" }, { "constant": true, "inputs": [], - "name": "closeFactorMantissa", + "name": "reserveFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5783,27 +9332,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xe8755446" + "signature": "0x173b9904" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "name": "redeemer", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "redeemTokens", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "redeemAllowed", + "name": "seize", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5811,219 +9364,181 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xeabe7d91" + "signature": "0xb2a02ff1" }, { - "constant": false, - "inputs": [ - { - "name": "cTokenAddress", - "type": "address" - } - ], - "name": "exitMarket", + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xede4edd0" + "signature": "0xae9d70b0" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", - "type": "address" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0x95d89b41" }, { + "constant": true, "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - }, - { - "anonymous": false, - "inputs": [ + "name": "totalBorrows", + "outputs": [ { - "indexed": false, - "name": "cToken", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "MarketListed", - "type": "event", - "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "cToken", - "type": "address" - }, + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ { - "indexed": false, - "name": "account", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "MarketEntered", - "type": "event", - "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "cToken", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ { - "indexed": false, - "name": "account", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "MarketExited", - "type": "event", - "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f840ddd" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldCloseFactorMantissa", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "indexed": false, - "name": "newCloseFactorMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewCloseFactor", - "type": "event", - "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "cToken", + "internalType": "address", + "name": "dst", "type": "address" }, { - "indexed": false, - "name": "oldCollateralFactorMantissa", - "type": "uint256" - }, - { - "indexed": false, - "name": "newCollateralFactorMantissa", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "NewCollateralFactor", - "type": "event", - "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldLiquidationIncentiveMantissa", - "type": "uint256" - }, + "name": "transfer", + "outputs": [ { - "indexed": false, - "name": "newLiquidationIncentiveMantissa", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "NewLiquidationIncentive", - "type": "event", - "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldMaxAssets", - "type": "uint256" + "internalType": "address", + "name": "src", + "type": "address" }, { - "indexed": false, - "name": "newMaxAssets", + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "NewMaxAssets", - "type": "event", - "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldPriceOracle", - "type": "address" - }, + "name": "transferFrom", + "outputs": [ { - "indexed": false, - "name": "newPriceOracle", - "type": "address" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "NewPriceOracle", - "type": "event", - "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "error", - "type": "uint256" - }, - { - "indexed": false, - "name": "info", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ { - "indexed": false, - "name": "detail", - "type": "uint256" + "internalType": "address", + "name": "", + "type": "address" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" } ], - "cBAT": [ + "cETH": [ { "constant": true, "inputs": [], @@ -6065,23 +9580,13 @@ }, { "constant": false, - "inputs": [ - { - "name": "repayAmount", - "type": "uint256" - } - ], - "name": "repayBorrow", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", + "inputs": [], + "name": "mint", + "outputs": [], + "payable": true, + "stateMutability": "payable", "type": "function", - "signature": "0x0e752702" + "signature": "0x1249c58b" }, { "constant": true, @@ -6164,41 +9669,17 @@ "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" - }, - { - "constant": false, - "inputs": [ - { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" - } - ], - "name": "repayBorrowBehalf", + "name": "transferFrom", "outputs": [ { "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x2608f818" + "signature": "0x23b872dd" }, { "constant": true, @@ -6300,6 +9781,16 @@ "type": "function", "signature": "0x47bd3718" }, + { + "constant": false, + "inputs": [], + "name": "repayBorrow", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x4e4d9fea" + }, { "constant": true, "inputs": [], @@ -6365,21 +9856,6 @@ "type": "function", "signature": "0x6c540baf" }, - { - "constant": true, - "inputs": [], - "name": "underlying", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x6f307dc3" - }, { "constant": true, "inputs": [ @@ -6485,26 +9961,6 @@ "type": "function", "signature": "0x95dd9193" }, - { - "constant": false, - "inputs": [ - { - "name": "mintAmount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xa0712d68" - }, { "constant": false, "inputs": [], @@ -6559,6 +10015,25 @@ "type": "function", "signature": "0xaa5af0fd" }, + { + "constant": false, + "inputs": [ + { + "name": "borrower", + "type": "address" + }, + { + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0xaae40a2a" + }, { "constant": true, "inputs": [], @@ -6733,6 +10208,21 @@ "type": "function", "signature": "0xdd62ed3e" }, + { + "constant": false, + "inputs": [ + { + "name": "borrower", + "type": "address" + } + ], + "name": "repayBorrowBehalf", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0xe5974619" + }, { "constant": false, "inputs": [], @@ -6783,34 +10273,6 @@ "type": "function", "signature": "0xf3fdb15a" }, - { - "constant": false, - "inputs": [ - { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" - }, - { - "name": "cTokenCollateral", - "type": "address" - } - ], - "name": "liquidateBorrow", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xf5e3c462" - }, { "constant": true, "inputs": [], @@ -6878,10 +10340,6 @@ }, { "inputs": [ - { - "name": "underlying_", - "type": "address" - }, { "name": "comptroller_", "type": "address" @@ -6912,6 +10370,11 @@ "type": "constructor", "signature": "constructor" }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, { "anonymous": false, "inputs": [ @@ -7258,93 +10721,7 @@ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" } ], - "StableCoinInterestRateModel": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "error", - "type": "uint256" - }, - { - "indexed": false, - "name": "info", - "type": "uint256" - }, - { - "indexed": false, - "name": "detail", - "type": "uint256" - } - ], - "name": "Failure", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "name": "_asset", - "type": "address" - }, - { - "name": "cash", - "type": "uint256" - }, - { - "name": "borrows", - "type": "uint256" - } - ], - "name": "getSupplyRate", - "outputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_asset", - "type": "address" - }, - { - "name": "cash", - "type": "uint256" - }, - { - "name": "borrows", - "type": "uint256" - } - ], - "name": "getBorrowRate", - "outputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "Base0bps_Slope2000bps": [ + "Base500bps_Slope1200bps": [ { "constant": true, "inputs": [ @@ -7454,7 +10831,7 @@ "signature": "constructor" } ], - "cETH": [ + "cSAI": [ { "constant": true, "inputs": [], @@ -7496,13 +10873,23 @@ }, { "constant": false, - "inputs": [], - "name": "mint", - "outputs": [], - "payable": true, - "stateMutability": "payable", + "inputs": [ + { + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", "type": "function", - "signature": "0x1249c58b" + "signature": "0x0e752702" }, { "constant": true, @@ -7577,25 +10964,49 @@ "type": "address" }, { - "name": "dst", + "name": "dst", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": false, + "inputs": [ + { + "name": "borrower", "type": "address" }, { - "name": "amount", + "name": "repayAmount", "type": "uint256" } ], - "name": "transferFrom", + "name": "repayBorrowBehalf", "outputs": [ { "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0x2608f818" }, { "constant": true, @@ -7697,16 +11108,6 @@ "type": "function", "signature": "0x47bd3718" }, - { - "constant": false, - "inputs": [], - "name": "repayBorrow", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function", - "signature": "0x4e4d9fea" - }, { "constant": true, "inputs": [], @@ -7772,6 +11173,21 @@ "type": "function", "signature": "0x6c540baf" }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" + }, { "constant": true, "inputs": [ @@ -7877,6 +11293,26 @@ "type": "function", "signature": "0x95dd9193" }, + { + "constant": false, + "inputs": [ + { + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa0712d68" + }, { "constant": false, "inputs": [], @@ -7931,25 +11367,6 @@ "type": "function", "signature": "0xaa5af0fd" }, - { - "constant": false, - "inputs": [ - { - "name": "borrower", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - } - ], - "name": "liquidateBorrow", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function", - "signature": "0xaae40a2a" - }, { "constant": true, "inputs": [], @@ -8124,21 +11541,6 @@ "type": "function", "signature": "0xdd62ed3e" }, - { - "constant": false, - "inputs": [ - { - "name": "borrower", - "type": "address" - } - ], - "name": "repayBorrowBehalf", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function", - "signature": "0xe5974619" - }, { "constant": false, "inputs": [], @@ -8189,6 +11591,34 @@ "type": "function", "signature": "0xf3fdb15a" }, + { + "constant": false, + "inputs": [ + { + "name": "borrower", + "type": "address" + }, + { + "name": "repayAmount", + "type": "uint256" + }, + { + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf5e3c462" + }, { "constant": true, "inputs": [], @@ -8256,6 +11686,10 @@ }, { "inputs": [ + { + "name": "underlying_", + "type": "address" + }, { "name": "comptroller_", "type": "address" @@ -8286,11 +11720,6 @@ "type": "constructor", "signature": "constructor" }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, { "anonymous": false, "inputs": [ @@ -8585,166 +12014,56 @@ "name": "detail", "type": "uint256" } - ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "amount", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "name": "amount", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "Base500bps_Slope1200bps": [ - { - "constant": true, - "inputs": [ - { - "name": "cash", - "type": "uint256" - }, - { - "name": "borrows", - "type": "uint256" - }, - { - "name": "_reserves", - "type": "uint256" - } - ], - "name": "getBorrowRate", - "outputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x15f24053" - }, - { - "constant": true, - "inputs": [], - "name": "multiplier", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x1b3ed722" - }, - { - "constant": true, - "inputs": [], - "name": "baseRate", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x1f68f20a" - }, - { - "constant": true, - "inputs": [], - "name": "isInterestRateModel", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x2191f92a" + ], + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": true, - "inputs": [], - "name": "blocksPerYear", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xa385fb96" + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { + "anonymous": false, "inputs": [ { - "name": "baseRate_", - "type": "uint256" + "indexed": true, + "name": "owner", + "type": "address" }, { - "name": "multiplier_", + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" } ], "Timelock": [ @@ -11795,6 +15114,265 @@ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" } ], + "Base200bps_Slope222bps_Kink90_Jump40": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "baseRatePerYear", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "multiplierPerYear", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "jump_", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "baseRatePerBlock", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "multiplierPerBlock", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "jump", + "type": "uint256" + } + ], + "name": "NewInterestParams", + "type": "event", + "signature": "0x6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d" + }, + { + "constant": true, + "inputs": [], + "name": "baseRatePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf14039de" + }, + { + "constant": true, + "inputs": [], + "name": "blocksPerYear", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xa385fb96" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + } + ], + "name": "getBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x15f24053" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa", + "type": "uint256" + } + ], + "name": "getSupplyRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xb8168816" + }, + { + "constant": true, + "inputs": [], + "name": "isInterestRateModel", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x2191f92a" + }, + { + "constant": true, + "inputs": [], + "name": "jump", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f6c696b" + }, + { + "constant": true, + "inputs": [], + "name": "kink", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xfd2da339" + }, + { + "constant": true, + "inputs": [], + "name": "multiplierPerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8726bb89" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + } + ], + "name": "utilizationRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function", + "signature": "0x6e71e2d8" + } + ], "MoneyMarket": [ { "constant": true, diff --git a/networks/mainnet.json b/networks/mainnet.json index aa361b3f2..f5d9d2695 100644 --- a/networks/mainnet.json +++ b/networks/mainnet.json @@ -3,10 +3,10 @@ "ZRX": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", "cUSDC": "0x39AA39c021dfbaE8faC545936693aC917d5E7563", "PriceOracle": "0x02557a5e05defeffd4cae6d83ea3d173b272c904", - "PriceOracleProxy": "0x2C9e6BDAA0EF0284eECef0e0Cc102dcDEaE4887e", + "PriceOracleProxy": "0x1D8aEdc9E924730DD3f9641CDb4D1B92B848b4bd", "Maximillion": "0xf859A1AD94BcF445A406B892eF0d3082f4174088", - "cDAI": "0xF5DCe57282A584D2746FaF1593d3121Fcac444dC", - "DAI": "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", + "cDAI": "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", + "DAI": "0x6B175474E89094C44Da98b954EedeAC495271d0F", "StdComptroller": "0x62F18C451af964197341d3c86D27e98C41BB8fcC", "Poster": "0x3c6809319201b978d821190ba03fa19a3523bd96", "Unitroller": "0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B", @@ -14,13 +14,17 @@ "cBAT": "0x6C8c6b02E7b2BE14d4fA6022Dfd6d75921D90E4E", "Base0bps_Slope2000bps": "0xc64C4cBA055eFA614CE01F4BAD8A9F519C4f8FaB", "BAT": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", + "cErc20Delegate": "0x99ee778B9A6205657DD03B2B91415C8646d521ec", "cETH": "0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5", "Base500bps_Slope1200bps": "0xa1046abfc2598F48C44Fb320d281d3F3c0733c9a", + "cSAI": "0xF5DCe57282A584D2746FaF1593d3121Fcac444dC", "Timelock": "0x6d903f6003cca6255D85CcA4D3B5E5146dC33925", "Base200bps_Slope3000bps": "0xBAE04CbF96391086dC643e842b517734E214D698", "cREP": "0x158079Ee67Fce2f58472A96584A73C7Ab9AC95c1", "ComptrollerG2": "0xf592eF673057a451c49c9433E278c5d59b56132c", "WBTC": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "Base200bps_Slope222bps_Kink90_Jump40": "0x5562024784cc914069d67D89a28e3201bF7b57E7", + "SAI": "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", "REP": "0x1985365e9f78359a9B6AD760e32412f4a445E862", "cZRX": "0xB3319f5D18Bc0D84dD1b4825Dcde5d5f7266d407", "cWBTC": "0xC11b1268C1A384e55C48c2391d8d480264A3A7F4", @@ -29,19 +33,22 @@ "Blocks": { "cUSDC": 7710760, "PriceOracle": 6747538, - "PriceOracleProxy": 8493386, + "PriceOracleProxy": 8983577, "Maximillion": 7710775, - "cDAI": 7710752, + "cDAI": 8983575, "StdComptroller": 7710672, "Unitroller": 7710671, "cBAT": 7710735, "Base0bps_Slope2000bps": 7710727, + "cErc20Delegate": 8983559, "cETH": 7710758, "Base500bps_Slope1200bps": 7710726, + "cSAI": 7710752, "Timelock": 8722895, "Base200bps_Slope3000bps": 7710728, "cREP": 7710755, "ComptrollerG2": 8722898, + "Base200bps_Slope222bps_Kink90_Jump40": 8983555, "cZRX": 7710733, "cWBTC": 8163813 }, @@ -49,8 +56,9 @@ "description": "Price Oracle Proxy", "cETH": "0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5", "cUSDC": "0x39AA39c021dfbaE8faC545936693aC917d5E7563", - "cDAI": "0xF5DCe57282A584D2746FaF1593d3121Fcac444dC", - "address": "0x2C9e6BDAA0EF0284eECef0e0Cc102dcDEaE4887e" + "cSAI": "0xF5DCe57282A584D2746FaF1593d3121Fcac444dC", + "cDAI": "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", + "address": "0x1D8aEdc9E924730DD3f9641CDb4D1B92B848b4bd" }, "Maximillion": { "description": "Maximillion", @@ -80,19 +88,22 @@ }, "Constructors": { "cUSDC": "0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000c64c4cba055efa614ce01f4bad8a9f519c4f8fab0000000000000000000000000000000000000000000000000000b5e620f4800000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000011436f6d706f756e642055534420436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056355534443000000000000000000000000000000000000000000000000000000", - "PriceOracleProxy": "0x0000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b00000000000000000000000002557a5e05defeffd4cae6d83ea3d173b272c9040000000000000000000000004ddc2d193948926d02f9b1fe9e1daa0718270ed500000000000000000000000039aa39c021dfbae8fac545936693ac917d5e7563000000000000000000000000f5dce57282a584d2746faf1593d3121fcac444dc", + "PriceOracleProxy": "0x0000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b00000000000000000000000002557a5e05defeffd4cae6d83ea3d173b272c9040000000000000000000000004ddc2d193948926d02f9b1fe9e1daa0718270ed500000000000000000000000039aa39c021dfbae8fac545936693ac917d5e7563000000000000000000000000f5dce57282a584d2746faf1593d3121fcac444dc0000000000000000000000005d3a536e4d6dbd6114cc1ead35777bab948e3643", "Maximillion": "0x0000000000000000000000004ddc2d193948926d02f9b1fe9e1daa0718270ed5", - "cDAI": "0x00000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a232603590000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000a1046abfc2598f48c44fb320d281d3f3c0733c9a000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c436f6d706f756e6420446169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046344414900000000000000000000000000000000000000000000000000000000", + "cDAI": "0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b0000000000000000000000005562024784cc914069d67d89a28e3201bf7b57e7000000000000000000000000000000000000000000a56fa5b99019a5c80000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000080000000000000000000000006d903f6003cca6255d85cca4d3b5e5146dc3392500000000000000000000000099ee778b9a6205657dd03b2b91415c8646d521ec00000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000c436f6d706f756e642044616900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004634441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", "StdComptroller": "0x", "Unitroller": "0x", "cBAT": "0x0000000000000000000000000d8775f648430679a709e98d2b0cb6250d2887ef0000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000bae04cbf96391086dc643e842b517734e214d698000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001e436f6d706f756e6420426173696320417474656e74696f6e20546f6b656e000000000000000000000000000000000000000000000000000000000000000000046342415400000000000000000000000000000000000000000000000000000000", "Base0bps_Slope2000bps": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb140000", + "cErc20Delegate": "0x", "cETH": "0x0000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000c64c4cba055efa614ce01f4bad8a9f519c4f8fab000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e436f6d706f756e6420457468657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046345544800000000000000000000000000000000000000000000000000000000", "Base500bps_Slope1200bps": "0x00000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000000001aa535d3d0c0000", + "cSAI": "0x00000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a232603590000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000a1046abfc2598f48c44fb320d281d3f3c0733c9a000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c436f6d706f756e6420446169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046344414900000000000000000000000000000000000000000000000000000000", "Timelock": "0x0000000000000000000000008b8592e9570e96166336603a1b4bd1e8db20fa20000000000000000000000000000000000000000000000000000000000002a300", "Base200bps_Slope3000bps": "0x00000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000429d069189e0000", "cREP": "0x0000000000000000000000001985365e9f78359a9b6ad760e32412f4a445e8620000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000bae04cbf96391086dc643e842b517734e214d698000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e436f6d706f756e6420417567757200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000", "ComptrollerG2": "0x", + "Base200bps_Slope222bps_Kink90_Jump40": "0x00000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000004ef2fe4dac8cc00000000000000000000000000000000000000000000000000c7d713b49da00000000000000000000000000000000000000000000000000000000000000000028", "cZRX": "0x000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f4980000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000bae04cbf96391086dc643e842b517734e214d698000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000b436f6d706f756e642030780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004635a525800000000000000000000000000000000000000000000000000000000", "cWBTC": "0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5990000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000bae04cbf96391086dc643e842b517734e214d69800000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000014436f6d706f756e6420577261707065642042544300000000000000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000" }, @@ -116,18 +127,19 @@ "name": "Compound Dai", "symbol": "cDAI", "decimals": 8, - "underlying": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", - "contract": "CErc20", + "underlying": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "contract": "CErc20Delegator", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xF5DCe57282A584D2746FaF1593d3121Fcac444dC" + "admin": "0x6d903f6003cca6255D85CcA4D3B5E5146dC33925", + "address": "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643" }, "DAI": { - "name": "Dai", - "symbol": "DAI", + "description": "Existing", "decimals": 18, - "address": "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", - "reader": "0x729D19f657BD0614b4985Cf1D82531c67569197B", - "oracle_key": "0x0000000000000000000000000000000000000002" + "name": "DAI", + "symbol": "DAI", + "contract": "ExistingToken", + "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F" }, "cBAT": { "name": "Compound Basic Attention Token", @@ -153,6 +165,15 @@ "initial_exchange_rate_mantissa": "200000000000000000000000000", "address": "0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5" }, + "cSAI": { + "name": "Compound Sai", + "symbol": "cSAI", + "decimals": 8, + "underlying": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", + "contract": "CErc20", + "initial_exchange_rate_mantissa": "200000000000000000000000000", + "address": "0xF5DCe57282A584D2746FaF1593d3121Fcac444dC" + }, "cREP": { "name": "Compound Augur", "symbol": "cREP", @@ -168,6 +189,14 @@ "decimals": 8, "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" }, + "SAI": { + "name": "Sai (Legacy Dai)", + "symbol": "SAI", + "decimals": 18, + "address": "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", + "reader": "0x729D19f657BD0614b4985Cf1D82531c67569197B", + "oracle_key": "0x0000000000000000000000000000000000000002" + }, "REP": { "name": "Augur", "symbol": "REP", @@ -200,6 +229,13 @@ "oracle_key": "0x0000000000000000000000000000000000000001" } }, + "CTokenDelegate": { + "cErc20Delegate": { + "address": "0x99ee778B9A6205657DD03B2B91415C8646d521ec", + "contract": "CErc20Delegate", + "description": "Standard CErc20 Delegate" + } + }, "cTokens": { "cZRX": { "name": "Compound 0x", @@ -219,9 +255,9 @@ "initial_exchange_rate_mantissa": "200000000000000000000000000", "address": "0x6C8c6b02E7b2BE14d4fA6022Dfd6d75921D90E4E" }, - "cDAI": { - "name": "Compound Dai", - "symbol": "cDAI", + "cSAI": { + "name": "Compound Sai", + "symbol": "cSAI", "decimals": 8, "underlying": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", "contract": "CErc20", @@ -263,6 +299,16 @@ "contract": "CErc20", "initial_exchange_rate_mantissa": "20000000000000000", "address": "0xC11b1268C1A384e55C48c2391d8d480264A3A7F4" + }, + "cDAI": { + "name": "Compound Dai", + "symbol": "cDAI", + "decimals": 8, + "underlying": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "contract": "CErc20Delegator", + "initial_exchange_rate_mantissa": "200000000000000000000000000", + "admin": "0x6d903f6003cca6255D85CcA4D3B5E5146dC33925", + "address": "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643" } }, "InterestRateModel": { @@ -289,6 +335,16 @@ "base": "20000000000000000", "slope": "300000000000000000", "address": "0xBAE04CbF96391086dC643e842b517734E214D698" + }, + "Base200bps_Slope222bps_Kink90_Jump40": { + "name": "Base200bps_Slope222bps_Kink90_Jump40", + "contract": "JumpRateModel", + "description": "JumpRate model baseRate=20000000000000000 multiplier=22222222222200000 kink=900000000000000000 jump=40", + "base": "20000000000000000", + "slope": "22222222222200000", + "kink": "900000000000000000", + "jump": "40", + "address": "0x5562024784cc914069d67D89a28e3201bF7b57E7" } } } \ No newline at end of file diff --git a/package.json b/package.json index 5f4881fe7..83062e9a2 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,14 @@ "license": "UNLICENSED", "devDependencies": { "bignumber.js": "8.0.1", - "ganache-cli": "^6.3.0", + "ganache-cli": "^6.7.0", + "ganache-core": "^2.8.0", "immutable": "^4.0.0-rc.12", "mocha-junit-reporter": "^1.18.0", "mocha-multi-reporters": "^1.1.7", "request": "^2.88.0", - "solc": "0.5.8", - "solidity-coverage": "^0.6.3", - "solparse": "^2.2.8", + "solidity-coverage": "^0.7.0-beta.2", + "solparse": "^2.2.8", "truffle-config": "^1.1.17", "truffle-flattener": "^1.3.0", "truffle-resolver": "^5.0.0", diff --git a/scenario/package.json b/scenario/package.json index 37d5c8b5c..f9ae18aa7 100644 --- a/scenario/package.json +++ b/scenario/package.json @@ -22,6 +22,7 @@ "dependencies": { "bignumber.js": "8.0.1", "ethers": "^4.0.0-beta.1", + "ganache-core": "^2.8.0", "immutable": "^4.0.0-rc.12", "truffle-flattener": "^1.3.0", "truffle-hdwallet-provider": "1.0.5", diff --git a/scenario/script/repl b/scenario/script/repl index 28f51b39e..09945548d 100755 --- a/scenario/script/repl +++ b/scenario/script/repl @@ -56,7 +56,7 @@ while getopts ":hdn:e:s:vt" arg; do esac done -if [ $network = "test" -o $network = "development" -o -n "$add_test_contracts" ]; then +if [ ! $network = "mainnet" ]; then function cleanup { mv "$contracts_root/test" "$test_root/contracts" } @@ -74,5 +74,6 @@ fi [[ ! -d ./.tsbuilt || -z $no_tsc ]] && . "$dir/tsc" +[[ -z $no_compile ]] && node --stack_size=10000 "$proj_root/node_modules/truffle/build/cli.bundled.js" compile proj_root="$proj_root" env_vars="$env_vars" dry_run="$dry_run" script="$script" network="$network" verbose="$verbose" npx truffle exec --network "$network" "$tsc_root/.tsbuilt/Repl.js" diff --git a/scenario/script/tsc b/scenario/script/tsc index 5d45f8aff..e80f9be51 100755 --- a/scenario/script/tsc +++ b/scenario/script/tsc @@ -4,11 +4,20 @@ set -eo dir=`dirname $0` scenario_dir="$(cd $dir/.. && pwd)" +parent_dir="$(cd $dir/../.. && pwd)" if [ ! -d "$scenario_dir/node_modules" ]; then echo "Getting scenario packages..." cd "$scenario_dir" && yarn fi +trap cleanup EXIT + +cleanup() { + mv "$parent_dir/node_modules_tmp" "$parent_dir/node_modules" +} + +mv "$parent_dir/node_modules" "$parent_dir/node_modules_tmp" + echo "Building Scenario Runner..." cd "$scenario_dir" && node "$scenario_dir/node_modules/.bin/tsc" ${TSC_ARGS-"--skipLibCheck"} diff --git a/scenario/src/Builder/CTokenBuilder.ts b/scenario/src/Builder/CTokenBuilder.ts index 7f3ef23ff..1f171a2fc 100644 --- a/scenario/src/Builder/CTokenBuilder.ts +++ b/scenario/src/Builder/CTokenBuilder.ts @@ -1,47 +1,191 @@ -import {Event} from '../Event'; -import {addAction, World} from '../World'; -import {CToken} from '../Contract/CToken'; -import {Invokation, invoke} from '../Invokation'; -import { - getAddressV, - getExpNumberV, - getNumberV, - getStringV -} from '../CoreValue'; -import { - AddressV, - NumberV, - StringV -} from '../Value'; -import {Arg, Fetcher, getFetcherValue} from '../Command'; -import {storeAndSaveContract} from '../Networks'; -import {getContract, getTestContract} from '../Contract'; +import { Event } from '../Event'; +import { World } from '../World'; +import { CErc20Delegator, CErc20DelegatorScenario } from '../Contract/CErc20Delegator'; +import { CToken } from '../Contract/CToken'; +import { Invokation, invoke } from '../Invokation'; +import { getAddressV, getExpNumberV, getNumberV, getStringV } from '../CoreValue'; +import { AddressV, NumberV, StringV } from '../Value'; +import { Arg, Fetcher, getFetcherValue } from '../Command'; +import { storeAndSaveContract } from '../Networks'; +import { getContract, getTestContract } from '../Contract'; -const CErc20Contract = getContract('CErc20'); +const CErc20Contract = getContract('CErc20Immutable'); +const CErc20Delegator = getContract('CErc20Delegator'); +const CErc20DelegatorScenario = getTestContract('CErc20DelegatorScenario'); const CEtherContract = getContract('CEther'); const CErc20ScenarioContract = getTestContract('CErc20Scenario'); const CEtherScenarioContract = getTestContract('CEtherScenario'); const CEvilContract = getTestContract('CEvil'); export interface TokenData { - invokation: Invokation - name: string - symbol: string - decimals: number - underlying: string - address?: string - contract: string - initial_exchange_rate_mantissa: string - admin: string + invokation: Invokation; + name: string; + symbol: string; + decimals?: number; + underlying?: string; + address?: string; + contract: string; + initial_exchange_rate_mantissa?: string; + admin?: string; } -export async function buildCToken(world: World, from: string, params: Event): Promise<{world: World, cToken: CToken, tokenData: TokenData}> { +export async function buildCToken( + world: World, + from: string, + params: Event +): Promise<{ world: World; cToken: CToken; tokenData: TokenData }> { const fetchers = [ + new Fetcher< + { + symbol: StringV; + name: StringV; + decimals: NumberV; + underlying: AddressV; + comptroller: AddressV; + interestRateModel: AddressV; + initialExchangeRate: NumberV; + admin: AddressV; + implementation: AddressV; + becomeImplementationData: StringV; + }, + TokenData + >( + ` + #### CErc20Delegator + + * "CErc20Delegator symbol: name: underlying:
comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
implementation:
becomeImplementationData:" - A CToken Scenario for local testing + * E.g. "CToken Deploy CErc20Delegator cDAI \"Compound DAI\" (Erc20 DAI Address) (Comptroller Address) (InterestRateModel Address) 1.0 8 Geoff (CToken CDaiDelegate Address) "0x0123434anyByTes314535q" " + `, + 'CErc20Delegator', + [ + new Arg('symbol', getStringV), + new Arg('name', getStringV), + new Arg('underlying', getAddressV), + new Arg('comptroller', getAddressV), + new Arg('interestRateModel', getAddressV), + new Arg('initialExchangeRate', getExpNumberV), + new Arg('decimals', getNumberV), + new Arg('admin', getAddressV), + new Arg('implementation', getAddressV), + new Arg('becomeImplementationData', getStringV) + ], + async ( + world, + { + symbol, + name, + underlying, + comptroller, + interestRateModel, + initialExchangeRate, + decimals, + admin, + implementation, + becomeImplementationData + } + ) => { + return { + invokation: await CErc20Delegator.deploy(world, from, [ + underlying.val, + comptroller.val, + interestRateModel.val, + initialExchangeRate.val, + name.val, + symbol.val, + decimals.val, + admin.val, + implementation.val, + becomeImplementationData.val + ]), + name: name.val, + symbol: symbol.val, + decimals: decimals.toNumber(), + underlying: underlying.val, + contract: 'CErc20Delegator', + initial_exchange_rate_mantissa: initialExchangeRate.encode().toString(), + admin: admin.val + }; + } + ), + + new Fetcher< + { + symbol: StringV; + name: StringV; + decimals: NumberV; + underlying: AddressV; + comptroller: AddressV; + interestRateModel: AddressV; + initialExchangeRate: NumberV; + admin: AddressV; + implementation: AddressV; + becomeImplementationData: StringV; + }, + TokenData + >( + ` + #### CErc20DelegatorScenario + + * "CErc20DelegatorScenario symbol: name: underlying:
comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
implementation:
becomeImplementationData:" - A CToken Scenario for local testing + * E.g. "CToken Deploy CErc20DelegatorScenario cDAI \"Compound DAI\" (Erc20 DAI Address) (Comptroller Address) (InterestRateModel Address) 1.0 8 Geoff (CToken CDaiDelegate Address) "0x0123434anyByTes314535q" " + `, + 'CErc20DelegatorScenario', + [ + new Arg('symbol', getStringV), + new Arg('name', getStringV), + new Arg('underlying', getAddressV), + new Arg('comptroller', getAddressV), + new Arg('interestRateModel', getAddressV), + new Arg('initialExchangeRate', getExpNumberV), + new Arg('decimals', getNumberV), + new Arg('admin', getAddressV), + new Arg('implementation', getAddressV), + new Arg('becomeImplementationData', getStringV) + ], + async ( + world, + { + symbol, + name, + underlying, + comptroller, + interestRateModel, + initialExchangeRate, + decimals, + admin, + implementation, + becomeImplementationData + } + ) => { + return { + invokation: await CErc20DelegatorScenario.deploy(world, from, [ + underlying.val, + comptroller.val, + interestRateModel.val, + initialExchangeRate.val, + name.val, + symbol.val, + decimals.val, + admin.val, + implementation.val, + becomeImplementationData.val + ]), + name: name.val, + symbol: symbol.val, + decimals: decimals.toNumber(), + underlying: underlying.val, + contract: 'CErc20DelegatorScenario', + initial_exchange_rate_mantissa: initialExchangeRate.encode().toString(), + admin: admin.val + }; + } + ), + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV, underlying: AddressV, comptroller: AddressV, interestRateModel: AddressV, initialExchangeRate: NumberV, admin: AddressV}, TokenData>(` #### Scenario * "Scenario symbol: name: underlying:
comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
" - A CToken Scenario for local testing - * E.g. "CToken Deploy Scenario cZRX (Erc20 ZRX Address) (Comptroller Address) (InterestRateModel Address) 1.0 8" + * E.g. "CToken Deploy Scenario cZRX \"Compound ZRX\" (Erc20 ZRX Address) (Comptroller Address) (InterestRateModel Address) 1.0 8" `, "Scenario", [ @@ -67,11 +211,12 @@ export async function buildCToken(world: World, from: string, params: Event): Pr }; } ), + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV, admin: AddressV, comptroller: AddressV, interestRateModel: AddressV, initialExchangeRate: NumberV}, TokenData>(` #### CEtherScenario * "CEtherScenario symbol: name: comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
" - A CToken Scenario for local testing - * E.g. "CToken Deploy CEtherScenario (Erc20 ZRX Address) (Comptroller Address) (InterestRateModel Address) 1.0 8" + * E.g. "CToken Deploy CEtherScenario cETH \"Compound Ether\" (Comptroller Address) (InterestRateModel Address) 1.0 8" `, "CEtherScenario", [ @@ -96,11 +241,12 @@ export async function buildCToken(world: World, from: string, params: Event): Pr }; } ), + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV, admin: AddressV, comptroller: AddressV, interestRateModel: AddressV, initialExchangeRate: NumberV}, TokenData>(` #### CEther * "CEther symbol: name: comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
" - A CToken Scenario for local testing - * E.g. "CToken Deploy CEther cETH (Comptroller Address) (InterestRateModel Address) 1.0 8" + * E.g. "CToken Deploy CEther cETH \"Compound Ether\" (Comptroller Address) (InterestRateModel Address) 1.0 8" `, "CEther", [ @@ -125,11 +271,12 @@ export async function buildCToken(world: World, from: string, params: Event): Pr }; } ), + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV, admin: AddressV, underlying: AddressV, comptroller: AddressV, interestRateModel: AddressV, initialExchangeRate: NumberV}, TokenData>(` #### CErc20 * "CErc20 symbol: name: underlying:
comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
" - A official CToken contract - * E.g. "CToken Deploy CErc20 cZRX (Erc20 ZRX Address) (Comptroller Address) (InterestRateModel Address) 1.0 8" + * E.g. "CToken Deploy CErc20 cZRX \"Compound ZRX\" (Erc20 ZRX Address) (Comptroller Address) (InterestRateModel Address) 1.0 8" `, "CErc20", [ @@ -143,6 +290,7 @@ export async function buildCToken(world: World, from: string, params: Event): Pr new Arg("admin", getAddressV) ], async (world, {symbol, name, underlying, comptroller, interestRateModel, initialExchangeRate, decimals, admin}) => { + return { invokation: await CErc20Contract.deploy(world, from, [underlying.val, comptroller.val, interestRateModel.val, initialExchangeRate.val, name.val, symbol.val, decimals.val, admin.val]), name: name.val, @@ -155,11 +303,12 @@ export async function buildCToken(world: World, from: string, params: Event): Pr }; } ), + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV, admin: AddressV, underlying: AddressV, comptroller: AddressV, interestRateModel: AddressV, initialExchangeRate: NumberV}, TokenData>(` #### CEvil * "CEvil symbol: name: underlying:
comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
" - A malicious CToken contract - * E.g. "CToken Deploy CEvil cEVL (Erc20 ZRX Address) (Comptroller Address) (InterestRateModel Address) 1.0 8" + * E.g. "CToken Deploy CEvil cEVL \"Compound EVL\" (Erc20 ZRX Address) (Comptroller Address) (InterestRateModel Address) 1.0 8" `, "CEvil", [ @@ -185,11 +334,12 @@ export async function buildCToken(world: World, from: string, params: Event): Pr }; } ), + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV, admin: AddressV, underlying: AddressV, comptroller: AddressV, interestRateModel: AddressV, initialExchangeRate: NumberV}, TokenData>(` #### Standard * "symbol: name: underlying:
comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
" - A official CToken contract - * E.g. "CToken Deploy cZRX (Erc20 ZRX Address) (Comptroller Address) (InterestRateModel Address) 1.0 8" + * E.g. "CToken Deploy Standard cZRX \"Compound ZRX\" (Erc20 ZRX Address) (Comptroller Address) (InterestRateModel Address) 1.0 8" `, "Standard", [ @@ -222,7 +372,7 @@ export async function buildCToken(world: World, from: string, params: Event): Pr symbol: symbol.val, decimals: decimals.toNumber(), underlying: underlying.val, - contract: 'CErc20', + contract: 'CErc20Immutable', initial_exchange_rate_mantissa: initialExchangeRate.encode().toString(), admin: admin.val }; @@ -255,4 +405,4 @@ export async function buildCToken(world: World, from: string, params: Event): Pr ); return {world, cToken, tokenData}; -} \ No newline at end of file +} diff --git a/scenario/src/Builder/CTokenDelegateBuilder.ts b/scenario/src/Builder/CTokenDelegateBuilder.ts new file mode 100644 index 000000000..4a2fd2df3 --- /dev/null +++ b/scenario/src/Builder/CTokenDelegateBuilder.ts @@ -0,0 +1,106 @@ +import { Event } from '../Event'; +import { World } from '../World'; +import { CErc20Delegate, CErc20DelegateScenario } from '../Contract/CErc20Delegate'; +import { CToken } from '../Contract/CToken'; +import { Invokation } from '../Invokation'; +import { getStringV } from '../CoreValue'; +import { AddressV, NumberV, StringV } from '../Value'; +import { Arg, Fetcher, getFetcherValue } from '../Command'; +import { storeAndSaveContract } from '../Networks'; +import { getContract, getTestContract } from '../Contract'; + +const CErc20DelegateContract = getContract('CErc20Delegate'); +const CErc20DelegateScenarioContract = getTestContract('CErc20DelegateScenario'); + + +export interface CTokenDelegateData { + invokation: Invokation; + name: string; + contract: string; + description?: string; +} + +export async function buildCTokenDelegate( + world: World, + from: string, + params: Event +): Promise<{ world: World; cTokenDelegate: CErc20Delegate; delegateData: CTokenDelegateData }> { + const fetchers = [ + new Fetcher<{ name: StringV; }, CTokenDelegateData>( + ` + #### CErc20Delegate + + * "CErc20Delegate name:" + * E.g. "CTokenDelegate Deploy CErc20Delegate cErc20Del" + `, + 'CErc20Delegate', + [ + new Arg('name', getStringV) + ], + async ( + world, + { name } + ) => { + return { + invokation: await CErc20DelegateContract.deploy(world, from, []), + name: name.val, + contract: 'CErc20Delegate', + description: 'Standard CErc20 Delegate' + }; + } + ), + + new Fetcher<{ name: StringV; }, CTokenDelegateData>( + ` + #### CErc20DelegateScenario + + * "CErc20DelegateScenario name:" - A CErc20Delegate Scenario for local testing + * E.g. "CTokenDelegate Deploy CErc20DelegateScenario cErc20Del" + `, + 'CErc20DelegateScenario', + [ + new Arg('name', getStringV), + ], + async ( + world, + { name } + ) => { + return { + invokation: await CErc20DelegateScenarioContract.deploy(world, from, []), + name: name.val, + contract: 'CErc20DelegateScenario', + description: 'Scenario CErc20 Delegate' + }; + } + ) + ]; + + let delegateData = await getFetcherValue("DeployCToken", fetchers, world, params); + let invokation = delegateData.invokation; + delete delegateData.invokation; + + if (invokation.error) { + throw invokation.error; + } + + const cTokenDelegate = invokation.value!; + + world = await storeAndSaveContract( + world, + cTokenDelegate, + delegateData.name, + invokation, + [ + { + index: ['CTokenDelegate', delegateData.name], + data: { + address: cTokenDelegate._address, + contract: delegateData.contract, + description: delegateData.description + } + } + ] + ); + + return { world, cTokenDelegate, delegateData }; +} diff --git a/scenario/src/Builder/Erc20Builder.ts b/scenario/src/Builder/Erc20Builder.ts index 8e76791e8..39a4fc5b8 100644 --- a/scenario/src/Builder/Erc20Builder.ts +++ b/scenario/src/Builder/Erc20Builder.ts @@ -1,3 +1,4 @@ + import {Event} from '../Event'; import {addAction, World} from '../World'; import {Erc20} from '../Contract/Erc20'; @@ -19,29 +20,83 @@ import {storeAndSaveContract} from '../Networks'; import {getContract, getTestContract} from '../Contract'; import {encodeABI} from '../Utils'; +const ExistingToken = getContract("FullErc20Interface"); +const TetherInterface = getContract("TetherInterface"); + const FaucetTokenHarness = getContract("FaucetToken"); const FaucetTokenNonStandardHarness = getContract("FaucetNonStandardToken"); const FaucetTokenReEntrantHarness = getContract("FaucetTokenReEntrantHarness"); const EvilTokenHarness = getContract("EvilToken"); const WBTCTokenHarness = getContract("WBTCToken"); +const FeeTokenHarness = getContract("FeeToken"); export interface TokenData { invokation: Invokation, description: string, name: string, symbol: string, - decimals: number, + decimals?: number, address?: string, contract: string } -export async function buildErc20(world: World, from: string, event: Event): Promise<{world: World, erc20: Erc20, tokenData: TokenData}> { +export async function buildErc20(world: World, from: string, event: Event): Promise<{ world: World, erc20: Erc20, tokenData: TokenData }> { const fetchers = [ + new Fetcher<{ symbol: StringV, address: AddressV, name: StringV }, TokenData>(` + #### Existing + + * "Existing symbol: address:
" - Wrap an existing Erc20 token + * E.g. "Erc20 Deploy Existing DAI 0x123... + `, + "Existing", + [ + new Arg("symbol", getStringV), + new Arg("address", getAddressV), + new Arg("name", getStringV, { default: undefined }), + ], + async (world, { symbol, name, address }) => { + const existingToken = ExistingToken.at(world, address.val); + const tokenName = name.val === undefined ? symbol.val : name.val; + const decimals = await existingToken.methods.decimals().call(); + + return { + invokation: new Invokation(existingToken, null, null, null), + description: "Existing", + decimals: Number(decimals), + name: tokenName, + symbol: symbol.val, + contract: 'ExistingToken' + }; + } + ), + + new Fetcher<{symbol: StringV, address: AddressV}, TokenData>(` + #### ExistingTether + + * "Existing symbol: address:
" - Wrap an existing Erc20 token + * E.g. "Erc20 Deploy ExistingTether USDT 0x123... + `, + "ExistingTether", + [ + new Arg("symbol", getStringV), + new Arg("address", getAddressV) + ], + async (world, {symbol, address}) => { + return { + invokation: new Invokation(TetherInterface.at(world, address.val), null, null, null), + description: "ExistingTether", + name: symbol.val, + symbol: symbol.val, + contract: 'TetherInterface' + }; + } + ), + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV}, TokenData>(` #### NonStandard * "NonStandard symbol: name: decimals:" - A non-standard token, like BAT - * E.g. "Erc20 Deploy NonStandard BAT 18" + * E.g. "Erc20 Deploy NonStandard BAT \"Basic Attention Token\" 18" `, "NonStandard", [ @@ -60,6 +115,7 @@ export async function buildErc20(world: World, from: string, event: Event): Prom }; } ), + new Fetcher<{symbol: StringV, name: StringV, fun:StringV, reEntryFunSig: StringV, reEntryFunArgs: StringV[]}, TokenData>(` #### ReEntrant @@ -89,11 +145,12 @@ export async function buildErc20(world: World, from: string, event: Event): Prom }; } ), + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV}, TokenData>(` #### Evil * "Evil symbol: name: decimals:" - A less vanilla ERC-20 contract that fails transfers - * E.g. "Erc20 Deploy Evil BAT 18" + * E.g. "Erc20 Deploy Evil BAT \"Basic Attention Token\" 18" `, "Evil", [ @@ -112,11 +169,12 @@ export async function buildErc20(world: World, from: string, event: Event): Prom }; } ), + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV}, TokenData>(` #### Standard * "Standard symbol: name: decimals:" - A vanilla ERC-20 contract - * E.g. "Erc20 Deploy Standard BAT 18" + * E.g. "Erc20 Deploy Standard BAT \"Basic Attention Token\" 18" `, "Standard", [ @@ -135,6 +193,7 @@ export async function buildErc20(world: World, from: string, event: Event): Prom }; } ), + new Fetcher<{symbol: StringV, name: StringV}, TokenData>(` #### WBTC @@ -158,7 +217,34 @@ export async function buildErc20(world: World, from: string, event: Event): Prom contract: 'WBTCToken' }; } - ) + ), + + new Fetcher<{symbol: StringV, name: StringV, decimals: NumberV, basisPointFee: NumberV, owner: AddressV}, TokenData>(` + #### Fee + + * "Fee symbol: name: decimals: basisPointFee: owner:
" - An ERC20 whose owner takes a fee on transfers. Used for mocking USDT. + * E.g. "Erc20 Deploy Fee USDT USDT 100 Root" + `, + "Fee", + [ + new Arg("symbol", getStringV), + new Arg("name", getStringV), + new Arg("decimals", getNumberV), + new Arg("basisPointFee", getNumberV), + new Arg("owner", getAddressV) + ], + async (world, {symbol, name, decimals, basisPointFee, owner}) => { + return { + invokation: await FeeTokenHarness.deploy(world, from, [0, name.val, decimals.val, symbol.val, basisPointFee.val, owner.val]), + description: "Fee", + name: name.val, + symbol: symbol.val, + decimals: decimals.toNumber(), + owner: owner.val, + contract: 'FeeToken' + }; + } + ), ]; let tokenData = await getFetcherValue("DeployErc20", fetchers, world, event); diff --git a/scenario/src/Builder/InterestRateModelBuilder.ts b/scenario/src/Builder/InterestRateModelBuilder.ts index 29280451f..1ce7a8f2b 100644 --- a/scenario/src/Builder/InterestRateModelBuilder.ts +++ b/scenario/src/Builder/InterestRateModelBuilder.ts @@ -4,6 +4,7 @@ import {InterestRateModel} from '../Contract/InterestRateModel'; import {Invokation, invoke} from '../Invokation'; import { getExpNumberV, + getNumberV, getPercentV, getStringV, } from '../CoreValue'; @@ -18,6 +19,7 @@ import {getContract, getTestContract} from '../Contract'; const FixedInterestRateModel = getTestContract('InterestRateModelHarness'); const WhitePaperInterestRateModel = getContract('WhitePaperInterestRateModel'); +const JumpRateModel = getContract('JumpRateModel'); export interface InterestRateModelData { invokation: Invokation @@ -27,6 +29,8 @@ export interface InterestRateModelData { description: string base?: string slope?: string + kink?: string + jump?: string } export async function buildInterestRateModel(world: World, from: string, event: Event): Promise<{world: World, interestRateModel: InterestRateModel, interestRateModelData: InterestRateModelData}> { @@ -70,7 +74,34 @@ export async function buildInterestRateModel(world: World, from: string, event: base: baseRate.encode().toString(), slope: multiplier.encode().toString() }) - ) + ), + + + new Fetcher<{name: StringV, baseRate: NumberV, multiplier: NumberV, kink: NumberV, jump: NumberV}, InterestRateModelData>(` +#### JumpRateModel + +* "JumpRateModel name: baseRate: multiplier: kink: jump:" - The Jump interest rate +* E.g. "InterestRateModel Deploy JumpRateModel MyInterestRateModel 0.05 0.2 0.90 5" - 5% base rate and 20% utilization multiplier and 5x jump at 90% utilization +`, + "JumpRateModel", + [ + new Arg("name", getStringV), + new Arg("baseRate", getExpNumberV), + new Arg("multiplier", getExpNumberV), + new Arg("kink", getExpNumberV), + new Arg("jump", getNumberV) + ], + async (world, {name, baseRate, multiplier, kink, jump}) => ({ + invokation: await JumpRateModel.deploy(world, from, [baseRate.val, multiplier.val, kink.val, jump.val]), + name: name.val, + contract: "JumpRateModel", + description: `JumpRate model baseRate=${baseRate.val} multiplier=${multiplier.val} kink=${kink.val} jump=${jump.val}`, + base: baseRate.encode().toString(), + slope: multiplier.encode().toString(), + kink: kink.encode().toString(), + jump: jump.encode().toString() + }) + ) ]; let interestRateModelData = await getFetcherValue("DeployInterestRateModel", fetchers, world, event); diff --git a/scenario/src/Builder/PriceOracleProxyBuilder.ts b/scenario/src/Builder/PriceOracleProxyBuilder.ts index e88f63741..927bcd9e3 100644 --- a/scenario/src/Builder/PriceOracleProxyBuilder.ts +++ b/scenario/src/Builder/PriceOracleProxyBuilder.ts @@ -22,11 +22,11 @@ export interface PriceOracleProxyData { export async function buildPriceOracleProxy(world: World, from: string, event: Event): Promise<{world: World, priceOracleProxy: PriceOracleProxy, invokation: Invokation}> { const fetchers = [ - new Fetcher<{comptroller: AddressV, priceOracle: AddressV, cETH: AddressV, cUSDC: AddressV, cDAI: AddressV}, PriceOracleProxyData>(` + new Fetcher<{comptroller: AddressV, priceOracle: AddressV, cETH: AddressV, cUSDC: AddressV, cSAI: AddressV, cDAI: AddressV}, PriceOracleProxyData>(` #### Price Oracle Proxy - * "Deploy " - The Price Oracle which proxies to a backing oracle - * E.g. "PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) cETH cUSDC cDAI" + * "Deploy " - The Price Oracle which proxies to a backing oracle + * E.g. "PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) cETH cUSDC cSAI cDAI" `, "PriceOracleProxy", [ @@ -34,14 +34,16 @@ export async function buildPriceOracleProxy(world: World, from: string, event: E new Arg("priceOracle", getAddressV), new Arg("cETH", getAddressV), new Arg("cUSDC", getAddressV), + new Arg("cSAI", getAddressV), new Arg("cDAI", getAddressV) ], - async (world, {comptroller, priceOracle, cETH, cUSDC, cDAI}) => { + async (world, {comptroller, priceOracle, cETH, cUSDC, cSAI, cDAI}) => { return { - invokation: await PriceOracleProxyContract.deploy(world, from, [comptroller.val, priceOracle.val, cETH.val, cUSDC.val, cDAI.val]), + invokation: await PriceOracleProxyContract.deploy(world, from, [comptroller.val, priceOracle.val, cETH.val, cUSDC.val, cSAI.val, cDAI.val]), description: "Price Oracle Proxy", cETH: cETH.val, cUSDC: cUSDC.val, + cSAI: cSAI.val, cDAI: cDAI.val }; }, diff --git a/scenario/src/Command.ts b/scenario/src/Command.ts index 596e05f2c..c1227a48c 100644 --- a/scenario/src/Command.ts +++ b/scenario/src/Command.ts @@ -125,7 +125,7 @@ export abstract class Expression { [eventArg, ...restEventArgs] = currEvents; if (eventArg === undefined) { - if (arg.defaultValue) { + if (arg.defaultValue !== undefined) { val = arg.defaultValue; } else { throw new Error(`Missing argument ${arg.name} when processing ${this.name}`); diff --git a/scenario/src/Contract.ts b/scenario/src/Contract.ts index 7581937b1..7301d140e 100644 --- a/scenario/src/Contract.ts +++ b/scenario/src/Contract.ts @@ -26,6 +26,14 @@ export interface ABI { outputs: ABIOutput[] } +export interface ABIEvent { + anonymous: boolean; + inputs: ABIInput[]; + name: string; + type: string; + signature: string; +} + export interface Raw { data: string topics: string[] @@ -71,17 +79,15 @@ class ContractStub { const opts = world.web3.currentProvider.opts || {}; opts.from = from; - let {networkContracts} = await getNetworkContracts(world); - let networkContract = networkContracts[this.name]; + let networkContract = await getNetworkContract(world, this.name); if (!networkContract) { - throw new Error(`Cannot find contract ${this.name}, found: ${Object.keys(networkContracts)}`) + throw new Error(`Cannot find contract ${this.name}, found: ${Object.keys(networkContract)}`) } let invokationOpts = world.getInvokationOpts(opts); - let contractAbi = JSON.parse(networkContract.abi); - const contract = new world.web3.eth.Contract(contractAbi, null, opts); - const constructorAbi = contractAbi.find((x) => x.type === 'constructor'); + const contract = new world.web3.eth.Contract(networkContract.abi); + const constructorAbi = networkContract.abi.find((x) => x.type === 'constructor'); let inputs; if (constructorAbi) { @@ -199,6 +205,31 @@ export async function decodeCall(world: World, contract: Contract, input: string return world; } +async function getNetworkContract(world: World, name: string): Promise<{abi: any[], bin: string}> { + let basePath = world.basePath || "" + let network = world.network || "" + + let pizath = (name, ext) => path.join(basePath, 'networks', `${network}-contracts`, `${name}.${ext}`); + let abi, bin; + if ( network == 'coverage' ) { + let json = await readFile(pizath(name, 'json'), null, JSON.parse); + abi = json.abi; + bin = json.bytecode.substr(2); + } else { + let {networkContracts} = await getNetworkContracts(world); + let networkContract = networkContracts[name]; + abi = JSON.parse(networkContract.abi); + bin = networkContract.bin; + } + if (!bin) { + throw new Error(`no bin for contract ${name} ${network}`) + } + return { + abi: abi, + bin: bin + } +} + export async function getNetworkContracts(world: World): Promise<{networkContracts: object, version: string}> { let fullContracts = await readFile(getNetworkPath(world.basePath, world.network, '-contracts', 'json'), null, JSON.parse); let version = fullContracts.version; diff --git a/scenario/src/Contract/CErc20Delegate.ts b/scenario/src/Contract/CErc20Delegate.ts new file mode 100644 index 000000000..a805103f9 --- /dev/null +++ b/scenario/src/Contract/CErc20Delegate.ts @@ -0,0 +1,23 @@ +import { Contract } from '../Contract'; +import { Sendable } from '../Invokation'; +import { CTokenMethods, CTokenScenarioMethods } from './CToken'; + +interface CErc20DelegateMethods extends CTokenMethods { + _becomeImplementation(data: string): Sendable; + _resignImplementation(): Sendable; +} + +interface CErc20DelegateScenarioMethods extends CTokenScenarioMethods { + _becomeImplementation(data: string): Sendable; + _resignImplementation(): Sendable; +} + +export interface CErc20Delegate extends Contract { + methods: CErc20DelegateMethods; + name: string; +} + +export interface CErc20DelegateScenario extends Contract { + methods: CErc20DelegateScenarioMethods; + name: string; +} diff --git a/scenario/src/Contract/CErc20Delegator.ts b/scenario/src/Contract/CErc20Delegator.ts new file mode 100644 index 000000000..8787c414e --- /dev/null +++ b/scenario/src/Contract/CErc20Delegator.ts @@ -0,0 +1,28 @@ +import { Contract } from '../Contract'; +import { Callable, Sendable } from '../Invokation'; +import { CTokenMethods } from './CToken'; +import { encodedNumber } from '../Encoding'; + +interface CErc20DelegatorMethods extends CTokenMethods { + implementation(): Callable; + _setImplementation( + implementation_: string, + allowResign: boolean, + becomImplementationData: string + ): Sendable; +} + +interface CErc20DelegatorScenarioMethods extends CErc20DelegatorMethods { + setTotalBorrows(amount: encodedNumber): Sendable; + setTotalReserves(amount: encodedNumber): Sendable; +} + +export interface CErc20Delegator extends Contract { + methods: CErc20DelegatorMethods; + name: string; +} + +export interface CErc20DelegatorScenario extends Contract { + methods: CErc20DelegatorMethods; + name: string; +} diff --git a/scenario/src/Contract/CToken.ts b/scenario/src/Contract/CToken.ts index 85c7ce050..de002101d 100644 --- a/scenario/src/Contract/CToken.ts +++ b/scenario/src/Contract/CToken.ts @@ -1,57 +1,64 @@ -import {Contract} from '../Contract'; -import {Callable, Sendable} from '../Invokation'; -import {encodedNumber} from '../Encoding'; +import { Contract } from '../Contract'; +import { Callable, Sendable } from '../Invokation'; +import { encodedNumber } from '../Encoding'; -interface CTokenMethods { - balanceOfUnderlying(string): Callable - borrowBalanceCurrent(string): Callable - borrowBalanceStored(string): Callable - totalBorrows(): Callable - totalBorrowsCurrent(): Callable - totalReserves(): Callable - reserveFactorMantissa(): Callable - comptroller(): Callable - exchangeRateStored(): Sendable - exchangeRateCurrent(): Callable - accrueInterest(): Sendable - mint(): Sendable - mint(encodedNumber): Sendable - redeem(encodedNumber): Sendable - redeemUnderlying(encodedNumber): Sendable - borrow(encodedNumber): Sendable - repayBorrow(): Sendable - repayBorrow(encodedNumber): Sendable - repayBorrowBehalf(string): Sendable - repayBorrowBehalf(string, encodedNumber): Sendable - liquidateBorrow(borrower: string, cTokenCollateral: string): Sendable - liquidateBorrow(borrower: string, repayAmount: encodedNumber, cTokenCollateral: string): Sendable - seize(liquidator: string, borrower: string, seizeTokens: encodedNumber): Sendable - evilSeize(treasure: string, liquidator: string, borrower: string, seizeTokens: encodedNumber): Sendable - _reduceReserves(encodedNumber): Sendable - _setReserveFactor(encodedNumber): Sendable - _setInterestRateModel(string): Sendable - _setComptroller(string): Sendable - underlying(): Callable - interestRateModel(): Callable - borrowRatePerBlock(): Callable - donate(): Sendable - admin(): Callable - pendingAdmin(): Callable - _setPendingAdmin(string): Sendable - _acceptAdmin(): Sendable +export interface CTokenMethods { + balanceOfUnderlying(address: string): Callable; + borrowBalanceCurrent(address: string): Callable; + borrowBalanceStored(address: string): Callable; + totalBorrows(): Callable; + totalBorrowsCurrent(): Callable; + totalReserves(): Callable; + reserveFactorMantissa(): Callable; + comptroller(): Callable; + exchangeRateStored(): Sendable; + exchangeRateCurrent(): Callable; + getCash(): Callable; + accrueInterest(): Sendable; + mint(): Sendable; + mint(amount: encodedNumber): Sendable; + redeem(amount: encodedNumber): Sendable; + redeemUnderlying(amount: encodedNumber): Sendable; + borrow(amount: encodedNumber): Sendable; + repayBorrow(): Sendable; + repayBorrow(amount: encodedNumber): Sendable; + repayBorrowBehalf(amount: string): Sendable; + repayBorrowBehalf(address: string, amount: encodedNumber): Sendable; + liquidateBorrow(borrower: string, cTokenCollateral: string): Sendable; + liquidateBorrow(borrower: string, repayAmount: encodedNumber, cTokenCollateral: string): Sendable; + seize(liquidator: string, borrower: string, seizeTokens: encodedNumber): Sendable; + evilSeize( + treasure: string, + liquidator: string, + borrower: string, + seizeTokens: encodedNumber + ): Sendable; + _addReserves(amount: encodedNumber): Sendable; + _reduceReserves(amount: encodedNumber): Sendable; + _setReserveFactor(reserveFactor: encodedNumber): Sendable; + _setInterestRateModel(address: string): Sendable; + _setComptroller(address: string): Sendable; + underlying(): Callable; + interestRateModel(): Callable; + borrowRatePerBlock(): Callable; + donate(): Sendable; + admin(): Callable; + pendingAdmin(): Callable; + _setPendingAdmin(address: string): Sendable; + _acceptAdmin(): Sendable; } -interface CTokenScenarioMethods extends CTokenMethods { - setTotalBorrows(encodedNumber): Sendable - setTotalReserves(encodedNumber): Sendable +export interface CTokenScenarioMethods extends CTokenMethods { + setTotalBorrows(amount: encodedNumber): Sendable; + setTotalReserves(amount: encodedNumber): Sendable; } export interface CToken extends Contract { - methods: CTokenMethods - name: string + methods: CTokenMethods; + name: string; } export interface CTokenScenario extends Contract { - methods: CTokenScenarioMethods - name: string + methods: CTokenScenarioMethods; + name: string; } diff --git a/scenario/src/Contract/Erc20.ts b/scenario/src/Contract/Erc20.ts index 31ff9d39c..914cd408a 100644 --- a/scenario/src/Contract/Erc20.ts +++ b/scenario/src/Contract/Erc20.ts @@ -16,6 +16,7 @@ interface Erc20Methods { setFail(fail: boolean): Sendable pause(): Sendable unpause(): Sendable + setParams(newBasisPoints: encodedNumber, maxFee: encodedNumber): Sendable } export interface Erc20 extends Contract { diff --git a/scenario/src/Contract/InterestRateModel.ts b/scenario/src/Contract/InterestRateModel.ts index dd49ead05..a9936eed3 100644 --- a/scenario/src/Contract/InterestRateModel.ts +++ b/scenario/src/Contract/InterestRateModel.ts @@ -3,7 +3,7 @@ import {Callable, Sendable} from '../Invokation'; import {encodedNumber} from '../Encoding'; interface InterestRateModelMethods { - getBorrowRate(cash: encodedNumber, borrows: encodedNumber, reserves: encodedNumber): Callable<{0: number, 1: number}> + getBorrowRate(cash: encodedNumber, borrows: encodedNumber, reserves: encodedNumber): Callable<{0: number}> } export interface InterestRateModel extends Contract { diff --git a/scenario/src/Contract/Pot.ts b/scenario/src/Contract/Pot.ts new file mode 100644 index 000000000..3f0f70106 --- /dev/null +++ b/scenario/src/Contract/Pot.ts @@ -0,0 +1,19 @@ +import { Contract } from '../Contract'; +import { Callable, Sendable } from '../Invokation'; +import { encodedNumber } from '../Encoding'; + +interface PotMethods { + chi(): Callable; + dsr(): Callable; + rho(): Callable; + pie(address: string): Callable; + drip(): Sendable; + file(what: string, data: encodedNumber): Sendable; + join(amount: encodedNumber): Sendable; + exit(amount: encodedNumber): Sendable; +} + +export interface Pot extends Contract { + methods: PotMethods; + name: string; +} diff --git a/scenario/src/Contract/Vat.ts b/scenario/src/Contract/Vat.ts new file mode 100644 index 000000000..0a0a9a76e --- /dev/null +++ b/scenario/src/Contract/Vat.ts @@ -0,0 +1,14 @@ +import { Contract } from '../Contract'; +import { Callable, Sendable } from '../Invokation'; +import { encodedNumber } from '../Encoding'; + +interface VatMethods { + dai(address: string): Callable; + hope(address: string): Sendable; + move(src: string, dst: string, amount: encodedNumber): Sendable; +} + +export interface Vat extends Contract { + methods: VatMethods; + name: string; +} diff --git a/scenario/src/ContractLookup.ts b/scenario/src/ContractLookup.ts index 8a006629c..338cb0c65 100644 --- a/scenario/src/ContractLookup.ts +++ b/scenario/src/ContractLookup.ts @@ -6,6 +6,7 @@ import { accountMap } from './Accounts'; import { Contract } from './Contract'; import { mustString } from './Utils'; +import { CErc20Delegate } from './Contract/CErc20Delegate'; import { Comptroller } from './Contract/Comptroller'; import { ComptrollerImpl } from './Contract/ComptrollerImpl'; import { CToken } from './Contract/CToken'; @@ -94,6 +95,10 @@ export function getCTokenAddress(world: World, cTokenArg: string): string { return getContractDataString(world, [['cTokens', cTokenArg, 'address']]); } +export function getCTokenDelegateAddress(world: World, cTokenDelegateArg: string): string { + return getContractDataString(world, [['CTokenDelegate', cTokenDelegateArg, 'address']]); +} + export function getErc20Address(world: World, erc20Arg: string): string { return getContractDataString(world, [['Tokens', erc20Arg, 'address']]); } @@ -143,6 +148,16 @@ export async function getCTokenData( return [contract, cTokenArg, >(data)]; } +export async function getCTokenDelegateData( + world: World, + cTokenDelegateArg: string +): Promise<[CErc20Delegate, string, Map]> { + let contract = getWorldContract(world, [['CTokenDelegate', cTokenDelegateArg, 'address']]); + let data = getContractData(world, [['CTokenDelegate', cTokenDelegateArg]]); + + return [contract, cTokenDelegateArg, >(data)]; +} + export async function getComptrollerImplData( world: World, comptrollerImplArg: string @@ -177,6 +192,7 @@ export function getAddress(world: World, addressArg: string): string { return getContractDataString(world, [ ['Contracts', addressArg], ['cTokens', addressArg, 'address'], + ['CTokenDelegate', addressArg, 'address'], ['Tokens', addressArg, 'address'], ['Comptroller', addressArg, 'address'] ]); diff --git a/scenario/src/CoreEvent.ts b/scenario/src/CoreEvent.ts index 18114da88..16f08fb4c 100644 --- a/scenario/src/CoreEvent.ts +++ b/scenario/src/CoreEvent.ts @@ -1,3 +1,4 @@ +import { loadAccounts } from './Accounts'; import { addAction, checkExpectations, @@ -17,6 +18,7 @@ import { comptrollerCommands, processComptrollerEvent } from './Event/Comptrolle import { processUnitrollerEvent, unitrollerCommands } from './Event/UnitrollerEvent'; import { comptrollerImplCommands, processComptrollerImplEvent } from './Event/ComptrollerImplEvent'; import { cTokenCommands, processCTokenEvent } from './Event/CTokenEvent'; +import { cTokenDelegateCommands, processCTokenDelegateEvent } from './Event/CTokenDelegateEvent'; import { erc20Commands, processErc20Event } from './Event/Erc20Event'; import { interestRateModelCommands, processInterestRateModelEvent } from './Event/InterestRateModelEvent'; import { priceOracleCommands, processPriceOracleEvent } from './Event/PriceOracleEvent'; @@ -29,10 +31,12 @@ import { processTrxEvent, trxCommands } from './Event/TrxEvent'; import { fetchers, getCoreValue } from './CoreValue'; import { formatEvent } from './Formatter'; import { fallback } from './Invokation'; -import { sleep } from './Utils'; +import { sendRPC, sleep } from './Utils'; import { Map } from 'immutable'; import { encodedNumber } from './Encoding'; import { printHelp } from './Help'; +import Ganache from 'ganache-core'; +import Web3 from 'web3'; export class EventProcessingError extends Error { error: Error; @@ -181,6 +185,49 @@ export const commands = [ [new Arg('message', getStringV)], async (world, { message }) => print(world, message.val) ), + new View<{}>( + ` + #### PrintTransactionLogs + + * "PrintTransactionLogs" - Prints logs from all transacions + `, + 'PrintTransactionLogs', + [], + async (world, { }) => { + return await world.updateSettings(async settings => { + settings.printTxLogs = true; + + return settings; + }); + } + ), + new View<{ fork: StringV; unlockedAccounts: AddressV[] }>( + ` + #### Web3Fork + + * "Web3Fork fork: unlockedAccounts:[]" - Creates an in-memory ganache + * E.g. "Web3Fork \"https://mainnet.infura.io/v3/e1a5d4d2c06a4e81945fca56d0d5d8ea\" (\"0x8b8592e9570e96166336603a1b4bd1e8db20fa20\")" + `, + 'Web3Fork', + [new Arg('fork', getStringV), new Arg('unlockedAccounts', getAddressV, { mapped: true })], + async (world, { fork, unlockedAccounts }) => { + let lastBlock = await world.web3.eth.getBlock("latest") + const newWeb3 = new Web3( + Ganache.provider({ + allowUnlimitedContractSize: true, + fork: fork.val, + gasLimit: lastBlock.gasLimit, // maintain configured gas limit + gasPrice: '20000', + port: 8546, + unlocked_accounts: unlockedAccounts.map(v => v.val) + }) + ); + const newAccounts = loadAccounts(await newWeb3.eth.getAccounts()) + return world + .set('web3', newWeb3) + .set('accounts', newAccounts); + } + ), new View<{ address: AddressV }>( ` #### MyAddress @@ -215,6 +262,7 @@ export const commands = [ }); } ), + new View<{ name: StringV; address: AddressV }>( ` #### Aliases @@ -232,6 +280,38 @@ export const commands = [ return world; } ), + + new View<{ seconds: NumberV }>( + ` + #### IncreaseTime + + * "IncreaseTime seconds:" - Increase Ganache evm time by a number of seconds + * E.g. "IncreaseTime 60" + `, + 'IncreaseTime', + [new Arg('seconds', getNumberV)], + async (world, { seconds }) => { + await sendRPC(world, 'evm_increaseTime', [Number(seconds.val)]); + await sendRPC(world, 'evm_mine', []); + return world; + } + ), + + new View<{ timestamp: NumberV }>( + ` + #### SetTime + + * "SetTime timestamp:" - Increase Ganache evm time to specific timestamp + * E.g. "SetTime 1573597400" + `, + 'SetTime', + [new Arg('timestamp', getNumberV)], + async (world, { timestamp }) => { + await sendRPC(world, 'evm_mine', [timestamp.val]); + return world; + } + ), + new View<{}>( ` #### Inspect @@ -240,8 +320,9 @@ export const commands = [ `, 'Inspect', [], - async (world, {}) => inspect(world, null) + async (world, { }) => inspect(world, null) ), + new View<{ message: StringV }>( ` #### Debug @@ -252,6 +333,7 @@ export const commands = [ [new Arg('message', getStringV)], async (world, { message }) => inspect(world, message.val) ), + new View<{ account: AddressV; event: EventV }>( ` #### From @@ -263,6 +345,7 @@ export const commands = [ [new Arg('account', getAddressV), new Arg('event', getEventV)], async (world, { account, event }) => processCoreEvent(world, event.val, account.val) ), + new Command<{ event: EventV }>( ` #### Trx @@ -275,6 +358,7 @@ export const commands = [ async (world, from, { event }) => processTrxEvent(world, event.val, from), { subExpressions: trxCommands() } ), + new Command<{ event: EventV }>( ` #### Invariant @@ -287,6 +371,7 @@ export const commands = [ async (world, from, { event }) => processInvariantEvent(world, event.val, from), { subExpressions: invariantCommands() } ), + new Command<{ event: EventV }>( ` #### Expect @@ -299,6 +384,7 @@ export const commands = [ async (world, from, { event }) => processExpectationEvent(world, event.val, from), { subExpressions: expectationCommands() } ), + new View<{ type: StringV }>( ` #### HoldInvariants @@ -314,6 +400,7 @@ export const commands = [ [new Arg('type', getStringV, { default: new StringV('All') })], async (world, { type }) => holdInvariants(world, type.val) ), + new View<{ type: StringV }>( ` #### ClearInvariants @@ -329,6 +416,7 @@ export const commands = [ [new Arg('type', getStringV, { default: new StringV('All') })], async (world, { type }) => clearInvariants(world, type.val) ), + new Command<{ event: EventV }>( ` #### Assert @@ -341,6 +429,7 @@ export const commands = [ async (world, from, { event }) => processAssertionEvent(world, event.val, from), { subExpressions: assertionCommands() } ), + new Command<{ gate: Value; event: EventV }>( ` #### Gate @@ -358,6 +447,7 @@ export const commands = [ } } ), + new Command<{ given: Value; event: EventV }>( ` #### Given @@ -375,6 +465,7 @@ export const commands = [ } } ), + new Command<{ address: AddressV; amount: NumberV }>( ` #### Send @@ -386,6 +477,7 @@ export const commands = [ [new Arg('address', getAddressV), new Arg('amount', getNumberV)], (world, from, { address, amount }) => sendEther(world, from, address.val, amount.encode()) ), + new Command<{ event: EventV }>( ` #### Unitroller @@ -398,6 +490,7 @@ export const commands = [ (world, from, { event }) => processUnitrollerEvent(world, event.val, from), { subExpressions: unitrollerCommands() } ), + new Command<{ event: EventV }>( ` #### Comptroller @@ -410,6 +503,7 @@ export const commands = [ (world, from, { event }) => processComptrollerEvent(world, event.val, from), { subExpressions: comptrollerCommands() } ), + new Command<{ event: EventV }>( ` #### ComptrollerImpl @@ -422,6 +516,7 @@ export const commands = [ (world, from, { event }) => processComptrollerImplEvent(world, event.val, from), { subExpressions: comptrollerImplCommands() } ), + new Command<{ event: EventV }>( ` #### CToken @@ -434,6 +529,20 @@ export const commands = [ (world, from, { event }) => processCTokenEvent(world, event.val, from), { subExpressions: cTokenCommands() } ), + + new Command<{ event: EventV }>( + ` + #### CTokenDelegate + + * "CTokenDelegate ...event" - Runs given CTokenDelegate event + * E.g. "CTokenDelegate Deploy CDaiDelegate cDaiDelegate" + `, + 'CTokenDelegate', + [new Arg('event', getEventV, { variadic: true })], + (world, from, { event }) => processCTokenDelegateEvent(world, event.val, from), + { subExpressions: cTokenDelegateCommands() } + ), + new Command<{ event: EventV }>( ` #### Erc20 @@ -446,6 +555,7 @@ export const commands = [ (world, from, { event }) => processErc20Event(world, event.val, from), { subExpressions: erc20Commands() } ), + new Command<{ event: EventV }>( ` #### InterestRateModel @@ -458,6 +568,7 @@ export const commands = [ (world, from, { event }) => processInterestRateModelEvent(world, event.val, from), { subExpressions: interestRateModelCommands() } ), + new Command<{ event: EventV }>( ` #### PriceOracle @@ -470,6 +581,7 @@ export const commands = [ (world, from, { event }) => processPriceOracleEvent(world, event.val, from), { subExpressions: priceOracleCommands() } ), + new Command<{ event: EventV }>( ` #### PriceOracleProxy @@ -484,6 +596,7 @@ export const commands = [ }, { subExpressions: priceOracleProxyCommands() } ), + new Command<{ event: EventV }>( ` #### Maximillion @@ -498,6 +611,7 @@ export const commands = [ }, { subExpressions: maximillionCommands() } ), + new Command<{ event: EventV }>( ` #### Timelock @@ -512,6 +626,7 @@ export const commands = [ }, { subExpressions: timelockCommands() } ), + new View<{ event: EventV }>( ` #### Help diff --git a/scenario/src/CoreValue.ts b/scenario/src/CoreValue.ts index 6047d52d4..851ddb83f 100644 --- a/scenario/src/CoreValue.ts +++ b/scenario/src/CoreValue.ts @@ -21,7 +21,9 @@ import { comptrollerFetchers, getComptrollerValue } from './Value/ComptrollerVal import { comptrollerImplFetchers, getComptrollerImplValue } from './Value/ComptrollerImplValue'; import { getUnitrollerValue, unitrollerFetchers } from './Value/UnitrollerValue'; import { cTokenFetchers, getCTokenValue } from './Value/CTokenValue'; +import { cTokenDelegateFetchers, getCTokenDelegateValue } from './Value/CTokenDelegateValue'; import { erc20Fetchers, getErc20Value } from './Value/Erc20Value'; +import { mcdFetchers, getMCDValue } from './Value/MCDValue'; import { getInterestRateModelValue, interestRateModelFetchers } from './Value/InterestRateModelValue'; import { getPriceOracleValue, priceOracleFetchers } from './Value/PriceOracleValue'; import { getPriceOracleProxyValue, priceOracleProxyFetchers } from './Value/PriceOracleProxyValue'; @@ -202,6 +204,7 @@ export const fetchers = [ [], async (world, {}) => new BoolV(true) ), + new Fetcher<{}, BoolV>( ` #### False @@ -212,6 +215,7 @@ export const fetchers = [ [], async (world, {}) => new BoolV(false) ), + new Fetcher<{}, NumberV>( ` #### Zero @@ -222,6 +226,7 @@ export const fetchers = [ [], async (world, {}) => strToNumberV('0') ), + new Fetcher<{}, NumberV>( ` #### Max @@ -233,6 +238,7 @@ export const fetchers = [ async (world, {}) => new NumberV('115792089237316195423570985008687907853269984665640564039457584007913129639935') ), + new Fetcher<{}, NumberV>( ` #### Some @@ -243,6 +249,7 @@ export const fetchers = [ [], async (world, {}) => strToNumberV('100e18') ), + new Fetcher<{}, NumberV>( ` #### Little @@ -253,6 +260,7 @@ export const fetchers = [ [], async (world, {}) => strToNumberV('100e10') ), + new Fetcher<{ amt: EventV }, NumberV>( ` #### Exactly @@ -263,7 +271,8 @@ export const fetchers = [ 'Exactly', [new Arg('amt', getEventV)], async (world, { amt }) => getNumberV(world, amt.val) - ), + ), + new Fetcher<{ hexVal: EventV }, StringV>( ` #### Hex @@ -275,6 +284,7 @@ export const fetchers = [ [new Arg('hexVal', getEventV)], async (world, { hexVal }) => getStringV(world, hexVal.val) ), + new Fetcher<{ str: EventV }, StringV>( ` #### String @@ -286,6 +296,7 @@ export const fetchers = [ [new Arg('str', getEventV)], async (world, { str }) => getStringV(world, str.val) ), + new Fetcher<{ amt: EventV }, NumberV>( ` #### Exp @@ -297,17 +308,31 @@ export const fetchers = [ [new Arg('amt', getEventV)], async (world, { amt }) => getExpNumberV(world, amt.val) ), + + new Fetcher<{ amt: EventV }, NumberV>( + ` + #### Neg + + * "Neg " - Returns the amount subtracted from zero + * E.g. "Neg amount" + `, + 'Neg', + [new Arg('amt', getEventV)], + async (world, { amt }) => new NumberV(0).sub(await getNumberV(world, amt.val)) + ), + new Fetcher<{ amt: StringV }, PreciseV>( ` #### Precisely * "Precisely " - Matches a number to given number of significant figures - * E.g. "Exactly 5.1000" - Matches to 5 sig figs + * E.g. "Precisely 5.1000" - Matches to 5 sig figs `, 'Precisely', [new Arg('amt', getStringV)], async (world, { amt }) => new PreciseV(toEncodableNum(amt.val), getSigFigs(amt.val)) ), + new Fetcher<{}, AnythingV>( ` #### Anything @@ -318,6 +343,7 @@ export const fetchers = [ [], async (world, {}) => new AnythingV() ), + new Fetcher<{}, NothingV>( ` #### Nothing @@ -328,6 +354,7 @@ export const fetchers = [ [], async (world, {}) => new NothingV() ), + new Fetcher<{ addr: AddressV }, AddressV>( ` #### Address @@ -338,6 +365,7 @@ export const fetchers = [ [new Arg('addr', getAddressV)], async (world, { addr }) => addr ), + new Fetcher< { addr: AddressV; slot: NumberV; start: NumberV; valType: StringV }, BoolV | AddressV | ExpNumberV | undefined @@ -690,6 +718,33 @@ export const fetchers = [ [new Arg('given', getCoreValue), new Arg('expected', getCoreValue)], async (world, { given, expected }) => new BoolV(expected.compareTo(world, given)) ), + new Fetcher< + { + argTypes: StringV[]; + args: StringV[]; + }, + StringV + >( + ` + #### EncodeParameters + + * "EncodeParameters (...argTypes:) (...args:) + * E.g. "EncodeParameters (\"address\" \"address\") (\"0xabc\" \"0x123\") + `, + 'EncodeParameters', + [ + new Arg('argTypes', getStringV, { mapped: true }), + new Arg('args', getStringV, { mapped: true }) + ], + async (world, { argTypes, args }) => { + const realArgs = args.map((a, i) => { + if (argTypes[i].val == 'address') + return getAddress(world, a.val); + return a.val; + }); + return new StringV(world.web3.eth.abi.encodeParameters(argTypes.map(t => t.val), realArgs)); + } + ), new Fetcher<{ res: Value }, Value>( ` #### Unitroller @@ -734,6 +789,17 @@ export const fetchers = [ async (world, { res }) => res, { subExpressions: cTokenFetchers() } ), + new Fetcher<{ res: Value }, Value>( + ` + #### CTokenDelegate + + * "CTokenDelegate ...cTokenDelegateArgs" - Returns cToken delegate value + `, + 'CTokenDelegate', + [new Arg('res', getCTokenDelegateValue, { variadic: true })], + async (world, { res }) => res, + { subExpressions: cTokenDelegateFetchers() } + ), new Fetcher<{ res: Value }, Value>( ` #### Erc20 @@ -799,6 +865,17 @@ export const fetchers = [ [new Arg('res', getMaximillionValue, { variadic: true })], async (world, { res }) => res, { subExpressions: maximillionFetchers() } + ), + new Fetcher<{ res: Value }, Value>( + ` + #### MCD + + * "MCD ...mcdArgs" - Returns MCD value + `, + 'MCD', + [new Arg('res', getMCDValue, { variadic: true })], + async (world, { res }) => res, + { subExpressions: mcdFetchers() } ) ]; diff --git a/scenario/src/ErrorReporterConstants.ts b/scenario/src/ErrorReporterConstants.ts index 159180659..f404a731c 100644 --- a/scenario/src/ErrorReporterConstants.ts +++ b/scenario/src/ErrorReporterConstants.ts @@ -156,7 +156,10 @@ const TokenErrorReporter = { 'TRANSFER_COMPTROLLER_REJECTION', 'TRANSFER_NOT_ALLOWED', 'TRANSFER_NOT_ENOUGH', - 'TRANSFER_TOO_MUCH' + 'TRANSFER_TOO_MUCH', + 'ADD_RESERVES_ACCRUE_INTEREST_FAILED', + 'ADD_RESERVES_FRESH_CHECK', + 'ADD_RESERVES_TRANSFER_IN_NOT_POSSIBLE' ] }; diff --git a/scenario/src/Event/AssertionEvent.ts b/scenario/src/Event/AssertionEvent.ts index 0fa52505f..e907394c9 100644 --- a/scenario/src/Event/AssertionEvent.ts +++ b/scenario/src/Event/AssertionEvent.ts @@ -25,6 +25,14 @@ import { } from '../Value'; import {Arg, View, processCommandEvent} from '../Command'; +async function assertApprox(world: World, given: NumberV, expected: NumberV, tolerance: NumberV): Promise { + if (Math.abs(Number(expected.sub(given).div(expected).val)) > Number(tolerance.val)) { + return fail(world, `Expected ${given.toString()} to approximately equal ${expected.toString()} within ${tolerance.toString()}`); + } + + return world; +} + async function assertEqual(world: World, given: Value, expected: Value): Promise { if (!expected.compareTo(world, given)) { return fail(world, `Expected ${given.toString()} to equal ${expected.toString()}`); @@ -186,6 +194,23 @@ async function assertLog(world: World, event: string, keyValues: MapV): Promise< export function assertionCommands() { return [ + new View<{given: NumberV, expected: NumberV, tolerance: NumberV}>(` + #### Approx + + * "Approx given: expected: tolerance:" - Asserts that given approximately matches expected. + * E.g. "Assert Approx (Exactly 0) Zero " + * E.g. "Assert Approx (CToken cZRX TotalSupply) (Exactly 55) 1e-18" + * E.g. "Assert Approx (CToken cZRX Comptroller) (Comptroller Address) 1" + `, + "Approx", + [ + new Arg("given", getNumberV), + new Arg("expected", getNumberV), + new Arg("tolerance", getNumberV, {default: new NumberV(0.001)}) + ], + (world, {given, expected, tolerance}) => assertApprox(world, given, expected, tolerance) + ), + new View<{given: Value, expected: Value}>(` #### Equal @@ -196,15 +221,16 @@ export function assertionCommands() { `, "Equal", [ - new Arg("given", getCoreValue), + new Arg("given", getCoreValue), new Arg("expected", getCoreValue) ], (world, {given, expected}) => assertEqual(world, given, expected) ), + new View<{given: Value, expected: Value}>(` #### LessThan - * "given: LastThan expected:" - Asserts that given matches expected. + * "given: LessThan expected:" - Asserts that given matches expected. * E.g. "Assert (Exactly 0) LessThan (Exactly 1)" `, "LessThan", @@ -215,6 +241,7 @@ export function assertionCommands() { (world, {given, expected}) => assertLessThan(world, given, expected), {namePos: 1} ), + new View<{given: Value}>(` #### True @@ -227,6 +254,7 @@ export function assertionCommands() { ], (world, {given}) => assertEqual(world, given, new BoolV(true)) ), + new View<{given: Value}>(` #### False @@ -252,6 +280,7 @@ export function assertionCommands() { ], (world, {event, message}) => assertReadError(world, event.val, message.val, true) ), + new View<{event: EventV, message: StringV}>(` #### ReadError @@ -265,6 +294,7 @@ export function assertionCommands() { ], (world, {event, message}) => assertReadError(world, event.val, message.val, false) ), + new View<{error: StringV, info: StringV, detail: StringV}>(` #### Failure @@ -280,6 +310,7 @@ export function assertionCommands() { ], (world, {error, info, detail}) => assertFailure(world, new Failure(error.val, info.val, detail.val)) ), + new View<{error: StringV, message: StringV}>(` #### RevertFailure @@ -293,6 +324,7 @@ export function assertionCommands() { ], (world, {error, message}) => assertRevertFailure(world, error.val, message.val) ), + new View<{message: StringV}>(` #### Revert @@ -304,6 +336,7 @@ export function assertionCommands() { ], (world, {message}) => assertRevert(world, message.val) ), + new View<{message: StringV}>(` #### Error @@ -315,6 +348,7 @@ export function assertionCommands() { ], (world, {message}) => assertError(world, message.val) ), + new View<{given: Value}>(` #### Success @@ -324,6 +358,7 @@ export function assertionCommands() { [], (world, {given}) => assertSuccess(world) ), + new View<{name: StringV, params: MapV}>(` #### Log diff --git a/scenario/src/Event/CTokenDelegateEvent.ts b/scenario/src/Event/CTokenDelegateEvent.ts new file mode 100644 index 000000000..30f6ec966 --- /dev/null +++ b/scenario/src/Event/CTokenDelegateEvent.ts @@ -0,0 +1,86 @@ +import { Event } from '../Event'; +import { addAction, describeUser, World } from '../World'; +import { decodeCall, getPastEvents } from '../Contract'; +import { CToken, CTokenScenario } from '../Contract/CToken'; +import { CErc20Delegate } from '../Contract/CErc20Delegate' +import { invoke, Sendable } from '../Invokation'; +import { + getAddressV, + getEventV, + getExpNumberV, + getNumberV, + getStringV, + getBoolV +} from '../CoreValue'; +import { + AddressV, + BoolV, + EventV, + NothingV, + NumberV, + StringV +} from '../Value'; +import { Arg, Command, View, processCommandEvent } from '../Command'; +import { getCTokenDelegateData } from '../ContractLookup'; +import { buildCTokenDelegate } from '../Builder/CTokenDelegateBuilder'; +import { verify } from '../Verify'; + +async function genCTokenDelegate(world: World, from: string, event: Event): Promise { + let { world: nextWorld, cTokenDelegate, delegateData } = await buildCTokenDelegate(world, from, event); + world = nextWorld; + + world = addAction( + world, + `Added cToken ${delegateData.name} (${delegateData.contract}) at address ${cTokenDelegate._address}`, + delegateData.invokation + ); + + return world; +} + +async function verifyCTokenDelegate(world: World, cTokenDelegate: CErc20Delegate, name: string, contract: string, apiKey: string): Promise { + if (world.isLocalNetwork()) { + world.printer.printLine(`Politely declining to verify on local network: ${world.network}.`); + } else { + await verify(world, apiKey, name, contract, cTokenDelegate._address); + } + + return world; +} + +export function cTokenDelegateCommands() { + return [ + new Command<{ cTokenDelegateParams: EventV }>(` + #### Deploy + + * "CTokenDelegate Deploy ...cTokenDelegateParams" - Generates a new CTokenDelegate + * E.g. "CTokenDelegate Deploy CDaiDelegate cDAIDelegate" + `, + "Deploy", + [new Arg("cTokenDelegateParams", getEventV, { variadic: true })], + (world, from, { cTokenDelegateParams }) => genCTokenDelegate(world, from, cTokenDelegateParams.val) + ), + new View<{ cTokenDelegateArg: StringV, apiKey: StringV }>(` + #### Verify + + * "CTokenDelegate Verify apiKey:" - Verifies CTokenDelegate in Etherscan + * E.g. "CTokenDelegate cDaiDelegate Verify "myApiKey" + `, + "Verify", + [ + new Arg("cTokenDelegateArg", getStringV), + new Arg("apiKey", getStringV) + ], + async (world, { cTokenDelegateArg, apiKey }) => { + let [cToken, name, data] = await getCTokenDelegateData(world, cTokenDelegateArg.val); + + return await verifyCTokenDelegate(world, cToken, name, data.get('contract')!, apiKey.val); + }, + { namePos: 1 } + ), + ]; +} + +export async function processCTokenDelegateEvent(world: World, event: Event, from: string | null): Promise { + return await processCommandEvent("CTokenDelegate", cTokenDelegateCommands(), world, event, from); +} diff --git a/scenario/src/Event/CTokenEvent.ts b/scenario/src/Event/CTokenEvent.ts index 119ddcfcb..db234af0e 100644 --- a/scenario/src/Event/CTokenEvent.ts +++ b/scenario/src/Event/CTokenEvent.ts @@ -1,37 +1,42 @@ -import {Event} from '../Event'; -import {addAction, describeUser, World} from '../World'; -import {decodeCall, getPastEvents} from '../Contract'; -import {CToken, CTokenScenario} from '../Contract/CToken'; -import {invoke, Sendable} from '../Invokation'; +import { Event } from '../Event'; +import { addAction, describeUser, World } from '../World'; +import { decodeCall, getPastEvents } from '../Contract'; +import { CToken, CTokenScenario } from '../Contract/CToken'; +import { CErc20Delegate } from '../Contract/CErc20Delegate' +import { CErc20Delegator } from '../Contract/CErc20Delegator' +import { invoke, Sendable } from '../Invokation'; import { getAddressV, getEventV, getExpNumberV, getNumberV, - getStringV + getStringV, + getBoolV } from '../CoreValue'; import { AddressV, + BoolV, EventV, NothingV, NumberV, - StringV} from '../Value'; -import {Arg, Command, View, processCommandEvent} from '../Command'; -import {CTokenErrorReporter} from '../ErrorReporter'; -import {getComptroller, getCTokenData} from '../ContractLookup'; -import {getExpMantissa} from '../Encoding'; -import {buildCToken} from '../Builder/CTokenBuilder'; -import {verify} from '../Verify'; -import {getLiquidity} from '../Value/ComptrollerValue'; -import {encodedNumber} from '../Encoding'; -import {getCTokenV} from '../Value/CTokenValue'; + StringV +} from '../Value'; +import { Arg, Command, View, processCommandEvent } from '../Command'; +import { CTokenErrorReporter } from '../ErrorReporter'; +import { getComptroller, getCTokenData } from '../ContractLookup'; +import { getExpMantissa } from '../Encoding'; +import { buildCToken } from '../Builder/CTokenBuilder'; +import { verify } from '../Verify'; +import { getLiquidity } from '../Value/ComptrollerValue'; +import { encodedNumber } from '../Encoding'; +import { getCTokenV } from '../Value/CTokenValue'; function showTrxValue(world: World): string { return new NumberV(world.trxInvokationOpts.get('value')).show(); } async function genCToken(world: World, from: string, event: Event): Promise { - let {world: nextWorld, cToken, tokenData} = await buildCToken(world, from, event); + let { world: nextWorld, cToken, tokenData } = await buildCToken(world, from, event); world = nextWorld; world = addAction( @@ -223,6 +228,18 @@ async function acceptAdmin(world: World, from: string, cToken: CToken): Promise< return world; } +async function addReserves(world: World, from: string, cToken: CToken, amount: NumberV): Promise { + let invokation = await invoke(world, cToken.methods._addReserves(amount.encode()), from, CTokenErrorReporter); + + world = addAction( + world, + `CToken ${cToken.name}: ${describeUser(world, from)} adds to reserves by ${amount.show()}`, + invokation + ); + + return world; +} + async function reduceReserves(world: World, from: string, cToken: CToken, amount: NumberV): Promise { let invokation = await invoke(world, cToken.methods._reduceReserves(amount.encode()), from, CTokenErrorReporter); @@ -271,6 +288,64 @@ async function setComptroller(world: World, from: string, cToken: CToken, comptr return world; } +async function becomImplementation( + world: World, + from: string, + cToken: CToken, + becomeImplementationData: string +): Promise { + let invokation = await invoke( + world, + (cToken as CErc20Delegate).methods._becomeImplementation( + becomeImplementationData + ), + from, + CTokenErrorReporter + ); + + world = addAction( + world, + `CToken ${cToken.name}: ${describeUser( + world, + from + )} initiates _becomeImplementation with data:${becomeImplementationData}.`, + invokation + ); + + return world; +} + +async function setImplementation( + world: World, + from: string, + cToken: CToken, + implementation: string, + allowResign: boolean, + becomeImplementationData: string +): Promise { + let invokation = await invoke( + world, + (cToken as CErc20Delegator).methods._setImplementation( + implementation, + allowResign, + becomeImplementationData + ), + from, + CTokenErrorReporter + ); + + world = addAction( + world, + `CToken ${cToken.name}: ${describeUser( + world, + from + )} initiates setImplementation with implementation:${implementation} allowResign:${allowResign} data:${becomeImplementationData}.`, + invokation + ); + + return world; +} + async function donate(world: World, from: string, cToken: CToken): Promise { let invokation = await invoke(world, cToken.methods.donate(), from, CTokenErrorReporter); @@ -371,17 +446,17 @@ async function printLiquidity(world: World, cToken: CToken): Promise { export function cTokenCommands() { return [ - new Command<{cTokenParams: EventV}>(` + new Command<{ cTokenParams: EventV }>(` #### Deploy * "CToken Deploy ...cTokenParams" - Generates a new CToken * E.g. "CToken cZRX Deploy" `, "Deploy", - [new Arg("cTokenParams", getEventV, {variadic: true})], - (world, from, {cTokenParams}) => genCToken(world, from, cTokenParams.val) + [new Arg("cTokenParams", getEventV, { variadic: true })], + (world, from, { cTokenParams }) => genCToken(world, from, cTokenParams.val) ), - new View<{cTokenArg: StringV, apiKey: StringV}>(` + new View<{ cTokenArg: StringV, apiKey: StringV }>(` #### Verify * "CToken Verify apiKey:" - Verifies CToken in Etherscan @@ -392,14 +467,14 @@ export function cTokenCommands() { new Arg("cTokenArg", getStringV), new Arg("apiKey", getStringV) ], - async (world, {cTokenArg, apiKey}) => { + async (world, { cTokenArg, apiKey }) => { let [cToken, name, data] = await getCTokenData(world, cTokenArg.val); return await verifyCToken(world, cToken, name, data.get('contract')!, apiKey.val); }, - {namePos: 1} + { namePos: 1 } ), - new Command<{cToken: CToken}>(` + new Command<{ cToken: CToken }>(` #### AccrueInterest * "CToken AccrueInterest" - Accrues interest for given token @@ -409,10 +484,10 @@ export function cTokenCommands() { [ new Arg("cToken", getCTokenV) ], - (world, from, {cToken}) => accrueInterest(world, from, cToken), - {namePos: 1} + (world, from, { cToken }) => accrueInterest(world, from, cToken), + { namePos: 1 } ), - new Command<{cToken: CToken, amount: NumberV | NothingV}>(` + new Command<{ cToken: CToken, amount: NumberV | NothingV }>(` #### Mint * "CToken Mint amount:" - Mints the given amount of cToken as specified user @@ -421,12 +496,12 @@ export function cTokenCommands() { "Mint", [ new Arg("cToken", getCTokenV), - new Arg("amount", getNumberV, {nullable: true}) + new Arg("amount", getNumberV, { nullable: true }) ], - (world, from, {cToken, amount}) => mint(world, from, cToken, amount), - {namePos: 1} + (world, from, { cToken, amount }) => mint(world, from, cToken, amount), + { namePos: 1 } ), - new Command<{cToken: CToken, tokens: NumberV}>(` + new Command<{ cToken: CToken, tokens: NumberV }>(` #### Redeem * "CToken Redeem tokens:" - Redeems the given amount of cTokens as specified user @@ -437,10 +512,10 @@ export function cTokenCommands() { new Arg("cToken", getCTokenV), new Arg("tokens", getNumberV) ], - (world, from, {cToken, tokens}) => redeem(world, from, cToken, tokens), - {namePos: 1} + (world, from, { cToken, tokens }) => redeem(world, from, cToken, tokens), + { namePos: 1 } ), - new Command<{cToken: CToken, amount: NumberV}>(` + new Command<{ cToken: CToken, amount: NumberV }>(` #### RedeemUnderlying * "CToken RedeemUnderlying amount:" - Redeems the given amount of underlying as specified user @@ -451,10 +526,10 @@ export function cTokenCommands() { new Arg("cToken", getCTokenV), new Arg("amount", getNumberV) ], - (world, from, {cToken, amount}) => redeemUnderlying(world, from, cToken, amount), - {namePos: 1} + (world, from, { cToken, amount }) => redeemUnderlying(world, from, cToken, amount), + { namePos: 1 } ), - new Command<{cToken: CToken, amount: NumberV}>(` + new Command<{ cToken: CToken, amount: NumberV }>(` #### Borrow * "CToken Borrow amount:" - Borrows the given amount of this cToken as specified user @@ -466,10 +541,10 @@ export function cTokenCommands() { new Arg("amount", getNumberV) ], // Note: we override from - (world, from, {cToken, amount}) => borrow(world, from, cToken, amount), - {namePos: 1} + (world, from, { cToken, amount }) => borrow(world, from, cToken, amount), + { namePos: 1 } ), - new Command<{cToken: CToken, amount: NumberV | NothingV}>(` + new Command<{ cToken: CToken, amount: NumberV | NothingV }>(` #### RepayBorrow * "CToken RepayBorrow underlyingAmount:" - Repays borrow in the given underlying amount as specified user @@ -478,12 +553,12 @@ export function cTokenCommands() { "RepayBorrow", [ new Arg("cToken", getCTokenV), - new Arg("amount", getNumberV, {nullable: true}) + new Arg("amount", getNumberV, { nullable: true }) ], - (world, from, {cToken, amount}) => repayBorrow(world, from, cToken, amount), - {namePos: 1} + (world, from, { cToken, amount }) => repayBorrow(world, from, cToken, amount), + { namePos: 1 } ), - new Command<{cToken: CToken, behalf: AddressV, amount: NumberV | NothingV}>(` + new Command<{ cToken: CToken, behalf: AddressV, amount: NumberV | NothingV }>(` #### RepayBorrowBehalf * "CToken RepayBorrowBehalf behalf: underlyingAmount:" - Repays borrow in the given underlying amount on behalf of another user @@ -493,12 +568,12 @@ export function cTokenCommands() { [ new Arg("cToken", getCTokenV), new Arg("behalf", getAddressV), - new Arg("amount", getNumberV, {nullable: true}) + new Arg("amount", getNumberV, { nullable: true }) ], - (world, from, {cToken, behalf, amount}) => repayBorrowBehalf(world, from, behalf.val, cToken, amount), - {namePos: 1} + (world, from, { cToken, behalf, amount }) => repayBorrowBehalf(world, from, behalf.val, cToken, amount), + { namePos: 1 } ), - new Command<{borrower: AddressV, cToken: CToken, collateral: CToken, repayAmount: NumberV | NothingV}>(` + new Command<{ borrower: AddressV, cToken: CToken, collateral: CToken, repayAmount: NumberV | NothingV }>(` #### Liquidate * "CToken Liquidate borrower: cTokenCollateral:
repayAmount:" - Liquidates repayAmount of given token seizing collateral token @@ -509,12 +584,12 @@ export function cTokenCommands() { new Arg("cToken", getCTokenV), new Arg("borrower", getAddressV), new Arg("collateral", getCTokenV), - new Arg("repayAmount", getNumberV, {nullable: true}) + new Arg("repayAmount", getNumberV, { nullable: true }) ], - (world, from, {borrower, cToken, collateral, repayAmount}) => liquidateBorrow(world, from, cToken, borrower.val, collateral, repayAmount), - {namePos: 1} + (world, from, { borrower, cToken, collateral, repayAmount }) => liquidateBorrow(world, from, cToken, borrower.val, collateral, repayAmount), + { namePos: 1 } ), - new Command<{cToken: CToken, liquidator: AddressV, borrower: AddressV, seizeTokens: NumberV}>(` + new Command<{ cToken: CToken, liquidator: AddressV, borrower: AddressV, seizeTokens: NumberV }>(` #### Seize * "CToken Seize liquidator: borrower: seizeTokens:" - Seizes a given number of tokens from a user (to be called from other CToken) @@ -527,10 +602,10 @@ export function cTokenCommands() { new Arg("borrower", getAddressV), new Arg("seizeTokens", getNumberV) ], - (world, from, {cToken, liquidator, borrower, seizeTokens}) => seize(world, from, cToken, liquidator.val, borrower.val, seizeTokens), - {namePos: 1} + (world, from, { cToken, liquidator, borrower, seizeTokens }) => seize(world, from, cToken, liquidator.val, borrower.val, seizeTokens), + { namePos: 1 } ), - new Command<{cToken: CToken, treasure: CToken, liquidator: AddressV, borrower: AddressV, seizeTokens: NumberV}>(` + new Command<{ cToken: CToken, treasure: CToken, liquidator: AddressV, borrower: AddressV, seizeTokens: NumberV }>(` #### EvilSeize * "CToken EvilSeize treasure: liquidator: borrower: seizeTokens:" - Improperly seizes a given number of tokens from a user @@ -544,10 +619,10 @@ export function cTokenCommands() { new Arg("borrower", getAddressV), new Arg("seizeTokens", getNumberV) ], - (world, from, {cToken, treasure, liquidator, borrower, seizeTokens}) => evilSeize(world, from, cToken, treasure, liquidator.val, borrower.val, seizeTokens), - {namePos: 1} + (world, from, { cToken, treasure, liquidator, borrower, seizeTokens }) => evilSeize(world, from, cToken, treasure, liquidator.val, borrower.val, seizeTokens), + { namePos: 1 } ), - new Command<{cToken: CToken, amount: NumberV}>(` + new Command<{ cToken: CToken, amount: NumberV }>(` #### ReduceReserves * "CToken ReduceReserves amount:" - Reduces the reserves of the cToken @@ -558,10 +633,24 @@ export function cTokenCommands() { new Arg("cToken", getCTokenV), new Arg("amount", getNumberV) ], - (world, from, {cToken, amount}) => reduceReserves(world, from, cToken, amount), - {namePos: 1} + (world, from, { cToken, amount }) => reduceReserves(world, from, cToken, amount), + { namePos: 1 } ), - new Command<{cToken: CToken, newPendingAdmin: AddressV}>(` + new Command<{ cToken: CToken, amount: NumberV }>(` + #### AddReserves + + * "CToken AddReserves amount:" - Adds reserves to the cToken + * E.g. "CToken cZRX AddReserves 1.0e18" + `, + "AddReserves", + [ + new Arg("cToken", getCTokenV), + new Arg("amount", getNumberV) + ], + (world, from, { cToken, amount }) => addReserves(world, from, cToken, amount), + { namePos: 1 } + ), + new Command<{ cToken: CToken, newPendingAdmin: AddressV }>(` #### SetPendingAdmin * "CToken SetPendingAdmin newPendingAdmin:
" - Sets the pending admin for the cToken @@ -572,10 +661,10 @@ export function cTokenCommands() { new Arg("cToken", getCTokenV), new Arg("newPendingAdmin", getAddressV) ], - (world, from, {cToken, newPendingAdmin}) => setPendingAdmin(world, from, cToken, newPendingAdmin.val), - {namePos: 1} + (world, from, { cToken, newPendingAdmin }) => setPendingAdmin(world, from, cToken, newPendingAdmin.val), + { namePos: 1 } ), - new Command<{cToken: CToken}>(` + new Command<{ cToken: CToken }>(` #### AcceptAdmin * "CToken AcceptAdmin" - Accepts admin for the cToken @@ -585,10 +674,10 @@ export function cTokenCommands() { [ new Arg("cToken", getCTokenV) ], - (world, from, {cToken}) => acceptAdmin(world, from, cToken), - {namePos: 1} + (world, from, { cToken }) => acceptAdmin(world, from, cToken), + { namePos: 1 } ), - new Command<{cToken: CToken, reserveFactor: NumberV}>(` + new Command<{ cToken: CToken, reserveFactor: NumberV }>(` #### SetReserveFactor * "CToken SetReserveFactor reserveFactor:" - Sets the reserve factor for the cToken @@ -599,10 +688,10 @@ export function cTokenCommands() { new Arg("cToken", getCTokenV), new Arg("reserveFactor", getExpNumberV) ], - (world, from, {cToken, reserveFactor}) => setReserveFactor(world, from, cToken, reserveFactor), - {namePos: 1} + (world, from, { cToken, reserveFactor }) => setReserveFactor(world, from, cToken, reserveFactor), + { namePos: 1 } ), - new Command<{cToken: CToken, interestRateModel: AddressV}>(` + new Command<{ cToken: CToken, interestRateModel: AddressV }>(` #### SetInterestRateModel * "CToken SetInterestRateModel interestRateModel:" - Sets the interest rate model for the given cToken @@ -613,10 +702,10 @@ export function cTokenCommands() { new Arg("cToken", getCTokenV), new Arg("interestRateModel", getAddressV) ], - (world, from, {cToken, interestRateModel}) => setInterestRateModel(world, from, cToken, interestRateModel.val), - {namePos: 1} + (world, from, { cToken, interestRateModel }) => setInterestRateModel(world, from, cToken, interestRateModel.val), + { namePos: 1 } ), - new Command<{cToken: CToken, comptroller: AddressV}>(` + new Command<{ cToken: CToken, comptroller: AddressV }>(` #### SetComptroller * "CToken SetComptroller comptroller:" - Sets the comptroller for the given cToken @@ -627,10 +716,64 @@ export function cTokenCommands() { new Arg("cToken", getCTokenV), new Arg("comptroller", getAddressV) ], - (world, from, {cToken, comptroller}) => setComptroller(world, from, cToken, comptroller.val), - {namePos: 1} + (world, from, { cToken, comptroller }) => setComptroller(world, from, cToken, comptroller.val), + { namePos: 1 } + ), + new Command<{ + cToken: CToken; + becomeImplementationData: StringV; + }>( + ` + #### BecomeImplementation + + * "CToken BecomeImplementation becomeImplementationData:" + * E.g. "CToken cDAI BecomeImplementation "0x01234anyByTeS56789"" + `, + 'BecomeImplementation', + [ + new Arg('cToken', getCTokenV), + new Arg('becomeImplementationData', getStringV) + ], + (world, from, { cToken, becomeImplementationData }) => + becomImplementation( + world, + from, + cToken, + becomeImplementationData.val + ), + { namePos: 1 } + ), + new Command<{ + cToken: CToken; + implementation: AddressV; + allowResign: BoolV; + becomeImplementationData: StringV; + }>( + ` + #### SetImplementation + + * "CToken SetImplementation implementation:
allowResign: becomImplementationData:" + * E.g. "CToken cDAI SetImplementation (CToken cDAIDelegate Address) True "0x01234anyByTeS56789" + `, + 'SetImplementation', + [ + new Arg('cToken', getCTokenV), + new Arg('implementation', getAddressV), + new Arg('allowResign', getBoolV), + new Arg('becomeImplementationData', getStringV) + ], + (world, from, { cToken, implementation, allowResign, becomeImplementationData }) => + setImplementation( + world, + from, + cToken, + implementation.val, + allowResign.val, + becomeImplementationData.val + ), + { namePos: 1 } ), - new Command<{cToken: CToken}>(` + new Command<{ cToken: CToken }>(` #### Donate * "CToken Donate" - Calls the donate (payable no-op) function @@ -640,10 +783,10 @@ export function cTokenCommands() { [ new Arg("cToken", getCTokenV) ], - (world, from, {cToken}) => donate(world, from, cToken), - {namePos: 1} + (world, from, { cToken }) => donate(world, from, cToken), + { namePos: 1 } ), - new Command<{cToken: CToken, variable: StringV, value: NumberV}>(` + new Command<{ cToken: CToken, variable: StringV, value: NumberV }>(` #### Mock * "CToken Mock variable: value:" - Mocks a given value on cToken. Note: value must be a supported mock and this will only work on a "CTokenScenario" contract. @@ -656,10 +799,10 @@ export function cTokenCommands() { new Arg("variable", getStringV), new Arg("value", getNumberV), ], - (world, from, {cToken, variable, value}) => setCTokenMock(world, from, cToken, variable.val, value), - {namePos: 1} + (world, from, { cToken, variable, value }) => setCTokenMock(world, from, cToken, variable.val, value), + { namePos: 1 } ), - new View<{cToken: CToken}>(` + new View<{ cToken: CToken }>(` #### Minters * "CToken Minters" - Print address of all minters @@ -668,10 +811,10 @@ export function cTokenCommands() { [ new Arg("cToken", getCTokenV) ], - (world, {cToken}) => printMinters(world, cToken), - {namePos: 1} + (world, { cToken }) => printMinters(world, cToken), + { namePos: 1 } ), - new View<{cToken: CToken}>(` + new View<{ cToken: CToken }>(` #### Borrowers * "CToken Borrowers" - Print address of all borrowers @@ -680,10 +823,10 @@ export function cTokenCommands() { [ new Arg("cToken", getCTokenV) ], - (world, {cToken}) => printBorrowers(world, cToken), - {namePos: 1} + (world, { cToken }) => printBorrowers(world, cToken), + { namePos: 1 } ), - new View<{cToken: CToken}>(` + new View<{ cToken: CToken }>(` #### Liquidity * "CToken Liquidity" - Prints liquidity of all minters or borrowers @@ -692,10 +835,10 @@ export function cTokenCommands() { [ new Arg("cToken", getCTokenV) ], - (world, {cToken}) => printLiquidity(world, cToken), - {namePos: 1} + (world, { cToken }) => printLiquidity(world, cToken), + { namePos: 1 } ), - new View<{cToken: CToken, input: StringV}>(` + new View<{ cToken: CToken, input: StringV }>(` #### Decode * "Decode input:" - Prints information about a call to a cToken contract @@ -706,8 +849,8 @@ export function cTokenCommands() { new Arg("input", getStringV) ], - (world, {cToken, input}) => decodeCall(world, cToken, input.val), - {namePos: 1} + (world, { cToken, input }) => decodeCall(world, cToken, input.val), + { namePos: 1 } ) ]; } diff --git a/scenario/src/Event/Erc20Event.ts b/scenario/src/Event/Erc20Event.ts index 0de272c0f..193ec2d57 100644 --- a/scenario/src/Event/Erc20Event.ts +++ b/scenario/src/Event/Erc20Event.ts @@ -119,18 +119,31 @@ async function setPaused(world: World, from: string, erc20: Erc20, pause: boolea return world; } +async function setFee(world: World, from: string, erc20: Erc20, basisPointFee: NumberV, maxFee: NumberV): Promise { + let invokation = await invoke(world, erc20.methods.setParams(basisPointFee.encode(), maxFee.encode()), from); + + world = addAction( + world, + `Set fee on ${erc20.name} to ${basisPointFee} with a max of ${maxFee}`, + invokation + ); + + return world; +} + export function erc20Commands() { return [ new Command<{erc20Params: EventV}>(` #### Deploy * "Erc20 Deploy ...erc20Params" - Generates a new ERC-20 token by name - * E.g. "Erc20 ZRX Deploy" + * E.g. "Erc20 Deploy ZRX ..." `, "Deploy", [new Arg("erc20Params", getEventV, {variadic: true})], (world, from, {erc20Params}) => genToken(world, from, erc20Params.val) ), + new View<{erc20Arg: StringV, apiKey: StringV}>(` #### Verify @@ -151,6 +164,7 @@ export function erc20Commands() { }, {namePos: 1} ), + new Command<{erc20: Erc20, spender: AddressV, amount: NumberV}>(` #### Approve @@ -163,9 +177,12 @@ export function erc20Commands() { new Arg("spender", getAddressV), new Arg("amount", getNumberV) ], - (world, from, {erc20, spender, amount}) => approve(world, from, erc20, spender.val, amount), + (world, from, {erc20, spender, amount}) => { + return approve(world, from, erc20, spender.val, amount) + }, {namePos: 1} ), + new Command<{erc20: Erc20, recipient: AddressV, amount: NumberV}>(` #### Faucet @@ -242,6 +259,22 @@ export function erc20Commands() { ], (world, from, {erc20, paused}) => setPaused(world, from, erc20, paused.val), {namePos: 1} + ), + new Command<{erc20: Erc20, basisPointFee: NumberV, maxFee: NumberV}>(` + #### SetFee + + * "Erc20 SetFee basisPointFee: maxFee:" - Sets the current fee and max fee on Tether. Current + * Current fee (basisPointFee) has a max of 20 basis points, while maxFee is capped at 50 Tether (a max absolute fee of 50 * 10 ^ decimals) + * E.g. "Erc20 USDT SetFee 10 10" + `, + "SetFee", + [ + new Arg("erc20", getErc20V), + new Arg("basisPointFee", getNumberV), + new Arg("maxFee", getNumberV) + ], + (world, from, {erc20, basisPointFee, maxFee}) => setFee(world, from, erc20, basisPointFee, maxFee), + {namePos: 1} ) ]; } diff --git a/scenario/src/Event/ExpectationEvent.ts b/scenario/src/Event/ExpectationEvent.ts index 0ee787a5a..82429d348 100644 --- a/scenario/src/Event/ExpectationEvent.ts +++ b/scenario/src/Event/ExpectationEvent.ts @@ -16,9 +16,9 @@ import {RemainsExpectation} from '../Expectation/RemainsExpectation'; import {formatEvent} from '../Formatter'; import {Arg, View, processCommandEvent} from '../Command'; -async function changesExpectation(world: World, condition: Event, delta: Value): Promise { +async function changesExpectation(world: World, condition: Event, delta: NumberV, tolerance: NumberV): Promise { const value = await getCoreValue(world, condition); - const expectation = new ChangesExpectation(condition, value, delta); + const expectation = new ChangesExpectation(condition, value, delta, tolerance); return addExpectation(world, expectation); } @@ -34,19 +34,21 @@ async function remainsExpectation(world: World, condition: Event, value: Value): export function expectationCommands() { return [ - new View<{condition: EventV, delta: NumberV}>(` + new View<{condition: EventV, delta: NumberV, tolerance: NumberV}>(` #### Changes - * "Changes amount:" - Expects that given value changes by amount + * "Changes amount: tolerance:" - Expects that given value changes by amount * E.g ."Expect Changes (CToken cZRX UnderlyingBalance Geoff) +10e18" `, "Changes", [ new Arg("condition", getEventV), - new Arg("delta", getNumberV) + new Arg("delta", getNumberV), + new Arg("tolerance", getNumberV, {default: new NumberV(0)}) ], - (world, {condition, delta}) => changesExpectation(world, condition.val, delta) + (world, {condition, delta, tolerance}) => changesExpectation(world, condition.val, delta, tolerance) ), + new View<{condition: EventV, value: Value}>(` #### Remains diff --git a/scenario/src/Expectation/ChangesExpectation.ts b/scenario/src/Expectation/ChangesExpectation.ts index 3cc182c47..91acee86e 100644 --- a/scenario/src/Expectation/ChangesExpectation.ts +++ b/scenario/src/Expectation/ChangesExpectation.ts @@ -18,12 +18,14 @@ export class ChangesExpectation implements Expectation { condition: Event; originalValue: NumberV; delta: NumberV; + tolerance: NumberV; expected: NumberV; - constructor(condition: Event, originalValue: Value, delta: Value) { + constructor(condition: Event, originalValue: Value, delta: NumberV, tolerance: NumberV) { this.condition = condition; this.originalValue = asNumberV(originalValue); - this.delta = asNumberV(delta); + this.delta = delta; + this.tolerance = tolerance; this.expected = this.originalValue.add(this.delta); } @@ -33,10 +35,13 @@ export class ChangesExpectation implements Expectation { async checker(world: World, initialCheck: boolean=false): Promise { const currentValue = asNumberV(await this.getCurrentValue(world)); + const trueDelta = currentValue.sub(this.originalValue); - if (!currentValue.compareTo(world, this.expected)) { - const trueDelta = currentValue.sub(this.originalValue); - + if (this.tolerance.val != 0) { + if (Math.abs(Number(trueDelta.sub(this.delta).div(this.originalValue).val)) > Number(this.tolerance.val)) { + fail(world, `Expected ${trueDelta.toString()} to approximately equal ${this.delta.toString()} within ${this.tolerance.toString()}`); + } + } else if (!currentValue.compareTo(world, this.expected)) { fail(world, `${this.toString()} instead had value \`${currentValue.toString()}\` (true delta: ${trueDelta.toString()})`); } } diff --git a/scenario/src/Invokation.ts b/scenario/src/Invokation.ts index 450e796e2..9ba32d816 100644 --- a/scenario/src/Invokation.ts +++ b/scenario/src/Invokation.ts @@ -230,17 +230,24 @@ export async function invoke(world: World, fn: Sendable, from: string, err ...trxInvokationOpts }; - try{ - const gas = await fn.estimateGas({...invokationOpts}); + try { + try { + const gas = await fn.estimateGas({ ...invokationOpts }); invokationOpts = { ...invokationOpts, gas: gas * 2 }; + } catch (e) { + invokationOpts = { + ...invokationOpts, + gas: 2000000 + }; + } let error: null | Error = null; try { - value = await fn.call({...invokationOpts}); + value = await fn.call({ ...invokationOpts }); } catch (err) { error = new InvokationError(err); } @@ -249,12 +256,21 @@ export async function invoke(world: World, fn: Sendable, from: string, err world.printer.printLine(`Dry run: invoking \`${fn._method.name}\``); result = { blockNumber: -1, - transactionHash: "0x", + transactionHash: '0x', gasUsed: 0, events: {} }; } else { - result = await fn.send({...invokationOpts}); + result = await fn.send({ ...invokationOpts }); + } + + if (world.settings.printTxLogs) { + const eventLogs = Object.values(result.events).map((event: any) => { + const eventLog = event.raw; + + return world.eventDecoder[eventLog.topics[0]](eventLog); + }); + console.log('EMITTED EVENTS: ', eventLogs); } return new Invokation(value, result, null, fn, errorReporter); diff --git a/scenario/src/Networks.ts b/scenario/src/Networks.ts index b5456fca6..eb3f765f7 100644 --- a/scenario/src/Networks.ts +++ b/scenario/src/Networks.ts @@ -1,18 +1,18 @@ -import {fromJS, Map} from 'immutable'; -import {World} from './World'; -import {Invokation} from './Invokation'; -import {ABI, Contract, setContractName} from './Contract'; -import {getNetworkPath, readFile, writeFile} from './File'; +import { fromJS, Map } from 'immutable'; +import { World } from './World'; +import { Invokation } from './Invokation'; +import { ABI, ABIEvent, Contract, setContractName } from './Contract'; +import { getNetworkPath, readFile, writeFile } from './File'; type Networks = Map; interface ExtraData { - index: string[] - data: object | string | number + index: string[]; + data: object | string | number; } export function parseNetworkFile(data: string | object): Networks { - return fromJS(typeof data === "string" ? JSON.parse(data) : data); + return fromJS(typeof data === 'string' ? JSON.parse(data) : data); } function serializeNetworkFile(networks: Networks): string { @@ -20,11 +20,18 @@ function serializeNetworkFile(networks: Networks): string { } function readNetworkFile(world: World, isABI: boolean): Promise { - return readFile(getNetworkPath(world.basePath, world.network, isABI ? '-abi' : ''), Map({}), parseNetworkFile); + return readFile( + getNetworkPath(world.basePath, world.network, isABI ? '-abi' : ''), + Map({}), + parseNetworkFile + ); } function writeNetworkFile(world: World, networks: Networks, isABI: boolean): Promise { - return writeFile(getNetworkPath(world.basePath, world.network, isABI ? '-abi' : ''), serializeNetworkFile(networks)); + return writeFile( + getNetworkPath(world.basePath, world.network, isABI ? '-abi' : ''), + serializeNetworkFile(networks) + ); } export function storeContract(world: World, contract: Contract, name: string, extraData: ExtraData[]): World { @@ -33,8 +40,23 @@ export function storeContract(world: World, contract: Contract, name: string, ex world = world.set('lastContract', contract); world = world.setIn(['contractIndex', contract._address.toLowerCase()], contract); - world = world.update('contractData', (contractData) => { - return extraData.reduce((acc, {index, data}) => { + const updatedEventDecoder = contract._jsonInterface + .filter(i => i.type == 'event') + .reduce((accum, event) => { + const { anonymous, inputs, signature } = (event as any) as ABIEvent; + return { + ...accum, + [signature]: log => { + let argTopics = anonymous ? log.topics : log.topics.slice(1); + return world.web3.eth.abi.decodeLog(inputs, log.data, argTopics); + } + }; + }, world.eventDecoder); + + world = world.set('eventDecoder', updatedEventDecoder); + + world = world.update('contractData', contractData => { + return extraData.reduce((acc, { index, data }) => { if (typeof data !== 'string' && typeof data !== 'number') { // Store extra data as an immutable data = Map(data); @@ -47,11 +69,16 @@ export function storeContract(world: World, contract: Contract, name: string, ex return world; } -export async function saveContract(world: World, contract: Contract, name: string, extraData: ExtraData[]): Promise { +export async function saveContract( + world: World, + contract: Contract, + name: string, + extraData: ExtraData[] +): Promise { let networks = await readNetworkFile(world, false); let networksABI = await readNetworkFile(world, true); - networks = extraData.reduce((acc, {index, data}) => acc.setIn(index, data), networks); + networks = extraData.reduce((acc, { index, data }) => acc.setIn(index, data), networks); networksABI = networksABI.set(name, contract._jsonInterface); // Don't write during a dry-run @@ -62,7 +89,13 @@ export async function saveContract(world: World, contract: Contract, name: st } // Merges a contract into another, which is important for delegation -export async function mergeContractABI(world: World, targetName: string, contractTarget: Contract, a: string, b: string): Promise { +export async function mergeContractABI( + world: World, + targetName: string, + contractTarget: Contract, + a: string, + b: string +): Promise { let networks = await readNetworkFile(world, false); let networksABI = await readNetworkFile(world, true); let aABI = networksABI.get(a); @@ -86,7 +119,10 @@ export async function mergeContractABI(world: World, targetName: string, contrac let mergedContract = new world.web3.eth.Contract(fullABI, contractTarget._address, {}); - world = world.setIn(['contractIndex', contractTarget._address.toLowerCase()], setContractName(targetName, mergedContract)); + world = world.setIn( + ['contractIndex', contractTarget._address.toLowerCase()], + setContractName(targetName, mergedContract) + ); // Don't write during a dry-run if (!world.dryRun) { @@ -104,7 +140,11 @@ export async function loadContracts(world: World): Promise<[World, string[]]> { return loadContractData(world, networks, networksABI); } -export async function loadContractData(world: World, networks: Networks, networksABI: Networks): Promise<[World, string[]]> { +export async function loadContractData( + world: World, + networks: Networks, + networksABI: Networks +): Promise<[World, string[]]> { // Pull off contracts value and the rest is "extra" let contractInfo: string[] = []; let contracts = networks.get('Contracts') || Map({}); @@ -119,18 +159,24 @@ export async function loadContractData(world: World, networks: Networks, network return world.setIn(['contractIndex', contract._address.toLowerCase()], setContractName(name, contract)); }, world); - world = world.update('contractData', (contractData) => contractData.mergeDeep(networks)); + world = world.update('contractData', contractData => contractData.mergeDeep(networks)); return [world, contractInfo]; } -export async function storeAndSaveContract(world: World, contract: Contract, name: string, invokation: Invokation | null, extraData: ExtraData[]): Promise { - extraData.push({index: ['Contracts', name], data: contract._address}); +export async function storeAndSaveContract( + world: World, + contract: Contract, + name: string, + invokation: Invokation | null, + extraData: ExtraData[] +): Promise { + extraData.push({ index: ['Contracts', name], data: contract._address }); if (contract.constructorAbi) { - extraData.push({index: ['Constructors', name], data: contract.constructorAbi}); + extraData.push({ index: ['Constructors', name], data: contract.constructorAbi }); } if (invokation && invokation.receipt) { - extraData.push({index: ['Blocks', name], data: invokation.receipt.blockNumber}); + extraData.push({ index: ['Blocks', name], data: invokation.receipt.blockNumber }); } world = storeContract(world, contract, name, extraData); diff --git a/scenario/src/Settings.ts b/scenario/src/Settings.ts index ff82224f0..91588364f 100644 --- a/scenario/src/Settings.ts +++ b/scenario/src/Settings.ts @@ -1,12 +1,18 @@ -import {getNetworkPath, readFile, writeFile} from './File'; +import { getNetworkPath, readFile, writeFile } from './File'; export class Settings { - basePath: string | null - network: string | null - aliases: {[name: string]: string} - from: string | undefined + basePath: string | null; + network: string | null; + aliases: { [name: string]: string }; + from: string | undefined; + printTxLogs: boolean = false; - constructor(basePath: string | null, network: string | null, aliases: {[name: string]: string}, from?: string) { + constructor( + basePath: string | null, + network: string | null, + aliases: { [name: string]: string }, + from?: string + ) { this.basePath = basePath; this.network = network; this.aliases = aliases; @@ -14,7 +20,7 @@ export class Settings { } static deserialize(basePath: string, network: string, data: string): Settings { - const {aliases} = JSON.parse(data); + const { aliases } = JSON.parse(data); return new Settings(basePath, network, aliases); } @@ -34,7 +40,9 @@ export class Settings { } static load(basePath: string, network: string): Promise { - return readFile(Settings.getFilePath(basePath, network), Settings.default(basePath, network), (data) => Settings.deserialize(basePath, network, data)); + return readFile(Settings.getFilePath(basePath, network), Settings.default(basePath, network), data => + Settings.deserialize(basePath, network, data) + ); } async save(): Promise { @@ -64,7 +72,9 @@ export class Settings { } findAlias(name: string): string | null { - const alias = Object.entries(this.aliases).find(([alias, addr]) => alias.toLowerCase() === name.toLowerCase()); + const alias = Object.entries(this.aliases).find( + ([alias, addr]) => alias.toLowerCase() === name.toLowerCase() + ); if (alias) { return alias[1]; diff --git a/scenario/src/Utils.ts b/scenario/src/Utils.ts index 5c3019117..d08d51645 100644 --- a/scenario/src/Utils.ts +++ b/scenario/src/Utils.ts @@ -83,3 +83,23 @@ export function sleep(timeout: number): Promise { }, timeout); }); } + +export function sendRPC(world: World, method: string, params: any[]) { + return new Promise((resolve, reject) => { + world.web3.currentProvider.send( + { + jsonrpc: '2.0', + method: method, + params: params, + id: new Date().getTime() // Id of the request; anything works, really + }, + (err, response) => { + if (err) { + reject(err); + } else { + resolve(response); + } + } + ); + }); +} diff --git a/scenario/src/Value.ts b/scenario/src/Value.ts index 938c1b2a7..b967d2251 100644 --- a/scenario/src/Value.ts +++ b/scenario/src/Value.ts @@ -298,6 +298,14 @@ export class NumberV implements Value { return new NumberV(new BigNumber(this.val).plus(new BigNumber(b.val)).toFixed()); } + div(b: NumberV): NumberV { + return new NumberV(new BigNumber(this.val).div(new BigNumber(b.val)).toFixed()); + } + + mul(b: NumberV): NumberV { + return new NumberV(new BigNumber(this.val).times(new BigNumber(b.val)).toFixed()); + } + sub(b: NumberV): NumberV { return new NumberV(new BigNumber(this.val).minus(new BigNumber(b.val)).toFixed()); } diff --git a/scenario/src/Value/CTokenDelegateValue.ts b/scenario/src/Value/CTokenDelegateValue.ts new file mode 100644 index 000000000..b368552a5 --- /dev/null +++ b/scenario/src/Value/CTokenDelegateValue.ts @@ -0,0 +1,51 @@ +import { Event } from '../Event'; +import { World } from '../World'; +import { CErc20Delegate } from '../Contract/CErc20Delegate'; +import { + getCoreValue, + mapValue +} from '../CoreValue'; +import { Arg, Fetcher, getFetcherValue } from '../Command'; +import { + AddressV, + Value, +} from '../Value'; +import { getWorldContractByAddress, getCTokenDelegateAddress } from '../ContractLookup'; + +export async function getCTokenDelegateV(world: World, event: Event): Promise { + const address = await mapValue( + world, + event, + (str) => new AddressV(getCTokenDelegateAddress(world, str)), + getCoreValue, + AddressV + ); + + return getWorldContractByAddress(world, address.val); +} + +async function cTokenDelegateAddress(world: World, cTokenDelegate: CErc20Delegate): Promise { + return new AddressV(cTokenDelegate._address); +} + +export function cTokenDelegateFetchers() { + return [ + new Fetcher<{ cTokenDelegate: CErc20Delegate }, AddressV>(` + #### Address + + * "CTokenDelegate Address" - Returns address of CTokenDelegate contract + * E.g. "CTokenDelegate cDaiDelegate Address" - Returns cDaiDelegate's address + `, + "Address", + [ + new Arg("cTokenDelegate", getCTokenDelegateV) + ], + (world, { cTokenDelegate }) => cTokenDelegateAddress(world, cTokenDelegate), + { namePos: 1 } + ), + ]; +} + +export async function getCTokenDelegateValue(world: World, event: Event): Promise { + return await getFetcherValue("CTokenDelegate", cTokenDelegateFetchers(), world, event); +} diff --git a/scenario/src/Value/CTokenValue.ts b/scenario/src/Value/CTokenValue.ts index 19361f15f..7aa1a921c 100644 --- a/scenario/src/Value/CTokenValue.ts +++ b/scenario/src/Value/CTokenValue.ts @@ -81,6 +81,10 @@ async function getExchangeRate(world: World, cToken: CToken): Promise { return new NumberV(await cToken.methods.exchangeRateCurrent().call(), 1e18); } +async function getCash(world: World, cToken: CToken): Promise { + return new NumberV(await cToken.methods.getCash().call()); +} + async function getInterestRate(world: World, cToken: CToken): Promise { return new NumberV(await cToken.methods.borrowRatePerBlock().call(), 1.0e18 / 2102400); } @@ -100,6 +104,7 @@ export function cTokenFetchers() { (world, {cToken}) => cTokenAddress(world, cToken), {namePos: 1} ), + new Fetcher<{cToken: CToken}, AddressV>(` #### Admin @@ -113,6 +118,7 @@ export function cTokenFetchers() { (world, {cToken}) => getCTokenAdmin(world, cToken), {namePos: 1} ), + new Fetcher<{cToken: CToken}, AddressV>(` #### PendingAdmin @@ -126,6 +132,7 @@ export function cTokenFetchers() { (world, {cToken}) => getCTokenPendingAdmin(world, cToken), {namePos: 1} ), + new Fetcher<{cToken: CToken}, AddressV>(` #### Underlying @@ -139,6 +146,7 @@ export function cTokenFetchers() { async (world, {cToken}) => new AddressV(await cToken.methods.underlying().call()), {namePos: 1} ), + new Fetcher<{cToken: CToken, address: AddressV}, NumberV>(` #### UnderlyingBalance @@ -153,6 +161,7 @@ export function cTokenFetchers() { (world, {cToken, address}) => balanceOfUnderlying(world, cToken, address.val), {namePos: 1} ), + new Fetcher<{cToken: CToken, address: AddressV}, NumberV>(` #### BorrowBalance @@ -167,6 +176,7 @@ export function cTokenFetchers() { (world, {cToken, address}) => getBorrowBalance(world, cToken, address.val), {namePos: 1} ), + new Fetcher<{cToken: CToken, address: AddressV}, NumberV>(` #### BorrowBalanceStored @@ -181,6 +191,7 @@ export function cTokenFetchers() { (world, {cToken, address}) => getBorrowBalanceStored(world, cToken, address.val), {namePos: 1} ), + new Fetcher<{cToken: CToken}, NumberV>(` #### TotalBorrows @@ -194,6 +205,7 @@ export function cTokenFetchers() { (world, {cToken}) => getTotalBorrows(world, cToken), {namePos: 1} ), + new Fetcher<{cToken: CToken}, NumberV>(` #### TotalBorrowsCurrent @@ -207,6 +219,7 @@ export function cTokenFetchers() { (world, {cToken}) => getTotalBorrowsCurrent(world, cToken), {namePos: 1} ), + new Fetcher<{cToken: CToken}, NumberV>(` #### Reserves @@ -220,6 +233,7 @@ export function cTokenFetchers() { (world, {cToken}) => getTotalReserves(world, cToken), {namePos: 1} ), + new Fetcher<{cToken: CToken}, NumberV>(` #### ReserveFactor @@ -233,6 +247,7 @@ export function cTokenFetchers() { (world, {cToken}) => getReserveFactor(world, cToken), {namePos: 1} ), + new Fetcher<{cToken: CToken}, AddressV>(` #### Comptroller @@ -246,6 +261,7 @@ export function cTokenFetchers() { (world, {cToken}) => getComptroller(world, cToken), {namePos: 1} ), + new Fetcher<{cToken: CToken}, NumberV>(` #### ExchangeRateStored @@ -259,6 +275,7 @@ export function cTokenFetchers() { (world, {cToken}) => getExchangeRateStored(world, cToken), {namePos: 1} ), + new Fetcher<{cToken: CToken}, NumberV>(` #### ExchangeRate @@ -272,6 +289,21 @@ export function cTokenFetchers() { (world, {cToken}) => getExchangeRate(world, cToken), {namePos: 1} ), + + new Fetcher<{cToken: CToken}, NumberV>(` + #### Cash + + * "CToken Cash" - Returns the cToken's current cash + * E.g. "CToken cZRX Cash" + `, + "Cash", + [ + new Arg("cToken", getCTokenV) + ], + (world, {cToken}) => getCash(world, cToken), + {namePos: 1} + ), + new Fetcher<{cToken: CToken}, NumberV>(` #### InterestRate diff --git a/scenario/src/Value/MCDValue.ts b/scenario/src/Value/MCDValue.ts new file mode 100644 index 000000000..327433342 --- /dev/null +++ b/scenario/src/Value/MCDValue.ts @@ -0,0 +1,65 @@ +import { Event } from '../Event'; +import { World } from '../World'; +import { getContract } from '../Contract'; +import { Pot } from '../Contract/Pot'; +import { Vat } from '../Contract/Vat'; +import { + getAddressV, + getCoreValue, + getStringV +} from '../CoreValue'; +import { Arg, Fetcher, getFetcherValue } from '../Command'; +import { + AddressV, + NumberV, + Value, + StringV +} from '../Value'; + +export function mcdFetchers() { + return [ + new Fetcher<{ potAddress: AddressV, method: StringV, args: StringV[] }, Value>(` + #### PotAt + + * "MCD PotAt " + * E.g. "MCD PotAt "0xPotAddress" "pie" (CToken cDai Address)" + `, + "PotAt", + [ + new Arg("potAddress", getAddressV), + new Arg("method", getStringV), + new Arg('args', getCoreValue, { variadic: true, mapped: true }) + ], + async (world, { potAddress, method, args }) => { + const PotContract = getContract('PotLike'); + const pot = PotContract.at(world, potAddress.val); + const argStrings = args.map(arg => arg.val); + return new NumberV(await pot.methods[method.val](...argStrings).call()) + } + ), + + new Fetcher<{ vatAddress: AddressV, method: StringV, args: StringV[] }, Value>(` + #### VatAt + + * "MCD VatAt " + * E.g. "MCD VatAt "0xVatAddress" "dai" (CToken cDai Address)" + `, + "VatAt", + [ + new Arg("vatAddress", getAddressV), + new Arg("method", getStringV), + new Arg('args', getCoreValue, { variadic: true, mapped: true }) + ], + async (world, { vatAddress, method, args }) => { + const VatContract = getContract('VatLike'); + const vat = VatContract.at(world, vatAddress.val); + const argStrings = args.map(arg => arg.val); + return new NumberV(await vat.methods[method.val](...argStrings).call()) + } + ) + ]; +} + +export async function getMCDValue(world: World, event: Event): Promise { + return await getFetcherValue("MCD", mcdFetchers(), world, event); +} diff --git a/scenario/src/World.ts b/scenario/src/World.ts index 6319c57d2..50d5d42b4 100644 --- a/scenario/src/World.ts +++ b/scenario/src/World.ts @@ -1,58 +1,60 @@ -import {Assert, throwAssert} from './Assert'; -import {Action} from './Action'; -import {Contract} from './Contract'; -import {Record} from 'immutable'; -import {Artifacts} from './Artifact'; -import {Printer} from './Printer'; -import {Invariant} from './Invariant'; -import {SuccessInvariant} from './Invariant/SuccessInvariant'; -import {RemainsInvariant} from './Invariant/RemainsInvariant'; -import {StaticInvariant} from './Invariant/StaticInvariant'; -import {Expectation} from './Expectation'; -import {formatResult} from './ErrorReporter'; -import {Invokation, InvokationOpts} from './Invokation'; -import {Event} from './Event'; -import {formatEvent} from './Formatter'; -import {Map} from 'immutable'; -import {Settings} from './Settings'; -import {Accounts, loadAccounts} from './Accounts'; +import { Assert, throwAssert } from './Assert'; +import { Action } from './Action'; +import { Contract } from './Contract'; +import { Record } from 'immutable'; +import { Artifacts } from './Artifact'; +import { Printer } from './Printer'; +import { Invariant } from './Invariant'; +import { SuccessInvariant } from './Invariant/SuccessInvariant'; +import { RemainsInvariant } from './Invariant/RemainsInvariant'; +import { StaticInvariant } from './Invariant/StaticInvariant'; +import { Expectation } from './Expectation'; +import { formatResult } from './ErrorReporter'; +import { Invokation, InvokationOpts } from './Invokation'; +import { Event } from './Event'; +import { formatEvent } from './Formatter'; +import { Map } from 'immutable'; +import { Settings } from './Settings'; +import { Accounts, loadAccounts } from './Accounts'; import Web3 from 'web3'; export interface IWeb3 { - currentProvider: any + currentProvider: any; } const startingBlockNumber = 1000; -type ContractIndex = { [address:string]: Contract; }; +type ContractIndex = { [address: string]: Contract }; +type EventDecoder = { [eventSignature: string]: (log: any) => any }; export interface WorldProps { - actions: Action[], - event: Event | null, - lastInvokation: Invokation | null - newInvokation: boolean - blockNumber: number - lastContract: Contract | null - invariants: Invariant[] - expectations: Expectation[] - contractIndex: ContractIndex, - contractData: Map, - assert: Assert, - web3: Web3 | null, - artifacts: Artifacts | null - printer: Printer | null - network: string | null, - dryRun: boolean, - verbose: boolean, - settings: Settings, - accounts: Accounts | null, - invokationOpts: InvokationOpts, - trxInvokationOpts: Map, - basePath: string | null + actions: Action[]; + event: Event | null; + lastInvokation: Invokation | null; + newInvokation: boolean; + blockNumber: number; + lastContract: Contract | null; + invariants: Invariant[]; + expectations: Expectation[]; + contractIndex: ContractIndex; + contractData: Map; + assert: Assert; + web3: Web3 | null; + artifacts: Artifacts | null; + printer: Printer | null; + network: string | null; + dryRun: boolean; + verbose: boolean; + settings: Settings; + accounts: Accounts | null; + invokationOpts: InvokationOpts; + trxInvokationOpts: Map; + basePath: string | null; + eventDecoder: EventDecoder; } -const defaultWorldProps : WorldProps = { - actions: []> [], +const defaultWorldProps: WorldProps = { + actions: []>[], event: null, lastInvokation: null, newInvokation: false, @@ -73,48 +75,49 @@ const defaultWorldProps : WorldProps = { accounts: null, invokationOpts: {}, trxInvokationOpts: Map({}), - basePath: null + basePath: null, + eventDecoder: {} }; export class World extends Record(defaultWorldProps) { - public readonly actions!: Action[] - public readonly event!: Event | null - public readonly value!: number | null - public readonly lastInvokation!: Invokation | null - public readonly newInvokation!: boolean - public readonly blockNumber!: number - public readonly lastContract!: Contract | null - public readonly invariants!: Invariant[] - public readonly expectations!: Expectation[] - public readonly contractIndex!: ContractIndex - public readonly contractData!: Map - public readonly assert!: Assert - public readonly web3!: Web3 - public readonly artifacts!: Artifacts | null - public readonly printer!: Printer - public readonly network!: string - public readonly dryRun!: boolean - public readonly verbose!: boolean - public readonly settings!: Settings - public readonly accounts!: Accounts - public readonly invokationOpts!: InvokationOpts - public readonly trxInvokationOpts!: Map - public readonly basePath!: string | null + public readonly actions!: Action[]; + public readonly event!: Event | null; + public readonly value!: number | null; + public readonly lastInvokation!: Invokation | null; + public readonly newInvokation!: boolean; + public readonly blockNumber!: number; + public readonly lastContract!: Contract | null; + public readonly invariants!: Invariant[]; + public readonly expectations!: Expectation[]; + public readonly contractIndex!: ContractIndex; + public readonly contractData!: Map; + public readonly assert!: Assert; + public readonly web3!: Web3; + public readonly artifacts!: Artifacts | null; + public readonly printer!: Printer; + public readonly network!: string; + public readonly dryRun!: boolean; + public readonly verbose!: boolean; + public readonly settings!: Settings; + public readonly accounts!: Accounts; + public readonly invokationOpts!: InvokationOpts; + public readonly trxInvokationOpts!: Map; + public readonly basePath!: string | null; public constructor(values?: Partial) { - values ? super(values) : super() + values ? super(values) : super(); } getInvokationOpts(baseOpts: InvokationOpts): InvokationOpts { return { ...baseOpts, ...this.invokationOpts, - ...{value: this.value ? this.value.toString() : undefined} + ...{ value: this.value ? this.value.toString() : undefined } }; } isLocalNetwork(): boolean { - return this.network === "test" || this.network === "development" || this.network === "coverage"; + return this.network === 'test' || this.network === 'development' || this.network === 'coverage'; } async updateSettings(fn: (settings: Settings) => Promise): Promise { @@ -168,7 +171,15 @@ export async function loadSettings(world: World): Promise { } } -export async function initWorld(assert: Assert, printer: Printer, iweb3: IWeb3, artifacts: Artifacts | null, network: string, accounts: string[], basePath: string | null): Promise { +export async function initWorld( + assert: Assert, + printer: Printer, + iweb3: IWeb3, + artifacts: Artifacts | null, + network: string, + accounts: string[], + basePath: string | null +): Promise { let web3 = new Web3(iweb3.currentProvider); return new World({ @@ -190,57 +201,43 @@ export async function initWorld(assert: Assert, printer: Printer, iweb3: IWeb3, settings: Settings.default(basePath, null), accounts: loadAccounts(accounts), trxInvokationOpts: Map({}), - basePath: basePath + basePath: basePath, + eventDecoder: {} }); } export function setEvent(world: World, event: Event): World { - return world.set( - 'event', - event - ); -}; + return world.set('event', event); +} export function addAction(world: World, log: string, invokation: Invokation): World { const action = new Action(log, invokation); - world = world.update( - 'actions', - (actions) => actions.concat([action]) - ); + world = world.update('actions', actions => actions.concat([action])); // Print the action via the printer world.printer.printAction(action); - return world.merge( - world, - { - lastInvokation: invokation, - newInvokation: true - } - ); + return world.merge(world, { + lastInvokation: invokation, + newInvokation: true + }); } export function addInvariant(world: World, invariant: Invariant): World { - return world.update( - 'invariants', - (invariants) => invariants.concat([invariant]) - ); + return world.update('invariants', invariants => invariants.concat([invariant])); } export function addExpectation(world: World, expectation: Expectation): World { - return world.update( - 'expectations', - (expectations) => expectations.concat([expectation]) - ); + return world.update('expectations', expectations => expectations.concat([expectation])); } function getInvariantFilter(type: string) { - let filters: {[filter: string]: (invariant: Invariant) => boolean} = { - all: (_invariant) => true, - success: (invariant) => !(invariant instanceof SuccessInvariant), - remains: (invariant) => !(invariant instanceof RemainsInvariant), - static: (invariant) => !(invariant instanceof StaticInvariant) + let filters: { [filter: string]: (invariant: Invariant) => boolean } = { + all: _invariant => true, + success: invariant => !(invariant instanceof SuccessInvariant), + remains: invariant => !(invariant instanceof RemainsInvariant), + static: invariant => !(invariant instanceof StaticInvariant) }; let filter = filters[type.toLowerCase()]; @@ -255,17 +252,14 @@ function getInvariantFilter(type: string) { export function clearInvariants(world: World, type: string): World { let filter = getInvariantFilter(type); - return world.update( - 'invariants', - (invariants) => world.invariants.filter(filter) - ); + return world.update('invariants', invariants => world.invariants.filter(filter)); } export function holdInvariants(world: World, type: string): World { let filter = getInvariantFilter(type); - return world.update('invariants', (invariants) => { - return world.invariants.map((invariant) => { + return world.update('invariants', invariants => { + return world.invariants.map(invariant => { if (filter(invariant)) { invariant.held = true; } @@ -280,10 +274,12 @@ export async function checkExpectations(world: World): Promise { return world; } else { // Lastly, check invariants each hold - await Promise.all(world.get('expectations').map((expectation) => { - // Check the expectation holds - return expectation.checker(world); - })); + await Promise.all( + world.get('expectations').map(expectation => { + // Check the expectation holds + return expectation.checker(world); + }) + ); return world.set('expectations', []); } @@ -294,16 +290,18 @@ export async function checkInvariants(world: World): Promise { return world; } else { // Lastly, check invariants each hold - await Promise.all(world.get('invariants').map((invariant) => { - // Check the invariant still holds - if (!invariant.held) { - return invariant.checker(world); - } - })); + await Promise.all( + world.get('invariants').map(invariant => { + // Check the invariant still holds + if (!invariant.held) { + return invariant.checker(world); + } + }) + ); // Remove holds - return world.update('invariants', (invariants) => { - return invariants.map((invariant) => { + return world.update('invariants', invariants => { + return invariants.map(invariant => { invariant.held = false; return invariant; @@ -325,7 +323,7 @@ export function describeUser(world: World, address: string): string { } // Look up by unlocked accounts - let account = world.accounts.find((account) => account.address === address); + let account = world.accounts.find(account => account.address === address); if (account) { return account.name; } diff --git a/scenario/yarn.lock b/scenario/yarn.lock index d34536cf9..2687d62c0 100644 --- a/scenario/yarn.lock +++ b/scenario/yarn.lock @@ -36,6 +36,30 @@ debug "^3.1.0" hosted-git-info "^2.6.0" +"@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== + +"@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" + +"@types/bn.js@^4.11.3": + version "4.11.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.5.tgz#40e36197433f78f807524ec623afcf0169ac81dc" + integrity sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "12.12.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.7.tgz#01e4ea724d9e3bd50d90c11fd5980ba317d8fa11" + integrity sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w== + "@types/node@^10.3.2": version "10.14.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.4.tgz#1c586b991457cbb58fef51bc4e0cfcfa347714b5" @@ -202,6 +226,34 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +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== + dependencies: + 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== + dependencies: + xtend "~4.0.0" + +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== + dependencies: + xtend "~4.0.0" + accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" @@ -230,6 +282,11 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= +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== + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -250,6 +307,20 @@ ajv@^6.1.0, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + 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" @@ -260,6 +331,11 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -267,6 +343,11 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + any-promise@1.3.0, any-promise@^1.0.0, any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -280,11 +361,23 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -298,21 +391,69 @@ arr-diff@^4.0.0: resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.1.0: +arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= + dependencies: + make-iterator "^1.0.0" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= + dependencies: + make-iterator "^1.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 sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -351,16 +492,59 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + async-each@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.2.tgz#8b8a7ca2a658f927e9f307d6d1a42f4199f0f735" integrity sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg== +async-eventemitter@^0.2.2: + 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.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= + dependencies: + async-done "^1.2.2" + +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@^1.4.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -381,11 +565,559 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +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 sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + 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 sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + 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 sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + 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 sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + 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 sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + 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 sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + 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 sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + 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 sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + 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 sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + 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 sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + 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 sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + 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 sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + 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 sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + 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 sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + 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 sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + 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 sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +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 sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +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 sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +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 sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + 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 sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + 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 sha1-u8UbSflk1wy42OC5ToICRs46YUE= + 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 sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + 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 sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + 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 sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + 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 sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + 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 sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + 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 sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + 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 sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + 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 sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + 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 sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + 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 sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + 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 sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + 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 sha1-JM72muIcuDp/hgPa0CH1cusnj40= + 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 sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + 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 sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + 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 sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + 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 sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + 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 sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + 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 sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + 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 sha1-04sS9C6nMj9yk4fxinxa4frrNek= + 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 sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + 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 sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + 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 sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + 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 sha1-btAhFz4vy0htestFxgCahW9kcHE= + 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 sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + 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 sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + 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 sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + 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 sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + 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 sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU= + 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== + +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + +backoff@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" + integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= + dependencies: + precond "0.2" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base-x@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.7.tgz#1c5a7fafe8f66b4114063e8da102799d4e7c408f" + integrity sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw== + dependencies: + safe-buffer "^5.0.1" + base64-js@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" @@ -436,13 +1168,31 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -bindings@^1.3.1: +bindings@^1.2.1, bindings@^1.3.1, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" +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== + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + unorm "^1.3.3" + +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= + dependencies: + safe-buffer "^5.0.1" + bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -473,7 +1223,7 @@ bn.js@4.11.6: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6, bn.js@^4.4.0: +bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0, bn.js@^4.8.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== @@ -528,7 +1278,7 @@ browser-stdout@1.3.0: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8= -browserify-aes@^1.0.0, browserify-aes@^1.0.4: +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -595,6 +1345,35 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" +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@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.1.tgz#55908d58f1982aba2008fa1bed8f91998a29bf8d" + integrity sha1-VZCNWPGYKrogCPob7Y+RmYopv40= + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -613,6 +1392,11 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" @@ -660,6 +1444,21 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +bytewise-core@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" + integrity sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI= + 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 sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4= + dependencies: + bytewise-core "^1.2.2" + typewise "^1.0.3" + cacache@^11.0.2: version "11.3.2" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" @@ -695,6 +1494,32 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +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" + +cachedown@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" + integrity sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU= + dependencies: + abstract-leveldown "^2.4.1" + lru-cache "^3.2.0" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -705,11 +1530,27 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +caniuse-lite@^1.0.30000844: + version "1.0.30001008" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001008.tgz#b8841b1df78a9f5ed9702537ef592f1f8772c0d9" + integrity sha512-b8DJyb+VVXZGRgJUa30cbk8gKHZ3LOZTBLaUEEVr2P4xpmFigOCc62CO4uzquW641Ouq1Rm9N+rWLWdSYDaDIw== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + 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.3.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -724,6 +1565,32 @@ check-types@^7.3.0: resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== +checkpoint-store@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" + integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= + dependencies: + functional-red-black-tree "^1.0.1" + +chokidar@^2.0.0: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + chokidar@^2.0.2: version "2.1.5" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" @@ -773,6 +1640,15 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -782,11 +1658,59 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@2.1.2, clone@^2.0.0, clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + 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 sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +coinstring@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/coinstring/-/coinstring-2.3.0.tgz#cdb63363a961502404a25afb82c2e26d5ff627a4" + integrity sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q= + dependencies: + bs58 "^2.0.1" + create-hash "^1.1.1" + +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -807,6 +1731,11 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-support@^1.1.3: + version "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== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" @@ -846,7 +1775,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.5.1, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -883,6 +1812,13 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +convert-source-map@^1.5.0, convert-source-map@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -915,6 +1851,19 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +copy-props@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== + dependencies: + each-props "^1.3.0" + is-plain-object "^2.0.1" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.10" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" + integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -936,7 +1885,7 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.1, 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" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -959,6 +1908,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-fetch@^2.1.0, cross-fetch@^2.1.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.3.tgz#e8a0b3c54598136e037f8650f8e823ccdfac198e" + integrity sha512-PrWWNH3yL2NYIb/7WF/5vFG3DCQiXDOVf8k3ijatbrtnwNuhMWLC7YF7uqf53tbTFDzHIUD8oITw4Bxt8ST3Nw== + dependencies: + node-fetch "2.1.2" + whatwg-fetch "2.0.4" + cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -1001,6 +1958,14 @@ cyclist@~0.2.2: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1013,7 +1978,7 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1027,7 +1992,7 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@^3.1.0: +debug@3.2.6, debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -1104,11 +2069,48 @@ decompress@^4.0.0: pify "^2.3.0" strip-dirs "^2.0.0" +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= + +defer-to-connect@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.0.tgz#b41bd7efa8508cef13f8456975f7a278c72833fd" + integrity sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ== + +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== + dependencies: + abstract-leveldown "~5.0.0" + inherits "^2.0.3" + define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -1138,6 +2140,11 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +defined@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1171,6 +2178,13 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -1200,6 +2214,15 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -1220,6 +2243,14 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +each-props@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -1238,6 +2269,11 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== +electron-to-chromium@^1.3.47: + version "1.3.306" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz#e8265301d053d5f74e36cb876486830261fbe946" + integrity sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A== + elliptic@6.3.3: version "6.3.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" @@ -1261,6 +2297,19 @@ elliptic@^6.0.0, elliptic@^6.4.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +elliptic@^6.4.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" + integrity sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -1271,6 +2320,24 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +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== + dependencies: + abstract-leveldown "^5.0.0" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" + xtend "^4.0.1" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -1287,13 +2354,20 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" -errno@^0.1.3, errno@~0.1.7: +errno@^0.1.3, errno@~0.1.1, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + es-abstract@^1.5.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" @@ -1315,12 +2389,48 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: + version "0.10.52" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.52.tgz#bb21777e919a04263736ded120a9d665f10ea63f" + integrity sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.2" + next-tick "~1.0.0" + +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, 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 sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -1345,11 +2455,29 @@ estraverse@^4.1.0, estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +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: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" @@ -1358,6 +2486,35 @@ eth-ens-namehash@2.0.8: 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.1.27, eth-lib@^0.1.26: version "0.1.27" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.27.tgz#f0b0fd144f865d2d6bf8257a40004f2e75ca1dd6" @@ -1380,8 +2537,277 @@ eth-lib@0.2.7: elliptic "^6.4.0" xhr-request-promise "^0.1.2" -ethers@4.0.0-beta.1: - version "4.0.0-beta.1" +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 sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= + dependencies: + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-sig-util@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.3.0.tgz#c54a6ac8e8796f7e25f59cf436982a930e645231" + integrity sha512-ugD1AvaggvKaZDgnS19W5qOfepjGc7qHrt7TrAaL54gJw9SHvgIXJ3r2xOMW30RWJZNP+1GlTOy5oye7yXA4xA== + 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 sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA= + 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.7" + resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.7.tgz#30bfe4196726690a0c59d3b8272e70d4d0c34bae" + integrity sha1-ML/kGWcmaQoMWdO4Jy5w1NDDS64= + dependencies: + async "^1.4.2" + buffer-xor "^1.0.3" + ethereumjs-util "^4.0.1" + miller-rabin "^4.0.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 sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= + +ethereumjs-abi@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" + integrity sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE= + dependencies: + bn.js "^4.10.0" + ethereumjs-util "^4.3.0" + +ethereumjs-abi@0.6.7: + version "0.6.7" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.7.tgz#d1d1c5cdb8d910a7d97645ba9e93be5d153bba2e" + integrity sha512-EMLOA8ICO5yAaXDhjVEfYjsJIXYutY8ufTE93eEKwsVtp2usQreKwsDTJ9zvam3omYqNuffr8IONIqb2uUslGQ== + dependencies: + 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#1cfbb13862f90f0b391d8a699544d5fe4dfb8c7b" + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.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.0, ethereumjs-block@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.0.tgz#8c6c3ab4a5eff0a16d9785fbeedbe643f4dbcbef" + integrity sha512-Ye+uG/L2wrp364Zihdlr/GfC3ft+zG8PdHcRtsBFNNH1CkOhxOwdB8friBU85n89uRZ9eIMAywCq0F4CwT1wAw== + dependencies: + async "^2.0.1" + ethereumjs-common "^1.1.0" + ethereumjs-tx "^1.2.2" + 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@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-3.4.0.tgz#92240da6ecd86b3d8d324df69510b381f26c966b" + integrity sha512-wxPSmt6EQjhbywkFbftKcb0qRFIZWocHMuDa8/AB4eWL/UPYalNcDyLaxYbrDytmhHid3Uu8G/tA3C/TxZBuOQ== + dependencies: + async "^2.6.1" + ethashjs "~0.0.7" + ethereumjs-block "~2.2.0" + ethereumjs-common "^1.1.0" + ethereumjs-util "~6.0.0" + flow-stoplight "^1.0.0" + level-mem "^3.0.1" + lru-cache "^5.1.1" + safe-buffer "^5.1.2" + semaphore "^1.1.0" + +ethereumjs-common@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.4.0.tgz#a940685f88f3c2587e4061630fe720b089c965b8" + integrity sha512-ser2SAplX/YI5W2AnzU8wmSjKRy4KQd4uxInJ36BzjS3m18E/B9QedPUIresZN1CSEQb/RgNQ2gN7C/XbpTafA== + +ethereumjs-tx@1.3.7, 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== + dependencies: + ethereum-common "^0.0.18" + ethereumjs-util "^5.0.0" + +ethereumjs-util@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" + integrity sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "0.1.6" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +ethereumjs-util@^4.0.1, ethereumjs-util@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz#3e9428b317eebda3d7260d854fddda954b1f1bc6" + integrity sha1-PpQosxfuvaPXJg2FT93alUsfG8Y= + dependencies: + bn.js "^4.8.0" + create-hash "^1.1.2" + keccakjs "^0.2.0" + rlp "^2.0.0" + secp256k1 "^3.0.1" + +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: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" + integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.3" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +ethereumjs-util@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" + integrity sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "0.1.6" + keccak "^2.0.0" + rlp "^2.2.3" + secp256k1 "^3.0.1" + +ethereumjs-util@~6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz#f14841c182b918615afefd744207c7932c8536c0" + integrity sha512-E3yKUyl0Fs95nvTFQZe/ZSNcofhDzUsDlA5y2uoRmf1+Ec7gpGhNCsgKkZBRh7Br5op8mJcYF/jFbmjj909+nQ== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.6" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +ethereumjs-vm@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-3.0.0.tgz#70fea2964a6797724b0d93fe080f9984ad18fcdd" + integrity sha512-lNu+G/RWPRCrQM5s24MqgU75PEGiAhL4Ombw0ew6m08d+amsxf/vGAb98yDNdQqqHKV6JbwO/tCGfdqXGI6Cug== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.2.0" + ethereumjs-blockchain "^3.4.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-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.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz#b0eae6f327637c2aeb9ccb9047b982ac542e6ab1" + integrity sha512-qiXPiZOsStem+Dj/CQHbn5qex+FVkuPmGH7SvSnA9F3tdRDt8dLMyvIj3+U05QzVZNPYh4HXEdnzoYI4dZkr9w== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereumjs-util "^6.0.0" + hdkey "^1.1.0" + randombytes "^2.0.6" + safe-buffer "^5.1.2" + scrypt.js "^0.3.0" + utf8 "^3.0.0" + uuid "^3.3.2" + +ethers@4.0.0-beta.1: + version "4.0.0-beta.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.1.tgz#0648268b83e0e91a961b1af971c662cdf8cbab6d" integrity sha512-SoYhktEbLxf+fiux5SfCEwdzWENMvgIbMZD90I62s4GZD9nEjgEWy8ZboI3hck193Vs0bDoTohDISx84f2H2tw== dependencies: @@ -1396,6 +2822,22 @@ ethers@4.0.0-beta.1: uuid "2.0.1" xmlhttprequest "1.8.0" +ethers@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" + integrity sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog== + dependencies: + "@types/node" "^10.3.2" + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.3.3" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.3" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + ethers@^4.0.0-beta.1: version "4.0.27" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.27.tgz#e570b0da9d805ad65c83d81919abe02b2264c6bf" @@ -1420,11 +2862,24 @@ 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: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + eventemitter3@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.1.1.tgz#47786bdaa087caf7b1b75e73abc5c7d540158cd0" integrity sha1-R3hr2qCHyvext15zq8XH1UAVjNA= +eventemitter3@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + events@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" @@ -1520,6 +2975,13 @@ express@^4.14.0, express@^4.16.3: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.2.0.tgz#8dd8d2dd21bcced3045be09621fa0cbf73908ba4" + integrity sha512-0ccUQK/9e3NreLFg6K6np8aPyRgwycx+oFGtfx1dSp7Wj00Ozw9r05FgBRlzjf2XBM7LAzwgLyDscRrtSU91hA== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -1535,7 +2997,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -1564,6 +3026,23 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= +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 sha1-S4w6z7Ugr635hgsfFM2M40As3dM= + dependencies: + checkpoint-store "^1.1.0" + +fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -1581,6 +3060,13 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +fetch-ponyfill@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" + integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= + dependencies: + node-fetch "~1.7.1" + figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -1643,6 +3129,14 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.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 sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^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" @@ -1667,7 +3161,38 @@ findup-sync@^2.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" -flush-write-stream@^1.0.0: +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + +flow-stoplight@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" + integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= + +flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== @@ -1675,18 +3200,25 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -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== dependencies: is-callable "^1.1.3" -for-in@^1.0.2: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -1739,6 +3271,15 @@ fs-extra@^2.0.0, fs-extra@^2.1.2: graceful-fs "^4.1.2" jsonfile "^2.1.0" +fs-extra@^4.0.2: + 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-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -1746,6 +3287,14 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + fs-promise@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-2.0.3.tgz#f64e4f854bcf689aa8bddcba268916db3db46854" @@ -1789,11 +3338,49 @@ fstream@^1.0.2, fstream@^1.0.8: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +ganache-core@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.8.0.tgz#eeadc7f7fc3a0c20d99f8f62021fb80b5a05490c" + integrity sha512-hfXqZGJx700jJqwDHNXrU2BnPYuETn1ekm36oRHuXY3oOuJLFs5C+cFdUFaBlgUxcau1dOgZUUwKqTAy0gTA9Q== + 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 "2.3.0" + ethereumjs-abi "0.6.7" + ethereumjs-account "3.0.0" + ethereumjs-block "2.2.0" + ethereumjs-tx "1.3.7" + ethereumjs-util "6.1.0" + ethereumjs-vm "3.0.0" + heap "0.2.6" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.14" + merkle-patricia-tree "2.3.2" + seedrandom "3.0.1" + source-map-support "0.5.12" + tmp "0.1.0" + web3-provider-engine "14.2.1" + websocket "1.0.29" + optionalDependencies: + ethereumjs-wallet "0.6.3" + web3 "1.2.1" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -1826,13 +3413,20 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -get-stream@^4.0.0: +get-stream@^4.0.0, 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.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + 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" @@ -1853,6 +3447,34 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob-watcher@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" + integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + object.defaults "^1.1.0" + glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -1865,6 +3487,18 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.1, glob@~7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -1905,6 +3539,18 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" +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== + +glogg@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + got@7.1.0, got@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" @@ -1925,6 +3571,28 @@ got@7.1.0, got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" +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" + +graceful-fs@^4.0.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" @@ -1940,6 +3608,47 @@ growl@1.10.3: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== +gulp-cli@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" + integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.1.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.0.1" + yargs "^7.1.0" + +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= + dependencies: + glogg "^1.0.0" + gzip-size@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" @@ -1961,6 +3670,13 @@ har-validator@~5.1.0: ajv "^6.5.5" har-schema "^2.0.0" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" @@ -2024,7 +3740,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.1, 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== @@ -2055,11 +3771,25 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hdkey@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.1.tgz#c2b3bfd5883ff9529b72f2f08b28be0972a9f64a" + integrity sha512-DvHZ5OuavsfWs5yfVJZestsnc3wzPvLWNk6c2nRUfo6X+OtxypGt20vDDf7Ba+MJzjL3KS1og2nw2eBbLCOUTA== + dependencies: + coinstring "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= +heap@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" + integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2069,6 +3799,14 @@ hmac-drbg@^1.0.0: 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 sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -2081,11 +3819,21 @@ hoopy@^0.1.2: resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== +hosted-git-info@^2.1.4: + version "2.8.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" + integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== + hosted-git-info@^2.6.0: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +http-cache-semantics@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" + integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== + http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -2122,7 +3870,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.4.4: +iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2153,6 +3901,11 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +immediate@^3.2.3, immediate@~3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" + integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= + immutable@^4.0.0-rc.12: version "4.0.0-rc.12" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" @@ -2194,6 +3947,11 @@ inherits@2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= +inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -2204,6 +3962,13 @@ interpret@^1.1.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +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" @@ -2219,6 +3984,14 @@ ipaddr.js@1.8.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -2233,6 +4006,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -2304,6 +4082,18 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" + integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= + 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" @@ -2345,6 +4135,11 @@ is-natural-number@^4.0.1: resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -2352,6 +4147,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" @@ -2376,12 +4176,19 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -2398,11 +4205,33 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + 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" @@ -2448,16 +4277,65 @@ js-sha3@^0.6.1: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.6.1.tgz#5b89f77a7477679877f58c4a075240934b1f95c0" integrity sha1-W4n3enR3Z5h39YxKB1JAk0sflcA= +"js-tokens@^3.0.0 || ^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 sha1-mGbfOVECEw449/mWvOtlRDIJwls= + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +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 sha1-p6+cICg4tekFxyUOVH8a/3cligI= + 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 sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + 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" @@ -2468,11 +4346,28 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + 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 sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -2487,6 +4382,18 @@ jsonfile@^2.1.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -2497,7 +4404,32 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -keccakjs@^0.2.1: +just-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= + +keccak@^1.0.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" + integrity sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw== + dependencies: + bindings "^1.2.1" + inherits "^2.0.3" + nan "^2.2.1" + safe-buffer "^5.1.0" + +keccak@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.0.0.tgz#7456ea5023284271e6f362b4397e8df4d2bb994c" + integrity sha512-rKe/lRr0KGhjoz97cwg+oeT1Rj/Y4cjae6glArioUC8JBF9ROGZctwIaaruM7d7naovME4Q8WcQSO908A8qcyQ== + dependencies: + bindings "^1.2.1" + inherits "^2.0.3" + nan "^2.2.1" + safe-buffer "^5.1.0" + +keccakjs@^0.2.0, keccakjs@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.3.tgz#5e4e969ce39689a3861f445d7752ee3477f9fe72" integrity sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg== @@ -2505,6 +4437,13 @@ keccakjs@^0.2.1: browserify-sha3 "^0.0.4" sha3 "^1.2.2" +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" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -2517,31 +4456,207 @@ kind-of@^4.0.0: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: - is-buffer "^1.1.5" + 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" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + +level-codec@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.1.tgz#042f4aa85e56d4328ace368c950811ba802b7247" + integrity sha512-ajFP0kJ+nyq4i6kptSM+mAvJKLOg1X5FiFPtLG9M5gCEZyBmgDi3FkDrvlMkEzrUn1cWxtvVmrvoS4ASyO/q+Q== + +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== + dependencies: + errno "~0.1.1" + +level-errors@^2.0.0, level-errors@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" + integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== + 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 sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= + 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== + dependencies: + level-packager "~4.0.0" + memdown "~3.0.0" + +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== + dependencies: + encoding-down "~5.0.0" + levelup "^3.0.0" -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== +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== + dependencies: + ltgt "^2.1.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-ws@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" + integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= + dependencies: + readable-stream "~1.0.15" + xtend "~2.1.1" -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +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== + dependencies: + deferred-leveldown "~4.0.0" + level-errors "~2.0.0" + level-iterator-stream "~3.0.0" + xtend "~4.0.0" + +levelup@^1.2.1: + version "1.3.9" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" + integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== + 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" + xtend "~4.0.0" -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== dependencies: - invert-kv "^1.0.0" + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== +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 sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= dependencies: - invert-kv "^2.0.0" + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" loader-runner@^2.3.0: version "2.4.0" @@ -2573,16 +4688,55 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +lodash@4.17.14: + version "4.17.14" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" + integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== + lodash@^4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== -lowercase-keys@^1.0.0: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.4: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +looper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" + integrity sha1-Zs0Md0rz1P7axTeU90LbVtqPCew= + +looper@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" + integrity sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k= + +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" + +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@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" + integrity sha1-cXibO39Tmb7IVl3aOKow0qCX7+4= + dependencies: + pseudomap "^1.0.1" + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -2598,6 +4752,16 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +ltgt@^2.1.2, ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= + +ltgt@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" + integrity sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ= + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -2613,6 +4777,13 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + mamacro@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" @@ -2625,7 +4796,7 @@ map-age-cleaner@^0.1.1: dependencies: p-defer "^1.0.0" -map-cache@^0.2.2: +map-cache@^0.2.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 sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= @@ -2637,6 +4808,16 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -2667,6 +4848,30 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memdown@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" + integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= + 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== + dependencies: + abstract-leveldown "~5.0.0" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" + memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -2680,6 +4885,20 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merkle-patricia-tree@2.3.2, 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" + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -2739,7 +4958,7 @@ mimic-fn@^2.0.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.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== @@ -2773,7 +4992,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.2.0: +minimist@^1.2.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -2786,6 +5005,14 @@ minipass@^2.2.1, minipass@^2.3.4: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^2.8.6, 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" + minizlib@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" @@ -2793,6 +5020,13 @@ minizlib@^1.1.1: dependencies: minipass "^2.2.1" +minizlib@^1.2.1: + 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" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -2879,6 +5113,11 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +mute-stdout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + mz@^2.6.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -2898,6 +5137,11 @@ nan@^2.0.8, nan@^2.11.0, nan@^2.3.3, nan@^2.9.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== +nan@^2.14.0, nan@^2.2.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + 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" @@ -2939,11 +5183,29 @@ neo-async@^2.5.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + 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== +node-fetch@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= + +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-libs-browser@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" @@ -2997,6 +5259,16 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -3009,6 +5281,18 @@ 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.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -3057,7 +5341,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.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -3071,11 +5355,26 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" + integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== + +object-keys@^1.0.11: + 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@^1.0.12: version "1.1.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -3083,13 +5382,49 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.pick@^1.3.0: +object.assign@^4.0.4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + oboe@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.3.tgz#2b4865dbd46be81225713f4e9bfe4bcf4f680a4f" @@ -3097,6 +5432,13 @@ oboe@2.1.3: dependencies: http-https "^1.0.0" +oboe@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" + integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= + dependencies: + http-https "^1.0.0" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -3104,7 +5446,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -3116,6 +5458,13 @@ opener@^1.5.1: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -3126,6 +5475,13 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -3144,7 +5500,7 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -3162,6 +5518,11 @@ p-cancelable@^0.3.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== +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-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -3248,6 +5609,15 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + parse-headers@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.2.tgz#9545e8a4c1ae5eaea7d24992bca890281ed26e34" @@ -3256,6 +5626,18 @@ parse-headers@^2.0.0: for-each "^0.3.3" string.prototype.trim "^1.1.2" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -3281,12 +5663,19 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + 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" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -3296,12 +5685,38 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -pbkdf2@^3.0.3: +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pbkdf2@^3.0.3, pbkdf2@^3.0.9: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== @@ -3327,7 +5742,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pify@^2.3.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -3366,11 +5781,36 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +precond@0.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" + integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= + prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +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== + +process-nextick-args@^2.0.0: + version "2.0.1" + 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-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" @@ -3391,6 +5831,14 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +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 sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= + dependencies: + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" + proxy-addr@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" @@ -3404,7 +5852,7 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.2: +pseudomap@^1.0.1, pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= @@ -3426,6 +5874,54 @@ public-encrypt@^4.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 sha1-tkLdElXaN2pwa220+pYvX9t0wxs= + +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 sha1-pOzuAeMwFV6RJLu89HYfIbOPUfU= + 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 sha1-Xy867UethpGfAbEqLpnW8b13ZYE= + +pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: + version "3.6.14" + resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" + integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== + +pull-window@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" + integrity sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA= + dependencies: + looper "^2.0.0" + pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -3442,7 +5938,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: +pumpify@^1.3.3, pumpify@^1.3.5: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== @@ -3495,7 +5991,7 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -3540,7 +6036,24 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +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 sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -3553,6 +6066,26 @@ rc@^1.2.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^1.0.33: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~1.0.15: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -3562,6 +6095,32 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +regenerate@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +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" @@ -3570,7 +6129,45 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -remove-trailing-separator@^1.0.1: +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + 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 sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= @@ -3585,6 +6182,27 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + request@^2.79.0, request@^2.85.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -3641,11 +6259,46 @@ resolve-from@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== + dependencies: + path-parse "^1.0.6" + +resolve@~1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" + integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== + dependencies: + path-parse "^1.0.6" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= + 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" @@ -3658,6 +6311,13 @@ rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: dependencies: glob "^7.1.3" +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -3666,6 +6326,13 @@ 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.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.4.tgz#d6b0e1659e9285fc509a5d169a9bd06f704951c1" + integrity sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw== + dependencies: + bn.js "^4.11.1" + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -3673,11 +6340,23 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" 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@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -3719,8 +6398,17 @@ scrypt.js@0.2.0: resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.0.tgz#af8d1465b71e9990110bedfc593b9479e03a8ada" integrity sha1-r40UZbcemZARC+38WTuUeeA6ito= dependencies: - scrypt "^6.0.2" + scrypt "^6.0.2" + scryptsy "^1.2.1" + +scrypt.js@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.3.0.tgz#6c62d61728ad533c8c376a2e5e3e86d41a95c4c0" + integrity sha512-42LTc1nyFsyv/o0gcHtDztrn+aqpkaCNt5Qh7ATBZfhEZU7IC/0oT/qbBH+uRNoAPvs2fwiOId68FDEoSRA8/A== + dependencies: scryptsy "^1.2.1" + optionalDependencies: + scrypt "^6.0.2" scrypt@^6.0.2: version "6.0.3" @@ -3729,6 +6417,11 @@ scrypt@^6.0.2: dependencies: nan "^2.0.8" +scryptsy@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== + scryptsy@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" @@ -3736,6 +6429,25 @@ scryptsy@^1.2.1: dependencies: pbkdf2 "^3.0.3" +secp256k1@^3.0.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.7.1.tgz#12e473e0e9a7c2f2d4d4818e722ad0e14cc1e2f1" + integrity sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.4.1" + nan "^2.14.0" + safe-buffer "^5.1.2" + +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== + seek-bzip@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" @@ -3743,11 +6455,38 @@ seek-bzip@^1.0.5: dependencies: commander "~2.8.1" +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== + +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= + dependencies: + sver-compat "^1.5.0" + +"semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" + integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== + semver@^5.0.1, semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +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.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" @@ -3798,6 +6537,11 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +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 sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" @@ -3879,6 +6623,11 @@ simple-get@^2.7.0: once "^1.3.1" simple-concat "^1.0.0" +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -3939,6 +6688,21 @@ source-map-resolve@^0.5.0: 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.10: version "0.5.11" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.11.tgz#efac2ce0800355d026326a0ca23e162aeac9a4e2" @@ -3952,7 +6716,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.6: +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 sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -3962,6 +6726,37 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + 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" @@ -3991,6 +6786,11 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -4025,6 +6825,11 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== + stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" @@ -4041,12 +6846,20 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +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" + 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 sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -string-width@^1.0.1: +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -4063,7 +6876,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string.prototype.trim@^1.1.2: +string.prototype.trim@^1.1.2, string.prototype.trim@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= @@ -4079,6 +6892,11 @@ string_decoder@^1.0.0: dependencies: safe-buffer "~5.1.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 sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -4100,6 +6918,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" @@ -4131,6 +6956,11 @@ supports-color@4.4.0: dependencies: has-flag "^2.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 sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -4138,6 +6968,14 @@ supports-color@^5.3.0, supports-color@^5.5.0: dependencies: has-flag "^3.0.0" +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + swarm-js@0.1.37: version "0.1.37" resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.37.tgz#27d485317a340bbeec40292af783cc10acfa4663" @@ -4157,11 +6995,48 @@ swarm-js@0.1.37: tar.gz "^1.0.5" xhr-request-promise "^0.1.2" +swarm-js@0.1.39: + version "0.1.39" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" + integrity sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + decompress "^4.0.0" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^7.1.0" + 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-promise "^0.1.2" + tapable@^1.0.0, tapable@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== +tape@^4.6.3: + version "4.11.0" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.11.0.tgz#63d41accd95e45a23a874473051c57fdbc58edc1" + integrity sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA== + dependencies: + deep-equal "~1.0.1" + defined "~1.0.0" + for-each "~0.3.3" + function-bind "~1.1.1" + glob "~7.1.4" + has "~1.0.3" + inherits "~2.0.4" + minimist "~1.2.0" + object-inspect "~1.6.0" + resolve "~1.11.1" + resumer "~0.0.0" + string.prototype.trim "~1.1.2" + through "~2.3.8" + tar-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" @@ -4208,6 +7083,19 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" +tar@^4.0.2: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + terser-webpack-plugin@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" @@ -4245,7 +7133,15 @@ thenify-all@^1.0.0, thenify-all@^1.6.0: dependencies: any-promise "^1.0.0" -through2@^2.0.0: +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0, through2@^2.0.3, 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== @@ -4253,11 +7149,16 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.8: +through@^2.3.8, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -4270,6 +7171,21 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +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" + +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -4280,6 +7196,11 @@ to-buffer@^1.1.1: resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== +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 sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + 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" @@ -4287,6 +7208,11 @@ 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" @@ -4305,6 +7231,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -4313,6 +7246,11 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + truffle-flattener@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.3.0.tgz#a5b0340897e32cf8389fea105b52fa93c335f04c" @@ -4378,11 +7316,21 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tweetnacl-util@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.0.tgz#4576c1cee5e2d63d207fee52f1ba02819480bc75" + integrity sha1-RXbBzuXi1j0gf+5S8boCgZSAvHU= + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +tweetnacl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.1.tgz#2594d42da73cd036bd0d2a54683dd35a6b55ca17" + integrity sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A== + type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -4391,6 +7339,16 @@ type-is@~1.6.16: media-typer "0.3.0" mime-types "~2.1.18" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typedarray-to-buffer@^3.1.2, typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -4408,6 +7366,23 @@ typescript@^3.3.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.1.tgz#b6691be11a881ffa9a05765a205cb7383f3b63c6" integrity sha512-3NSMb2VzDQm8oBTLH6Nj55VVtUEpe/rgkIzMir0qVoLyjDZlnMBva0U6vDiV3IH+sl/Yu6oP5QwsAQtHPmDd2Q== +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 sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU= + +typewise@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" + integrity sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE= + 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 sha1-yIgvobsQksBgBal/NO9chQjjZk4= + ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" @@ -4421,11 +7396,41 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + underscore@1.8.3: version "1.8.3" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= +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== + +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= + +undertaker@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" + integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -4450,6 +7455,24 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +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" @@ -4487,6 +7510,13 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" +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 sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + 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" @@ -4515,6 +7545,11 @@ utf8@2.1.1: resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" integrity sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g= +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== + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -4544,7 +7579,7 @@ uuid@2.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= -uuid@^3.3.2: +uuid@3.3.2, 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== @@ -4554,6 +7589,26 @@ v8-compile-cache@^2.0.2: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== +v8flags@^3.0.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" + integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== + dependencies: + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -4568,6 +7623,54 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" @@ -4593,6 +7696,15 @@ web3-bzz@1.0.0-beta.37: swarm-js "0.1.37" underscore "1.8.3" +web3-bzz@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" + integrity sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw== + dependencies: + got "9.6.0" + swarm-js "0.1.39" + underscore "1.9.1" + web3-core-helpers@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz#04ec354b7f5c57234c309eea2bda9bf1f2fe68ba" @@ -4602,6 +7714,15 @@ web3-core-helpers@1.0.0-beta.37: web3-eth-iban "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-core-helpers@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" + integrity sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.1" + web3-utils "1.2.1" + web3-core-method@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz#53d148e63f818b23461b26307afdfbdaa9457744" @@ -4613,6 +7734,17 @@ web3-core-method@1.0.0-beta.37: web3-core-subscriptions "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-core-method@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" + integrity sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-utils "1.2.1" + web3-core-promievent@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.37.tgz#4e51c469d0a7ac0a969885a4dbcde8504abe5b02" @@ -4621,6 +7753,14 @@ web3-core-promievent@1.0.0-beta.37: any-promise "1.3.0" eventemitter3 "1.1.1" +web3-core-promievent@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" + integrity sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw== + dependencies: + any-promise "1.3.0" + eventemitter3 "3.1.2" + web3-core-requestmanager@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz#721a75df5920621bff42d9d74f7a64413675d56b" @@ -4632,6 +7772,17 @@ web3-core-requestmanager@1.0.0-beta.37: web3-providers-ipc "1.0.0-beta.37" web3-providers-ws "1.0.0-beta.37" +web3-core-requestmanager@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" + integrity sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-providers-http "1.2.1" + web3-providers-ipc "1.2.1" + web3-providers-ws "1.2.1" + web3-core-subscriptions@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz#40de5e2490cc05b15faa8f935c97fd48d670cd9a" @@ -4641,6 +7792,15 @@ web3-core-subscriptions@1.0.0-beta.37: underscore "1.8.3" web3-core-helpers "1.0.0-beta.37" +web3-core-subscriptions@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" + integrity sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-core@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.37.tgz#66c2c7000772c9db36d737ada31607ace09b7e90" @@ -4651,6 +7811,16 @@ web3-core@1.0.0-beta.37: web3-core-requestmanager "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-core@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" + integrity sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg== + dependencies: + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-requestmanager "1.2.1" + web3-utils "1.2.1" + web3-eth-abi@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz#55592fa9cd2427d9f0441d78f3b8d0c1359a2a24" @@ -4660,6 +7830,15 @@ web3-eth-abi@1.0.0-beta.37: underscore "1.8.3" web3-utils "1.0.0-beta.37" +web3-eth-abi@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" + integrity sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.1" + web3-eth-accounts@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz#0a5a9f14a6c3bd285e001c15eb3bb38ffa4b5204" @@ -4676,6 +7855,23 @@ web3-eth-accounts@1.0.0-beta.37: web3-core-method "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth-accounts@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" + integrity sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + scryptsy "2.1.0" + semver "6.2.0" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" + web3-eth-contract@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz#87f93c95ed16f320ba54943b7886890de6766013" @@ -4690,6 +7886,20 @@ web3-eth-contract@1.0.0-beta.37: web3-eth-abi "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth-contract@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" + integrity sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g== + dependencies: + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-utils "1.2.1" + web3-eth-ens@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.37.tgz#714ecb01eb447ee3eb39b2b20a10ae96edb1f01f" @@ -4704,6 +7914,20 @@ web3-eth-ens@1.0.0-beta.37: web3-eth-contract "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth-ens@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" + integrity sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-contract "1.2.1" + web3-utils "1.2.1" + web3-eth-iban@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz#313a3f18ae2ab00ba98678ea1156b09ef32a3655" @@ -4712,6 +7936,14 @@ web3-eth-iban@1.0.0-beta.37: bn.js "4.11.6" web3-utils "1.0.0-beta.37" +web3-eth-iban@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" + integrity sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.1" + web3-eth-personal@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz#187472f51861e2b6d45da43411801bc91a859f9a" @@ -4723,6 +7955,17 @@ web3-eth-personal@1.0.0-beta.37: web3-net "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth-personal@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" + integrity sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg== + dependencies: + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" + web3-eth@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.37.tgz#0e8ffcd857a5f85ae4b5f052ad831ca5c56f4f74" @@ -4742,6 +7985,25 @@ web3-eth@1.0.0-beta.37: web3-net "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" + integrity sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA== + dependencies: + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-accounts "1.2.1" + web3-eth-contract "1.2.1" + web3-eth-ens "1.2.1" + web3-eth-iban "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" + web3-net@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.37.tgz#b494136043f3c6ba84fe4a47d4c028c2a63c9a8e" @@ -4751,6 +8013,41 @@ web3-net@1.0.0-beta.37: web3-core-method "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-net@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" + integrity sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw== + dependencies: + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" + +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.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz#c06efd60e16e329e25bd268d2eefc68d82d13651" @@ -4759,6 +8056,14 @@ web3-providers-http@1.0.0-beta.37: web3-core-helpers "1.0.0-beta.37" xhr2-cookies "1.1.0" +web3-providers-http@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" + integrity sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ== + dependencies: + web3-core-helpers "1.2.1" + xhr2-cookies "1.1.0" + web3-providers-ipc@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz#55d247e7197257ca0c3e4f4b0fe1561311b9d5b9" @@ -4768,6 +8073,15 @@ web3-providers-ipc@1.0.0-beta.37: underscore "1.8.3" web3-core-helpers "1.0.0-beta.37" +web3-providers-ipc@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" + integrity sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-providers-ws@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz#77c15aebc00b75d760d22d063ac2e415bdbef72f" @@ -4777,6 +8091,15 @@ web3-providers-ws@1.0.0-beta.37: web3-core-helpers "1.0.0-beta.37" websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" +web3-providers-ws@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" + integrity sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" + web3-shh@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.37.tgz#3246ce5229601b525020828a56ee283307057105" @@ -4787,6 +8110,16 @@ web3-shh@1.0.0-beta.37: web3-core-subscriptions "1.0.0-beta.37" web3-net "1.0.0-beta.37" +web3-shh@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" + integrity sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA== + dependencies: + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-net "1.2.1" + web3-utils@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.37.tgz#ab868a90fe5e649337e38bdaf72133fcbf4d414d" @@ -4800,6 +8133,19 @@ web3-utils@1.0.0-beta.37: underscore "1.8.3" utf8 "2.1.1" +web3-utils@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" + integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randomhex "0.1.5" + underscore "1.9.1" + utf8 "3.0.0" + web3@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.37.tgz#b42c30e67195f816cd19d048fda872f70eca7083" @@ -4813,6 +8159,19 @@ web3@1.0.0-beta.37: web3-shh "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" + integrity sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw== + dependencies: + web3-bzz "1.2.1" + web3-core "1.2.1" + web3-eth "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-shh "1.2.1" + web3-utils "1.2.1" + webpack-bundle-analyzer@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.1.0.tgz#2f19cbb87bb6d4f3cb4e59cb67c837bd9436e89d" @@ -4887,6 +8246,17 @@ webpack@^4.29.6: watchpack "^1.5.0" webpack-sources "^1.3.0" +websocket@1.0.29: + version "1.0.29" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.29.tgz#3f83e49d3279657c58b02a22d90749c806101b98" + integrity sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g== + dependencies: + debug "^2.2.0" + gulp "^4.0.2" + nan "^2.11.0" + typedarray-to-buffer "^3.1.5" + yaeti "^0.0.6" + websocket@^1.0.28: version "1.0.28" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.28.tgz#9e5f6fdc8a3fe01d4422647ef93abdd8d45a78d3" @@ -4906,6 +8276,26 @@ websocket@^1.0.28: typedarray-to-buffer "^3.1.2" yaeti "^0.0.6" +"websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": + version "1.0.29" + resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/905deb4812572b344f5801f8c9ce8bb02799d82e" + dependencies: + debug "^2.2.0" + es5-ext "^0.10.50" + nan "^2.14.0" + typedarray-to-buffer "^3.1.5" + 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== + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -4954,6 +8344,13 @@ ws@^3.0.0: safe-buffer "~5.1.0" ultron "~1.1.0" +ws@^5.1.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + ws@^6.0.0: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" @@ -4988,7 +8385,7 @@ xhr2-cookies@1.1.0: dependencies: cookiejar "^2.1.1" -xhr@^2.0.4, xhr@^2.3.3: +xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: version "2.5.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== @@ -5008,6 +8405,18 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= +xtend@^4.0.1, xtend@~4.0.0: + 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 sha1-bv7MKk2tjmlixJAbM3znuoe10os= + dependencies: + object-keys "~0.4.0" + y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -5033,6 +8442,11 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -5041,6 +8455,13 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + yargs-parser@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" @@ -5084,6 +8505,25 @@ yargs@^12.0.5: y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" +yargs@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + 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.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" diff --git a/script/coverage b/script/coverage index 700b48161..8fa8ed870 100755 --- a/script/coverage +++ b/script/coverage @@ -3,21 +3,20 @@ dir=`dirname $0` proj_root="$dir/.." -[[ ! -d ./.tsbuilt || -z $NO_TSC ]] && "$proj_root/scenario/script/tsc" +export NETWORK="coverage" case $1 in - "mocha") - export TEST_COMMAND="NETWORK=coverage SCENARIOS="skipall" script/test" - export SKIP_UNITROLLER="" - ;; - "scenario") - export TEST_COMMAND="NETWORK=coverage script/test test/ScenarioTest.js" - export SKIP_UNITROLLER="true" - ;; - *) - ;; + "mocha") + export SCENARIOS="skipall" + export NO_TSC="true" + export no_compile="true" # mocha doesnt need contracts written to by solc + source $dir/test + ;; + "scenario") + # dont instrument unitroller, slows everything down bigly + export SKIP_UNITROLLER="true" + source $dir/test --file="test/ScenarioTest.js" + ;; + *) + echo "must provide mocha/scenario option to coverage script" + ;; esac - -echo "TEST_COMMAND: $TEST_COMMAND" -echo "SKIP_UNITROLLER: $SKIP_UNITROLLER" - -"$proj_root/node_modules/.bin/solidity-coverage" diff --git a/script/ganache b/script/ganache index a8b0d2176..c75dcf1b8 100755 --- a/script/ganache +++ b/script/ganache @@ -3,7 +3,7 @@ dir=`dirname $0` proj_root="$dir/.." -node "$proj_root/node_modules/ganache-cli/cli.js" \ +node --stack-size=10000 "$proj_root/node_modules/ganache-cli/cli.js" \ --gasLimit 20000000 \ --gasPrice 20000 \ --defaultBalanceEther 1000000000 \ diff --git a/script/test b/script/test index 8e0f6cee1..fc1d6a57f 100755 --- a/script/test +++ b/script/test @@ -30,8 +30,12 @@ fi # Compile scenario runner [[ ! -d ./.tsbuilt || -z $NO_TSC ]] && "$proj_root/scenario/script/tsc" -[[ -z $no_compile ]] && solc --combined-json bin,abi --optimize contracts/*.sol contracts/**/*.sol --allow-paths ./contracts,./contracts/test > $proj_root/networks/${network}-contracts.json -echo "cwd: $(pwd), proj_root: $(cd $proj_root && pwd), networks: $(ls -l $proj_root/networks/${network}-contracts.json)" -node --stack_size=10000 "$proj_root/node_modules/truffle/build/cli.bundled.js" compile --network "$network" -proj_root="$proj_root" verbose="$verbose" node --stack_size=10000 "$proj_root/node_modules/truffle/build/cli.bundled.js" test --network "$network" $@ +if [ "$NETWORK" = "coverage" ] + then + proj_root="$proj_root" verbose="$verbose" truffle run coverage --network "$network" $@ +else + # compile with solc for scenarios + [[ -z $no_compile ]] && solc --combined-json bin,abi --optimize contracts/*.sol contracts/**/*.sol --allow-paths ./contracts,./contracts/test > networks/${network}-contracts.json + proj_root="$proj_root" verbose="$verbose" node --stack_size=10000 "$proj_root/node_modules/truffle/build/cli.bundled.js" test --network "$network" $@ +fi diff --git a/spec/scenario/AddReserves.scen b/spec/scenario/AddReserves.scen new file mode 100644 index 000000000..d7430aa5c --- /dev/null +++ b/spec/scenario/AddReserves.scen @@ -0,0 +1,133 @@ +Test "Add all reserves and verify effects" + NewComptroller + ListedCToken ZRX cZRX initialExchangeRate:1e9 + Prep Geoff 50e18 ZRX cZRX + Mint Geoff 50e18 cZRX + Assert Equal (Erc20 cZRX TokenBalance Geoff) (Exactly 500e8) -- 50e18 / 1e9 + Assert Equal (CToken cZRX UnderlyingBalance Geoff) (Exactly 50e18) + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1e9) + -- Get some brah to borrow then repay + BorrowAndRepayWithInterest ZRX cZRX 10e18 5e18 interestRate:0.000001 blocks:500000 reserveRate:0.2 + -- We've accrued .0001% interest for 500000 blocks, or 50% of the principal (10e18), + -- thus, we should have accrued 5e18 of interest for the protocol + -- The reserves should get 20% of this, or 1e18, and the rest + -- is due pro-rata to all suppliers. We just have one, so + -- let's check that account is given correct new balance. + Assert Equal (Erc20 ZRX TokenBalance cZRX) (Exactly 55e18) + Assert Equal (Erc20 ZRX TokenBalance Root) (Exactly 0e18) + Assert Equal (Erc20 cZRX TokenBalance Geoff) (Exactly 500e8) + Assert Equal (CToken cZRX Reserves) (Exactly 1e18) + Assert Equal (CToken cZRX UnderlyingBalance Geoff) (Exactly 54e18) + -- (55.0e18+0.0e18-1.0e18)/500.0e8 + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1.08e9) + -- Now, let's pull out add some our reserves (1e18) + Erc20 ZRX Faucet Root 3e18 + From Root (Erc20 ZRX Approve cZRX 6e18) + AddReserves 1e18 cZRX + Assert Equal (Erc20 ZRX TokenBalance cZRX) (Exactly 56e18) + Assert Equal (Erc20 ZRX TokenBalance Root) (Exactly 2e18) + Assert Equal (Erc20 cZRX TokenBalance Geoff) (Exactly 500e8) + Assert Equal (CToken cZRX Reserves) (Exactly 2e18) + Assert Equal (CToken cZRX UnderlyingBalance Geoff) (Exactly 54e18) + -- (54.0e18+0.0e18-0.0e18)/500.0e8 + -- unchanged + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1.08e9) + +Test "Remove and re add reserves and remove again" + NewComptroller + ListedCToken ZRX cZRX initialExchangeRate:1e9 + Prep Geoff 50e18 ZRX cZRX + Mint Geoff 50e18 cZRX + Assert Equal (Erc20 cZRX TokenBalance Geoff) (Exactly 500e8) + Assert Equal (CToken cZRX UnderlyingBalance Geoff) (Exactly 50e18) + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1e9) + -- Get some brah to borrow then repay + BorrowAndRepayWithInterest ZRX cZRX 10e18 5e18 interestRate:0.000001 blocks:500000 reserveRate:0.2 + -- We've accrued .0001% interest for 500000 blocks, or 50% of the principal (10e18), + -- thus, we should have accrued 5e18 of interest for the protocol + -- The reserves should get 20% of this, or 1e18, and the rest + -- is due pro-rata to all suppliers. We just have one, so + -- let's check that account is given correct new balance. + Assert Equal (Erc20 ZRX TokenBalance cZRX) (Exactly 55e18) + Assert Equal (Erc20 ZRX TokenBalance Root) (Exactly 0e18) + Assert Equal (Erc20 cZRX TokenBalance Geoff) (Exactly 500e8) + Assert Equal (CToken cZRX Reserves) (Exactly 1e18) + Assert Equal (CToken cZRX UnderlyingBalance Geoff) (Exactly 54e18) + -- (55.0e18+0.0e18-1.0e18)/500.0e8 + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1.08e9) + -- Now, let's pull out half of reserves (0.5e18) + ReduceReserves 0.5e18 cZRX + Assert Equal (Erc20 ZRX TokenBalance cZRX) (Exactly 54.5e18) + Assert Equal (Erc20 ZRX TokenBalance Root) (Exactly 0.5e18) + Assert Equal (Erc20 cZRX TokenBalance Geoff) (Exactly 500e8) + Assert Equal (CToken cZRX Reserves) (Exactly 0.5e18) + Assert Equal (CToken cZRX UnderlyingBalance Geoff) (Exactly 54e18) + -- (54.5e18+0.5e18-0.0e18)/500.0e8 + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1.08e9) + -- Now, let's put back reserves (1e18) + From Root (Erc20 ZRX Approve cZRX 6e18) + AddReserves 0.5e18 cZRX + Assert Equal (Erc20 ZRX TokenBalance cZRX) (Exactly 55e18) + Assert Equal (Erc20 ZRX TokenBalance Root) (Exactly 0e18) + Assert Equal (Erc20 cZRX TokenBalance Geoff) (Exactly 500e8) + Assert Equal (CToken cZRX Reserves) (Exactly 1e18) + Assert Equal (CToken cZRX UnderlyingBalance Geoff) (Exactly 54e18) + -- (54.5e18+0.5e18-0.0e18)/500.0e8 + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1.08e9) + +Test "add reserves to empty contract" + NewComptroller + ListedCToken ZRX cZRX initialExchangeRate:1e9 + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1e9) + Erc20 ZRX Faucet Root 3e18 + From Root (Erc20 ZRX Approve cZRX 6e18) + AddReserves 2e18 cZRX + Assert Equal (Erc20 ZRX TokenBalance cZRX) (Exactly 2e18) + Assert Equal (Erc20 ZRX TokenBalance Root) (Exactly 1e18) + Assert Equal (CToken cZRX Reserves) (Exactly 2e18) + -- unchanged + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1e9) + +Test "add reserves failures" + NewComptroller + ListedCToken ZRX cZRX initialExchangeRate:1e9 + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1e9) + Assert Equal (CToken cZRX Reserves) (Exactly 0e18) + Erc20 ZRX Faucet Root 1e18 + AllowFailures + AddReserves 2e18 cZRX + Assert Failure TOKEN_INSUFFICIENT_ALLOWANCE ADD_RESERVES_TRANSFER_IN_NOT_POSSIBLE + Assert Equal (Erc20 ZRX TokenBalance cZRX) (Exactly 0e18) + Assert Equal (Erc20 ZRX TokenBalance Root) (Exactly 1e18) + Assert Equal (CToken cZRX Reserves) (Exactly 0e18) + -- unchanged + Assert Equal (CToken cZRX ExchangeRate) (Exactly 1e9) + +Test "Add reserves WBTC when paused" + NewComptroller + ListedCToken WBTC cWBTC initialExchangeRate:1e9 tokenType:WBTC + Prep Geoff 50e18 WBTC cWBTC + Mint Geoff 50e18 cWBTC + Assert Equal (Erc20 cWBTC TokenBalance Geoff) (Exactly 500e8) + Assert Equal (CToken cWBTC UnderlyingBalance Geoff) (Exactly 50e18) + Assert Equal (CToken cWBTC ExchangeRate) (Exactly 1e9) + -- Get some brah to borrow then repay + BorrowAndRepayWithInterest WBTC cWBTC 10e18 5e18 interestRate:0.000001 blocks:500000 reserveRate:0.2 + -- We've accrued .0001% interest for 500000 blocks, or 50% of the principal (10e18), + -- thus, we should have accrued 5e18 of interest for the protocol + -- The reserves should get 20% of this, or 1e18, and the rest + -- is due pro-rata to all suppliers. We just have one, so + -- let's check that account is given correct new balance. + Erc20 WBTC Faucet Root 3e18 + Invariant Remains (Erc20 WBTC TokenBalance cWBTC) (Exactly 55e18) + Invariant Remains (Erc20 WBTC TokenBalance Root) (Exactly 3e18) + Invariant Remains (Erc20 cWBTC TokenBalance Geoff) (Exactly 500e8) + Invariant Remains (CToken cWBTC Reserves) (Exactly 1e18) + Invariant Remains (CToken cWBTC UnderlyingBalance Geoff) (Exactly 54e18) + -- (55.0e18+0.0e18-1.0e18)/500.0e8 + Invariant Remains (CToken cWBTC ExchangeRate) (Exactly 1.08e9) + From Root (Erc20 WBTC Approve cWBTC 6e18) + Erc20 WBTC Pause + AllowFailures + AddReserves 1e18 cWBTC + Assert Revert diff --git a/spec/scenario/ChangeDelegate.scen b/spec/scenario/ChangeDelegate.scen new file mode 100644 index 000000000..08dbbc919 --- /dev/null +++ b/spec/scenario/ChangeDelegate.scen @@ -0,0 +1,11 @@ +-- Delegate upgrade tests + +Test "Change the delegate" + NewComptroller + NewCToken DEL cDEL + Support cDEL collateralFactor:0.5 + Prep Jared Some DEL cDEL + Mint Jared 100e18 cDEL + CTokenDelegate Deploy CErc20Delegate cErc20Delegate2 + CToken cDEL SetImplementation (CTokenDelegate cErc20Delegate2 Address) True "0x0" + Redeem Jared 50e9 cDEL diff --git a/spec/scenario/CoreMacros b/spec/scenario/CoreMacros index e150a7ee8..4abe09c5b 100644 --- a/spec/scenario/CoreMacros +++ b/spec/scenario/CoreMacros @@ -11,7 +11,7 @@ Macro PricedComptroller closeFactor=0.1 maxAssets=20 PriceOracle Deploy Simple ComptrollerImpl Deploy ScenarioG1 ScenComptrollerG1 Unitroller SetPendingImpl ScenComptrollerG1 - PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address Zero) (Address Zero) (Address Zero) -- Final argument is a Junk address, if listing cEther use ListedEtherToken to replace proxy + PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address Zero) (Address Zero) (Address Zero) (Address Zero) -- if listing cEther use ListedEtherToken to replace proxy ComptrollerImpl ScenComptrollerG1 BecomeG1 (PriceOracleProxy Address) closeFactor maxAssets ComptrollerImpl Deploy Scenario ScenComptroller Unitroller SetPendingImpl ScenComptroller @@ -22,13 +22,25 @@ Macro NewComptroller price=1.0 closeFactor=0.1 maxAssets=20 PriceOracle Deploy Fixed price ComptrollerImpl Deploy ScenarioG1 ScenComptrollerG1 Unitroller SetPendingImpl ScenComptrollerG1 - PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address Zero) (Address Zero) (Address Zero) -- Junk address, if listing cEther use ListedEtherToken to replace proxy + PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address Zero) (Address Zero) (Address Zero) (Address Zero) -- if listing cEther use ListedEtherToken to replace proxy ComptrollerImpl ScenComptrollerG1 BecomeG1 (PriceOracleProxy Address) closeFactor maxAssets ComptrollerImpl Deploy Scenario ScenComptroller Unitroller SetPendingImpl ScenComptroller ComptrollerImpl ScenComptroller Become -Macro NewCToken erc20 cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals=8 tokenType=Standard cTokenType=Scenario admin=Admin +Macro NewCToken erc20 cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals=8 tokenType=Standard delegatorType=CErc20DelegatorScenario cTokenType=CErc20DelegateScenario admin=Admin becomeImplementationData="0x0" + Erc20 Deploy tokenType erc20 erc20 + InterestRateModel Deploy Fixed StdInterest borrowRate -- Note: interest rate model probably shouldn't be global + CTokenDelegate Deploy cTokenType cErc20Delegate + CToken Deploy delegatorType cToken cToken (Erc20 erc20 Address) (Comptroller Address) (InterestRateModel StdInterest Address) initialExchangeRate decimals admin (CTokenDelegate cErc20Delegate Address) becomeImplementationData + +-- Same as NewCToken but does not deploy an ERC20. Used for special ERC20s that are initialized differently +Macro NewCTokenBringERC20 erc20 cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals=8 delegatorType=CErc20DelegatorScenario cTokenType=CErc20DelegateScenario admin=Admin becomeImplementationData="0x0" + InterestRateModel Deploy Fixed StdInterest borrowRate -- Note: interest rate model probably shouldn't be global + CTokenDelegate Deploy cTokenType cErc20Delegate + CToken Deploy delegatorType cToken cToken (Erc20 erc20 Address) (Comptroller Address) (InterestRateModel StdInterest Address) initialExchangeRate decimals admin (CTokenDelegate cErc20Delegate Address) becomeImplementationData + +Macro NewCTokenImmutable erc20 cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals=8 tokenType=Standard cTokenType=Scenario admin=Admin Erc20 Deploy tokenType erc20 erc20 InterestRateModel Deploy Fixed StdInterest borrowRate -- Note: interest rate model probably shouldn't be global CToken Deploy cTokenType cToken cToken (Erc20 erc20 Address) (Comptroller Address) (InterestRateModel StdInterest Address) initialExchangeRate decimals admin @@ -37,14 +49,18 @@ Macro NewEtherToken cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals= InterestRateModel Deploy Fixed StdInterest borrowRate -- Note: interest rate model probably shouldn't be global CToken Deploy CEtherScenario cToken cToken (Comptroller Address) (InterestRateModel StdInterest Address) initialExchangeRate decimals admin -Macro ListedCToken erc20 cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals=8 tokenType=Standard cTokenType=Scenario admin=Admin - NewCToken erc20 cToken borrowRate initialExchangeRate decimals tokenType cTokenType admin +Macro ListedCToken erc20 cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals=8 tokenType=Standard delegatorType=CErc20DelegatorScenario cTokenType=CErc20DelegateScenario admin=Admin + NewCToken erc20 cToken borrowRate initialExchangeRate decimals tokenType delegatorType cTokenType admin + Comptroller SupportMarket cToken + +Macro ListedCTokenImmutable erc20 cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals=8 tokenType=Standard cTokenType=Scenario admin=Admin + NewCTokenImmutable erc20 cToken borrowRate initialExchangeRate decimals tokenType cTokenType admin Comptroller SupportMarket cToken Macro ListedEtherToken cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals=8 admin=Admin NewEtherToken cToken borrowRate initialExchangeRate decimals admin Comptroller SupportMarket cToken - PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address cETH) (Address Zero) (Address Zero) + PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address cETH) (Address Zero) (Address Zero) (Address Zero) Comptroller SetPriceOracle (PriceOracleProxy Address) Macro ListedEtherTokenMinted cToken borrowRate=0.000005 initialExchangeRate=2e9 decimals=8 admin=Admin @@ -136,6 +152,9 @@ Macro Support cToken collateralFactor=0.5 Macro SetCollateralFactor cToken collateralFactor=0.5 Comptroller SetCollateralFactor cToken collateralFactor +Macro AddReserves amount token user=Root + From user (CToken token AddReserves amount) + Macro ReduceReserves amount token CToken token ReduceReserves amount diff --git a/spec/scenario/Fee.scen b/spec/scenario/Fee.scen new file mode 100644 index 000000000..87f6eba67 --- /dev/null +++ b/spec/scenario/Fee.scen @@ -0,0 +1,95 @@ + +Test "Transfer fee goes to admin" + Erc20 Deploy Fee USDT USDT 18 100 Admin + Give Torrey 1e18 USDT + From Torrey (Erc20 USDT Transfer Coburn 1e18) + Assert Equal (ERC20 USDT TokenBalance Torrey) 0e18 + Assert Equal (ERC20 USDT TokenBalance Coburn) 0.99e18 + Assert Equal (ERC20 USDT TokenBalance Admin) 0.01e18 + +Test "Mint should work and not change exchange rate" + NewComptroller price:1.0 + Erc20 Deploy Fee USDT USDT 18 100 Admin + NewCTokenBringERC20 USDT cUSDT + Support cUSDT collateralFactor:0.5 + Invariant Static (CToken cUSDT ExchangeRate) + Prep Torrey 1e18 USDT cUSDT + Mint Torrey 1e18 cUSDT + Assert Equal (ERC20 USDT TokenBalance cUSDT) 0.99e18 + +Test "Repay borrow should work and not change exchange rate" + PricedComptroller + Erc20 Deploy Fee USDT USDT 18 100 Admin + NewCTokenBringERC20 USDT cUSDT + NewCToken ZRX cZRX 0.000005 2e9 8 Standard + PriceOracle SetPrice cZRX 1.0 + PriceOracle SetPrice cUSDT 1.0 + Support cZRX 0.5 + Support cUSDT 0.5 + Give cUSDT 10e18 USDT -- Faucet some Tether to borrow + Invariant Static (CToken cUSDT ExchangeRate) + Prep Torrey 100e18 ZRX cZRX + Mint Torrey 100e18 cZRX + EnterMarkets Torrey cUSDT + EnterMarkets Torrey cZRX + Borrow Torrey 1e18 cUSDT -- we only received 0.99 tether bc of fee + Assert Equal (ERC20 USDT TokenBalance Torrey) 0.99e18 + FastForward 196000 Blocks -- 1e18 * 196000 * 0.000005 = 0.98e18 interest accrued + Assert Equal (CToken cUSDT TotalBorrowsCurrent) 1.98e18 + Prep Torrey 1.01e18 USDT cUSDT 2e18 -- so give 2 - 0.99 = 1.01, and approve 2e18 + RepayBorrow Torrey 2e18 cUSDT -- repay more than we owe to account for fee + Assert Equal (CToken cUSDT BorrowBalance Torrey) 0 + Assert Equal (CToken cUSDT TotalBorrowsCurrent) 0 + Assert Equal (ERC20 USDT TokenBalance Torrey) 0 + +Test "Should be able to liquidate fee token borrow" + PricedComptroller + Comptroller LiquidationIncentive 1.1 + Erc20 Deploy Fee USDT USDT 18 100 Admin + NewCTokenBringERC20 USDT cUSDT + NewCToken ZRX cZRX 0.000005 2e9 8 Standard + PriceOracle SetPrice cZRX 1.0 + PriceOracle SetPrice cUSDT 1.0 + Support cZRX 0.5 + Support cUSDT 0.5 + Give cUSDT 10e18 USDT -- Faucet some Tether to borrow + Invariant Static (CToken cUSDT ExchangeRate) + Invariant Static (CToken cZRX ExchangeRate) + Prep Torrey 2e18 ZRX cZRX + Mint Torrey 2e18 cZRX + EnterMarkets Torrey cUSDT + EnterMarkets Torrey cZRX + Borrow Torrey 1e18 cUSDT -- we only received 0.99 tether bc of fee + Assert Equal (ERC20 USDT TokenBalance Torrey) 0.99e18 + FastForward 196000 Blocks -- 1e18 * 196000 * 0.000005 = 0.98e18 interest accrued + Assert Equal (CToken cUSDT TotalBorrowsCurrent) 1.98e18 + -- OK! should be ready to liquidate, so lets do that + Prep Coburn 2e18 USDT cUSDT + Liquidate Coburn "->" Torrey 0.1e18 cUSDT "Seizing" cZRX + -- 5.445e7 = 0.1 (amount liquidated) * 1.1 (liq discount) * .99 (fee) / 2e9 (exchange rate) + Assert Equal (Erc20 cZRX TokenBalance Coburn) 5.445e7 + Assert Equal (CToken cUSDT BorrowBalance Torrey) 1.881e18 -- 1.98 - (0.1 * .99) was liquidated + Assert Equal (Erc20 USDT TokenBalance Coburn) 1.9e18 + +Test "Should be able to redeem a fee CToken, exchange Rate should not change" + NewComptroller price:1.0 + Erc20 Deploy Fee USDT USDT 18 100 Admin + NewCTokenBringERC20 USDT cUSDT + Support cUSDT collateralFactor:0.5 + Invariant Static (CToken cUSDT ExchangeRate) + Prep Torrey 1e18 USDT cUSDT + Mint Torrey 1e18 cUSDT + Redeem Torrey (Erc20 cUSDT TokenBalance Torrey) cUSDT + +Test "Order of redeems should not matter if no interest accrued" + NewComptroller price:1.0 + Erc20 Deploy Fee USDT USDT 18 100 Admin + NewCTokenBringERC20 USDT cUSDT + Support cUSDT collateralFactor:0.5 + Invariant Static (CToken cUSDT ExchangeRate) + Prep Torrey 1e18 USDT cUSDT + Mint Torrey 1e18 cUSDT + Prep Coburn 1e18 USDT cUSDT + Mint Coburn 1e18 cUSDT + Redeem Torrey (Erc20 cUSDT TokenBalance Torrey) cUSDT + Redeem Coburn (Erc20 cUSDT TokenBalance Coburn) cUSDT diff --git a/spec/scenario/InKindLiquidation.scen b/spec/scenario/InKindLiquidation.scen new file mode 100644 index 000000000..648010763 --- /dev/null +++ b/spec/scenario/InKindLiquidation.scen @@ -0,0 +1,440 @@ + +Macro InKindBorrow borrowAmount borrowRate user=Geoff borrowPrice=1.0 mintAmount=100e18 giveAmount=0e18 borrowTokenType=Standard + PricedComptroller + Comptroller LiquidationIncentive 1.1 + NewCToken BAT cBAT borrowRate 2e9 8 borrowTokenType -- note: cannot use macros with named args right now + Give cBAT giveAmount BAT -- Faucet some bat + PriceOracle SetPrice cBAT borrowPrice + Support cBAT collateralFactor:0.5 + Prep user mintAmount BAT cBAT + Mint user mintAmount cBAT + EnterMarkets user cBAT + Borrow user borrowAmount cBAT + +Test "Insufficient in-kind shortfall" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 51e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 19600000 Blocks -- 1e18 * (1 + 19600000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Assert Equal (CToken cBAT BorrowBalanceStored Geoff) 99e18 + Assert Equal (CToken cBAT TotalBorrows) 99e18 + -- Check user liquidity and verify equals 0 + Assert Equal (Comptroller Liquidity Geoff) 0e18 -- ( ( 1.0 * ( 100e18 + 98e18 ) * 0.5 ) - ( ( 98 + 1 ) * 1e18 ) ) / 1e18 + -- At exactly zero, should not be able to liquidate + Prep Torrey 10e18 BAT cBAT + AllowFailures + Liquidate Torrey "->" Geoff 10e18 cBAT "Seizing" cBAT + Assert Failure COMPTROLLER_REJECTION LIQUIDATE_COMPTROLLER_REJECTION INSUFFICIENT_SHORTFALL + +Test "Cannot self-in-kind-liquidate" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 51e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Assert Equal (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Assert Equal (CToken cBAT TotalBorrows) 101e18 + -- Check user liquidity and verify < 0 + Assert Equal (Comptroller Liquidity Geoff) -1e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Geoff 10e18 BAT cBAT + AllowFailures + Liquidate Geoff "->" Geoff 2e18 cBAT "Seizing" cBAT + Assert Failure INVALID_ACCOUNT_PAIR LIQUIDATE_LIQUIDATOR_IS_BORROWER + +Test "Liqidate in-kind beyond max close" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 51e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Assert Equal (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Assert Equal (CToken cBAT TotalBorrows) 101e18 + -- Check user liquidity and verify < 0 + Assert Equal (Comptroller Liquidity Geoff) -1e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 20e18 BAT cBAT + AllowFailures + Liquidate Torrey "->" Geoff 20e18 cBAT "Seizing" cBAT + Assert Failure COMPTROLLER_REJECTION LIQUIDATE_COMPTROLLER_REJECTION TOO_MUCH_REPAY + +Test "Proper In-Kind Liquidation" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Assert Equal (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Assert Equal (CToken cBAT TotalBorrows) 101e18 + -- Check user liquidity and verify < 0 + Assert Equal (Comptroller Liquidity Geoff) -1e18 -- ( ( 1.0 * ( 100e18 + 100e18 ) * 0.5 ) - ( 101 * 1e18 ) ) / 1e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 2e18 BAT cBAT + -- + -- Let's check how values start before liquidation + -- Note: we're going to be some-what exhausive in what we check + Invariant Remains (Erc20 BAT TokenBalance Geoff) 1e18 -- all was minted, this is what was borrowed + Assert Equal (Erc20 BAT TokenBalance Torrey) 2e18 -- from prep above + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 -- from minting minus 1e18 lent to geoff + Assert Equal (Erc20 cBAT TokenBalance Geoff) 50e9 -- from minting + Assert Equal (Erc20 cBAT TokenBalance Torrey) 0e9 -- never had any + Invariant Remains (Erc20 BAT TokenBalance Geoff) 1e18 -- original amount borrowed + Assert Equal (CToken cBAT BorrowBalanceStored Geoff) 101e18 -- all that interest + Assert Equal (CToken cBAT TotalBorrows) 101e18 -- all those borrowers + Assert Equal (CToken cBAT ExchangeRate) 4e9 --- XXX: Verify this + -- Do the liquidation + Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cBAT -- should now take twice as much collateral + -- + -- And see what they are now + Assert Equal (CToken cBAT ExchangeRate) 4e9 --- XXX: Verify this + Assert Equal (Erc20 cBAT TokenBalance Geoff) 49.45e9 -- 1:1 -> 1 x 2e18 x 1.1 ÷ 4e9 [exchange rate] = 0.55e9 -> Torrey + Assert Equal (Erc20 cBAT TokenBalance Torrey) 0.55e9 -- didn't have any beforehand + Assert Equal (Erc20 BAT TokenBalance Torrey) 0e18 -- repaid + Assert Equal (Erc20 BAT TokenBalance cBAT) 101e18 -- had 100e18, lent 1e18 to geoff, repaid 2 + Assert Equal (CToken cBAT BorrowBalanceStored Geoff) 99e18 -- less closed amount + Assert Equal (CToken cBAT TotalBorrows) 99e18 -- + -- Prices are 1:1 and collateral factor is 0.5 + -- User now has 49.45e9 outstanding supply (yielding 98.9 borrowing capacity due + -- to the collateral factor (0.5) and exchange rate (4e9)). + -- The user also has a 99e18 borrow outstanding which is weighted 1:1. + -- Thus the liquidity is (98.9-99)e18 or -0.1e18. + Assert Equal (Comptroller Liquidity Geoff) -0.1e18 + +Test "Liquidate exactly zero" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Invariant Remains (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Invariant Remains (CToken cBAT TotalBorrows) 101e18 + -- Check user liquidity and verify < 0 + Invariant Remains (Comptroller Liquidity Geoff) -1e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 10e18 BAT cBAT + AllowFailures + Liquidate Torrey "->" Geoff 0e18 cBAT "Seizing" cBAT + Assert Failure INVALID_CLOSE_AMOUNT_REQUESTED LIQUIDATE_CLOSE_AMOUNT_IS_ZERO + +Test "When price oracle for collateral token is zero" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Invariant Remains (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Invariant Remains (CToken cBAT TotalBorrows) 101e18 + -- Check user liquidity and verify < 0 + Assert Equal (Comptroller Liquidity Geoff) -1e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 10e18 BAT cBAT + PriceOracle SetPrice cBAT 0 + AllowFailures + Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cBAT + Assert Failure COMPTROLLER_REJECTION LIQUIDATE_COMPTROLLER_REJECTION PRICE_ERROR + +Test "When price oracle for collateral token is whack" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Invariant Remains (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Invariant Remains (CToken cBAT TotalBorrows) 101e18 + -- Check user liquidity and verify < 0 + Assert Equal (Comptroller Liquidity Geoff) -1e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 10e18 BAT cBAT + PriceOracle SetPrice cBAT Max + AllowFailures + Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cBAT + Assert Failure COMPTROLLER_REJECTION LIQUIDATE_COMPTROLLER_REJECTION MATH_ERROR + +Test "When repay borrow fails" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Invariant Remains (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Invariant Remains (CToken cBAT TotalBorrows) 101e18 + -- Check user liquidity and verify < 0 + Invariant Remains (Comptroller Liquidity Geoff) -1e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 10e18 BAT cBAT allowanceAmount:0.1e18 + AllowFailures + Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cBAT + Assert Failure TOKEN_INSUFFICIENT_ALLOWANCE REPAY_BORROW_TRANSFER_IN_NOT_POSSIBLE + +Test "Proper liquidation of paused WBTC as collateral" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 borrowTokenType:WBTC + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Assert Equal (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Assert Equal (CToken cBAT TotalBorrows) 101e18 + -- Check user liquidity and verify < 0 + Assert Equal (Comptroller Liquidity Geoff) -1e18 -- recheck + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 2e18 BAT cBAT + -- + -- Let's check how values start before liquidation + -- Note: we're going to be some-what exhausive in what we check + Invariant Remains (Erc20 BAT TokenBalance Geoff) 1e18 -- all was minted, this is what was borrowed + Assert Equal (Erc20 BAT TokenBalance Torrey) 2e18 -- from prep above + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 -- from minting minus 1e18 lent to geoff + Assert Equal (Erc20 cBAT TokenBalance Geoff) 50e9 -- from minting + Assert Equal (Erc20 cBAT TokenBalance Torrey) 0e9 -- never had any + Invariant Remains (Erc20 BAT TokenBalance Geoff) 1e18 -- original amount borrowed + Assert Equal (CToken cBAT BorrowBalanceStored Geoff) 101e18 -- all that interest + Assert Equal (CToken cBAT TotalBorrows) 101e18 -- all those borrowers + Assert Equal (CToken cBAT ExchangeRate) 4e9 --- XXX: Verify this + -- + -- Pause "WBTC" + Erc20 BAT Pause -- Actually a WBTC token + -- Do the liquidation + AllowFailures + Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cBAT -- should now take twice as much collateral + Assert Revert -- Reverts since we can't transfer the BAT in due to pause + +Test "When seize not allowed due to unlisted collateral" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Invariant Remains (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Invariant Remains (CToken cBAT TotalBorrows) 101e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 10e18 BAT cBAT + Comptroller UnList cBAT -- Mock unlist collateral + AllowFailures + Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cBAT + Assert Failure COMPTROLLER_REJECTION LIQUIDATE_COMPTROLLER_REJECTION MARKET_NOT_LISTED + +Test "When seize not allowed due to unlisted borrow" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Invariant Remains (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Invariant Remains (CToken cBAT TotalBorrows) 101e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 10e18 BAT cBAT + Comptroller UnList cBAT -- Mock unlist borrow + AllowFailures + Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cBAT + Assert Failure COMPTROLLER_REJECTION LIQUIDATE_COMPTROLLER_REJECTION MARKET_NOT_LISTED + +Test "When there's insufficient collateral" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Comptroller SetCloseFactor 0.9 + Comptroller LiquidationIncentive 1.5 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 200000000 Blocks -- 1e18 * (1 + 200000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Invariant Remains (CToken cBAT BorrowBalanceStored Geoff) 1001e18 + Invariant Remains (CToken cBAT TotalBorrows) 1001e18 + Comptroller SetCollateralFactor cBAT 0 + -- Check user liquidity and verify < 0 + Invariant Remains (Comptroller Liquidity Geoff) -1001e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 900e18 BAT cBAT + AllowFailures + Liquidate Torrey "->" Geoff 900e18 cBAT "Seizing" cBAT + Assert Revert "revert LIQUIDATE_SEIZE_TOO_MUCH" + +Test "when seize is paused" + InKindBorrow borrowAmount:1e18 borrowRate:0.000005 + Assert Equal (CToken cBAT BorrowBalance Geoff) 1e18 + Assert Equal (CToken cBAT TotalBorrows) 1e18 + Assert Equal (Erc20 BAT TokenBalance Geoff) 1e18 + Assert Equal (Erc20 BAT TokenBalance cBAT) 99e18 + Assert Equal (Comptroller Liquidity Geoff) 49e18 -- ( ( 1.0 * 100e18 * 0.5 ) - ( 1.0 * 1e18 ) ) / 1e18 + -- Prices are 1:1 (in-kind) and collateral factor is 0.5, + -- thus supplying 100e18 cBAT gives the user 50e18 + -- capacity of BAT. User only borrowed 1BAT, but after + -- a lot blocks at a 0.0005% interest rate, he'll be + -- underwater. Note: with a reserve rate of zero, that + -- interest will be paid back to himself as supply + -- but that will be discounted by 50% by the collateral factor. + -- Thus, we will need to accumulate for twice as many blocks + -- to end up where we'd usually be underwater + FastForward 20000000 Blocks -- 1e18 * (1 + 20000000 * 0.000005) + AccrueInterest cBAT -- Note: we have to accrue interest + -- since it's not automatic for liquidity + Assert Equal (CToken cBAT BorrowBalanceStored Geoff) 101e18 + Assert Equal (CToken cBAT TotalBorrows) 101e18 + -- Check user liquidity and verify < 0 + Assert Equal (Comptroller Liquidity Geoff) -1e18 + -- Okay, so we should be able to liquidate, so let's do that. + Prep Torrey 2e18 BAT cBAT + Comptroller SetPauseGuardian Coburn + From Coburn (Comptroller SetGuardianPaused "Seize" True) + AllowFailures + Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cBAT + Assert Revert "revert seize is paused" + -- unpause and check correct values + Invariant Success + Comptroller SetGuardianPaused "Seize" False + Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cBAT diff --git a/spec/scenario/Liquidate.scen b/spec/scenario/Liquidate.scen index 4b3148d9e..32f399be2 100644 --- a/spec/scenario/Liquidate.scen +++ b/spec/scenario/Liquidate.scen @@ -516,7 +516,7 @@ Test "When there's insufficient collateral" Prep Torrey 10e18 BAT cBAT AllowFailures Liquidate Torrey "->" Geoff 2e18 cBAT "Seizing" cZRX - Assert Failure TOKEN_INSUFFICIENT_BALANCE LIQUIDATE_SEIZE_TOO_MUCH + Assert Revert "revert LIQUIDATE_SEIZE_TOO_MUCH" Test "when seize is paused" NewBorrow borrowAmount:1e18 borrowRate:0.000005 borrowPrice:2.0 diff --git a/spec/scenario/MCDai.scen b/spec/scenario/MCDai.scen new file mode 100644 index 000000000..43ff19072 --- /dev/null +++ b/spec/scenario/MCDai.scen @@ -0,0 +1,76 @@ +-- Multi-collateral DAI tests + +Macro ForkMCD + Alias CTokenAdmin "0x9C1856636d78C051deAd6CAB9c5699e4E25549e9" + Alias DaiHolder "0x9Bffd1579bd6760a186fFf1A720f2a5dB35dE0f4" + Alias DaiAddress "0xc27a24e60a89a03bd2f1ffb4ea59076fd8385fe6" + Alias DaiJoinAddress "0x3a3cc501d46b84f310067ef7c5df4ae1f05810ea" + Alias PotAddress "0x1c11810b1f8551d543f33a48ba88dcb0e8002b0f" + Alias VatAddress "0x2d9fad7795f0658f5931b75845d14250aecc81ee" + Web3Fork "https://kovan.infura.io/v3/e1a5d4d2c06a4e81945fca56d0d5d8ea@14760012" (CTokenAdmin DaiHolder) + Erc20 Deploy Existing DAI DaiAddress DAI + Assert Equal (EtherBalance CTokenAdmin) 1.680448935e18 -- Ensure the fork works as expected + +Macro DeployCDAI + ForkMCD + NewComptroller + InterestRateModel Deploy Fixed StdInterest 0.000005 + CTokenDelegate Deploy CErc20Delegate cErc20Delegate + From CTokenAdmin (CToken Deploy CErc20Delegator cDAI cDAI (Erc20 DAI Address) (Comptroller Address) (InterestRateModel StdInterest Address) 1e9 8 CTokenAdmin (CTokenDelegate cErc20Delegate Address) "0x0") + Comptroller SupportMarket cDAI + +Macro CheckBasicMintRedeem + From DaiHolder (Erc20 DAI Transfer Jared 2e18) + From Jared (Erc20 DAI Approve (CToken cDAI Address) 2e18) + Mint Jared 1e18 cDAI + Assert Equal (Erc20 cDAI TokenBalance Jared) (Exactly 1e9) + Expect Changes (Erc20 cDAI TokenBalance Jared) -1e9 + Redeem Jared 1e9 cDAI + +Macro CheckBasicMintRedeemWithDSR + -- Note: we cannot tightly control time for evm calls in ganache, so we approximate time-based values + -- Approve and mint cDAI from DAI + From DaiHolder (Erc20 DAI Approve (CToken cDAI Address) 1e30) + Mint DaiHolder 1e18 cDAI + Assert Equal (Erc20 cDAI TokenBalance DaiHolder) (Exactly 1e9) + -- Sanity check the DSR + Assert Equal (MCD PotAt PotAddress "dsr") (Exactly 1000000000627937192491029810) + -- Check that the funds are in the pot and not the vat + Assert Approx (MCD PotAt PotAddress "pie" (CToken cDAI Address)) 999784970332262855 -- pot is a wad (1e18), check for ~ 1 DAI + Assert (MCD VatAt VatAddress "dai" (CToken cDAI Address)) LessThan 1e27 -- vat is a rad (1e45), check for ~ dust + -- Time passes + IncreaseTime 100000 + -- Check that holder earns the DSR on 1 DAI after redeeming (1 DAI * (dsr ** seconds)) + Expect Changes (Erc20 DAI TokenBalance DaiHolder) 1000006279390070400 0.0001 + Redeem DaiHolder 1e9 cDAI + -- Check that the funds are not in the pot nor the vat + -- Note: we always move a little too much into vat on transfer out, so it might be extra dusty + Assert Equal (MCD PotAt PotAddress "pie" (CToken cDAI Address)) 0 -- pot is a wad (1e18), check for ~ dust + Assert (MCD VatAt VatAddress "dai" (CToken cDAI Address)) LessThan 2e27 -- vat is a rad (1e45), check for ~ dust + +Macro CheckBasicBorrowRepayWithDSR repayAmount=1000015000000000000 + -- Note: we cannot tightly control time for evm calls in ganache, so we approximate time-based values + NewCToken BAT cBAT + Support cBAT collateralFactor:0.5 + -- Add some DAI to borrow + From DaiHolder (Erc20 DAI Approve (CToken cDAI Address) 1e30) + Mint DaiHolder 1e18 cDAI + -- Get some collateral and borrow + EnterMarkets Geoff cBAT + Prep Geoff Some BAT cBAT + Mint Geoff 100e18 cBAT + Expect Changes (Erc20 DAI TokenBalance Geoff) (Exactly 1e18) + Borrow Geoff 1e18 cDAI + -- Check that the funds are not in the pot nor the vat + -- Note: we always move a little too much into vat on transfer out, so it might be extra dusty + Assert (MCD PotAt PotAddress "pie" (CToken cDAI Address)) LessThan 5e10 -- pot is a wad (1e18), check for ~ dust + DSR + Assert (MCD VatAt VatAddress "dai" (CToken cDAI Address)) LessThan 2e27 -- vat is a rad (1e45), check for ~ dust + -- Repay the principal + interest after 3 blocks (i.e. 3 transactions since) + From DaiHolder (Erc20 DAI Transfer Geoff 1e18) + From Geoff (Erc20 DAI Approve (CToken cDAI Address) 1e30) + RepayBorrow Geoff repayAmount cDAI + Assert Equal (cToken cDAI BorrowBalance Geoff) 0 + -- Check that the funds are in the pot and not the vat + -- Note: we always move a little too much into vat on transfer out, so it might be extra dusty + Assert Approx (MCD PotAt PotAddress "pie" (CToken cDAI Address)) repayAmount -- pot is a wad (1e18), check for ~ 1 DAI + interest + Assert (MCD VatAt VatAddress "dai" (CToken cDAI Address)) LessThan 2e27 -- vat is a rad (1e45), check for ~ dust diff --git a/spec/scenario/Mint.scen b/spec/scenario/Mint.scen index 5975a9c16..9079ff2b5 100644 --- a/spec/scenario/Mint.scen +++ b/spec/scenario/Mint.scen @@ -75,7 +75,7 @@ Test "Mint transfer in fails" Invariant Static (Erc20 EVL TotalSupply) AllowFailures Mint Geoff 2e18 cEVL - Assert Failure TOKEN_TRANSFER_IN_FAILED MINT_TRANSFER_IN_FAILED + Assert Revert "revert TOKEN_TRANSFER_IN_FAILED" Test "Denied by comptroller because unlisted" NewComptroller diff --git a/spec/scenario/MintEth.scen b/spec/scenario/MintEth.scen index 922c7ea82..cb634fdf4 100644 --- a/spec/scenario/MintEth.scen +++ b/spec/scenario/MintEth.scen @@ -7,7 +7,7 @@ GasTest "Send Mint 1 cETH" Expect Changes (CToken cETH UnderlyingBalance Geoff) +0.005e18 SendMintEth Geoff 0.005e18 cETH Assert Equal (Erc20 cETH TokenBalance Geoff) 10e8 - Assert LastGas LessThan 90e3 + Assert LastGas LessThan 1.2e5 GasTest "Call Mint 1 cETH" NewComptroller @@ -16,7 +16,7 @@ GasTest "Call Mint 1 cETH" Expect Changes (CToken cETH UnderlyingBalance Geoff) +0.005e18 CallMintEth Geoff 0.005e18 cETH Assert Equal (Erc20 cETH TokenBalance Geoff) 10e8 - Assert LastGas LessThan 90e3 + Assert LastGas LessThan 1.2e5 Test "Mint with insufficient eth balance" NewComptroller diff --git a/spec/scenario/PriceOracleProxy.scen b/spec/scenario/PriceOracleProxy.scen index 16677575a..c101a4372 100644 --- a/spec/scenario/PriceOracleProxy.scen +++ b/spec/scenario/PriceOracleProxy.scen @@ -4,7 +4,7 @@ Macro SetupPriceOracleProxy -- Update to G1 ComptrollerImpl Deploy ScenarioG1 ScenComptrollerG1 Unitroller SetPendingImpl ScenComptrollerG1 - PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address Zero) (Address Zero) (Address Zero) + PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address Zero) (Address Zero) (Address Zero) (Address Zero) ComptrollerImpl ScenComptrollerG1 BecomeG1 (PriceOracleProxy Address) 0.1 20 -- Update to G* ComptrollerImpl Deploy Scenario ScenComptroller @@ -12,33 +12,35 @@ Macro SetupPriceOracleProxy ComptrollerImpl ScenComptroller Become NewEtherToken cETH NewCToken USDC cUSDC + NewCToken SAI cSAI NewCToken DAI cDAI Comptroller SupportMarket cETH Comptroller SupportMarket cUSDC + Comptroller SupportMarket cSAI Comptroller SupportMarket cDAI - PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address cETH) (Address cUSDC) (Address cDAI) + PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address cETH) (Address cUSDC) (Address cSAI) (Address cDAI) Comptroller SetPriceOracle (PriceOracleProxy Address) Test "computes address(2) / address(1) * maker usd price for cdai when within ratio bound" SetupPriceOracleProxy - PriceOracle SetPrice cDAI 0.005 -- the maker usd/eth price is at the dai address + PriceOracle SetPrice cSAI 0.005 -- the maker usd/eth price is at the dai address PriceOracle SetDirectPrice (Address 0x0000000000000000000000000000000000000001) 5740564708572881000000000000 PriceOracle SetDirectPrice (Address 0x0000000000000000000000000000000000000002) 5842307360923634 - Assert Equal (PriceOracleProxy Price cDAI) 0.005088617285507479e18 + Assert Equal (PriceOracleProxy Price cSAI) 0.005088617285507479e18 Assert Equal (PriceOracleProxy Price cUSDC) 0.005e30 Test "computes address(2) / address(1) * maker usd price for cdai when below ratio bound" SetupPriceOracleProxy - PriceOracle SetPrice cDAI 0.005 -- the maker usd/eth price is at the dai address + PriceOracle SetPrice cSAI 0.005 -- the maker usd/eth price is at the dai address PriceOracle SetDirectPrice (Address 0x0000000000000000000000000000000000000001) 57405647085728810000000000000 PriceOracle SetDirectPrice (Address 0x0000000000000000000000000000000000000002) 5842307360923634 - Assert Equal (PriceOracleProxy Price cDAI) 0.00475e18 + Assert Equal (PriceOracleProxy Price cSAI) 0.00475e18 Assert Equal (PriceOracleProxy Price cUSDC) 0.005e30 Test "computes address(2) / address(1) * maker usd price for cdai when above ratio bound" SetupPriceOracleProxy - PriceOracle SetPrice cDAI 0.005 -- the maker usd/eth price is at the dai address - will be scaled by 1e18 + PriceOracle SetPrice cSAI 0.005 -- the maker usd/eth price is at the dai address - will be scaled by 1e18 PriceOracle SetDirectPrice (Address 0x0000000000000000000000000000000000000001) 5740564708572881000000000000 PriceOracle SetDirectPrice (Address 0x0000000000000000000000000000000000000002) 58423073609236340 - Assert Equal (PriceOracleProxy Price cDAI) 0.00525e18 + Assert Equal (PriceOracleProxy Price cSAI) 0.00525e18 Assert Equal (PriceOracleProxy Price cUSDC) 0.005e30 diff --git a/spec/scenario/ReEntry.scen b/spec/scenario/ReEntry.scen index a25c116ad..64e1f90da 100644 --- a/spec/scenario/ReEntry.scen +++ b/spec/scenario/ReEntry.scen @@ -1,10 +1,8 @@ --- Mint Tests - -Test "ReEntry Mint" +Test "ReEntry Mint @no-cov" NewComptroller Erc20 Deploy ReEntrant PHREAK PHREAK "transferFrom" "mint(uint256)" "0" InterestRateModel Deploy Fixed Std 0.000001 - CToken Deploy cPHREAK cPHREAK (Erc20 PHREAK Address) (Comptroller Address) (InterestRateModel Std Address) 1e9 8 Admin + CToken Deploy Scenario cPHREAK cPHREAK (Erc20 PHREAK Address) (Comptroller Address) (InterestRateModel Std Address) 1e9 8 Admin Comptroller SupportMarket cPHREAK Prep Geoff Some PHREAK cPHREAK AllowFailures diff --git a/spec/scenario/Redeem.scen b/spec/scenario/Redeem.scen index aa86005dd..df6d6d061 100644 --- a/spec/scenario/Redeem.scen +++ b/spec/scenario/Redeem.scen @@ -191,7 +191,7 @@ Test "Redeem transfer out fails" Erc20 EVL SetFail True AllowFailures Redeem Geoff 500e8 cEVL - Assert Revert "revert redeem transfer out failed" + Assert Revert "revert TOKEN_TRANSFER_OUT_FAILED" Test "Mint, Enter, then Redeem Too Much (collateral factor: 0)" NewComptroller diff --git a/spec/scenario/RepayBorrow.scen b/spec/scenario/RepayBorrow.scen index 56b8355d2..f10e9ad05 100644 --- a/spec/scenario/RepayBorrow.scen +++ b/spec/scenario/RepayBorrow.scen @@ -68,7 +68,7 @@ Test "Borrow, hold a few blocks, and repay too much" Expect Changes (Erc20 BAT TokenBalance Geoff) Zero Expect Changes (Erc20 BAT TokenBalance cBAT) Zero RepayBorrow Geoff 10e18 cBAT - Assert Failure MATH_ERROR REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED "3" + Assert Revert "revert REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED" -- Let's check the overall numbers Assert Equal (CToken cBAT BorrowBalance Geoff) 2.5e18 Assert Equal (CToken cBAT TotalBorrowsCurrent) 2.5e18 diff --git a/spec/scenario/RepayBorrowEth.scen b/spec/scenario/RepayBorrowEth.scen index 695fd88be..64f053337 100644 --- a/spec/scenario/RepayBorrowEth.scen +++ b/spec/scenario/RepayBorrowEth.scen @@ -133,7 +133,7 @@ Test "Borrow, hold a few blocks, and repay too much" -- TODO: This currently drains the sent-eth AllowFailures RepayBorrowEth Geoff 1.0e18 cETH - Assert Revert "revert repayBorrow failed" + Assert Revert "revert REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED" -- Let's check the overall numbers Assert Equal (CToken cETH BorrowBalance Geoff) 0.0025e18 Assert Equal (CToken cETH TotalBorrowsCurrent) 0.0025e18 diff --git a/spec/scenario/RepayBorrowWBTC.scen b/spec/scenario/RepayBorrowWBTC.scen index 9b9b47689..e18b86475 100644 --- a/spec/scenario/RepayBorrowWBTC.scen +++ b/spec/scenario/RepayBorrowWBTC.scen @@ -68,7 +68,7 @@ Test "Borrow, hold a few blocks, and repay too much" Expect Changes (Erc20 WBTC TokenBalance Geoff) Zero Expect Changes (Erc20 WBTC TokenBalance cWBTC) Zero RepayBorrow Geoff 10e8 cWBTC - Assert Failure MATH_ERROR REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED "3" + Assert Revert "revert REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED" -- Let's check the overall numbers Assert Equal (CToken cWBTC BorrowBalance Geoff) 2.5e8 Assert Equal (CToken cWBTC TotalBorrowsCurrent) 2.5e8 diff --git a/spec/scenario/Seize.scen b/spec/scenario/Seize.scen index ac7aa3c87..268bd73b5 100644 --- a/spec/scenario/Seize.scen +++ b/spec/scenario/Seize.scen @@ -27,7 +27,7 @@ Test "Seize tokens with a paused WBTC cToken-- like normal" Test "Not able to seize tokens with a malicious unlisted cToken" NewComptroller ListedCToken ZRX cZRX initialExchangeRate:1e9 - NewCToken EVL cEVL initialExchangeRate:1e9 cTokenType:CEvil + NewCTokenImmutable EVL cEVL initialExchangeRate:1e9 cTokenType:CEvil Prep Geoff Some ZRX cZRX Mint Geoff 50e18 cZRX Invariant Remains (Erc20 cZRX TokenBalance Geoff) 50e9 @@ -41,7 +41,7 @@ Test "Not able to seize tokens with a malicious unlisted cToken" Test "Able to seize tokens with a malicious listed cToken" NewComptroller ListedCToken ZRX cZRX initialExchangeRate:1e9 - ListedCToken EVL cEVL initialExchangeRate:1e9 cTokenType:CEvil + ListedCTokenImmutable EVL cEVL initialExchangeRate:1e9 cTokenType:CEvil Prep Geoff Some ZRX cZRX Mint Geoff 50e18 cZRX Assert Equal (Erc20 cZRX TokenBalance Geoff) 50e9 diff --git a/spec/scenario/Tether.scen b/spec/scenario/Tether.scen new file mode 100644 index 000000000..7d64d9b3e --- /dev/null +++ b/spec/scenario/Tether.scen @@ -0,0 +1,113 @@ +-- Skip all Tether fork tests for now, they take *forever* +-- Macro ForkTether +-- Alias TetherAdmin "0xC6CDE7C39eB2f0F0095F41570af89eFC2C1Ea828" +-- Alias TetherAddress "0xdAC17F958D2ee523a2206206994597C13D831ec7" +-- Alias TetherHolder "0x1062a747393198f70f71ec65a582423dba7e5ab3" +-- Alias EmptyAddress "0x0000000000000000000000000000000000000032" -- an arbitrary address with no tether balance +-- Web3Fork "https://mainnet.infura.io/v3/e1a5d4d2c06a4e81945fca56d0d5d8ea@8872548" (TetherHolder TetherAdmin) + +-- Test "Vanilla transfer works" +-- ForkTether +-- Erc20 Deploy ExistingTether USDT TetherAddress +-- Expect Changes (Erc20 USDT TokenBalance TetherHolder) -1e8 +-- Assert Equal (Erc20 USDT TokenBalance EmptyAddress) 0e8 +-- From TetherHolder (Erc20 USDT Transfer EmptyAddress 1e8) +-- Assert Equal (Erc20 USDT TokenBalance EmptyAddress) 1e8 + +-- Test "Fee transfer works as expected" +-- ForkTether +-- Erc20 Deploy ExistingTether USDT TetherAddress +-- From TetherAdmin (Erc20 USDT SetFee 10 10) +-- Expect Changes (Erc20 USDT TokenBalance TetherHolder) -1e8 +-- Expect Changes (Erc20 USDT TokenBalance TetherAdmin) +0.001e8 +-- Assert Equal (Erc20 USDT TokenBalance EmptyAddress) 0e8 +-- From TetherHolder (Erc20 USDT Transfer EmptyAddress 1e8) +-- Assert Equal (Erc20 USDT TokenBalance EmptyAddress) 0.999e8 + +-- Test "Mint should work and not change exchange rate" +-- ForkTether +-- NewComptroller price:1.0 +-- Erc20 Deploy ExistingTether USDT TetherAddress +-- NewCTokenBringERC20 USDT cUSDT +-- From TetherAdmin (Erc20 USDT SetFee 10 10) +-- Invariant Static (CToken cUSDT ExchangeRate) +-- Support cUSDT +-- From TetherHolder (Erc20 USDT Approve cUSDT 1e8) +-- Mint TetherHolder 1e8 cUSDT +-- Assert Equal (ERC20 USDT TokenBalance cUSDT) 0.999e8 + +-- Test "Should be able to redeem a fee CToken, exchange Rate should not change" +-- ForkTether +-- NewComptroller price:1.0 +-- Erc20 Deploy ExistingTether USDT TetherAddress +-- NewCTokenBringERC20 USDT cUSDT +-- From TetherAdmin (Erc20 USDT SetFee 10 10) +-- Support cUSDT +-- Invariant Static (CToken cUSDT ExchangeRate) +-- From TetherHolder (Erc20 USDT Approve cUSDT 1e8) +-- Mint TetherHolder 1e8 cUSDT +-- Redeem Torrey (Erc20 cUSDT TokenBalance TetherHolder) cUSDT + +-- Test "Repay borrow should work and not change exchange rate" +-- ForkTether +-- PricedComptroller +-- Erc20 Deploy ExistingTether USDT TetherAddress +-- NewCTokenBringERC20 USDT cUSDT +-- NewCToken ZRX cZRX 0.000005 2e9 8 Standard +-- PriceOracle SetPrice cZRX 1.0 +-- PriceOracle SetPrice cUSDT 1.0 +-- Support cZRX 0.5 +-- Support cUSDT 0.5 +-- Invariant Static (CToken cUSDT ExchangeRate) +-- -- +-- From TetherHolder (Erc20 USDT Approve cUSDT 1e8) +-- Mint TetherHolder 1e8 cUSDT +-- From TetherAdmin (Erc20 USDT SetFee 10 10) +-- -- +-- Prep Torrey 100e8 ZRX cZRX +-- Mint Torrey 100e8 cZRX +-- EnterMarkets Torrey cUSDT +-- EnterMarkets Torrey cZRX +-- Borrow Torrey 1e8 cUSDT -- we only received 0.999e8 tether bc of fee +-- Assert Equal (ERC20 USDT TokenBalance Torrey) 0.999e8 +-- FastForward 199600 Blocks -- 1e8 * 199800 * 0.000005 = 0.998e8 interest accrued +-- Assert Equal (CToken cUSDT TotalBorrowsCurrent) 1.998e8 +-- From TetherHolder (Erc20 USDT Transfer Torrey 2e8) +-- From Torrey (Erc20 USDT Approve cUSDT 2e8) +-- RepayBorrow Torrey 2e8 cUSDT -- repay more than we owe to account for fee +-- Assert Equal (CToken cUSDT BorrowBalance Torrey) 0 +-- Assert Equal (CToken cUSDT TotalBorrowsCurrent) 0 +-- --Assert Equal (ERC20 USDT TokenBalance Torrey) 0 + +-- Test "Should be able to liquidate Tether token borrow" +-- ForkTether +-- PricedComptroller +-- Comptroller LiquidationIncentive 1.1 +-- Erc20 Deploy ExistingTether USDT TetherAddress-- FYI tether is 6 decimals +-- NewCTokenBringERC20 USDT cUSDT +-- NewCToken ZRX cZRX 0.000005 2e9 8 Standard +-- PriceOracle SetPrice cZRX 1.0 +-- PriceOracle SetPrice cUSDT 1e12 +-- Support cZRX 0.5 +-- Support cUSDT 0.5 +-- Invariant Static (CToken cUSDT ExchangeRate) +-- -- Give some Tether to cUSDT +-- From TetherHolder (Erc20 USDT Approve cUSDT 2e8) +-- Mint TetherHolder 2e8 cUSDT +-- From TetherAdmin (Erc20 USDT SetFee 10 10) +-- -- Prep our Tether borrower +-- Prep Torrey 2e18 ZRX cZRX +-- Mint Torrey 2e18 cZRX +-- EnterMarkets Torrey cUSDT +-- EnterMarkets Torrey cZRX +-- Borrow Torrey 1e6 cUSDT -- fyi we only received 0.999e8 tether bc of fee +-- Assert Equal (ERC20 USDT TokenBalance Torrey) 0.999e6 +-- FastForward 199600 Blocks -- 1e6 * 199800 * 0.000005 = 0.998e6 interest accrued +-- Assert Equal (CToken cUSDT TotalBorrowsCurrent) 1.998e6 +-- -- ok.. ready the liquidator +-- From TetherHolder (Erc20 USDT Transfer Coburn 2e6) -- should give 1.001001001 +-- From Coburn (Erc20 USDT Approve cUSDT 2e6) +-- Liquidate Coburn "->" Torrey 0.1e6 cUSDT "Seizing" cZRX +-- -- 5.4945e7 = (1e18 / 1e6) * 0.1e6 (amt liquidated) * 1.1 (liq discount) * .999 (fee) / 2e9 (exchange rate) +-- Assert Equal (Erc20 cZRX TokenBalance Coburn) 5.4945e7 +-- Assert Equal (CToken cUSDT BorrowBalance Torrey) 1.8981e6 -- 1.998 - (.1 * .999) was liquidated diff --git a/spec/scenario/Timelock.scen b/spec/scenario/Timelock.scen index 9db1ffd19..b03f07a9f 100644 --- a/spec/scenario/Timelock.scen +++ b/spec/scenario/Timelock.scen @@ -187,7 +187,7 @@ Test "Set Pending Comptroller implemention on Unitroller from Timelock" ComptrollerImpl Deploy ScenarioG1 ScenComptrollerG1 Unitroller SetPendingImpl ScenComptrollerG1 Assert Equal (Unitroller PendingImplementation) (ComptrollerImpl ScenComptrollerG1 Address) - PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address Zero) (Address Zero) (Address Zero) -- Final argument is a Junk address, if listing cEther use ListedEtherToken to replace proxy + PriceOracleProxy Deploy (Unitroller Address) (PriceOracle Address) (Address Zero) (Address Zero) (Address Zero) (Address Zero) -- if listing cEther use ListedEtherToken to replace proxy ComptrollerImpl ScenComptrollerG1 BecomeG1 (PriceOracleProxy Address) 0.1 20 Assert Equal (Unitroller PendingImplementation) (Address Zero) Assert Equal (Unitroller Implementation) (Address ScenComptrollerG1) diff --git a/test/CarefulMathTest.sol b/test/CarefulMathTest.sol deleted file mode 100644 index a9ff3291e..000000000 --- a/test/CarefulMathTest.sol +++ /dev/null @@ -1,167 +0,0 @@ -pragma solidity ^0.5.8; - -import "truffle/Assert.sol"; -import "../contracts/CarefulMath.sol"; - -contract CarefulMathTest is CarefulMath { - - function testStandardAddition() public { - (MathError err, uint val) = addUInt(5, 6); - - assertNoError(err); - Assert.equal(11, val, "should compute addition correctly"); - } - - function testAddZeroLeft() public { - (MathError err, uint val) = addUInt(0, 6); - - assertNoError(err); - Assert.equal(6, val, "should compute addition correctly"); - } - - function testAddZeroRight() public { - (MathError err, uint val) = addUInt(6, 0); - - assertNoError(err); - Assert.equal(6, val, "should compute addition correctly"); - } - - function testAdditiveOverflow() public { - (MathError err, uint val) = addUInt(5, uint(-1)); - - assertError(MathError.INTEGER_OVERFLOW, err, "should have error INTEGER_OVERFLOW"); - Assert.equal(0, val, "should have default value"); - } - - function testStandardSubtraction() public { - (MathError err, uint val) = subUInt(1000, 250); - - assertNoError(err); - Assert.equal(750, val, "should compute subtraction correctly"); - } - - function testSubtractZero() public { - (MathError err, uint val) = subUInt(1000, 0); - - assertNoError(err); - Assert.equal(1000, val, "should compute subtraction correctly"); - } - - function testSubtractFromZero() public { - (MathError err, uint val) = subUInt(0, 1000); - - assertError(MathError.INTEGER_UNDERFLOW, err, "should have error INTEGER_UNDERFLOW"); - Assert.equal(0, val, "should compute subtraction correctly"); - } - - function testSubtractiveUnderflow() public { - (MathError err, uint val) = subUInt(250, 1000); - - assertError(MathError.INTEGER_UNDERFLOW, err, "should have error INTEGER_UNDERFLOW"); - Assert.equal(0, val, "should compute subtraction correctly"); - } - - function testStandardMultiplication() public { - (MathError err, uint val) = mulUInt(100, 7); - - assertNoError(err); - Assert.equal(700, val, "should compute multiplication correctly"); - } - - function testStandardMultiplicationByZeroLeft() public { - (MathError err, uint val) = mulUInt(0, 100); - - assertNoError(err); - Assert.equal(0, val, "should compute multiplication correctly"); - } - - function testStandardMultiplicationByZeroRight() public { - (MathError err, uint val) = mulUInt(100, 0); - - assertNoError(err); - Assert.equal(0, val, "should compute multiplication correctly"); - } - - function testMultiplicativeOverflow() public { - (MathError err, uint val) = mulUInt(uint(-1), 3); - - assertError(MathError.INTEGER_OVERFLOW, err, "should have error INTEGER_OVERFLOW"); - Assert.equal(0, val, "should have default value"); - } - - function testLargeNumberIdentityMultiplication() public { - (MathError err, uint val) = mulUInt(uint(-1), 1); - - assertNoError(err); - Assert.equal(uint(-1), val, "should compute multiplication correctly"); - } - - function testStandardDivision() public { - (MathError err, uint val) = divUInt(100, 5); - - assertNoError(err); - Assert.equal(20, val, "should compute division correctly"); - } - - function testDivisionWithTruncation() public { - (MathError err, uint val) = divUInt(100, 33); - - assertNoError(err); - Assert.equal(3, val, "should compute division correctly"); - } - - function testDivisionOfZero() public { - (MathError err, uint val) = divUInt(0, 8); - - assertNoError(err); - Assert.equal(0, val, "should compute division correctly"); - } - - function testDivisionByZero() public { - (MathError err, uint val) = divUInt(8, 0); - - assertError(MathError.DIVISION_BY_ZERO, err, "should have error DIVISION_BY_ZERO"); - Assert.equal(0, val, "should have default value"); - } - - function testLargeNumberIdentityDivision() public { - (MathError err, uint val) = divUInt(uint(-1), 1); - - assertNoError(err); - Assert.equal(uint(-1), val, "should compute multiplication correctly"); - } - - - function testAddThenSub() public { - (MathError err, uint val) = addThenSubUInt(1, 3, 2); - - assertNoError(err); - Assert.equal(2, val, "should perform operations in the stated order"); // 1 - 2 before adding 3 would underflow - } - - function testAddThenSubOverflow() public { - (MathError err, uint val) = addThenSubUInt(2**256 - 1, 2**256 - 1, 5); - assertError(MathError.INTEGER_OVERFLOW, err, "should have error INTEGER_OVERFLOW"); - - Assert.equal(0, val, "should have default value"); - } - - function testAddThenSubUnderflow() public { - (MathError err, uint val) = addThenSubUInt(1, 2, 5); - assertError(MathError.INTEGER_UNDERFLOW, err, "should have error INTEGER_UNDERFLOW"); - - Assert.equal(0, val, "should have default value"); - } - - function assertError(MathError expected, MathError given, string memory message) internal { - Assert.equal(uint(expected), uint(given), message); - } - - function assertNoError(MathError err) internal { - assertError(MathError.NO_ERROR, err, "should have error NO_ERROR"); - } - - function assertZero(uint value, string memory message) internal { - Assert.equal(0, value, message); - } -} \ No newline at end of file diff --git a/test/Errors.js b/test/Errors.js index 615fbfb99..48aae74ea 100644 --- a/test/Errors.js +++ b/test/Errors.js @@ -33,16 +33,10 @@ const MathError = invert(MathErrorInv); const whitePaperModelPath = path.join(__dirname, '..', 'contracts', 'WhitePaperInterestRateModel.sol'); const whitePaperModel = solparse.parseFile(whitePaperModelPath).body.find(k => k.type === 'ContractStatement'); -const IRErrorInv = whitePaperModel.body.find(k => k.name == 'IRError').members; -const IRError = invert(IRErrorInv); module.exports = { ComptrollerErr: parse(ComptrollerErrorReporter), TokenErr: parse(TokenErrorReporter), - IRErr: { - Error: IRError, - ErrorInv: IRErrorInv - }, MathErr: { Error: MathError, ErrorInv: MathErrorInv diff --git a/test/ExponentialTest.sol b/test/ExponentialTest.sol deleted file mode 100644 index 65680566f..000000000 --- a/test/ExponentialTest.sol +++ /dev/null @@ -1,467 +0,0 @@ -pragma solidity ^0.5.8; - -import "truffle/Assert.sol"; -import "../contracts/Exponential.sol"; - -contract ExponentialTest is Exponential { - - /** - * @dev helper that lets us create an Exp with `getExp` without cluttering our test code with error checks of the setup. - */ - function getExpFromRational(uint numerator, uint denominator) internal returns (Exp memory) { - (MathError err, Exp memory result) = getExp(numerator, denominator); - - Assert.equal(0, uint(err), "getExpFromRational failed"); - return result; - } - - function testGetExp_Simple() public { - (MathError err, Exp memory val) = getExp(50, 10000); // 50 basis points - - assertNoError(err); - Assert.equal(5000000000000000, val.mantissa, "should be 50 basis points"); - } - - function testGetExp_WithDenomOfOne() public { - (MathError err, Exp memory val) = getExp(5, 1); // The number 5.0 - - assertNoError(err); - Assert.equal(5000000000000000000, val.mantissa, "should be 5.0"); - } - - function testGetZero_Zero() public { - (MathError err, Exp memory val) = getExp(0, 10000); // 0 basis points - - assertNoError(err); - Assert.equal(0, val.mantissa, "should be 0 basis points"); - } - - function testGetExp_FailToGetDivByZero() public { - (MathError err, Exp memory val) = getExp(1, 0); - - assertError(MathError.DIVISION_BY_ZERO, err, "divide by zero"); - assertZero(val.mantissa, "default value"); - } - - function testGetExp_Overflow() public { - (MathError err, Exp memory val) = getExp(uint(-1), uint(-1)); // 1, but overflows - - assertError(MathError.INTEGER_OVERFLOW, err, "overflows max int"); - assertZero(val.mantissa, "default value"); - } - - function testAddExp_Successful() public { - (MathError err0, Exp memory val1) = getExp(50, 10000); // 50 basis points - assertNoError(err0); - - (MathError err1, Exp memory val2) = getExp(60, 10000); // 60 basis points - assertNoError(err1); - - (MathError err2, Exp memory sum) = addExp(val1, val2); - assertNoError(err2); - - Assert.equal(11000000000000000, sum.mantissa, "should be 110 basis points"); - } - - function testAddExp_Overflow() public { - Exp memory val1 = Exp({mantissa: uint(-1)}); - Exp memory val2 = Exp({mantissa: uint(-1)}); - - (MathError err, Exp memory sum) = addExp(val1, val2); - - assertError(MathError.INTEGER_OVERFLOW, err, "overflowed with addition"); - assertZero(sum.mantissa, "default value"); - } - - function testSubExp_Successful() public { - (MathError err0, Exp memory val1) = getExp(50, 10000); // 50 basis points - assertNoError(err0); - - (MathError err1, Exp memory val2) = getExp(60, 10000); // 60 basis points - assertNoError(err1); - - (MathError err2, Exp memory difference) = subExp(val2, val1); - assertNoError(err2); - - Assert.equal(1000000000000000, difference.mantissa, "should be 10 basis points"); - - // -1 - (-1) should actually work out to 0 - (MathError err3, Exp memory difference2) = subExp(Exp({mantissa: uint(-1)}), Exp({mantissa: uint(-1)})); - assertNoError(err3); - - Assert.equal(0, difference2.mantissa, "should be 0 basis points"); - } - - function testSubExp_Underflow() public { - (MathError err0, Exp memory val1) = getExp(5, 1); - assertNoError(err0); - - (MathError err1, Exp memory val2) = getExp(7, 1); - assertNoError(err1); - - (MathError err2, Exp memory difference) = subExp(val1, val2); // 5 - 7 = underflow - - assertError(MathError.INTEGER_UNDERFLOW, err2, "underflowed with subtraction"); - assertZero(difference.mantissa, "default value"); - } - - function testMulExp_Successful() public { - - (MathError err0, Exp memory val1) = getExp(50, 100); // 1/2 - assertNoError(err0); - - (MathError err1, Exp memory val2) = getExp(202, 100); // 2.02 - assertNoError(err1); - - (MathError err2, Exp memory product) = mulExp(val1, val2); - - assertNoError(err2); - Assert.equal(1010000000000000000, product.mantissa, "product should be 1.01"); - } - - function testMulExp3_Successful() public { - (MathError err0, Exp memory val1) = getExp(1, 2); - assertNoError(err0); - - (MathError err1, Exp memory val2) = getExp(1, 3); - assertNoError(err1); - - (MathError err2, Exp memory val3) = getExp(1, 5); - assertNoError(err2); - - (MathError err3, Exp memory product) = mulExp3(val1, val2, val3); - assertNoError(err3); - Assert.equal(33333333333333333, product.mantissa, "product should be 1/30"); - } - - function testMulExp3_Small() public { - (MathError err0, Exp memory val1) = getExp(1, 2); - assertNoError(err0); - - (MathError err1, Exp memory val2) = getExp(1, 1e18); - assertNoError(err1); - - (MathError err2, Exp memory val3) = getExp(1, 1); - assertNoError(err2); - - (MathError err3, Exp memory product) = mulExp3(val1, val2, val3); - assertNoError(err3); - Assert.equal(1, product.mantissa, "product should be 5e-19, rounded to 1e-18"); - } - - // This fails without the addition of the half scale before descaling the intermediate value - function testMulExp_RoundAtFarRight() public { - - (MathError err0, Exp memory val1) = getExp(2, 3); // 2/3 - assertNoError(err0); - - (MathError err1, Exp memory val2) = getExp(1, 10**18); // 1x10e-18 - assertNoError(err1); - - (MathError err2, Exp memory product) = mulExp(val1, val2); - - assertNoError(err2); // 2/3 * 1x10e-18 = 6.6... x 10e-19 - Assert.equal(1, product.mantissa, "product should be 6.666E-19, rounded to 1e-18"); - } - - function testMulExp_ZeroLeft() public { - - (MathError err0, Exp memory left) = getExp(0, 100); // 0 - assertNoError(err0); - - (MathError err1, Exp memory right) = getExp(202, 100); // 2.02 - assertNoError(err1); - - (MathError err2, Exp memory product) = mulExp(left, right); - - assertNoError(err2); - Assert.equal(0, product.mantissa, "product should be 0"); - } - - function testMulExp_ZeroRight() public { - - (MathError err0, Exp memory right) = getExp(0, 100); // 0 - assertNoError(err0); - - (MathError err1, Exp memory left) = getExp(202, 100); // 2.02 - assertNoError(err1); - - (MathError err2, Exp memory product) = mulExp(left, right); - - assertNoError(err2); - Assert.equal(0, product.mantissa, "product should be 0"); - } - - function testMulExp_OneLeft() public { - - (MathError err0, Exp memory left) = getExp(1, 1); // 1 - assertNoError(err0); - - (MathError err1, Exp memory right) = getExp(202, 100); // 2.02 - assertNoError(err1); - - (MathError err2, Exp memory product) = mulExp(left, right); - - assertNoError(err2); - Assert.equal(2020000000000000000, product.mantissa, "product should be 2.02"); - } - - function testMulExp_OneRight() public { - - (MathError err0, Exp memory right) = getExp(1, 1); // 1 - assertNoError(err0); - - (MathError err1, Exp memory left) = getExp(202, 100); // 2.02 - assertNoError(err1); - - (MathError err2, Exp memory product) = mulExp(left, right); - - assertNoError(err2); - Assert.equal(2020000000000000000, product.mantissa, "product should be 2.02"); - } - - function testMulExp_Overflow() public { - Exp memory val1 = Exp({mantissa: uint(-1)}); - Exp memory val2 = Exp({mantissa: uint(-1)}); - - (MathError err, Exp memory product) = mulExp(val1, val2); - - assertError(MathError.INTEGER_OVERFLOW, err, "overflowed with multiplication"); - assertZero(product.mantissa, "default value"); - } - - function testMulExp_OverflowOnAddHalfScale() public { - Exp memory bigger = Exp({mantissa: (2**256) - 1}); - Exp memory smaller = Exp({mantissa: 1}); - - MathError err; - Exp memory product; - - (err, product) = mulExp(bigger, smaller); - assertError(MathError.INTEGER_OVERFLOW, err, "should have returned MathError.INTEGER_OVERFLOW"); - - Assert.equal(0, product.mantissa, "product should be zero"); - } - - function testMulScalar_Big() public { - Exp memory val = getExpFromRational(10**58, 1); // Exp({mantissa: 10**76}); // our scaled representation of 10e59 - - Assert.equal(10**76, val.mantissa, "setup failed val.mantissa not 10e76"); - - (MathError err0, Exp memory scaled1) = mulScalar(val, 5); - assertNoError(err0); - Assert.equal(uint(5 * 10**76), scaled1.mantissa, "scalar multiplication failed- scaled1.mantissa not 50e76"); - - (MathError err1, Exp memory scaled2) = mulScalar(val, 100); - assertError(MathError.INTEGER_OVERFLOW, err1, "should have overflowed with scalar multiplication"); - Assert.equal(0, scaled2.mantissa, "should have overflowed"); - } - - function testMulScalar_Small() public { - Exp memory val = getExpFromRational(1, 10**16); // our scaled representation of 10e-16. - - Assert.equal(100, val.mantissa, "setup failed val2.mantissa not 100"); - - (MathError err0, Exp memory scaled) = mulScalar(val, 5); - assertNoError(err0); - Assert.equal(500, scaled.mantissa, "scalar multiplication failed- scaled2.mantissa not 500"); - } - - function testDivScalar_Big() public { - Exp memory val = getExpFromRational(10**58, 1); // Exp({mantissa: 10**76}); // our scaled representation of 10e59 - - Assert.equal(10**76, val.mantissa, "setup failed val.mantissa not 10e76"); - - (MathError err0, Exp memory scaled1) = divScalar(val, 5); - assertNoError(err0); - Assert.equal(uint(2 * 10**75), scaled1.mantissa, "scalar division failed- scaled1.mantissa not 2e76"); - - (MathError err1, Exp memory scaled2) = divScalar(val, 0); - assertError(MathError.DIVISION_BY_ZERO, err1, "should have caused division by zero"); - Assert.equal(0, scaled2.mantissa, "should be nilish"); - } - - function testDivScalar_Small() public { - Exp memory val = getExpFromRational(1, 10**16); // our scaled representation of 10e-16. - - Assert.equal(100, val.mantissa, "setup failed val.mantissa not 100"); - - (MathError err0, Exp memory scaled) = divScalar(val, 5); - assertNoError(err0); - Assert.equal(20, scaled.mantissa, "scalar division failed- scaled.mantissa not 20"); - } - - function testTruncate() public { - Assert.equal(10**58, truncate(getExpFromRational(10**58, 1)), "should truncate to 10**58"); - Assert.equal(0, truncate(getExpFromRational(1, 2)), "should truncate to 0"); - Assert.equal(0, truncate(getExpFromRational(2, 3)), "should truncate to 0"); - Assert.equal(1, truncate(getExpFromRational(3, 2)), "should truncate to 1"); - Assert.equal(8, truncate(getExpFromRational(4000, 500)), "should truncate to 8"); - Assert.equal(10**5, truncate(getExpFromRational(10**20, 10**15)), "should truncate to 2000"); - } - - function testIsZeroExp() public { - - Assert.equal(true, isZeroExp(getExpFromRational(0, 1)), "zero should be zero"); - Assert.equal(true, isZeroExp(getExpFromRational(0, 10**58)), "zero from a large denominator should be zero"); - - Assert.equal(false, isZeroExp(getExpFromRational(10**58, 3)), "large rational should not be zero"); - Assert.equal(false, isZeroExp(getExpFromRational(10**58, 1)), "large integer should not be zero"); - Assert.equal(false, isZeroExp(getExpFromRational(1, 1)), "small integer should not be zero"); - - Exp memory tinyFraction = getExpFromRational(1, 10**18); - Assert.equal(1, tinyFraction.mantissa, "tinyFraction setup failed"); - - Assert.equal(false, isZeroExp(tinyFraction), "tiny fraction should not be zero"); - } - - // divExp just calls getExp, which is already tested, so here we just verify that it is passing the - // correct arguments to getExp and check identities and error case - function testDivExp() public { - MathError err; - Exp memory result; - - //////////////////// - // Simple division - Exp memory left = getExpFromRational(1, 1); - Exp memory right = getExpFromRational(3, 1); - (err, result)= divExp(left, right); - assertNoError(err); - - Assert.equal(result.mantissa, 333333333333333333, "Exp division failed- result.mantissa not 333333333333333333"); - - //////////////////// - // Divide by 1 - left = getExpFromRational(3, 1); - right = getExpFromRational(1, 1); - (err, result)= divExp(left, right); - assertNoError(err); - - Assert.equal(result.mantissa, left.mantissa, "Exp division by 1 failed- result.mantissa not left.mantissa"); - - //////////////////// - // Divide very small number by itself - left = getExpFromRational(1, 10**16); // our scaled representation of 10e-16. - - (err, result) = divExp(left, left); - assertNoError(err); - - Assert.equal(result.mantissa, 1000000000000000000, "Exp division failed- result.mantissa not 1000000000000000000"); - - //////////////////// - // Divide by 0 returns error - left = getExpFromRational(1, 1000); // .001 - right = getExpFromRational(0, 1); // 0 - - (err, result) = divExp(left, right); - Assert.equal(uint(err), uint(MathError.DIVISION_BY_ZERO), "Exp division by 0 should have returned MathError.DIVISION_BY_ZERO"); - Assert.equal(result.mantissa, 0, "Exp division by 0 mantissa should be 0"); - } - - - function testDivScalarByExp() public { - MathError err; - Exp memory result; - - //////////////////// - // divide by 1 - (err, result) = divScalarByExp(300, getExpFromRational(1, 1)); - assertNoError(err); - - Assert.equal(result.mantissa, 300 * 10**18, "Exp division failed- result.mantissa not 300 * 10**18"); - - //////////////////// - // divide 0 by non-zero - (err, result) = divScalarByExp(0, getExpFromRational(108, 1000)); - assertNoError(err); - - Assert.equal(result.mantissa, 0, "Exp division failed- result.mantissa not 0"); - - //////////////////// - // simple division by rational > 1: 300 / 1.6 = 187.5 - (err, result) = divScalarByExp(300, getExpFromRational(16, 10)); - assertNoError(err); - - Assert.equal(result.mantissa, 187500000000000000000, "Exp division failed- result.mantissa not 187500000000000000000"); - - //////////////////// - // simple division by rational < 1: 300 / .85 = 352.9411764705882352941176470588235294117647058823529411764... - // scaled as 352941176470588235294 - (err, result) = divScalarByExp(300, getExpFromRational(85, 100)); - assertNoError(err); - - Assert.equal(result.mantissa, 352941176470588235294, "Exp division failed- result.mantissa not 352941176470588235294"); - - //////////////////// - // divide large uint by rational 123456789012 / 1.6 = 77160493132.5; scaled as 77160493132500000000000000000 - (err, result) = divScalarByExp(123456789012, getExpFromRational(16, 10)); - assertNoError(err); - - Assert.equal(result.mantissa, 77160493132500000000000000000, "Exp division failed- result.mantissa not 77160493132500000000000000000"); - - //////////////////// - // divide large uint by large rational - // 123456789012 / 987654321012345.7 = 0.000124999998871524997371961899045794758369664776317619765..., - // scaled as 124999998871525 - (err, result) = divScalarByExp(123456789012, getExpFromRational(9876543210123456, 10)); - assertNoError(err); - - Assert.equal(result.mantissa, 124999998871525, "Exp division failed- result.mantissa not 124999998871525"); - - //////////////////// - // overflow with large scalar > max Exp 2^237 - 1 - (err, result) = divScalarByExp(2**237, getExpFromRational(10, 1)); - - Assert.equal(uint(err), uint(MathError.INTEGER_OVERFLOW), "scalar >= 2**237 should cause overflow when converted to Exp"); - - //////////////////// - // division by zero - (err, result) = divScalarByExp(10, getExpFromRational(0, 1)); - - Assert.equal(uint(err), uint(MathError.DIVISION_BY_ZERO), "division by zero should return error DIVISION_BY_ZERO"); - } - - - function testLessThanOrEqualExp() public { - - // identity - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(1, 1), getExpFromRational(1, 1)), "1/1 <= itself"); - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(1, 3), getExpFromRational(1, 3)), "1/3 <= itself"); - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(3, 1), getExpFromRational(3, 1)), "3/1 <= itself"); - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(0, 1), getExpFromRational(0, 3)), "0 <= itself even with different demoninators"); - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(11 * 10**17, 3), getExpFromRational(110 * 10**16, 3)), "(11 * 10**17)/3 <= itself"); - - // strictly less than - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(7, 9), getExpFromRational(1, 1)), "7/9 <= 1"); - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(1, 4), getExpFromRational(1, 3)), "1/4 <= 1/3"); - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(3, 2), getExpFromRational(3, 1)), "3/2 <= 3 "); - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(100, 3), getExpFromRational(100, 2)), "100/3 <= 100/2"); - Assert.isTrue(lessThanOrEqualExp(getExpFromRational(10**18, 3), getExpFromRational(10**19, 3)), "10e18/3 <= 10e19/3"); - - // Reverse the previous block of strictly less than tests - Assert.isFalse(lessThanOrEqualExp(getExpFromRational(1, 1), getExpFromRational(7, 9)), "1 !<= 7/9 "); - Assert.isFalse(lessThanOrEqualExp(getExpFromRational(1, 3), getExpFromRational(1, 4)), "1/3 !<= 1/4"); - Assert.isFalse(lessThanOrEqualExp(getExpFromRational(3, 1), getExpFromRational(3, 2)), "3 !<= 3/2"); - Assert.isFalse(lessThanOrEqualExp(getExpFromRational(100, 2), getExpFromRational(100, 3)), "100/2 !<= 100/3"); - Assert.isFalse(lessThanOrEqualExp(getExpFromRational(10**19, 3), getExpFromRational(10**18, 3)), "10e19/3 !<= 10e18/3"); - - // Let's do some more failure cases - Assert.isFalse(lessThanOrEqualExp(getExpFromRational(3, 1), getExpFromRational(1, 3)), "3/1 and 1/3"); - Assert.isFalse(lessThanOrEqualExp(getExpFromRational(3, 1), getExpFromRational(1, 1)), "3/1 and 1/1"); - Assert.isFalse(lessThanOrEqualExp(getExpFromRational(3, 1), getExpFromRational(0, 1)), "3/1 and 0/1"); - Assert.isFalse(lessThanOrEqualExp(getExpFromRational(30, 1), getExpFromRational(3, 1)), "30/1 and 3/1"); - } - - function assertError(MathError expected, MathError given, string memory message) internal { - Assert.equal(uint(expected), uint(given), message); - } - - function assertNoError(MathError err) internal { - assertError(MathError.NO_ERROR, err, "should have error NO_ERROR"); - } - - function assertZero(uint value, string memory message) internal { - Assert.equal(0, value, message); - } - -} \ No newline at end of file diff --git a/test/Models/interestRateModelTest.js b/test/Models/interestRateModelTest.js index 58a701bf6..e42a2f183 100644 --- a/test/Models/interestRateModelTest.js +++ b/test/Models/interestRateModelTest.js @@ -1,25 +1,67 @@ -const {call} = require('../Utils/MochaTruffle'); +const { call } = require('../Utils/MochaTruffle'); const { makeInterestRateModel, - getBorrowRate + getBorrowRate, + getSupplyRate } = require('../Utils/Compound'); function utilizationRate(cash, borrows, reserves) { - return borrows ? borrows / (cash + borrows) : 0; + return borrows ? borrows / (cash + borrows - reserves) : 0; } -function whitePaperRateFn(base, slope) { +function whitePaperRateFn(base, slope, kink = 0.9, jump = 5) { return (cash, borrows, reserves) => { - const ua = utilizationRate(cash, borrows, reserves); - return (ua * slope + base) / blocksPerYear; + const ur = utilizationRate(cash, borrows, reserves); + + if (ur <= kink) { + return (ur * slope + base) / blocksPerYear; + } else { + const excessUtil = ur - kink; + const jumpMultiplier = jump * slope; + return ((excessUtil * jumpMultiplier) + (kink * slope) + base) / blocksPerYear; + } + } +} + +function supplyRateFn(base, slope, kink, jump, cash, borrows, reserves, reserveFactor = 0.1) { + const ur = utilizationRate(cash, borrows, reserves); + const borrowRate = whitePaperRateFn(base, slope, kink, jump)(cash, borrows, reserves); + + return borrowRate * (1 - reserveFactor) * ur; +} + +function makeUtilization(util) { + if (util == 0e18) { + return { + borrows: 0, + reserves: 0, + cash: 0 + }; + } else { + // borrows / (cash + borrows - reserves) = util + // let borrows = 1 + // let reserves = 1 + // 1 / ( cash + 1 - 1 ) = util + // util = 1 / cash + // cash = 1 / util + borrows = 1e18; + reserves = 1e18; + cash = 1e36 / util; + + return { + borrows, + cash, + reserves + }; } } const ExpectedRates = { - 'baseP025-slopeP20': {base: 0.025, slope: 0.20}, - 'baseP05-slopeP45': {base: 0.05, slope: 0.45}, - 'white-paper': {base: 0.1, slope: 0.45} + 'baseP025-slopeP20': { base: 0.025, slope: 0.20 }, + 'baseP05-slopeP45': { base: 0.05, slope: 0.45 }, + 'white-paper': { base: 0.1, slope: 0.45 }, + 'jump-rate': { base: 0.1, slope: 0.45 } } const blocksPerYear = 2102400; @@ -40,16 +82,16 @@ contract('InterestRateModel', async function ([root, ...accounts]) { Object.entries(ExpectedRates).forEach(async ([kind, info]) => { let model; before(async () => { - model = await makeInterestRateModel({kind: 'white-paper', baseRate: info.base, multiplier: info.slope}); + model = await makeInterestRateModel({ kind: kind == 'jump-rate' ? 'jump-rate' : 'white-paper', baseRate: info.base, multiplier: info.slope }); }); const rateCases = (rateFn) => { rateInputs.forEach(([cash, borrows, reserves = 0]) => { it(`calculates correct borrow value for ${cash}, ${borrows}, ${reserves}`, async () => { const expected = rateFn(cash, borrows, reserves); - assert.hasIRErrorTuple( + assert.like( await getBorrowRate(model, cash, borrows, reserves), - ['NO_ERROR', (x) => assert.approximately(Number(x) / 1e18, expected, 1e7)] + (x) => assert.approximately(Number(x) / 1e18, expected, 1e7) ); }); }); @@ -62,37 +104,88 @@ contract('InterestRateModel', async function ([root, ...accounts]) { rateCases(whitePaperRateFn(info.base, info.slope)); - if (kind == 'white-paper') { + if (kind == 'jump-rate') { // Only need to do these for the WhitePaper it('handles overflowed cash + borrows', async () => { - assert.hasIRErrorTuple( - await getBorrowRate(model, -1, -1, 0), - ['FAILED_TO_ADD_CASH_PLUS_BORROWS', 0] - ); + await assert.revert(getBorrowRate(model, -1, -1, 0), "revert SafeMath: addition overflow"); }); - it('handles failing to get exp of borrows / cash + borrows', async() => { - assert.hasIRErrorTuple( - await getBorrowRate(model, 0, -1, 0), - ['FAILED_TO_GET_EXP', 0] - ); + it('handles failing to get exp of borrows / cash + borrows', async () => { + await assert.revert(getBorrowRate(model, 0, -1, 0), "revert SafeMath: multiplication overflow"); }); - it('handles overflow utilization rate times slope', async() => { - const badModel = await makeInterestRateModel({kind, baseRate: 0, multiplier: -1}); - assert.hasIRErrorTuple( - await getBorrowRate(badModel, 1, 1, 0), - ['FAILED_TO_MUL_UTILIZATION_RATE', 0] - ); + it('handles overflow utilization rate times slope', async () => { + const badModel = await makeInterestRateModel({ kind, baseRate: 0, multiplier: -1 }); + await assert.revert(getBorrowRate(badModel, 1, 1, 0), "revert SafeMath: multiplication overflow"); }); - it('handles overflow utilization rate times slope', async() => { - const badModel = await makeInterestRateModel({kind, baseRate: -1, multiplier: 1}); - assert.hasIRErrorTuple( - await getBorrowRate(badModel, 1, 1, 0), - ['FAILED_TO_ADD_BASE_RATE', 0] - ); + it('handles overflow utilization rate times slope + base', async () => { + const badModel = await makeInterestRateModel({ kind, baseRate: -1, multiplier: 1e48 }); + await assert.revert(getBorrowRate(badModel, 0, 1, 0), "revert SafeMath: multiplication overflow"); + }); + + describe('ranges', () => { + const f = (a, b) => [].concat(...a.map(d => b.map(e => [].concat(d, e)))); + const cartesian = (a, b, ...c) => (b ? cartesian(f(a, b), ...c) : a); + + let jumps = [ + 0, + 2, + 3, + 10, + 1000 + ]; + + let kinks = [ + 0e18, + 0.0001e18, + 0.02e18, + 0.5e18, + 0.99e18, + 1.0e18 + ]; + + cartesian(jumps, kinks).forEach(([jump, kink]) => { + let base = 0.02e18; + let slope = 0.2e18; + let utils = [ + 0e18, + 0.1e18, + 0.5e18, + 0.75e18, + 1.0e18, + 1.5e18, + 10.0e18, + kink - 0.00001e18, + kink, + kink + 0.00001e18 + ].filter((util) => util >= 0); + + utils.forEach(async (util) => { + it(`has correct curve for kink=${kink/1e16}%, util=${util/1e16}%`, async () => { + let {borrows, cash, reserves} = makeUtilization(util); + + let calculated = borrows / (cash + borrows - reserves); + + const altModel = await makeInterestRateModel({ + kind: 'jump-rate', + baseRate: base / 1e18, + multiplier: slope / 1e18, + kink: kink, + jump: jump + }); + + const expected = whitePaperRateFn(base / 1e18, slope / 1e18, kink / 1e18, jump)(cash, borrows, reserves); + const result = await getBorrowRate(altModel, cash, borrows, reserves); + + assert.like( + await result, + (x) => assert.approximately(Number(x) / 1e18, expected, 1e-3) + ); + }); + }); + }); }); describe('getBorrowRate', async () => { @@ -133,18 +226,68 @@ contract('InterestRateModel', async function ([root, ...accounts]) { [20.0e18, 40.0e18, 0, 0], [20.0e18, 40.0e18, 3e18, 500], ].map(vs => vs.map(Number)) - .forEach(([base, slope, cash, borrows, reserves = 0]) => { // XXX add reserves - it(`calculates correct borrow value for base=${base/1e16}%,slope=${slope/1e16}%, cash=${cash}, borrows=${borrows}`, async () => { - const altModel = await makeInterestRateModel({kind: 'white-paper', baseRate: base / 1e18, multiplier: slope / 1e18}); - const expected = whitePaperRateFn(base / 1e18, slope / 1e18)(cash, borrows, reserves); - assert.hasIRErrorTuple( + .forEach(([base, slope, cash, borrows, reserves = 0, kink = 0.9e18, jump = 5]) => { // XXX add reserves + it(`calculates correct borrow value for base=${base / 1e16}%,slope=${slope / 1e16}%, cash=${cash}, borrows=${borrows}`, async () => { + const altModel = await makeInterestRateModel({ kind: 'jump-rate', baseRate: base / 1e18, multiplier: slope / 1e18, kink: kink / 1e18, jump: jump }); + const expected = whitePaperRateFn(base / 1e18, slope / 1e18, kink / 1e18, jump)(cash, borrows, reserves); + assert.like( await getBorrowRate(altModel, cash, borrows, reserves), - ['NO_ERROR', (x) => assert.approximately(Number(x) / 1e18, expected, 1e-8)] + (x) => assert.approximately(Number(x) / 1e18, expected, 1e-8) + ); + }); + }); + }); + + describe('getSupplyRate', async () => { + // We'll generate a large number of tests to verify approximate accuracy + [ + // Description of tests arrays: + // [base, slope, cash, borrows] + + // 50% base and 45% slope + [0.5e18, 0.45e18, 500, 100], + [0.5e18, 0.45e18, 3e18, 5e18], + [0.5e18, 0.45e18, 5e18, 3e18], + [0.5e18, 0.45e18, 500, 3e18], + [0.5e18, 0.45e18, 0, 500], + [0.5e18, 0.45e18, 500, 0], + [0.5e18, 0.45e18, 0, 0], + [0.5e18, 0.45e18, 3e18, 500], + [0.5e18, 0.45e18, "1000.00000000e18", "310.00000000e18"], + [0.5e18, 0.45e18, "690.00000000e18", "310.00000000e18"], + + // 10% base and 200% slope + [0.1e18, 2.0e18, 500, 100], + [0.1e18, 2.0e18, 3e18, 5e18], + [0.1e18, 2.0e18, 5e18, 3e18], + [0.1e18, 2.0e18, 500, 3e18], + [0.1e18, 2.0e18, 0, 500], + [0.1e18, 2.0e18, 500, 0], + [0.1e18, 2.0e18, 0, 0], + [0.1e18, 2.0e18, 3e18, 500], + + // 2000% base and 4000% slope + [20.0e18, 40.0e18, 500, 100], + [20.0e18, 40.0e18, 3e18, 5e18], + [20.0e18, 40.0e18, 5e18, 3e18], + [20.0e18, 40.0e18, 500, 3e18], + [20.0e18, 40.0e18, 0, 500], + [20.0e18, 40.0e18, 500, 0], + [20.0e18, 40.0e18, 0, 0], + [20.0e18, 40.0e18, 3e18, 500], + ].map(vs => vs.map(Number)) + .forEach(([base, slope, cash, borrows, reserves = 0, kink = 0.9e18, jump = 5, reserveFactor = 0.1e18]) => { // XXX add reserves + it(`calculates correct supply value for base=${base / 1e16}%,slope=${slope / 1e16}%, cash=${cash}, borrows=${borrows}`, async () => { + const altModel = await makeInterestRateModel({ kind: 'jump-rate', baseRate: base / 1e18, multiplier: slope / 1e18, kink: kink / 1e18, jump: jump }); + const expected = supplyRateFn(base / 1e18, slope / 1e18, kink / 1e18, jump, cash, borrows, reserves, reserveFactor / 1e18); + assert.like( + await getSupplyRate(altModel, cash, borrows, reserves, reserveFactor), + (x) => assert.approximately(Number(x) / 1e18, expected, 1e-8) ); }); }); }); } }); - }) -}); \ No newline at end of file + }); +}); diff --git a/test/PriceOracleProxyTest.js b/test/PriceOracleProxyTest.js index 9b8227ca9..57930c699 100644 --- a/test/PriceOracleProxyTest.js +++ b/test/PriceOracleProxyTest.js @@ -16,11 +16,12 @@ const { const OraclePriceOracleProxy = getContract('PriceOracleProxy'); contract('PriceOracleProxy', function([root, ...accounts]) { - let oracle, backingOracle, cEth, cUsdc, cDai, cOther; + let oracle, backingOracle, cEth, cUsdc, cSai, cDai, cOther; before(async () =>{ cEth = await makeCToken({kind: "cether", comptrollerOpts: {kind: "v1-no-proxy"}, supportMarket: true}); cUsdc = await makeCToken({comptroller: cEth.comptroller, supportMarket: true}); + cSai = await makeCToken({comptroller: cEth.comptroller, supportMarket: true}); cDai = await makeCToken({comptroller: cEth.comptroller, supportMarket: true}); cOther = await makeCToken({comptroller: cEth.comptroller, supportMarket: true}); @@ -32,6 +33,7 @@ contract('PriceOracleProxy', function([root, ...accounts]) { backingOracle._address, cEth._address, cUsdc._address, + cSai._address, cDai._address ]}) .send({from: root}); @@ -58,6 +60,12 @@ contract('PriceOracleProxy', function([root, ...accounts]) { assert.equal(configuredCUSD, cUsdc._address); }); + it("sets address of cSAI", async () => { + let configuredCSAI = await call(oracle, "cSaiAddress"); + assert.equal(configuredCSAI, cSai._address); + }); + + it("sets address of cDAI", async () => { let configuredCDAI = await call(oracle, "cDaiAddress"); assert.equal(configuredCDAI, cDai._address); @@ -89,24 +97,27 @@ contract('PriceOracleProxy', function([root, ...accounts]) { }); it("proxies to v1 oracle for cusdc", async () => { - await setAndVerifyBackingPrice(cDai, 50); + await setAndVerifyBackingPrice(cSai, 50); await readAndVerifyProxyPrice(cUsdc, 50e12); }); - it("computes address(2) / address(1) * maker usd price for cdai", async () => { - await setAndVerifyBackingPrice(cDai, 5); + it("computes address(2) / address(1) * maker usd price for csai and cdai", async () => { + await setAndVerifyBackingPrice(cSai, 5); // 0.95 < ratio < 1.05 await send(backingOracle, "setDirectPrice", [address(1), etherMantissa(1e12)]); await send(backingOracle, "setDirectPrice", [address(2), etherMantissa(1.03)]); + await readAndVerifyProxyPrice(cSai, 1.03 * 5); await readAndVerifyProxyPrice(cDai, 1.03 * 5); // ratio <= 0.95 await send(backingOracle, "setDirectPrice", [address(1), etherMantissa(5e12)]); + await readAndVerifyProxyPrice(cSai, 0.95 * 5); await readAndVerifyProxyPrice(cDai, 0.95 * 5); // 1.05 <= ratio await send(backingOracle, "setDirectPrice", [address(1), etherMantissa(5e11)]); + await readAndVerifyProxyPrice(cSai, 1.05 * 5); await readAndVerifyProxyPrice(cDai, 1.05 * 5); }); diff --git a/test/ScenarioTest.js b/test/ScenarioTest.js index 36e451350..faa3e707a 100644 --- a/test/ScenarioTest.js +++ b/test/ScenarioTest.js @@ -118,4 +118,4 @@ contract('ScenarioTest', function(accounts) { it.skip("scenario: " + name, async () => {}); } }); -}); +}, 60000); diff --git a/test/Tokens/accrueInterestTest.js b/test/Tokens/accrueInterestTest.js index 61e8a3f8c..305bb76a6 100644 --- a/test/Tokens/accrueInterestTest.js +++ b/test/Tokens/accrueInterestTest.js @@ -45,11 +45,7 @@ contract('CToken', function ([root, ...accounts]) { it('fails if new borrow rate calculation fails', async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await send(cToken, 'accrueInterest'), - 'INTEREST_RATE_MODEL_ERROR', - 'ACCRUE_INTEREST_BORROW_RATE_CALCULATION_FAILED' - ); + await assert.revert(send(cToken, 'accrueInterest'), "revert INTEREST_RATE_MODEL_ERROR"); }); it('fails if simple interest factor calculation fails', async () => { @@ -139,7 +135,14 @@ contract('CToken', function ([root, ...accounts]) { const expectedTotalBorrows = startingTotalBorrows + startingTotalBorrows * borrowRate; const expectedTotalReserves = startingTotalReserves + startingTotalBorrows * borrowRate * reserveFactor / 1e18; - assert.success(await send(cToken, 'accrueInterest')); + const receipt = await send(cToken, 'accrueInterest') + assert.success(receipt); + assert.hasLog(receipt, 'AccrueInterest', { + cashPrior: 0, + interestAccumulated: etherUnsigned(expectedTotalBorrows).sub(etherUnsigned(startingTotalBorrows)), + borrowIndex: expectedBorrowIndex, + totalBorrows: expectedTotalBorrows + }, true); assert.equal(await call(cToken, 'accrualBlockNumber'), expectedAccrualBlockNumber); assert.equal(await call(cToken, 'borrowIndex'), expectedBorrowIndex); assert.equal(await call(cToken, 'totalBorrows'), expectedTotalBorrows); diff --git a/test/Tokens/borrowAndRepayCEtherTest.js b/test/Tokens/borrowAndRepayCEtherTest.js index e024c7238..1e40ab53f 100644 --- a/test/Tokens/borrowAndRepayCEtherTest.js +++ b/test/Tokens/borrowAndRepayCEtherTest.js @@ -135,7 +135,7 @@ contract('CEther', function ([root, borrower, benefactor, ...accounts]) { it("reverts if transfer out fails", async () => { await send(cToken, 'harnessSetFailTransferToAddress', [borrower, true]); - await assert.revert(borrowFresh(cToken, borrower, borrowAmount), "revert borrow transfer out failed"); + await assert.revert(borrowFresh(cToken, borrower, borrowAmount), "revert TOKEN_TRANSFER_OUT_FAILED"); }); it("reverts if borrowVerify fails", async() => { @@ -179,11 +179,7 @@ contract('CEther', function ([root, borrower, benefactor, ...accounts]) { it("emits a borrow failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await borrow(cToken, borrower, borrowAmount), - 'INTEREST_RATE_MODEL_ERROR', - 'BORROW_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(borrow(cToken, borrower, borrowAmount), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from borrowFresh without emitting any extra logs", async () => { @@ -237,19 +233,17 @@ contract('CEther', function ([root, borrower, benefactor, ...accounts]) { it("returns an error if calculating account new account borrow balance fails", async () => { await pretendBorrow(cToken, borrower, 1, 1, 1); - assert.hasTokenMathFail( - await repayBorrowFresh(cToken, payer, borrower, repayAmount), - 'REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED', - 'INTEGER_UNDERFLOW' + await assert.revert( + repayBorrowFresh(cToken, payer, borrower, repayAmount), + 'revert REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED' ); }); it("returns an error if calculation of new total borrow balance fails", async () => { await send(cToken, 'harnessSetTotalBorrows', [1]); - assert.hasTokenMathFail( - await repayBorrowFresh(cToken, payer, borrower, repayAmount), - 'REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED', - 'INTEGER_UNDERFLOW' + await assert.revert( + repayBorrowFresh(cToken, payer, borrower, repayAmount), + 'revert REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED' ); }); @@ -311,7 +305,7 @@ contract('CEther', function ([root, borrower, benefactor, ...accounts]) { it("reverts if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - await assert.revertWithError(repayBorrow(cToken, borrower, repayAmount), 'INTEREST_RATE_MODEL_ERROR', "revert repayBorrow failed"); + await assert.revert(repayBorrow(cToken, borrower, repayAmount), "revert INTEREST_RATE_MODEL_ERROR"); }); it("reverts when repay borrow fresh fails", async () => { @@ -330,7 +324,8 @@ contract('CEther', function ([root, borrower, benefactor, ...accounts]) { it("reverts if overpaying", async () => { const beforeAccountBorrowSnap = await borrowSnapshot(cToken, borrower); let tooMuch = new BigNumber(beforeAccountBorrowSnap.principal).plus(1); - await assert.revertWithError(repayBorrow(cToken, borrower, tooMuch), 'MATH_ERROR', "revert repayBorrow failed"); + await assert.revert(repayBorrow(cToken, borrower, tooMuch), "revert REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED"); + // await assert.revertWithError(repayBorrow(cToken, borrower, tooMuch), 'MATH_ERROR', "revert repayBorrow failed"); }); }); @@ -343,7 +338,7 @@ contract('CEther', function ([root, borrower, benefactor, ...accounts]) { it("reverts if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - await assert.revertWithError(repayBorrowBehalf(cToken, payer, borrower, repayAmount), 'INTEREST_RATE_MODEL_ERROR', "revert repayBorrowBehalf failed"); + await assert.revert(repayBorrowBehalf(cToken, payer, borrower, repayAmount), "revert INTEREST_RATE_MODEL_ERROR"); }); it("reverts from within repay borrow fresh", async () => { diff --git a/test/Tokens/borrowAndRepayTest.js b/test/Tokens/borrowAndRepayTest.js index 76c11f22d..c86533ef3 100644 --- a/test/Tokens/borrowAndRepayTest.js +++ b/test/Tokens/borrowAndRepayTest.js @@ -133,7 +133,7 @@ contract('CToken', function ([root, borrower, benefactor, ...accounts]) { it("reverts if transfer out fails", async () => { await send(cToken, 'harnessSetFailTransferToAddress', [borrower, true]); - await assert.revert(borrowFresh(cToken, borrower, borrowAmount), "revert borrow transfer out failed"); + await assert.revert(borrowFresh(cToken, borrower, borrowAmount), "revert TOKEN_TRANSFER_OUT_FAILED"); }); it("reverts if borrowVerify fails", async() => { @@ -179,11 +179,7 @@ contract('CToken', function ([root, borrower, benefactor, ...accounts]) { it("emits a borrow failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await borrow(cToken, borrower, borrowAmount), - 'INTEREST_RATE_MODEL_ERROR', - 'BORROW_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(borrow(cToken, borrower, borrowAmount), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from borrowFresh without emitting any extra logs", async () => { @@ -246,27 +242,27 @@ contract('CToken', function ([root, borrower, benefactor, ...accounts]) { ); }); + it("returns an error if calculating account new account borrow balance fails", async () => { await pretendBorrow(cToken, borrower, 1, 1, 1); - assert.hasTokenMathFail( - await repayBorrowFresh(cToken, payer, borrower, repayAmount), - 'REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED', - 'INTEGER_UNDERFLOW' + await assert.revert( + repayBorrowFresh(cToken, payer, borrower, repayAmount), + "revert REPAY_BORROW_NEW_ACCOUNT_BORROW_BALANCE_CALCULATION_FAILED" ); }); it("returns an error if calculation of new total borrow balance fails", async () => { await send(cToken, 'harnessSetTotalBorrows', [1]); - assert.hasTokenMathFail( - await repayBorrowFresh(cToken, payer, borrower, repayAmount), - 'REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED', - 'INTEGER_UNDERFLOW' + await assert.revert( + repayBorrowFresh(cToken, payer, borrower, repayAmount), + "revert REPAY_BORROW_NEW_TOTAL_BALANCE_CALCULATION_FAILED" ); }); + it("reverts if doTransferIn fails", async () => { await send(cToken.underlying, 'harnessSetFailTransferFromAddress', [payer, true]); - await assert.revert(repayBorrowFresh(cToken, payer, borrower, repayAmount), "revert repay borrow transfer in failed"); + await assert.revert(repayBorrowFresh(cToken, payer, borrower, repayAmount), "revert TOKEN_TRANSFER_IN_FAILED"); }); it("reverts if repayBorrowVerify fails", async() => { @@ -312,11 +308,7 @@ contract('CToken', function ([root, borrower, benefactor, ...accounts]) { it("emits a repay borrow failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await repayBorrow(cToken, borrower, repayAmount), - 'INTEREST_RATE_MODEL_ERROR', - 'REPAY_BORROW_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(repayBorrow(cToken, borrower, repayAmount), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from repayBorrowFresh without emitting any extra logs", async () => { @@ -363,11 +355,7 @@ contract('CToken', function ([root, borrower, benefactor, ...accounts]) { it("emits a repay borrow failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await repayBorrowBehalf(cToken, payer, borrower, repayAmount), - 'INTEREST_RATE_MODEL_ERROR', - 'REPAY_BEHALF_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(repayBorrowBehalf(cToken, payer, borrower, repayAmount), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from repayBorrowFresh without emitting any extra logs", async () => { diff --git a/test/Tokens/cTokenTest.js b/test/Tokens/cTokenTest.js index ed5442d10..4c2f37832 100644 --- a/test/Tokens/cTokenTest.js +++ b/test/Tokens/cTokenTest.js @@ -14,29 +14,29 @@ const { contract('CToken', function ([root, admin, ...accounts]) { describe('constructor', async () => { it("fails when non erc-20 underlying", async () => { - await assert.revert(makeCToken({underlying: {_address: root}})); + await assert.revert(makeCToken({ underlying: { _address: root } }), "revert"); }); it("fails when 0 initial exchange rate", async () => { - await assert.revert(makeCToken({exchangeRate: 0}), "revert Initial exchange rate must be greater than zero."); + await assert.revert(makeCToken({ exchangeRate: 0 }), "revert initial exchange rate must be greater than zero."); }); it("succeeds with erc-20 underlying and non-zero exchange rate", async () => { const cToken = await makeCToken(); assert.equal(await call(cToken, 'underlying'), cToken.underlying._address); - assert.equal(await call(cToken, 'admin',), root); + assert.equal(await call(cToken, 'admin'), root); }); it("succeeds when setting admin to contructor argument", async () => { - const cToken = await makeCToken({admin: admin}); - assert.equal(await call(cToken, 'admin',), admin); + const cToken = await makeCToken({ admin: admin }); + assert.equal(await call(cToken, 'admin'), admin); }); }); describe('name, symbol, decimals', async () => { let cToken; before(async () => { - cToken = await makeCToken({name: "CToken Foo", symbol: "cFOO", decimals: 10}); + cToken = await makeCToken({ name: "CToken Foo", symbol: "cFOO", decimals: 10 }); }); it('should return correct name', async () => { @@ -54,7 +54,7 @@ contract('CToken', function ([root, admin, ...accounts]) { describe('balanceOfUnderlying', () => { it("has an underlying balance", async () => { - const cToken = await makeCToken({supportMarket: true, exchangeRate: 2}); + const cToken = await makeCToken({ supportMarket: true, exchangeRate: 2 }); await send(cToken, 'harnessSetBalance', [root, 100]); assert.equal(await call(cToken, 'balanceOfUnderlying', [root]), 200); }); @@ -62,25 +62,35 @@ contract('CToken', function ([root, admin, ...accounts]) { describe('borrowRatePerBlock', () => { it("has a borrow rate", async () => { - const cToken = await makeCToken({supportMarket: true, interestRateModelOpts: {kind: 'white-paper', baseRate: .05, multiplier: 0.45}}); + const cToken = await makeCToken({ supportMarket: true, interestRateModelOpts: { kind: 'jump-rate', baseRate: .05, multiplier: 0.45, kink: 0.95, jump: 5 } }); const perBlock = await call(cToken, 'borrowRatePerBlock'); assert.approximately(perBlock * 2102400, 5e16, 1e8); }); }); describe('supplyRatePerBlock', () => { - it("reverts if there's no supply", async () => { - const cToken = await makeCToken({supportMarket: true, interestRateModelOpts: {kind: 'white-paper', baseRate: .05, multiplier: 0.45}}); - await assert.revert(call(cToken, 'supplyRatePerBlock'), "revert supplyRatePerBlock: calculating borrowsPer failed"); + it("returns 0 if there's no supply", async () => { + const cToken = await makeCToken({ supportMarket: true, interestRateModelOpts: { kind: 'jump-rate', baseRate: .05, multiplier: 0.45, kink: 0.95, jump: 5 } }); + const perBlock = await call(cToken, 'supplyRatePerBlock'); + await assert.equal(perBlock, 0); }); it("has a supply rate", async () => { - const cToken = await makeCToken({supportMarket: true, interestRateModelOpts: {kind: 'white-paper', baseRate: .05, multiplier: 0.45}}); + const baseRate = 0.05; + const multiplier = 0.45; + const kink = 0.95; + const jump = 5; + const cToken = await makeCToken({ supportMarket: true, interestRateModelOpts: { kind: 'jump-rate', baseRate, multiplier, kink, jump } }); await send(cToken, 'harnessSetReserveFactorFresh', [etherMantissa(.01)]); await send(cToken, 'harnessExchangeRateDetails', [1, 1, 0]); await send(cToken, 'harnessSetExchangeRate', [etherMantissa(1)]); + // Full utilization (Over the kink so jump is included), 1% reserves + const additionalJump = multiplier * jump * .05; + const borrowRate = (kink * multiplier) + baseRate + additionalJump; + const expectedSuplyRate = borrowRate * .99; + const perBlock = await call(cToken, 'supplyRatePerBlock'); - assert.approximately(perBlock * 2102400, 50e16 * .99, 1e8); // full utilization, 1% reserves + assert.approximately(perBlock * 2102400, expectedSuplyRate * 1e18, 1e8); }); }); @@ -99,7 +109,7 @@ contract('CToken', function ([root, admin, ...accounts]) { it("reverts if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - await assert.revert(send(cToken, 'borrowBalanceCurrent', [borrower]), "revert accrue interest failed"); + await assert.revert(send(cToken, 'borrowBalanceCurrent', [borrower]), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns successful result from borrowBalanceStored with no interest", async () => { @@ -121,7 +131,7 @@ contract('CToken', function ([root, admin, ...accounts]) { let cToken; beforeEach(async () => { - cToken = await makeCToken({comptrollerOpts: {kind: 'bool'}}); + cToken = await makeCToken({ comptrollerOpts: { kind: 'bool' } }); }); it("returns 0 for account with no borrows", async () => { @@ -156,11 +166,11 @@ contract('CToken', function ([root, admin, ...accounts]) { describe('exchangeRateStored', async () => { let cToken, exchangeRate = 2; beforeEach(async () => { - cToken = await makeCToken({exchangeRate}); + cToken = await makeCToken({ exchangeRate }); }); it("returns initial exchange rate with zero cTokenSupply", async () => { - const result = await call(cToken, 'exchangeRateStored'); + const result = await call(cToken, 'exchangeRateStored'); assert.equal(result, etherMantissa(exchangeRate), "exchange rate should be initial exchange rate"); }); diff --git a/test/Tokens/liquidateTest.js b/test/Tokens/liquidateTest.js index 258a284c9..9883f11be 100644 --- a/test/Tokens/liquidateTest.js +++ b/test/Tokens/liquidateTest.js @@ -115,10 +115,9 @@ contract('CToken', function ([root, liquidator, borrower, ...accounts]) { it("fails if calculating seize tokens fails and does not adjust balances", async () => { const beforeBalances = await getBalances([cToken, cTokenCollateral], [liquidator, borrower]); await send(cToken.comptroller, 'setFailCalculateSeizeTokens', [true]); - assert.hasTokenFailure( - await liquidateFresh(cToken, liquidator, borrower, repayAmount, cTokenCollateral), - 'COMPTROLLER_CALCULATION_ERROR', - 'LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED', + await assert.revert( + liquidateFresh(cToken, liquidator, borrower, repayAmount, cTokenCollateral), + 'revert LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED', ); const afterBalances = await getBalances([cToken, cTokenCollateral], [liquidator, borrower]); assert.deepEqual(afterBalances, beforeBalances); @@ -178,20 +177,12 @@ contract('CToken', function ([root, liquidator, borrower, ...accounts]) { describe('liquidateBorrow', async () => { it("emits a liquidation failure if borrowed asset interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await liquidate(cToken, liquidator, borrower, repayAmount, cTokenCollateral), - 'INTEREST_RATE_MODEL_ERROR', - 'LIQUIDATE_ACCRUE_BORROW_INTEREST_FAILED' - ); + await assert.revert(liquidate(cToken, liquidator, borrower, repayAmount, cTokenCollateral), "revert INTEREST_RATE_MODEL_ERROR"); }); it("emits a liquidation failure if collateral asset interest accrual fails", async () => { await send(cTokenCollateral.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await liquidate(cToken, liquidator, borrower, repayAmount, cTokenCollateral), - 'INTEREST_RATE_MODEL_ERROR', - 'LIQUIDATE_ACCRUE_COLLATERAL_INTEREST_FAILED' - ); + await assert.revert(liquidate(cToken, liquidator, borrower, repayAmount, cTokenCollateral), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from liquidateBorrowFresh without emitting any extra logs", async () => { diff --git a/test/Tokens/mintAndRedeemCEtherTest.js b/test/Tokens/mintAndRedeemCEtherTest.js index deba82e3e..74bdaa008 100644 --- a/test/Tokens/mintAndRedeemCEtherTest.js +++ b/test/Tokens/mintAndRedeemCEtherTest.js @@ -68,7 +68,7 @@ contract('CEther', function ([root, minter, redeemer, ...accounts]) { it("reverts if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - await assert.revertWithError(mint(cToken, minter, mintAmount), 'INTEREST_RATE_MODEL_ERROR', "revert mint failed"); + await assert.revert(mint(cToken, minter, mintAmount), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns success from mintFresh and mints the correct number of tokens", async () => { @@ -95,11 +95,7 @@ contract('CEther', function ([root, minter, redeemer, ...accounts]) { it("emits a redeem failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await redeem(cToken, redeemer, redeemTokens, redeemAmount), - 'INTEREST_RATE_MODEL_ERROR', - 'REDEEM_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(redeem(cToken, redeemer, redeemTokens, redeemAmount), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from redeemFresh without emitting any extra logs", async () => { diff --git a/test/Tokens/mintAndRedeemTest.js b/test/Tokens/mintAndRedeemTest.js index 398c2e612..d5e529e1b 100644 --- a/test/Tokens/mintAndRedeemTest.js +++ b/test/Tokens/mintAndRedeemTest.js @@ -120,20 +120,17 @@ contract('CToken', function ([root, minter, redeemer, ...accounts]) { it("fails if exchange calculation fails", async () => { assert.success(await send(cToken, 'harnessSetExchangeRate', [0])); - assert.hasTokenFailure( - await mintFresh(cToken, minter, mintAmount), - 'MATH_ERROR', - 'MINT_EXCHANGE_CALCULATION_FAILED' + await assert.revert( + mintFresh(cToken, minter, mintAmount), + 'revert MINT_EXCHANGE_CALCULATION_FAILED' ); }); it("fails if transferring in fails", async () => { await send(cToken.underlying, 'harnessSetFailTransferFromAddress', [minter, true]); - const result = await mintFresh(cToken, minter, mintAmount); - assert.hasTokenFailure( - result, - 'TOKEN_TRANSFER_IN_FAILED', - 'MINT_TRANSFER_IN_FAILED' + await assert.revert( + mintFresh(cToken, minter, mintAmount), + 'revert TOKEN_TRANSFER_IN_FAILED' ); }); @@ -168,11 +165,7 @@ contract('CToken', function ([root, minter, redeemer, ...accounts]) { it("emits a mint failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await quickMint(cToken, minter, mintAmount), - 'INTEREST_RATE_MODEL_ERROR', - 'MINT_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(quickMint(cToken, minter, mintAmount), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from mintFresh without emitting any extra logs", async () => { @@ -252,7 +245,7 @@ contract('CToken', function ([root, minter, redeemer, ...accounts]) { it("fails if transferring out fails", async () => { await send(cToken.underlying, 'harnessSetFailTransferToAddress', [redeemer, true]); - await assert.revert(redeemFresh(cToken, redeemer, redeemTokens, redeemAmount), "revert redeem transfer out failed"); + await assert.revert(redeemFresh(cToken, redeemer, redeemTokens, redeemAmount), "revert TOKEN_TRANSFER_OUT_FAILED"); }); it("fails if total supply < redemption amount", async () => { @@ -305,11 +298,7 @@ contract('CToken', function ([root, minter, redeemer, ...accounts]) { it("emits a redeem failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await quickRedeem(cToken, redeemer, redeemTokens), - 'INTEREST_RATE_MODEL_ERROR', - 'REDEEM_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(quickRedeem(cToken, redeemer, redeemTokens), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from redeemFresh without emitting any extra logs", async () => { diff --git a/test/Tokens/reservesTest.js b/test/Tokens/reservesTest.js index 4c77a21d5..28fb5aaac 100644 --- a/test/Tokens/reservesTest.js +++ b/test/Tokens/reservesTest.js @@ -85,11 +85,7 @@ contract('CToken', function ([root, ...accounts]) { it("emits a reserve factor failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await send(cToken, '_setReserveFactor', [factor]), - 'INTEREST_RATE_MODEL_ERROR', - 'SET_RESERVE_FACTOR_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(send(cToken, '_setReserveFactor', [factor]), "revert INTEREST_RATE_MODEL_ERROR"); assert.equal(await call(cToken, 'reserveFactorMantissa'), 0, "reserve factor should be 0"); }); @@ -187,11 +183,7 @@ contract('CToken', function ([root, ...accounts]) { it("emits a reserve-reduction failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await send(cToken, '_reduceReserves', [reduction]), - 'INTEREST_RATE_MODEL_ERROR', - 'REDUCE_RESERVES_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(send(cToken, '_reduceReserves', [reduction]), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from _reduceReservesFresh without emitting any extra logs", async () => { diff --git a/test/Tokens/safeTokenTest.js b/test/Tokens/safeTokenTest.js index d1f1736f2..ad92aa184 100644 --- a/test/Tokens/safeTokenTest.js +++ b/test/Tokens/safeTokenTest.js @@ -25,7 +25,7 @@ contract('CEther', function ([root, nonRoot, ...accounts]) { describe("doTransferIn", async () => { it("succeeds if from is msg.nonRoot and amount is msg.value", async () => { - assert.equal(await call(cToken, 'harnessDoTransferIn', [root, 100], {value: 100}), 0); + assert.equal(await call(cToken, 'harnessDoTransferIn', [root, 100], {value: 100}), 100); }); it("reverts if from != msg.sender", async () => { diff --git a/test/Tokens/setComptrollerTest.js b/test/Tokens/setComptrollerTest.js index 3939185aa..fe79aad99 100644 --- a/test/Tokens/setComptrollerTest.js +++ b/test/Tokens/setComptrollerTest.js @@ -1,10 +1,10 @@ -const {call, send} = require('../Utils/MochaTruffle'); +const { call, send } = require('../Utils/MochaTruffle'); const { makeComptroller, makeCToken } = require('../Utils/Compound'); -contract('CToken', function([root, ...accounts]) { +contract('CToken', function ([root, ...accounts]) { let cToken, oldComptroller, newComptroller; before(async () => { cToken = await makeCToken(); @@ -16,7 +16,7 @@ contract('CToken', function([root, ...accounts]) { describe('_setComptroller', async () => { it("should fail if called by non-admin", async () => { assert.hasTokenFailure( - await send(cToken, '_setComptroller', [newComptroller._address], {from: accounts[0]}), + await send(cToken, '_setComptroller', [newComptroller._address], { from: accounts[0] }), 'UNAUTHORIZED', 'SET_COMPTROLLER_OWNER_CHECK' ); @@ -24,13 +24,13 @@ contract('CToken', function([root, ...accounts]) { }); it("reverts if passed a contract that doesn't implement isComptroller", async () => { - await assert.revert(send(cToken, '_setComptroller', [cToken.underlying._address])); + await assert.revert(send(cToken, '_setComptroller', [cToken.underlying._address]), "revert"); assert.equal(await call(cToken, 'comptroller'), oldComptroller._address); }); it("reverts if passed a contract that implements isComptroller as false", async () => { // extremely unlikely to occur, of course, but let's be exhaustive - const badComptroller = await makeComptroller({kind: 'false-marker'}); + const badComptroller = await makeComptroller({ kind: 'false-marker' }); await assert.revert(send(cToken, '_setComptroller', [badComptroller._address]), "revert marker method returned false"); assert.equal(await call(cToken, 'comptroller'), oldComptroller._address); }); diff --git a/test/Tokens/setInterestRateModelTest.js b/test/Tokens/setInterestRateModelTest.js index 905431d74..529a7418e 100644 --- a/test/Tokens/setInterestRateModelTest.js +++ b/test/Tokens/setInterestRateModelTest.js @@ -77,11 +77,7 @@ contract('CToken', function ([root, ...accounts]) { it("emits a set market interest rate model failure if interest accrual fails", async () => { await send(cToken.interestRateModel, 'setFailBorrowRate', [true]); - assert.hasTokenFailure( - await send(cToken, '_setInterestRateModel', [newModel._address]), - 'INTEREST_RATE_MODEL_ERROR', - 'SET_INTEREST_RATE_MODEL_ACCRUE_INTEREST_FAILED' - ); + await assert.revert(send(cToken, '_setInterestRateModel', [newModel._address]), "revert INTEREST_RATE_MODEL_ERROR"); }); it("returns error from _setInterestRateModelFresh without emitting any extra logs", async () => { diff --git a/test/Utils/Compound.js b/test/Utils/Compound.js index 820f9b0bf..fd6cc1580 100644 --- a/test/Utils/Compound.js +++ b/test/Utils/Compound.js @@ -1,6 +1,6 @@ "use strict"; -const {dfn} = require('./JS'); +const { dfn } = require('./JS'); const { etherBalance, etherMantissa, @@ -23,29 +23,29 @@ async function makeComptroller(opts = {}) { if (kind == 'bool') { const Comptroller = getTestContract('BoolComptroller'); - const comptroller = await Comptroller.deploy().send({from: root}); + const comptroller = await Comptroller.deploy().send({ from: root }); return comptroller; } if (kind == 'false-marker') { const Comptroller = getTestContract('FalseMarkerMethodComptroller'); - const comptroller = await Comptroller.deploy().send({from: root}); + const comptroller = await Comptroller.deploy().send({ from: root }); return comptroller; } - if (kind == 'v1-no-proxy' ) { + if (kind == 'v1-no-proxy') { const Comptroller = getContract('ComptrollerHarness'); const priceOracle = opts.priceOracle || await makePriceOracle(opts.priceOracleOpts); const closeFactor = etherMantissa(dfn(opts.closeFactor, .051)); const maxAssets = etherUnsigned(dfn(opts.maxAssets, 10)); - const comptroller = await Comptroller.deploy().send({from: root}); + const comptroller = await Comptroller.deploy().send({ from: root }); - await comptroller.methods._setCloseFactor(closeFactor).send({from: root}); - await comptroller.methods._setMaxAssets(maxAssets).send({from: root}); - await comptroller.methods._setPriceOracle(priceOracle._address).send({from: root}); + await comptroller.methods._setCloseFactor(closeFactor).send({ from: root }); + await comptroller.methods._setMaxAssets(maxAssets).send({ from: root }); + await comptroller.methods._setPriceOracle(priceOracle._address).send({ from: root }); comptroller.options.address = comptroller._address; - return Object.assign(comptroller, {priceOracle}); + return Object.assign(comptroller, { priceOracle }); } if (kind == 'unitroller-v1') { @@ -55,16 +55,16 @@ async function makeComptroller(opts = {}) { const closeFactor = etherMantissa(dfn(opts.closeFactor, .051)); const maxAssets = etherUnsigned(dfn(opts.maxAssets, 10)); const liquidationIncentive = etherMantissa(1); - const unitroller = await Unitroller.deploy().send({from: root}); - const comptroller = await Comptroller.deploy().send({from: root}); - await unitroller.methods._setPendingImplementation(comptroller._address).send({from: root}); - await comptroller.methods._become(unitroller._address).send({from: root}); + const unitroller = await Unitroller.deploy().send({ from: root }); + const comptroller = await Comptroller.deploy().send({ from: root }); + await unitroller.methods._setPendingImplementation(comptroller._address).send({ from: root }); + await comptroller.methods._become(unitroller._address).send({ from: root }); comptroller.options.address = unitroller._address; - await comptroller.methods._setLiquidationIncentive(liquidationIncentive).send({from: root}); - await comptroller.methods._setCloseFactor(closeFactor).send({from: root}); - await comptroller.methods._setMaxAssets(maxAssets).send({from: root}); - await comptroller.methods._setPriceOracle(priceOracle._address).send({from: root}); - return Object.assign(comptroller, {priceOracle}); + await comptroller.methods._setLiquidationIncentive(liquidationIncentive).send({ from: root }); + await comptroller.methods._setCloseFactor(closeFactor).send({ from: root }); + await comptroller.methods._setMaxAssets(maxAssets).send({ from: root }); + await comptroller.methods._setPriceOracle(priceOracle._address).send({ from: root }); + return Object.assign(comptroller, { priceOracle }); } } @@ -85,52 +85,60 @@ async function makeCToken(opts = {}) { let cToken, underlying; switch (kind) { - case 'cether': - const CEther = getTestContract('CEtherHarness'); - cToken = await CEther.deploy({ - arguments: [ - comptroller._address, - interestRateModel._address, - exchangeRate, - name, - symbol, - decimals, - admin - ]}).send({from: root}); - break; - case 'cerc20': - default: - const CErc20 = getTestContract('CErc20Harness'); - underlying = opts.underlying || await makeToken(opts.underlyingOpts); - cToken = await CErc20.deploy({ - arguments: [ - underlying._address, - comptroller._address, - interestRateModel._address, - exchangeRate, - name, - symbol, - decimals, - admin - ]}).send({from: root}); - break; + case 'cether': + const CEther = getTestContract('CEtherHarness'); + cToken = await CEther.deploy({ + arguments: [ + comptroller._address, + interestRateModel._address, + exchangeRate, + name, + symbol, + decimals, + admin + ] + }).send({ from: root }); + break; + case 'cerc20': + default: + const delegatee = getContract('CErc20DelegateHarness'); + const delegator = getContract('CErc20Delegator'); + underlying = opts.underlying || await makeToken(opts.underlyingOpts); + let cDelegatee = await delegatee.deploy().send({ from: admin }); + + let cDelegator = await delegator.deploy({ + arguments: [ + underlying._address, + comptroller._address, + interestRateModel._address, + exchangeRate, + name, + symbol, + decimals, + admin, + cDelegatee._address, + "0x0" + ] + }).send({ from: admin }); + cToken = await delegatee.at(cDelegator._address); + break; } if (opts.supportMarket) { - await comptroller.methods._supportMarket(cToken._address).send({from: root}); + await comptroller.methods._supportMarket(cToken._address).send({ from: root }); } if (opts.underlyingPrice) { const price = etherMantissa(opts.underlyingPrice); - await comptroller.priceOracle.methods.setUnderlyingPrice(cToken._address, price).send({from: root}); + await comptroller.priceOracle.methods.setUnderlyingPrice(cToken._address, price).send({ from: root }); } if (opts.collateralFactor) { const factor = etherMantissa(opts.collateralFactor); - await comptroller.methods._setCollateralFactor(cToken._address, factor).send({from: root}); + await comptroller.methods._setCollateralFactor(cToken._address, factor).send({ from: root }); } - return Object.assign(cToken, {name, symbol, underlying, comptroller, interestRateModel}); + return Object.assign(cToken, { name, symbol, underlying, comptroller, interestRateModel }); } async function makeInterestRateModel(opts = {}) { @@ -142,14 +150,14 @@ async function makeInterestRateModel(opts = {}) { if (kind == 'harnessed') { const InterestRateModel = getTestContract('InterestRateModelHarness'); const borrowRate = etherMantissa(dfn(opts.borrowRate, 0)); - const interestRateModel = await InterestRateModel.deploy({arguments: [borrowRate]}).send({from: root}); + const interestRateModel = await InterestRateModel.deploy({ arguments: [borrowRate] }).send({ from: root }); return interestRateModel; } if (kind == 'false-marker') { const InterestRateModel = getTestContract('FalseMarkerMethodInterestRateModel'); const borrowRate = etherMantissa(dfn(opts.borrowRate, 0)); - const interestRateModel = await InterestRateModel.deploy({arguments: [borrowRate]}).send({from: root}); + const interestRateModel = await InterestRateModel.deploy({ arguments: [borrowRate] }).send({ from: root }); return interestRateModel; } @@ -157,7 +165,17 @@ async function makeInterestRateModel(opts = {}) { const InterestRateModel = getTestContract('WhitePaperInterestRateModel'); const baseRate = etherMantissa(dfn(opts.baseRate, 0)); const multiplier = etherMantissa(dfn(opts.multiplier, 1e-18)); - const interestRateModel = await InterestRateModel.deploy({arguments: [baseRate, multiplier]}).send({from: root}); + const interestRateModel = await InterestRateModel.deploy({ arguments: [baseRate, multiplier] }).send({ from: root }); + return interestRateModel; + } + + if (kind == 'jump-rate') { + const InterestRateModel = getTestContract('JumpRateModel'); + const baseRate = etherMantissa(dfn(opts.baseRate, 0)); + const multiplier = etherMantissa(dfn(opts.multiplier, 1e-18)); + const kink = etherMantissa(dfn(opts.kink, 0.95e18)); + const jump = etherUnsigned(dfn(opts.jump, 5)); + const interestRateModel = await InterestRateModel.deploy({ arguments: [baseRate, multiplier, kink, jump] }).send({ from: root }); return interestRateModel; } } @@ -170,25 +188,9 @@ async function makePriceOracle(opts = {}) { if (kind == 'simple') { const PriceOracle = getContract('SimplePriceOracle'); - const priceOracle = await PriceOracle.deploy().send({from: root}); + const priceOracle = await PriceOracle.deploy().send({ from: root }); return priceOracle; } - - if (kind == 'proxy') { - const cEther = opts.cEther || await makeCToken({ - kind: 'cether', - supportMarket: true, - ...opts.cEtherOpts}); - const comptroller = cEther.comptroller; - const priceOracle = comptroller.priceOracle; - const PriceOracleProxy = getContract('PriceOracleProxy'); - const priceOracleProxy = await PriceOracleProxy.deploy({ - arguments: [ - priceOracle._address, - cEther._address - ]}).send({from: root}); - return Object.assign(priceOracleProxy, {cEther, comptroller, priceOracle}); - } } async function makeToken(opts = {}) { @@ -203,7 +205,7 @@ async function makeToken(opts = {}) { const decimals = etherUnsigned(dfn(opts.decimals, 18)); const symbol = opts.symbol || 'OMG'; const name = opts.name || `Erc20 ${symbol}`; - const token = await Token.deploy({arguments: [quantity, name, decimals, symbol]}).send({from: root}); + const token = await Token.deploy({ arguments: [quantity, name, decimals, symbol] }).send({ from: root }); return token; } } @@ -217,8 +219,8 @@ async function totalSupply(token) { } async function borrowSnapshot(cToken, account) { - const {principal, interestIndex} = await call(cToken, 'harnessAccountBorrows', [account]); - return {principal: etherUnsigned(principal), interestIndex: etherUnsigned(interestIndex)}; + const { principal, interestIndex } = await call(cToken, 'harnessAccountBorrows', [account]); + return { principal: etherUnsigned(principal), interestIndex: etherUnsigned(interestIndex) }; } async function totalBorrows(cToken) { @@ -230,7 +232,7 @@ async function totalReserves(cToken) { } async function enterMarkets(cTokens, from) { - return send(cTokens[0].comptroller, 'enterMarkets', [cTokens.map(c => c._address)], {from}); + return send(cTokens[0].comptroller, 'enterMarkets', [cTokens.map(c => c._address)], { from }); } async function fastForward(cToken, blocks = 5) { @@ -245,7 +247,7 @@ async function setEtherBalance(cEther, balance) { const current = await etherBalance(cEther._address); const root = await guessRoot(); await send(cEther, 'harnessDoTransferOut', [root, current]); - await send(cEther, 'harnessDoTransferIn', [root, balance], {value: balance}); + await send(cEther, 'harnessDoTransferIn', [root, balance], { value: balance }); } async function getBalances(cTokens, accounts) { @@ -287,25 +289,25 @@ async function adjustBalances(balances, deltas) { async function preApprove(cToken, from, amount, opts = {}) { - if (dfn(opts.faucet, true)){ - assert.success(await send(cToken.underlying, 'harnessSetBalance', [from, amount], {from})); + if (dfn(opts.faucet, true)) { + assert.success(await send(cToken.underlying, 'harnessSetBalance', [from, amount], { from })); } - return send(cToken.underlying, 'approve', [cToken._address, amount], {from}); + return send(cToken.underlying, 'approve', [cToken._address, amount], { from }); } async function quickMint(cToken, minter, mintAmount, opts = {}) { - if (dfn(opts.approve, true)){ + if (dfn(opts.approve, true)) { assert.success(await preApprove(cToken, minter, mintAmount, opts)); } - if (dfn(opts.exchangeRate)){ + if (dfn(opts.exchangeRate)) { assert.success(await send(cToken, 'harnessSetExchangeRate', [etherMantissa(opts.exchangeRate)])); } - return send(cToken, 'mint', [mintAmount], {from: minter}); + return send(cToken, 'mint', [mintAmount], { from: minter }); } async function preSupply(cToken, account, tokens, opts = {}) { - if (dfn(opts.total, true)){ + if (dfn(opts.total, true)) { assert.success(await send(cToken, 'harnessSetTotalSupply', [tokens])); } return send(cToken, 'harnessSetBalance', [account, tokens]); @@ -318,14 +320,14 @@ async function quickRedeem(cToken, redeemer, redeemTokens, opts = {}) { if (dfn(opts.exchangeRate)) { assert.success(await send(cToken, 'harnessSetExchangeRate', [etherMantissa(opts.exchangeRate)])); } - return send(cToken, 'redeem', [redeemTokens], {from: redeemer}); + return send(cToken, 'redeem', [redeemTokens], { from: redeemer }); } async function quickRedeemUnderlying(cToken, redeemer, redeemAmount, opts = {}) { - if (dfn(opts.exchangeRate)){ + if (dfn(opts.exchangeRate)) { assert.success(await send(cToken, 'harnessSetExchangeRate', [etherMantissa(opts.exchangeRate)])); } - return send(cToken, 'redeemUnderlying', [redeemAmount], {from: redeemer}); + return send(cToken, 'redeemUnderlying', [redeemAmount], { from: redeemer }); } async function setOraclePrice(cToken, price) { @@ -340,6 +342,10 @@ async function getBorrowRate(interestRateModel, cash, borrows, reserves) { return call(interestRateModel, 'getBorrowRate', [cash, borrows, reserves].map(etherUnsigned)); } +async function getSupplyRate(interestRateModel, cash, borrows, reserves, reserveFactor) { + return call(interestRateModel, 'getSupplyRate', [cash, borrows, reserves, reserveFactor].map(etherUnsigned)); +} + async function pretendBorrow(cToken, borrower, accountIndex, marketIndex, principalRaw, blockNumber = 2e7) { await send(cToken, 'harnessSetTotalBorrows', [etherUnsigned(principalRaw)]); await send(cToken, 'harnessSetAccountBorrows', [borrower, etherUnsigned(principalRaw), etherMantissa(accountIndex)]); @@ -377,5 +383,6 @@ module.exports = { setOraclePrice, setBorrowRate, getBorrowRate, + getSupplyRate, pretendBorrow -}; \ No newline at end of file +}; diff --git a/test/Utils/MochaTruffle.js b/test/Utils/MochaTruffle.js index 8c8c27560..a21c71a82 100644 --- a/test/Utils/MochaTruffle.js +++ b/test/Utils/MochaTruffle.js @@ -47,12 +47,15 @@ const assert = Object.assign(global.assert || require('assert'), { assert.equal(actualErrorCode, reporter.Error[expectedErrorName], `expected Error.${expectedErrorName}, instead got Error.${reporter.ErrorInv[actualErrorCode]}`); }, - hasLog: (result, event, params) => { + hasLog: (result, event, params, numEq) => { const events = result.events; const log = lookup(events, event); if (!log) assert.fail(0, 1, `expected log with event '${event}', found logs with events: ${Object.keys(events)}`); - assert.partEqual(log.returnValues, params); + if (numEq) + assert.partNumEqual(log.returnValues, params); + else + assert.partEqual(log.returnValues, params); }, hasNoLog: (result, event) => { @@ -81,7 +84,6 @@ const assert = Object.assign(global.assert || require('assert'), { assert.hasTokenFailure(result, 'COMPTROLLER_REJECTION', info, detail && ComptrollerErr.Error[detail]); }, - hasIRErrorTuple: (result, tuple) => assert.hasErrorTuple(result, tuple, IRErr), hasMathErrorTuple: (result, tuple) => assert.hasErrorTuple(result, tuple, MathErr), hasTrollErrorTuple: (result, tuple) => assert.hasErrorTuple(result, tuple, ComptrollerErr), hasTokenErrorTuple: (result, tuple) => assert.hasErrorTuple(result, tuple, TokenErr), @@ -106,12 +108,17 @@ const assert = Object.assign(global.assert || require('assert'), { assert.notEqual(actual.toString(), expected.toString(), reason); }, + partNumEqual: (actual, partial) => { + for (let key of Object.keys(partial)) { + assert.numEqual(etherUnsigned(actual[key]), etherUnsigned(partial[key]), `expected ${key} in ${JSON.stringify(actual)} similar to ${JSON.stringify(partial)}`); + } + }, + partEqual: (actual, partial, reason) => { assert.deepEqual(select(actual, Object.keys(partial)), partial, reason); }, revert: async (trx, reason='revert') => { - // coverage tests don't currently support checking full message given with a revert let result; try { result = await trx; @@ -123,7 +130,7 @@ const assert = Object.assign(global.assert || require('assert'), { }, revertWithError: async (trx, expectedErrorName, reason='revert', reporter=TokenErr) => { - assert.revert(trx, `${reason} (${reporter.Error[expectedErrorName].padStart(2, '0')})`) + return assert.revert(trx, `${reason} (${reporter.Error[expectedErrorName].padStart(2, '0')})`) }, succeeds: async (contract, method, args = [], opts = [], reporter=TokenErr) => { @@ -184,16 +191,16 @@ function etherUnsigned(num) { } function getContractDefaults() { - if (process.env.NETWORK === 'coverage') + if (process.env.NETWORK === "coverage") return {gas: 0xfffffffffff, gasPrice: 1}; return {gas: 20000000, gasPrice: 20000}; } -function getContract(name, opts = getContractDefaults()) { +function getContract(name, opts = getContractDefaults(), chosenWeb3 = web3) { const code = artifacts.require(name); - const contract = new web3.eth.Contract(code._json.abi, null, {data: code._json.bytecode, ...opts}); + const contract = new chosenWeb3.eth.Contract(code._json.abi, null, {data: code._json.bytecode, ...opts}); contract.at = (addr) => { - return new web3.eth.Contract(code._json.abi, addr, {data: code._json.bytecode, ...opts}); + return new chosenWeb3.eth.Contract(code._json.abi, addr, {data: code._json.bytecode, ...opts}); } return contract; } @@ -251,7 +258,7 @@ async function send(contract, method, args = [], opts = {}) { } async function sendFallback(contract, opts = {}) { - const receipt = await web3.eth.sendTransaction({to: contract._address, ...opts}); + const receipt = await web3.eth.sendTransaction({to: contract._address, ...Object.assign(getContractDefaults(), opts)}); return Object.assign(receipt, {events: receipt.logs}); } @@ -266,6 +273,7 @@ module.exports = { etherMantissa, etherUnsigned, getContract, + getContractDefaults, getTestContract, guessRoot, keccak256, diff --git a/test/contracts/BasicToken.sol b/test/contracts/BasicToken.sol index f671d1164..533b527a1 100644 --- a/test/contracts/BasicToken.sol +++ b/test/contracts/BasicToken.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./ERC20Basic.sol"; diff --git a/test/contracts/BasicTokenNS.sol b/test/contracts/BasicTokenNS.sol index 97bac6af0..7ecbd19f9 100644 --- a/test/contracts/BasicTokenNS.sol +++ b/test/contracts/BasicTokenNS.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./ERC20BasicNS.sol"; diff --git a/test/contracts/BoolComptroller.sol b/test/contracts/BoolComptroller.sol index d788f9d87..0d5e43610 100644 --- a/test/contracts/BoolComptroller.sol +++ b/test/contracts/BoolComptroller.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../ComptrollerInterface.sol"; diff --git a/test/contracts/CErc20DelegateHarness.sol b/test/contracts/CErc20DelegateHarness.sol new file mode 100644 index 000000000..232ba9194 --- /dev/null +++ b/test/contracts/CErc20DelegateHarness.sol @@ -0,0 +1,183 @@ +pragma solidity ^0.5.12; + +import "../CErc20Delegate.sol"; + +contract CErc20DelegateHarness is CErc20Delegate { + event Log(string x, address y); + event Log(string x, uint y); + + uint blockNumber = 100000; + uint harnessExchangeRate; + bool harnessExchangeRateStored; + + /* + To support testing, we allow the contract to always fail `transfer`. + */ + mapping (address => bool) public failTransferToAddresses; + constructor() public {} + + function getBorrowRateMaxMantissa() public pure returns (uint) { + return borrowRateMaxMantissa; + } + + /** + * Fresh + * + */ + function getBlockNumber() internal view returns (uint) { + return blockNumber; + } + + function harnessSetBlockNumber(uint newBlockNumber) public { + blockNumber = newBlockNumber; + } + + function harnessFastForward(uint blocks) public { + blockNumber += blocks; + } + + /** + * Account Balances + * + */ + function harnessSetBalance(address account, uint amount) external { + accountTokens[account] = amount; + } + + /** + * Accrual Block Number + */ + function harnessSetAccrualBlockNumber(uint _accrualblockNumber) public { + accrualBlockNumber = _accrualblockNumber; + } + + /** + * Exchange Rate + * + */ + function harnessSetTotalSupply(uint totalSupply_) public { + totalSupply = totalSupply_; + } + + function harnessSetTotalBorrows(uint totalBorrows_) public { + totalBorrows = totalBorrows_; + } + + function harnessSetTotalReserves(uint totalReserves_) public { + totalReserves = totalReserves_; + } + + function harnessExchangeRateDetails(uint totalSupply_, uint totalBorrows_, uint totalReserves_) public { + totalSupply = totalSupply_; + totalBorrows = totalBorrows_; + totalReserves = totalReserves_; + } + + function harnessSetExchangeRate(uint exchangeRate) public { + harnessExchangeRate = exchangeRate; + harnessExchangeRateStored = true; + } + + function exchangeRateStoredInternal() internal view returns (MathError, uint) { + if (harnessExchangeRateStored) { + return (MathError.NO_ERROR, harnessExchangeRate); + } + + return super.exchangeRateStoredInternal(); + } + + /** + * Transfer Harness methods + * + */ + + /** + * @dev Specify `address, true` to cause transfers to address to fail. + * Once an address has been marked for failure it can be cleared by + * with `address, false` + */ + function harnessSetFailTransferToAddress(address _to, bool _fail) public { + failTransferToAddresses[_to] = _fail; + } + + function doTransferOut(address payable to, uint amount) internal { + require(failTransferToAddresses[to] == false, "TOKEN_TRANSFER_OUT_FAILED"); + return super.doTransferOut(to, amount); + } + + /** + * Spearmint? Nah, fresh mint. + * + */ + function harnessMintFresh(address account, uint mintAmount) public returns (uint) { + (uint err,) = super.mintFresh(account, mintAmount); + return err; + } + + /** + * Redemption + * + */ + function harnessRedeemFresh(address payable account, uint cTokenAmount, uint underlyingAmount) public returns (uint) { + return super.redeemFresh(account, cTokenAmount, underlyingAmount); + } + + /** + * Borrowing + * + */ + function harnessAccountBorrows(address account) public view returns (uint principal, uint interestIndex) { + BorrowSnapshot memory snapshot = accountBorrows[account]; + return (snapshot.principal, snapshot.interestIndex); + } + + function harnessSetAccountBorrows(address account, uint principal, uint interestIndex) public { + accountBorrows[account] = BorrowSnapshot({principal: principal, interestIndex: interestIndex}); + } + + function harnessSetBorrowIndex(uint borrowIndex_) public { + borrowIndex = borrowIndex_; + } + + function harnessBorrowFresh(address payable account, uint borrowAmount) public returns (uint) { + return borrowFresh(account, borrowAmount); + } + + function harnessRepayBorrowFresh(address payer, address account, uint repayAmount) public returns (uint) { + (uint err,) = repayBorrowFresh(payer, account, repayAmount); + return err; + } + + function harnessLiquidateBorrowFresh(address liquidator, address borrower, uint repayAmount, CToken cTokenCollateral) public returns (uint) { + (uint err,) = liquidateBorrowFresh(liquidator, borrower, repayAmount, cTokenCollateral); + return err; + } + + /** + * Admin + * + */ + function harnessReduceReservesFresh(uint amount) public returns (uint) { + return _reduceReservesFresh(amount); + } + + function harnessSetReserveFactorFresh(uint newReserveFactorMantissa) public returns (uint) { + return _setReserveFactorFresh(newReserveFactorMantissa); + } + + function harnessSetInterestRateModelFresh(InterestRateModel newInterestRateModel) public returns (uint) { + return _setInterestRateModelFresh(newInterestRateModel); + } + + /** + * @dev set the interest rate model directly, with no interest accrual and no checks + * Intended for linking in FailableInterestRateModel to create failures in accrueInterest + */ + function harnessSetInterestRateModel(address newInterestRateModelAddress) public { + interestRateModel = InterestRateModel(newInterestRateModelAddress); + } + + function harnessCallBorrowAllowed(uint amount) public returns (uint) { + return comptroller.borrowAllowed(address(this), msg.sender, amount); + } +} diff --git a/test/contracts/CErc20DelegateScenario.sol b/test/contracts/CErc20DelegateScenario.sol new file mode 100644 index 000000000..75456d1aa --- /dev/null +++ b/test/contracts/CErc20DelegateScenario.sol @@ -0,0 +1,26 @@ +pragma solidity ^0.5.12; + +import "../CErc20Delegate.sol"; +import "./ComptrollerScenario.sol"; + +contract CErc20DelegateScenario is CErc20Delegate { + constructor() public {} + + function setTotalBorrows(uint totalBorrows_) public { + totalBorrows = totalBorrows_; + } + + function setTotalReserves(uint totalReserves_) public { + totalReserves = totalReserves_; + } + + /** + * @dev Function to simply retrieve block number + * This exists mainly for inheriting test contracts to stub this result. + */ + function getBlockNumber() internal view returns (uint) { + ComptrollerScenario comptrollerScenario = ComptrollerScenario(address(comptroller)); + + return comptrollerScenario.blockNumber(); + } +} diff --git a/test/contracts/CErc20DelegatorScenario.sol b/test/contracts/CErc20DelegatorScenario.sol new file mode 100644 index 000000000..7cbb587ce --- /dev/null +++ b/test/contracts/CErc20DelegatorScenario.sol @@ -0,0 +1,35 @@ +pragma solidity ^0.5.12; + +import "../CErc20Delegator.sol"; + +contract CErc20DelegatorScenario is CErc20Delegator { + constructor(address underlying_, + ComptrollerInterface comptroller_, + InterestRateModel interestRateModel_, + uint initialExchangeRateMantissa_, + string memory name_, + string memory symbol_, + uint8 decimals_, + address payable admin_, + address implementation_, + bytes memory becomeImplementationData) + CErc20Delegator( + underlying_, + comptroller_, + interestRateModel_, + initialExchangeRateMantissa_, + name_, + symbol_, + decimals_, + admin_, + implementation_, + becomeImplementationData) public {} + + function setTotalBorrows(uint totalBorrows_) public { + totalBorrows = totalBorrows_; + } + + function setTotalReserves(uint totalReserves_) public { + totalReserves = totalReserves_; + } +} diff --git a/test/contracts/CErc20Harness.sol b/test/contracts/CErc20Harness.sol index f4ecb45aa..c8332d06a 100644 --- a/test/contracts/CErc20Harness.sol +++ b/test/contracts/CErc20Harness.sol @@ -1,8 +1,8 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; -import "../CErc20.sol"; +import "../CErc20Immutable.sol"; -contract CErc20Harness is CErc20 { +contract CErc20Harness is CErc20Immutable { uint blockNumber = 100000; uint harnessExchangeRate; @@ -16,16 +16,16 @@ contract CErc20Harness is CErc20 { constructor(address underlying_, ComptrollerInterface comptroller_, InterestRateModel interestRateModel_, - uint initialExchangeRateMantissa, + uint initialExchangeRateMantissa_, string memory name_, string memory symbol_, uint8 decimals_, address payable admin_) - CErc20( + CErc20Immutable( underlying_, comptroller_, interestRateModel_, - initialExchangeRateMantissa, + initialExchangeRateMantissa_, name_, symbol_, decimals_, @@ -115,10 +115,8 @@ contract CErc20Harness is CErc20 { failTransferToAddresses[_to] = _fail; } - function doTransferOut(address payable to, uint amount) internal returns (Error) { - if (failTransferToAddresses[to]) { - return Error.TOKEN_TRANSFER_OUT_FAILED; - } + function doTransferOut(address payable to, uint amount) internal { + require(failTransferToAddresses[to] == false, "TOKEN_TRANSFER_OUT_FAILED"); return super.doTransferOut(to, amount); } @@ -127,7 +125,8 @@ contract CErc20Harness is CErc20 { * */ function harnessMintFresh(address account, uint mintAmount) public returns (uint) { - return super.mintFresh(account, mintAmount); + (uint err,) = super.mintFresh(account, mintAmount); + return err; } /** @@ -159,12 +158,14 @@ contract CErc20Harness is CErc20 { return borrowFresh(account, borrowAmount); } - function harnessRepayBorrowFresh(address payer, address account, uint borrowAmount) public returns (uint) { - return repayBorrowFresh(payer, account, borrowAmount); + function harnessRepayBorrowFresh(address payer, address account, uint repayAmount) public returns (uint) { + (uint err,) = repayBorrowFresh(payer, account, repayAmount); + return err; } function harnessLiquidateBorrowFresh(address liquidator, address borrower, uint repayAmount, CToken cTokenCollateral) public returns (uint) { - return liquidateBorrowFresh(liquidator, borrower, repayAmount, cTokenCollateral); + (uint err,) = liquidateBorrowFresh(liquidator, borrower, repayAmount, cTokenCollateral); + return err; } /** diff --git a/test/contracts/CErc20Scenario.sol b/test/contracts/CErc20Scenario.sol index 92e4c487f..5bbb1457c 100644 --- a/test/contracts/CErc20Scenario.sol +++ b/test/contracts/CErc20Scenario.sol @@ -1,22 +1,22 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; -import "../CErc20.sol"; +import "../CErc20Immutable.sol"; import "./ComptrollerScenario.sol"; -contract CErc20Scenario is CErc20 { +contract CErc20Scenario is CErc20Immutable { constructor(address underlying_, ComptrollerInterface comptroller_, InterestRateModel interestRateModel_, - uint initialExchangeRateMantissa, + uint initialExchangeRateMantissa_, string memory name_, string memory symbol_, uint8 decimals_, address payable admin_) - CErc20( + CErc20Immutable( underlying_, comptroller_, interestRateModel_, - initialExchangeRateMantissa, + initialExchangeRateMantissa_, name_, symbol_, decimals_, diff --git a/test/contracts/CEtherHarness.sol b/test/contracts/CEtherHarness.sol index 85b2196b9..35118b743 100644 --- a/test/contracts/CEtherHarness.sol +++ b/test/contracts/CEtherHarness.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../CEther.sol"; @@ -107,10 +107,8 @@ contract CEtherHarness is CEther { failTransferToAddresses[_to] = _fail; } - function doTransferOut(address payable to, uint amount) internal returns (Error) { - if (failTransferToAddresses[to]) { - return Error.TOKEN_TRANSFER_OUT_FAILED; - } + function doTransferOut(address payable to, uint amount) internal { + require(failTransferToAddresses[to] == false, "TOKEN_TRANSFER_OUT_FAILED"); return super.doTransferOut(to, amount); } @@ -119,7 +117,8 @@ contract CEtherHarness is CEther { * */ function harnessMintFresh(address account, uint mintAmount) public returns (uint) { - return super.mintFresh(account, mintAmount); + (uint err,) = super.mintFresh(account, mintAmount); + return err; } /** @@ -151,12 +150,14 @@ contract CEtherHarness is CEther { return borrowFresh(account, borrowAmount); } - function harnessRepayBorrowFresh(address payer, address account, uint borrowAmount) public payable returns (uint) { - return repayBorrowFresh(payer, account, borrowAmount); + function harnessRepayBorrowFresh(address payer, address account, uint repayBorrowAmount) public payable returns (uint) { + (uint err,) = repayBorrowFresh(payer, account, repayBorrowAmount); + return err; } function harnessLiquidateBorrowFresh(address liquidator, address borrower, uint repayAmount, CToken cTokenCollateral) public returns (uint) { - return liquidateBorrowFresh(liquidator, borrower, repayAmount, cTokenCollateral); + (uint err,) = liquidateBorrowFresh(liquidator, borrower, repayAmount, cTokenCollateral); + return err; } /** * Admin @@ -192,11 +193,11 @@ contract CEtherHarness is CEther { } function harnessDoTransferIn(address from, uint amount) public payable returns (uint) { - return uint(doTransferIn(from, amount)); + return doTransferIn(from, amount); } - function harnessDoTransferOut(address payable to, uint amount) public payable returns (uint) { - return uint(doTransferOut(to, amount)); + function harnessDoTransferOut(address payable to, uint amount) public payable { + return doTransferOut(to, amount); } function harnessCheckTransferIn(address from, uint amount) external payable returns (uint) { diff --git a/test/contracts/CEtherScenario.sol b/test/contracts/CEtherScenario.sol index f7655d813..f5432c978 100644 --- a/test/contracts/CEtherScenario.sol +++ b/test/contracts/CEtherScenario.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../CEther.sol"; import "./ComptrollerScenario.sol"; diff --git a/test/contracts/CEvil.sol b/test/contracts/CEvil.sol index 0282cf755..d2755c9aa 100644 --- a/test/contracts/CEvil.sol +++ b/test/contracts/CEvil.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./CErc20Scenario.sol"; @@ -6,7 +6,7 @@ contract CEvil is CErc20Scenario { constructor(address underlying_, ComptrollerInterface comptroller_, InterestRateModel interestRateModel_, - uint initialExchangeRateMantissa, + uint initialExchangeRateMantissa_, string memory name_, string memory symbol_, uint8 decimals_, @@ -15,7 +15,7 @@ contract CEvil is CErc20Scenario { underlying_, comptroller_, interestRateModel_, - initialExchangeRateMantissa, + initialExchangeRateMantissa_, name_, symbol_, decimals_, diff --git a/test/contracts/ComptrollerBorked.sol b/test/contracts/ComptrollerBorked.sol index 188960293..a8aab39d1 100644 --- a/test/contracts/ComptrollerBorked.sol +++ b/test/contracts/ComptrollerBorked.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../Comptroller.sol"; import "../PriceOracle.sol"; diff --git a/test/contracts/ComptrollerHarness.sol b/test/contracts/ComptrollerHarness.sol index db8a7929b..680467e3c 100644 --- a/test/contracts/ComptrollerHarness.sol +++ b/test/contracts/ComptrollerHarness.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../Comptroller.sol"; import "../PriceOracle.sol"; diff --git a/test/contracts/ComptrollerScenario.sol b/test/contracts/ComptrollerScenario.sol index db8e1933f..23379b405 100644 --- a/test/contracts/ComptrollerScenario.sol +++ b/test/contracts/ComptrollerScenario.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../Comptroller.sol"; import "../PriceOracle.sol"; diff --git a/test/contracts/ComptrollerScenarioG1.sol b/test/contracts/ComptrollerScenarioG1.sol index 0ddbd068c..4be6a5cf5 100644 --- a/test/contracts/ComptrollerScenarioG1.sol +++ b/test/contracts/ComptrollerScenarioG1.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../ComptrollerG1.sol"; import "../PriceOracle.sol"; diff --git a/test/contracts/DSValueHarness.sol b/test/contracts/DSValueHarness.sol index c9ab2f933..d769eb3e6 100644 --- a/test/contracts/DSValueHarness.sol +++ b/test/contracts/DSValueHarness.sol @@ -1,6 +1,6 @@ // Abstract contract for the full DSValue standard // -- -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; contract DSValueHarness { bool public has; diff --git a/test/contracts/EIP20Harness.sol b/test/contracts/EIP20Harness.sol index d67ce8328..c253a770e 100644 --- a/test/contracts/EIP20Harness.sol +++ b/test/contracts/EIP20Harness.sol @@ -2,7 +2,7 @@ Implements EIP20 token standard: https://github.com/ethereum/EIPs/issues/20 .*/ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../EIP20Interface.sol"; diff --git a/test/contracts/EIP20NonCompliantHarness.sol b/test/contracts/EIP20NonCompliantHarness.sol index 3034e15fc..a4a108316 100644 --- a/test/contracts/EIP20NonCompliantHarness.sol +++ b/test/contracts/EIP20NonCompliantHarness.sol @@ -3,7 +3,7 @@ Implements `transfer` and `transferForm` with 64-bit return values, just to be especially non-compliant and stress safe token. .*/ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; contract EIP20NonCompliantHarness { bool garbage; diff --git a/test/contracts/EIP20NonStandardReturnHarness.sol b/test/contracts/EIP20NonStandardReturnHarness.sol index 2d7e46342..f8ef3d717 100644 --- a/test/contracts/EIP20NonStandardReturnHarness.sol +++ b/test/contracts/EIP20NonStandardReturnHarness.sol @@ -2,7 +2,7 @@ Implements EIP20 token standard: https://github.com/ethereum/EIPs/issues/20 .*/ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../EIP20NonStandardInterface.sol"; diff --git a/test/contracts/EIP20NonStandardThrowHarness.sol b/test/contracts/EIP20NonStandardThrowHarness.sol index e47580d3d..9c165c75b 100644 --- a/test/contracts/EIP20NonStandardThrowHarness.sol +++ b/test/contracts/EIP20NonStandardThrowHarness.sol @@ -2,7 +2,7 @@ Implements EIP20 token standard: https://github.com/ethereum/EIPs/issues/20 .*/ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../EIP20NonStandardInterface.sol"; diff --git a/test/contracts/ERC20.sol b/test/contracts/ERC20.sol index 221983108..4b38f696f 100644 --- a/test/contracts/ERC20.sol +++ b/test/contracts/ERC20.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./ERC20Basic.sol"; diff --git a/test/contracts/ERC20Basic.sol b/test/contracts/ERC20Basic.sol index ba4cbd4d4..61d1bc0c9 100644 --- a/test/contracts/ERC20Basic.sol +++ b/test/contracts/ERC20Basic.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; /** diff --git a/test/contracts/ERC20BasicNS.sol b/test/contracts/ERC20BasicNS.sol index 5aadeb652..bf405e191 100644 --- a/test/contracts/ERC20BasicNS.sol +++ b/test/contracts/ERC20BasicNS.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; /** * @title ERC20BasicNS (Non-Standard) diff --git a/test/contracts/ERC20NS.sol b/test/contracts/ERC20NS.sol index 03486c239..b6b521e97 100644 --- a/test/contracts/ERC20NS.sol +++ b/test/contracts/ERC20NS.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./ERC20BasicNS.sol"; diff --git a/test/contracts/ERC20NonView.sol b/test/contracts/ERC20NonView.sol index 34abed289..cd167bb46 100644 --- a/test/contracts/ERC20NonView.sol +++ b/test/contracts/ERC20NonView.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./SafeMath.sol"; diff --git a/test/contracts/EchoTypesComptroller.sol b/test/contracts/EchoTypesComptroller.sol index fb605864b..806a897e8 100644 --- a/test/contracts/EchoTypesComptroller.sol +++ b/test/contracts/EchoTypesComptroller.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../ComptrollerStorage.sol"; import "../Unitroller.sol"; diff --git a/test/contracts/EvilToken.sol b/test/contracts/EvilToken.sol index 34cb0c414..1b61f0262 100644 --- a/test/contracts/EvilToken.sol +++ b/test/contracts/EvilToken.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./StandardToken.sol"; diff --git a/test/contracts/FalseMarkerMethodComptroller.sol b/test/contracts/FalseMarkerMethodComptroller.sol index e8496bc30..890c9d89a 100644 --- a/test/contracts/FalseMarkerMethodComptroller.sol +++ b/test/contracts/FalseMarkerMethodComptroller.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./BoolComptroller.sol"; contract FalseMarkerMethodComptroller is BoolComptroller { diff --git a/test/contracts/FalseMarkerMethodInterestRateModel.sol b/test/contracts/FalseMarkerMethodInterestRateModel.sol index ccf324e6b..ad5e59c93 100644 --- a/test/contracts/FalseMarkerMethodInterestRateModel.sol +++ b/test/contracts/FalseMarkerMethodInterestRateModel.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../InterestRateModel.sol"; @@ -18,19 +18,17 @@ contract FalseMarkerMethodInterestRateModel is InterestRateModel { borrowRate = borrowRate_; } - /** - * @notice Gets the current borrow interest rate based on the given asset, total cash and total borrows - * @dev The return value should be scaled by 1e18, thus a return value of - * `(true, 1000000000000)` implies an interest rate of 0.000001% *per block*. - * @param _cash The total cash of the asset in the CToken - * @param _borrows The total borrows of the asset in the CToken - * @param _reserves The total reserves of the asset in the CToken - * @return Success or failure and the borrow interest rate per block scaled by 1e18 - */ - function getBorrowRate(uint _cash, uint _borrows, uint _reserves) view public returns (uint, uint) { + function getBorrowRate(uint _cash, uint _borrows, uint _reserves) view public returns (uint) { + _cash; // unused + _borrows; // unused + _reserves; // unused + return borrowRate; + } + + function getSupplyRate(uint _cash, uint _borrows, uint _reserves, uint _reserveFactor) external view returns (uint) { _cash; // unused _borrows; // unused _reserves; // unused - return (0, borrowRate); + return borrowRate * (1 - _reserveFactor); } } \ No newline at end of file diff --git a/test/contracts/FaucetNonStandardToken.sol b/test/contracts/FaucetNonStandardToken.sol index 389198fc5..ff1339f9d 100644 --- a/test/contracts/FaucetNonStandardToken.sol +++ b/test/contracts/FaucetNonStandardToken.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./NonStandardToken.sol"; diff --git a/test/contracts/FaucetToken.sol b/test/contracts/FaucetToken.sol index 8d38a702e..735986d1e 100644 --- a/test/contracts/FaucetToken.sol +++ b/test/contracts/FaucetToken.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./StandardToken.sol"; diff --git a/test/contracts/FaucetTokenReEntrantHarness.sol b/test/contracts/FaucetTokenReEntrantHarness.sol index d98e2d2b7..03f070e30 100644 --- a/test/contracts/FaucetTokenReEntrantHarness.sol +++ b/test/contracts/FaucetTokenReEntrantHarness.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./ERC20NonView.sol"; @@ -28,9 +28,12 @@ contract FaucetTokenReEntrantHarness is ERC20NonView { string memory _reEntryFun = reEntryFun; if (compareStrings(_reEntryFun, funName)) { reEntryFun = ""; // Clear re-entry fun - (bool _res, bytes memory _ret) = msg.sender.call(reEntryCallData); - _res; // unused - _ret; // unused + (bool success, bytes memory returndata) = msg.sender.call(reEntryCallData); + assembly { + if eq(success, 0) { + revert(add(returndata, 0x20), returndatasize) + } + } } _; diff --git a/test/contracts/FeeToken.sol b/test/contracts/FeeToken.sol new file mode 100644 index 000000000..22544c172 --- /dev/null +++ b/test/contracts/FeeToken.sol @@ -0,0 +1,45 @@ +pragma solidity ^0.5.12; + +import "./FaucetToken.sol"; +import "./SafeMath.sol"; + +/** + * @title Fee Token + * @author Compound + * @notice A simple test token that charges fees on transfer. Used to mock USDT. + */ +contract FeeToken is FaucetToken { + using SafeMath for uint256; + + uint public basisPointFee; + address public owner; + + constructor( + uint256 _initialAmount, + string memory _tokenName, + uint8 _decimalUnits, + string memory _tokenSymbol, + uint _basisPointFee, + address _owner + ) + FaucetToken(_initialAmount, _tokenName, _decimalUnits, _tokenSymbol) + public + { + basisPointFee = _basisPointFee; + owner = _owner; + } + + function transfer(address _to, uint _value) public returns (bool) { + uint fee = (_value.mul(basisPointFee)).div(10000); + balances[owner] = balances[owner].add(fee); + balances[msg.sender] = balances[msg.sender].sub(fee); + return super.transfer(_to, _value.sub(fee)); + } + + function transferFrom(address _from, address _to, uint _value) public returns (bool) { + uint fee = (_value.mul(basisPointFee)).div(10000); + balances[owner] = balances[owner].add(fee); + balances[_from] = balances[_from].sub(fee); + return super.transferFrom(_from, _to, _value.sub(fee)); + } +} diff --git a/test/contracts/FixedPriceOracle.sol b/test/contracts/FixedPriceOracle.sol index 8b05d300a..15f05926a 100644 --- a/test/contracts/FixedPriceOracle.sol +++ b/test/contracts/FixedPriceOracle.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../PriceOracle.sol"; diff --git a/test/contracts/FullErc20Interface.sol b/test/contracts/FullErc20Interface.sol new file mode 100644 index 000000000..a8942a9ca --- /dev/null +++ b/test/contracts/FullErc20Interface.sol @@ -0,0 +1,63 @@ +pragma solidity ^0.5.12; + +/** + * @title ERC 20 Token Standard Interface Including optional functions + * https://eips.ethereum.org/EIPS/eip-20 + */ +interface FullErc20Interface { + + function name() external view returns (string memory); + function symbol() external view returns (string memory); + function decimals() external view returns (uint8); + + /** + * @notice Get the total number of tokens in circulation + * @return The supply of tokens + */ + function totalSupply() external view returns (uint256); + + /** + * @notice Gets the balance of the specified address + * @param owner The address from which the balance will be retrieved + * @return The balance + */ + function balanceOf(address owner) external view returns (uint256 balance); + + /** + * @notice Transfer `amount` tokens from `msg.sender` to `dst` + * @param dst The address of the destination account + * @param amount The number of tokens to transfer + * @return Whether or not the transfer succeeded + */ + function transfer(address dst, uint256 amount) external returns (bool success); + + /** + * @notice Transfer `amount` tokens from `src` to `dst` + * @param src The address of the source account + * @param dst The address of the destination account + * @param amount The number of tokens to transfer + * @return Whether or not the transfer succeeded + */ + function transferFrom(address src, address dst, uint256 amount) external returns (bool success); + + /** + * @notice Approve `spender` to transfer up to `amount` from `src` + * @dev This will overwrite the approval amount for `spender` + * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) + * @param spender The address of the account which may transfer tokens + * @param amount The number of tokens that are approved (-1 means infinite) + * @return Whether or not the approval succeeded + */ + function approve(address spender, uint256 amount) external returns (bool success); + + /** + * @notice Get the current allowance from `owner` for `spender` + * @param owner The address of the account which owns the tokens to be spent + * @param spender The address of the account which may transfer tokens + * @return The number of tokens allowed to be spent (-1 means infinite) + */ + function allowance(address owner, address spender) external view returns (uint256 remaining); + + event Transfer(address indexed from, address indexed to, uint256 amount); + event Approval(address indexed owner, address indexed spender, uint256 amount); +} \ No newline at end of file diff --git a/test/contracts/InterestRateModelHarness.sol b/test/contracts/InterestRateModelHarness.sol index 5e23f51aa..bf82264cf 100644 --- a/test/contracts/InterestRateModelHarness.sol +++ b/test/contracts/InterestRateModelHarness.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../InterestRateModel.sol"; @@ -24,14 +24,18 @@ contract InterestRateModelHarness is InterestRateModel { borrowRate = borrowRate_; } - function getBorrowRate(uint _cash, uint _borrows, uint _reserves) public view returns (uint, uint) { + function getBorrowRate(uint _cash, uint _borrows, uint _reserves) public view returns (uint) { _cash; // unused _borrows; // unused _reserves; // unused + require(!failBorrowRate, "INTEREST_RATE_MODEL_ERROR"); + return borrowRate; + } - if (failBorrowRate) { - return (opaqueBorrowFailureCode, 0); - } - return (0, borrowRate); + function getSupplyRate(uint _cash, uint _borrows, uint _reserves, uint _reserveFactor) external view returns (uint) { + _cash; // unused + _borrows; // unused + _reserves; // unused + return borrowRate * (1 - _reserveFactor); } } \ No newline at end of file diff --git a/test/contracts/MathHelpers.sol b/test/contracts/MathHelpers.sol index c9224965f..48dc97b63 100644 --- a/test/contracts/MathHelpers.sol +++ b/test/contracts/MathHelpers.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; contract MathHelpers { diff --git a/test/contracts/MockMCD.sol b/test/contracts/MockMCD.sol new file mode 100644 index 000000000..392da181f --- /dev/null +++ b/test/contracts/MockMCD.sol @@ -0,0 +1,39 @@ +pragma solidity ^0.5.12; + + +contract MockPot { + + uint public dsr; // the Dai Savings Rate + + constructor(uint dsr_) public { + setDsr(dsr_); + } + + function setDsr(uint dsr_) public { + dsr = dsr_; + } +} + +contract MockJug { + + struct Ilk { + uint duty; + uint rho; + } + + mapping (bytes32 => Ilk) public ilks; + uint public base; + + constructor(uint duty_, uint base_) public { + setETHDuty(duty_); + setBase(base_); + } + + function setBase(uint base_) public { + base = base_; + } + + function setETHDuty(uint duty_) public { + ilks["ETH-A"].duty = duty_; + } +} \ No newline at end of file diff --git a/test/contracts/NonStandardToken.sol b/test/contracts/NonStandardToken.sol index d51837eca..d39f1f8f2 100644 --- a/test/contracts/NonStandardToken.sol +++ b/test/contracts/NonStandardToken.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./BasicTokenNS.sol"; import "./ERC20NS.sol"; diff --git a/test/contracts/NotPriceOracle.sol b/test/contracts/NotPriceOracle.sol index 8503f6295..503c52b5f 100644 --- a/test/contracts/NotPriceOracle.sol +++ b/test/contracts/NotPriceOracle.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; contract NotPriceOracle { // marker function diff --git a/test/contracts/SafeMath.sol b/test/contracts/SafeMath.sol index 15cac29d1..b93625ec8 100644 --- a/test/contracts/SafeMath.sol +++ b/test/contracts/SafeMath.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; /** diff --git a/test/contracts/StandardToken.sol b/test/contracts/StandardToken.sol index 7865127e5..ddf2a909d 100644 --- a/test/contracts/StandardToken.sol +++ b/test/contracts/StandardToken.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "./BasicToken.sol"; import "./ERC20.sol"; diff --git a/test/contracts/TetherInterface.sol b/test/contracts/TetherInterface.sol new file mode 100644 index 000000000..0c5f0e3b7 --- /dev/null +++ b/test/contracts/TetherInterface.sol @@ -0,0 +1,10 @@ +pragma solidity ^0.5.12; + +import "../EIP20Interface.sol"; +/** + * @title ERC 20 Token Standard Interface + * https://eips.ethereum.org/EIPS/eip-20 + */ +contract TetherInterface is EIP20Interface { + function setParams(uint newBasisPoints, uint newMaxFee) external; +} \ No newline at end of file diff --git a/test/contracts/TimelockHarness.sol b/test/contracts/TimelockHarness.sol index 485e493b6..36d44930a 100644 --- a/test/contracts/TimelockHarness.sol +++ b/test/contracts/TimelockHarness.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../Timelock.sol"; diff --git a/test/contracts/TimelockTest.sol b/test/contracts/TimelockTest.sol index 32b3d6216..16fcaad64 100644 --- a/test/contracts/TimelockTest.sol +++ b/test/contracts/TimelockTest.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; import "../Timelock.sol"; diff --git a/test/contracts/WBTC.sol b/test/contracts/WBTC.sol index f61da7133..5297fa6fd 100644 --- a/test/contracts/WBTC.sol +++ b/test/contracts/WBTC.sol @@ -2,7 +2,7 @@ *Submitted for verification at Etherscan.io on 2018-11-24 */ -pragma solidity ^0.5.8; +pragma solidity ^0.5.12; // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol diff --git a/truffle.js b/truffle.js index 29543900a..9ad187e5e 100644 --- a/truffle.js +++ b/truffle.js @@ -19,7 +19,33 @@ const infuraNetworks = Object.entries(networks).reduce((networks, [network, netw provider: new Web3.providers.HttpProvider(`https://${network}.infura.io/`), network_id: networkId } - }; + } + + if (!networkProviderUrl) { // Not found from env nor from file, default to infura + networkProviderUrl = `https://${network}.infura.io/v3/49d02fbc2d3d444e8f1a4487ed424753`; + } + + if (privateKeyHex) { + const provider = new WalletProvider(privateKeyHex, networkProviderUrl); + const gas = 6600000; + const gasPrice = 15000000000; // 15 gwei + provider.opts = {gas, gasPrice}; + process.env[`${network}_opts`] = JSON.stringify(provider.opts); + + return { + ...networks, + [network]: { + host: "localhost", + port: 8545, + network_id: "*", + gas: gas, + gasPrice: gasPrice, + provider, + } + }; + } else { + return networks; + } }, {}); let mochaOptions = { @@ -29,14 +55,6 @@ let mochaOptions = { } }; -if (process.env.NETWORK === 'coverage') { - mochaOptions = { - enableTimeouts: false, - grep: /@gas/, - invert: true - }; -} - const development = { host: "localhost", port: 8545, @@ -48,7 +66,7 @@ const development = { const coverage = { // See example coverage settings at https://github.com/sc-forks/solidity-coverage host: "localhost", network_id: "*", - gas: 0xfffffffffff, + gas: 0xffffffffff, gasPrice: 0x01, port: 8555 }; @@ -61,6 +79,7 @@ const test = { gasPrice: 20000 }; +// configuration for scenario web3 contract defaults process.env[`development_opts`] = JSON.stringify(development); process.env[`coverage_opts`] = JSON.stringify(coverage); process.env[`test_opts`] = JSON.stringify(test); @@ -74,7 +93,7 @@ module.exports = { }, compilers: { solc: { - version: "0.5.8", + version: "0.5.12", settings: { optimizer: { enabled: true @@ -82,6 +101,7 @@ module.exports = { } } }, + plugins: ["solidity-coverage"], mocha: mochaOptions, contracts_build_directory: process.env.CONTRACTS_BUILD_DIRECTORY || undefined, build_directory: process.env.BUILD_DIRECTORY || undefined diff --git a/yarn.lock b/yarn.lock index deab9d16f..899fd742b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,13 +2,94 @@ # yarn lockfile v1 -"@babel/runtime@^7.3.1": +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.1": version "7.5.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.4.tgz#cb7d1ad7c6d65676e66b47186577930465b5271b" integrity sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q== dependencies: regenerator-runtime "^0.13.2" +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@redux-saga/core@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.0.3.tgz#c29ec7ae3d7dfcbcb8dc93177f2b3edc798c5d85" + integrity sha512-zf8h5N0oTzaNeSMxOWH9GJMB9IRSM8JubDsrZVsvVltXjzFFSR8DNt7tbPoRJUK0hFfQB1it+bL+dEMWpD7wXA== + dependencies: + "@babel/runtime" "^7.0.0" + "@redux-saga/deferred" "^1.0.1" + "@redux-saga/delay-p" "^1.0.1" + "@redux-saga/is" "^1.0.2" + "@redux-saga/symbols" "^1.0.1" + "@redux-saga/types" "^1.0.2" + redux ">=0.10 <5" + typescript-tuple "^2.1.0" + +"@redux-saga/deferred@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.0.1.tgz#c895445e486bded90acf0b873b4e978fbfe458c2" + integrity sha512-+gW5xQ93QXOOmRLAmX8x2Hx1HpbTG6CM6+HcdTSbJovh4uMWaGyeDECnqXSt8QqA/ja3s2nqYXLqXFKepIQ1hw== + +"@redux-saga/delay-p@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.0.1.tgz#d69fc6103c7509ae80faa144ea17bbc69e51e029" + integrity sha512-0SnNDyDLUyB4NThtptAwiprNOnbCNhoed/Rp5JwS7SB+a/AdWynVgg/E6BmjsggLFNr07KW0bzn05tsPRBuU7Q== + dependencies: + "@redux-saga/symbols" "^1.0.1" + +"@redux-saga/is@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.0.2.tgz#7f4be014c97061898d7efb11d6c9de31e943ed38" + integrity sha512-WnaUOwYvPK2waWjzebT4uhL8zY76XNkzzpJ2EQJe8bN1tByvAjvT7MuJZTSshOhdHL5PsRO0MsH224XIXBJidQ== + dependencies: + "@redux-saga/symbols" "^1.0.1" + "@redux-saga/types" "^1.0.2" + +"@redux-saga/symbols@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.0.1.tgz#46512ae1275f88df061c42168d0f600ddb170c1e" + integrity sha512-akKkzcVnb1RzJaZV2LQFbi51abvdICMuAKwwLoCjjxLbLAGIw9EJxk5ucNnWSSCEsoEQMeol5tkAcK+Xzuv1Bg== + +"@redux-saga/types@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.0.2.tgz#1d94f02800b094753f9271c206a26c2a06ca14ee" + integrity sha512-8/qcMh15507AnXJ3lBeuhsdFwnWQqnp68EpUuHlYPixJ5vjVmls7/Jq48cnUlrZI8Jd9U1jkhfCl0gaT5KMgVw== + "@resolver-engine/core@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.2.1.tgz#0d71803f6d3b8cb2e9ed481a1bf0ca5f5256d0c0" @@ -55,6 +136,30 @@ dependencies: defer-to-connect "^1.0.1" +"@truffle/error@^0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.7.tgz#e9db39885575647ef08bf624b0c13fe46d41a209" + integrity sha512-UIfVKsXSXocKnn5+RNklUXNoGd/JVj7V8KmC48TQzmjU33HQI86PX0JDS7SpHMHasI3w9X//1q7Lu7nZtj3Zzg== + +"@truffle/interface-adapter@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.3.1.tgz#ab33c167d1f7fc7c1e553204ac6c6c5feef9bb1e" + integrity sha512-i4+wUtyS7un+wWwjDlkcX19PRTefIaOajzg/60H+Bc4cWWrQIuLzzY8VrWm1tCYagJQY/9KOJiHb+CRn3Qzt2A== + dependencies: + bn.js "^4.11.8" + ethers "^4.0.32" + lodash "^4.17.13" + web3 "1.2.1" + +"@truffle/provider@^0.1.17": + version "0.1.19" + resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.1.19.tgz#3e6f15fdd8475ca5d0c846d2b412cc823f1fb767" + integrity sha512-ke8iQmzW4Y99+8iff8xQcc+mCNU4AkwtaZ/iSpmVD8qpLytw8/DSNCm0RiEz9/+I93Q1zqI4Jnij/rXnkS2Njw== + dependencies: + "@truffle/error" "^0.0.7" + "@truffle/interface-adapter" "^0.3.0" + web3 "1.2.1" + "@types/bn.js@^4.11.4": version "4.11.5" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.5.tgz#40e36197433f78f807524ec623afcf0169ac81dc" @@ -62,6 +167,25 @@ dependencies: "@types/node" "*" +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + "@types/node@*", "@types/node@^10.3.2": version "10.12.18" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" @@ -72,13 +196,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.12.tgz#0eec3155a46e6c4db1f27c3e588a205f767d622f" integrity sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg== -JSONStream@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" +abab@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" + integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= abbrev@1: version "1.1.1" @@ -90,6 +211,41 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= +abi-decoder@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/abi-decoder/-/abi-decoder-1.2.0.tgz#c42882dbb91b444805f0cd203a87a5cc3c22f4a8" + integrity sha512-y2OKSEW4gf2838Eavc56vQY9V46zaXkf3Jl1WpTfUBbzAVrXSr4JRZAAWv55Tv9s5WNz1rVgBgz5d2aJIL1QCg== + dependencies: + web3 "^0.18.4" + +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== + dependencies: + 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== + dependencies: + xtend "~4.0.0" + +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== + dependencies: + xtend "~4.0.0" + accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" @@ -98,33 +254,49 @@ accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" +acorn-globals@^1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" + integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8= + dependencies: + acorn "^2.1.0" + +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + +acorn@^2.1.0, acorn@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc= + +acorn@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a" + integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg== + +address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adm-zip@~0.4.3: + version "0.4.13" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" + integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - -agent-base@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -agentkeepalive@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== - dependencies: - humanize-ms "^1.2.1" +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== -ajv@^5.2.2: +ajv@^5.1.1, ajv@^5.2.2: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= @@ -134,7 +306,17 @@ ajv@^5.2.2: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.5.5: +ajv@^6.10.0: + version "6.10.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593" + integrity sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.5.3, ajv@^6.5.5, ajv@^6.6.1: version "6.6.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g== @@ -149,12 +331,24 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== dependencies: - string-width "^3.0.0" + ansi-wrap "^0.1.0" + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" ansi-regex@^2.0.0: version "2.1.1" @@ -166,6 +360,11 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-regex@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== + ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -176,14 +375,19 @@ ansi-styles@^2.2.1: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.2.1: +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" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -any-promise@1.3.0, any-promise@^1.3.0: +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +any-promise@1.3.0, any-promise@^1.0.0, any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -196,16 +400,36 @@ anymatch@^1.3.0: micromatch "^2.1.5" normalize-path "^2.0.0" +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + app-module-path@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" integrity sha1-ZBqlXft9am8KgUHEucCqULbCTdU= -aproba@^1.0.3, aproba@^1.1.1: +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + +aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -233,21 +457,86 @@ arr-diff@^4.0.0: resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= +arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= + dependencies: + make-iterator "^1.0.0" + arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= + dependencies: + make-iterator "^1.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 sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "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-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" @@ -258,6 +547,11 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -279,33 +573,92 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assertion-error@^1.1.0: + version "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 sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" integrity sha1-GdOGodntxufByF04iu28xW0zYC0= +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +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-eventemitter@ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c: + version "0.2.3" + resolved "https://codeload.github.com/ahultgren/async-eventemitter/tar.gz/fa06e39e56786ba541c180061dbf2c0a5bbf951c" + dependencies: + async "^2.4.0" + async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== -async@1.x: +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= + dependencies: + async-done "^1.2.2" + +async@1.x, async@^1.4.2, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@2.6.1, async@^2.5.0: +async@2.6.1, async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== dependencies: lodash "^4.17.10" +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.6.1: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -326,11 +679,625 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +babel-cli@*: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" + integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= + dependencies: + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" + fs-readdir-recursive "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" + slash "^1.0.0" + source-map "^0.5.6" + v8flags "^2.1.1" + optionalDependencies: + chokidar "^1.6.1" + +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 sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + 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.1, 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 sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + 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 sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + 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 sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + 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 sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + 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 sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + 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 sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + 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 sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + 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 sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + 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 sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + 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 sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + 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 sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + 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 sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + 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 sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + 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 sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + 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 sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +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 sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +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 sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +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 sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + 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 sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + 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 sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: + 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 sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + 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, babel-plugin-transform-es2015-classes@^6.24.1: + 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 sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + 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, babel-plugin-transform-es2015-computed-properties@^6.24.1: + 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 sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0, 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 sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + 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 sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0, 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 sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: + 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 sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + 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 sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + 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 sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + 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, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + 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 sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + 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, babel-plugin-transform-es2015-modules-umd@^6.24.1: + 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 sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + 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, babel-plugin-transform-es2015-object-super@^6.24.1: + 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 sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: + 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 sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + 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, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + 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 sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + 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 sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: + 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 sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + 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 sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^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 sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: + 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 sha1-04sS9C6nMj9yk4fxinxa4frrNek= + 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 sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + 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, babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + 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 sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +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-preset-es2015@*: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk= + dependencies: + babel-plugin-check-es2015-constants "^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.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-register@*, babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + 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 sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + 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 sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + 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.26.0, 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 sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + 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 sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + 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 sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU= + dependencies: + babel-core "^6.0.14" + object-assign "^4.0.0" + +babylon@6.18.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== + +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + +backoff@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" + integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= + dependencies: + precond "0.2" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base-64@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" + integrity sha1-eAqZyE59YAJgNhURxId2E78k9rs= + +base-x@^3.0.2: + version "3.0.5" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.5.tgz#d3ada59afed05b921ab581ec3112e6444ba0795a" + integrity sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA== + dependencies: + safe-buffer "^5.0.1" + base64-js@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" @@ -366,18 +1333,58 @@ bignumber.js@8.0.1: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.0.1.tgz#5d419191370fb558c64e3e5f70d68e5947138832" integrity sha512-zAySveTJXkgLYCBi0b14xzfnOs+f3G6x36I8w2a1+PFQpWk/dp0mI0F+ZZK2bu+3ELewDcSyP+Cfq++NcHX7sg== +bignumber.js@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" + integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== + +"bignumber.js@git+https://github.com/debris/bignumber.js#master": + version "2.0.7" + resolved "git+https://github.com/debris/bignumber.js#c7a38de919ed75e6fb6ba38051986e294b328df9" + +"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": + version "2.0.7" + resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" + +"bignumber.js@git+https://github.com/frozeman/bignumber.js-nolookahead.git": + version "2.0.7" + resolved "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934" + binary-extensions@^1.0.0: version "1.12.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== -bindings@^1.2.1, bindings@^1.3.1: +bindings@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.1.tgz#21fc7c6d67c18516ec5aaa2815b145ff77b26ea5" + integrity sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew== + +bindings@^1.3.1: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" +bip39@2.5.0, bip39@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" + integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + unorm "^1.3.3" + +bip66@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= + dependencies: + safe-buffer "^5.0.1" + bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -386,22 +1393,29 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bluebird@^3.5.0: +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +bluebird@^2.9.34: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= + +bluebird@^3.4.1, bluebird@^3.5.0: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== -bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== - bn.js@4.11.6: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= -bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0: +bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.3, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0, bn.js@^4.8.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== @@ -422,19 +1436,10 @@ body-parser@1.18.3, body-parser@^1.16.0: raw-body "2.3.3" type-is "~1.6.16" -boxen@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" - integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^2.4.2" - cli-boxes "^2.2.0" - string-width "^3.0.0" - term-size "^1.2.0" - type-fest "^0.3.0" - widest-line "^2.0.0" +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= brace-expansion@^1.1.7: version "1.1.11" @@ -453,7 +1458,7 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^2.3.1: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -469,6 +1474,13 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -484,7 +1496,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.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -544,6 +1556,42 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.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@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.1.tgz#55908d58f1982aba2008fa1bed8f91998a29bf8d" + integrity sha1-VZCNWPGYKrogCPob7Y+RmYopv40= + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= + dependencies: + node-int64 "^0.4.0" + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -562,6 +1610,11 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" @@ -599,36 +1652,38 @@ buffer@^5.0.5: base64-js "^1.0.2" ieee754 "^1.1.4" -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= +buffer@^5.2.1: + version "5.4.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" + integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -cacache@^12.0.0: - version "12.0.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.2.tgz#8db03205e36089a3df6954c66ce92541441ac46c" - integrity sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg== +bytewise-core@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" + integrity sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI= dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" + 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 sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4= + dependencies: + bytewise-core "^1.2.2" + typewise "^1.0.3" cache-base@^1.0.1: version "1.0.1" @@ -658,22 +1713,64 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -camelcase@^5.3.1: +cachedown@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" + integrity sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU= + dependencies: + abstract-leveldown "^2.4.1" + lru-cache "^3.2.0" + +callsites@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" + integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +caniuse-lite@^1.0.30000844: + version "1.0.30000928" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000928.tgz#805e828dc72b06498e3683a32e61c7507fd67b88" + integrity sha512-aSpMWRXL6ZXNnzm8hgE4QDLibG5pVJ2Ujzsuj3icazlIkxXkPXtL+BWnMx6FBkWmkZgBHGUxPZQvrbRw2ZTxhg== + +capture-exit@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" + integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= + dependencies: + rsvp "^3.3.3" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^1.1.1: +chai@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -684,7 +1781,7 @@ chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, 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== @@ -693,12 +1790,54 @@ chalk@^2.0.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chardet@^0.7.0: + version "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 sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= -chokidar@^1.6.0: +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +checkpoint-store@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" + integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= + dependencies: + functional-red-black-tree "^1.0.1" + +cheerio@0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" + integrity sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU= + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "~3.8.1" + lodash "^4.1.0" + optionalDependencies: + jsdom "^7.0.2" + +cheerio@1.0.0-rc.2: + version "1.0.0-rc.2" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" + integrity sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs= + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash "^4.15.0" + parse5 "^3.0.1" + +chokidar@^1.6.0, chokidar@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= @@ -714,21 +1853,30 @@ chokidar@^1.6.0: optionalDependencies: fsevents "^1.0.0" +chokidar@^2.0.0: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cint@^8.2.1: - version "8.2.1" - resolved "https://registry.yarnpkg.com/cint/-/cint-8.2.1.tgz#70386b1b48e2773d0d63166a55aff94ef4456a12" - integrity sha1-cDhrG0jidz0NYxZqVa/5TvRFahI= - 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" @@ -737,6 +1885,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -747,17 +1900,31 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cli-boxes@^2.2.0: +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^1.1.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" + integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== + +cli-width@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" - integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= dependencies: - colors "1.0.3" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" cliui@^4.0.0: version "4.1.0" @@ -768,6 +1935,20 @@ cliui@^4.0.0: strip-ansi "^4.0.0" 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" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" @@ -775,6 +1956,35 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + integrity sha1-0hfR6WERjjrJpLi7oyhVU79kfNs= + +clone@2.1.2, clone@^2.0.0, clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -785,6 +1995,23 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +coinstring@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/coinstring/-/coinstring-2.3.0.tgz#cdb63363a961502404a25afb82c2e26d5ff627a4" + integrity sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q= + dependencies: + bs58 "^2.0.1" + create-hash "^1.1.1" + +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -800,15 +2027,25 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-logger@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/color-logger/-/color-logger-0.0.3.tgz#d9b22dd1d973e166b18bf313f9f481bba4df2018" + integrity sha1-2bIt0dlz4Waxi/MT+fSBu6TfIBg= + +color-logger@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/color-logger/-/color-logger-0.0.6.tgz#e56245ef29822657110c7cb75a9cd786cb69ed1b" + integrity sha1-5WJF7ymCJlcRDHy3WpzXhstp7Rs= + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= +color-support@^1.1.3: + version "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.1.2: version "1.3.3" @@ -837,16 +2074,16 @@ commander@2.15.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== -commander@^2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - -commander@^2.9.0: +commander@^2.11.0, commander@^2.8.1, commander@^2.9.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -859,7 +2096,7 @@ commander@~2.8.1: dependencies: graceful-readlink ">= 1.0.0" -component-emitter@^1.2.1: +component-emitter@1.2.1, component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= @@ -869,7 +2106,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.1, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -906,6 +2143,13 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +convert-source-map@^1.5.0, convert-source-map@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -921,23 +2165,24 @@ cookiejar@^2.1.1: resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +copy-props@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== + dependencies: + each-props "^1.3.0" + is-plain-object "^2.0.1" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.2.tgz#267988d7268323b349e20b4588211655f0e83944" + integrity sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -951,6 +2196,15 @@ cors@^2.8.1: object-assign "^4" vary "^1" +cpr@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/cpr/-/cpr-0.4.3.tgz#0a23e4b6ec23f3b8cc7a405ecb5cfdc778f7de25" + integrity sha1-CiPktuwj87jMekBey1z9x3j33iU= + dependencies: + graceful-fs "~4.1.2" + mkdirp "~0.5.0" + rimraf "~2.4.3" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -959,7 +2213,7 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -982,6 +2236,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-fetch@^2.1.0, cross-fetch@^2.1.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.3.tgz#e8a0b3c54598136e037f8650f8e823ccdfac198e" + integrity sha512-PrWWNH3yL2NYIb/7WF/5vFG3DCQiXDOVf8k3ijatbrtnwNuhMWLC7YF7uqf53tbTFDzHIUD8oITw4Bxt8ST3Nw== + dependencies: + node-fetch "2.1.2" + whatwg-fetch "2.0.4" + cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -991,6 +2253,17 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^6.0.0, 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" + crypt@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -1013,15 +2286,55 @@ crypto-browserify@3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-js@^3.1.4: + version "3.1.8" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.8.tgz#715f070bf6014f2ae992a98b3929258b713f08d5" + integrity sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU= + +crypto-js@^3.1.9-1: + version "3.1.9-1" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.9-1.tgz#fda19e761fc077e01ffbfdc6e9fdfc59e8806cd8" + integrity sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg= + crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-what@2.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" + integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== + +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" + integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog== + +"cssstyle@>= 0.2.29 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ= + dependencies: + cssom "0.3.x" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" dashdash@^1.12.0: version "1.14.1" @@ -1035,7 +2348,7 @@ death@^1.1.0: resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg= -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1049,21 +2362,21 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@^3.1.0: +debug@3.2.6, debug@^3.0.0, debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@^4.1.1: +debug@^4.0.1, debug@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -decamelize@^1.1.1: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1133,6 +2446,18 @@ decompress@^4.0.0: pify "^2.3.0" strip-dirs "^2.0.0" +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -1143,10 +2468,51 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + defer-to-connect@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz#4bae758a314b034ae33902b5aac25a8dd6a8633e" - integrity sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.0.tgz#b41bd7efa8508cef13f8456975f7a278c72833fd" + integrity sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ== + +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== + dependencies: + abstract-leveldown "~5.0.0" + inherits "^2.0.3" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" @@ -1170,6 +2536,24 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +defined@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +del@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1198,6 +2582,18 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + detect-installed@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-installed/-/detect-installed-2.0.4.tgz#a0850465e7c3ebcff979d6b6535ad344b80dd7c5" @@ -1210,6 +2606,19 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-port@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" + integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" + integrity sha1-fyjS657nsVqX79ic5j3P2qPMur8= + diff@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" @@ -1229,11 +2638,73 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +dom-serializer@0, dom-serializer@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= +domelementtype@1, domelementtype@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= + +domhandler@2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg= + dependencies: + domelementtype "1" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5, domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + dot-prop@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" @@ -1241,12 +2712,21 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexify@^3.4.2, duplexify@^3.6.0: +duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== @@ -1256,6 +2736,19 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +each-props@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + +easy-stack@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.0.tgz#12c91b3085a37f0baa336e9486eac4bf94e3e788" + integrity sha1-EskbMIWjfwuqM26UhurEv5Tj54g= + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -1269,6 +2762,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-to-chromium@^1.3.47: + version "1.3.100" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.100.tgz#899fb088def210aee6b838a47655bbb299190e13" + integrity sha512-cEUzis2g/RatrVf8x26L8lK5VEls1AGnLHk6msluBUg/NTB4wcXzExTsGscFq+Vs4WBBU2zbLLySvD4C0C3hwg== + elliptic@6.3.3: version "6.3.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" @@ -1279,7 +2777,7 @@ elliptic@6.3.3: hash.js "^1.0.0" inherits "^2.0.1" -elliptic@^6.0.0, elliptic@^6.4.0: +elliptic@^6.0.0, elliptic@^6.2.3, elliptic@^6.4.0: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== @@ -1292,6 +2790,11 @@ elliptic@^6.0.0, elliptic@^6.4.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emittery@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.4.1.tgz#abe9d3297389ba424ac87e53d1c701962ce7433d" + integrity sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1302,6 +2805,17 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +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== + dependencies: + abstract-leveldown "^5.0.0" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" + xtend "^4.0.1" + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -1316,29 +2830,93 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +entities@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY= + +entities@^1.1.1, entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + eol@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= +errno@~0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.5.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: + version "0.10.52" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.52.tgz#bb21777e919a04263736ded120a9d665f10ea63f" + integrity sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag== dependencies: - es6-promise "^4.0.3" + es6-iterator "~2.0.3" + es6-symbol "~3.1.2" + next-tick "~1.0.0" -escape-html@~1.0.3: +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escape-html@1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= @@ -1360,21 +2938,144 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" +escodegen@^1.6.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" + integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esdoc@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esdoc/-/esdoc-1.1.0.tgz#07d40ebf791764cd537929c29111e20a857624f3" + integrity sha512-vsUcp52XJkOWg9m1vDYplGZN2iDzvmjDL5M/Mp8qkoDG3p2s0yIQCIjKR5wfPBaM3eV14a6zhQNYiNTCVzPnxA== + dependencies: + babel-generator "6.26.1" + babel-traverse "6.26.0" + babylon "6.18.0" + cheerio "1.0.0-rc.2" + color-logger "0.0.6" + escape-html "1.0.3" + fs-extra "5.0.0" + ice-cap "0.0.4" + marked "0.3.19" + minimist "1.2.0" + taffydb "2.7.3" + +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@^5.5.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.12.0.tgz#fab3b908f60c52671fb14e996a450b96c743c859" + integrity sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.5.3" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.1.0" + js-yaml "^3.12.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.0.2" + text-table "^0.2.0" + +espree@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c" + integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA== + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -1385,6 +3086,33 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +eth-block-tracker@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-2.3.1.tgz#ab6d177e5b50128fa06d7ae9e0489c7484bac95e" + integrity sha512-NamWuMBIl8kmkJFVj8WzGatySTzQPQag4Xr677yFxdVtIxACFbL/dQowk0MzEqIKk93U1TwY3MjVU6mOcwZnKA== + dependencies: + async-eventemitter ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c + 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-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: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" @@ -1393,6 +3121,49 @@ eth-ens-namehash@2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" +eth-json-rpc-infura@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.1.2.tgz#04c5d0cee98619e93ba8a9842492b771b316e83a" + integrity sha512-IuK5Iowfs6taluA/3Okmu6EfZcFMq6MQuyrUL1PrCoJstuuBr3TvVeSy3keDyxfbrjFB34nCo538I8G+qMtsbw== + 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" + tape "^4.8.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.1.27, eth-lib@^0.1.26: + version "0.1.27" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.27.tgz#f0b0fd144f865d2d6bf8257a40004f2e75ca1dd6" + integrity sha512-B8czsfkJYzn2UIEMwjc7Mbj+Cy72V+/OXH/tb44LV8jhrjizQJJ325xMOMyk3+ETa6r6oi0jsUY14+om8mQMWA== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + keccakjs "^0.2.1" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + eth-lib@0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" @@ -1411,27 +3182,376 @@ eth-lib@0.2.8: elliptic "^6.4.0" xhr-request-promise "^0.1.2" -eth-lib@^0.1.26: - version "0.1.27" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.27.tgz#f0b0fd144f865d2d6bf8257a40004f2e75ca1dd6" - integrity sha512-B8czsfkJYzn2UIEMwjc7Mbj+Cy72V+/OXH/tb44LV8jhrjizQJJ325xMOMyk3+ETa6r6oi0jsUY14+om8mQMWA== +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 sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= dependencies: - bn.js "^4.11.6" + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-sig-util@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.0.2.tgz#bfdb274293620404b7631019dc3d7f17bb2e06f4" + integrity sha512-tB6E8jf/aZQ943bo3+iojl8xRe3Jzcl+9OT6v8K7kWis6PdIX19SB2vYvN849cB9G9m/XLjYFK381SgdbsnpTA== + dependencies: + ethereumjs-abi "0.6.5" + ethereumjs-util "^5.1.1" + +eth-sig-util@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.2.0.tgz#769fa3d296b450f6618dedeefe076642c923a16f" + integrity sha512-bAxW35bL4U2lrtjjV8rFGJ8B27z4Sn5v9eIaNdpPUnPfUAtrvx5j8atfyV+k+JOnbppcvKhWCO1rQSBk4kkAhw== + dependencies: + buffer "^5.2.1" elliptic "^6.4.0" - keccakjs "^0.2.1" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" + ethereumjs-abi "0.6.5" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.0" + tweetnacl-util "^0.15.0" -ethereumjs-testrpc-sc@6.4.5-sc.3: - version "6.4.5-sc.3" - resolved "https://registry.yarnpkg.com/ethereumjs-testrpc-sc/-/ethereumjs-testrpc-sc-6.4.5-sc.3.tgz#7c02bfb4c07f32d0ccb30140b61736e5f1bb71c4" - integrity sha512-uQD5Tf+C1QgXRx4GkYnlkB6UxLInkbn2gZzwAKLbnDKIzqcv4JiKVUJxnHyYrbXAu0IAxexus7jYnpju2yDHqw== +eth-sig-util@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.3.0.tgz#c54a6ac8e8796f7e25f59cf436982a930e645231" + integrity sha512-ugD1AvaggvKaZDgnS19W5qOfepjGc7qHrt7TrAaL54gJw9SHvgIXJ3r2xOMW30RWJZNP+1GlTOy5oye7yXA4xA== dependencies: - bn.js "4.11.8" - source-map-support "0.5.9" - yargs "11.1.0" + 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 sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA= + 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.3" + resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.3.tgz#a52d7215616888e012fbc083b3eacd28f3e64764" + integrity sha512-1gZpA5fKarJOVSb5OUlPnhDQuIazqAkI61zlVvf5LdG47nEgw+/qhyZnuj3CUdE/TLTKuRzPLeyXLjaB4qWTRQ== + dependencies: + async "^2.1.2" + bn.js "^4.11.8" + 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.3.4" + through2 "^2.0.3" + treeify "^1.0.1" + web3-provider-engine "^13.3.2" + +ethashjs@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.7.tgz#30bfe4196726690a0c59d3b8272e70d4d0c34bae" + integrity sha1-ML/kGWcmaQoMWdO4Jy5w1NDDS64= + dependencies: + async "^1.4.2" + buffer-xor "^1.0.3" + ethereumjs-util "^4.0.1" + miller-rabin "^4.0.0" + +ethereum-bloom-filters@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.6.tgz#9cdebb3ec20de96ec4a434c6bad6ea5a513037aa" + integrity sha512-dE9CGNzgOOsdh7msZirvv8qjHtnHpvBlKe2647kM8v+yeF71IRso55jpojemvHV+jMjr48irPWxMRaHuOWzAFA== + 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 sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= + +ethereumjs-abi@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" + integrity sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE= + dependencies: + bn.js "^4.10.0" + ethereumjs-util "^4.3.0" + +ethereumjs-abi@0.6.7: + version "0.6.7" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.7.tgz#d1d1c5cdb8d910a7d97645ba9e93be5d153bba2e" + integrity sha512-EMLOA8ICO5yAaXDhjVEfYjsJIXYutY8ufTE93eEKwsVtp2usQreKwsDTJ9zvam3omYqNuffr8IONIqb2uUslGQ== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": + version "0.6.5" + resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799" + dependencies: + bn.js "^4.10.0" + ethereumjs-util "^5.0.0" + +ethereumjs-account@2.0.5, 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-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-block@2.1.0, ethereumjs-block@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.1.0.tgz#71d1b19e18061f14cf6371bf34ba31a359931360" + integrity sha512-ip+x4/7hUInX+TQfhEKsQh9MJK1Dbjp4AuPjf1UdX3udAV4beYD4EMCNIPzBLCsGS8WQZYXLpo83tVTISYNpow== + dependencies: + async "^2.0.1" + ethereumjs-common "^0.6.0" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-block@2.2.0, ethereumjs-block@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.0.tgz#8c6c3ab4a5eff0a16d9785fbeedbe643f4dbcbef" + integrity sha512-Ye+uG/L2wrp364Zihdlr/GfC3ft+zG8PdHcRtsBFNNH1CkOhxOwdB8friBU85n89uRZ9eIMAywCq0F4CwT1wAw== + dependencies: + async "^2.0.1" + ethereumjs-common "^1.1.0" + ethereumjs-tx "^1.2.2" + 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, ethereumjs-block@~1.7.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@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-3.4.0.tgz#92240da6ecd86b3d8d324df69510b381f26c966b" + integrity sha512-wxPSmt6EQjhbywkFbftKcb0qRFIZWocHMuDa8/AB4eWL/UPYalNcDyLaxYbrDytmhHid3Uu8G/tA3C/TxZBuOQ== + dependencies: + async "^2.6.1" + ethashjs "~0.0.7" + ethereumjs-block "~2.2.0" + ethereumjs-common "^1.1.0" + ethereumjs-util "~6.0.0" + flow-stoplight "^1.0.0" + level-mem "^3.0.1" + lru-cache "^5.1.1" + safe-buffer "^5.1.2" + semaphore "^1.1.0" + +ethereumjs-common@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-0.6.1.tgz#ec98edf315a7f107afb6acc48e937a8266979fae" + integrity sha512-4jOrfDu9qOBTTGGb3zrfT1tE1Hyc6a8LJpEk0Vk9AYlLkBY7crjVICyJpRvjNI+KLDMpMITMw3eWVZOLMtZdhw== + +ethereumjs-common@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.3.2.tgz#5a20831e52199a31ff4b68ef361e34c05c976ed0" + integrity sha512-GkltYRIqBLzaZLmF/K3E+g9lZ4O4FL+TtpisAlD3N+UVlR+mrtoG+TvxavqVa6PwOY4nKIEMe5pl6MrTio3Lww== + +ethereumjs-common@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-0.4.1.tgz#27690a24a817b058cc3a2aedef9392e8d7d63984" + integrity sha512-ywYGsOeGCsMNWso5Y4GhjWI24FJv9FK7+VyVKiQgXg8ZRDPXJ7F/kJ1CnjtkjTvDF4e0yqU+FWswlqR3bmZQ9Q== + +ethereumjs-tx@1.3.7, 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== + dependencies: + ethereum-common "^0.0.18" + ethereumjs-util "^5.0.0" + +ethereumjs-util@5.2.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.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" + integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.3" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +ethereumjs-util@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" + integrity sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "0.1.6" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +ethereumjs-util@^4.0.1, ethereumjs-util@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz#3e9428b317eebda3d7260d854fddda954b1f1bc6" + integrity sha1-PpQosxfuvaPXJg2FT93alUsfG8Y= + dependencies: + bn.js "^4.8.0" + create-hash "^1.1.2" + keccakjs "^0.2.0" + rlp "^2.0.0" + secp256k1 "^3.0.1" + +ethereumjs-util@^6.0.0, ethereumjs-util@~6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz#f14841c182b918615afefd744207c7932c8536c0" + integrity sha512-E3yKUyl0Fs95nvTFQZe/ZSNcofhDzUsDlA5y2uoRmf1+Ec7gpGhNCsgKkZBRh7Br5op8mJcYF/jFbmjj909+nQ== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.6" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +ethereumjs-vm@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.3.4.tgz#f635d7cb047571a1840a6e9a74d29de4488f8ad6" + integrity sha512-Y4SlzNDqxrCO58jhp98HdnZVdjOqB+HC0hoU+N/DEp1aU+hFkRX/nru5F7/HkQRPIlA6aJlQp/xIA6xZs1kspw== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereum-common "0.2.0" + ethereumjs-account "^2.0.3" + ethereumjs-block "~1.7.0" + ethereumjs-util "^5.1.3" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.1.2" + rustbn.js "~0.1.1" + safe-buffer "^5.1.1" + +ethereumjs-vm@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.4.0.tgz#244f1e35f2755e537a13546111d1a4c159d34b13" + integrity sha512-MJ4lCWa5c6LhahhhvoDKW+YGjK00ZQn0RHHLh4L+WaH1k6Qv7/q3uTluew6sJGNCZdlO0yYMDXYW9qyxLHKlgQ== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~1.7.0" + ethereumjs-common "~0.4.0" + ethereumjs-util "^5.2.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.1.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + +ethereumjs-vm@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-3.0.0.tgz#70fea2964a6797724b0d93fe080f9984ad18fcdd" + integrity sha512-lNu+G/RWPRCrQM5s24MqgU75PEGiAhL4Ombw0ew6m08d+amsxf/vGAb98yDNdQqqHKV6JbwO/tCGfdqXGI6Cug== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.2.0" + ethereumjs-blockchain "^3.4.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-vm@^2.0.2, ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.5.0.tgz#71dde54a093bd813c9defdc6d45ceb8fcca2f603" + integrity sha512-Cp1do4J2FIJFnbofqLsKb/aoZKG+Q8NBIbTa1qwZPQkQxzeR3DZVpFk/VbE1EUO6Ha0kSClJ1jzfj07z3cScSQ== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.1.0" + ethereumjs-common "^0.6.0" + ethereumjs-util "^6.0.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.1.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + +ethereumjs-wallet@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.2.tgz#67244b6af3e8113b53d709124b25477b64aeccda" + integrity sha512-DHEKPV9lYORM7dL8602dkb+AgdfzCYz2lxpdYQoD3OwG355LLDuivW9rGuLpDMCry/ORyBYV6n+QCo/71SwACg== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereumjs-util "^5.2.0" + hdkey "^1.0.0" + safe-buffer "^5.1.2" + scrypt.js "^0.2.0" + utf8 "^3.0.0" + uuid "^3.3.2" + +ethereumjs-wallet@0.6.3, ethereumjs-wallet@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz#b0eae6f327637c2aeb9ccb9047b982ac542e6ab1" + integrity sha512-qiXPiZOsStem+Dj/CQHbn5qex+FVkuPmGH7SvSnA9F3tdRDt8dLMyvIj3+U05QzVZNPYh4HXEdnzoYI4dZkr9w== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereumjs-util "^6.0.0" + hdkey "^1.1.0" + randombytes "^2.0.6" + safe-buffer "^5.1.2" + scrypt.js "^0.3.0" + utf8 "^3.0.0" + uuid "^3.3.2" + +ethers@4.0.0-beta.1: + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.1.tgz#0648268b83e0e91a961b1af971c662cdf8cbab6d" + integrity sha512-SoYhktEbLxf+fiux5SfCEwdzWENMvgIbMZD90I62s4GZD9nEjgEWy8ZboI3hck193Vs0bDoTohDISx84f2H2tw== + dependencies: + "@types/node" "^10.3.2" + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.3.3" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.3" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" ethers@4.0.0-beta.3: version "4.0.0-beta.3" @@ -1449,7 +3569,7 @@ ethers@4.0.0-beta.3: uuid "2.0.1" xmlhttprequest "1.8.0" -ethers@^4.0.27, ethers@^4.0.32: +ethers@^4.0.0-beta.1, ethers@^4.0.27: version "4.0.33" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.33.tgz#f7b88d2419d731a39aefc37843a3f293e396f918" integrity sha512-lAHkSPzBe0Vj+JrhmkEHLtUEKEheVktIjGDyE9gbzF4zf1vibjYgB57LraDHu4/ItqWVkztgsm8GWqcDMN+6vQ== @@ -1465,6 +3585,31 @@ ethers@^4.0.27, ethers@^4.0.32: uuid "2.0.1" xmlhttprequest "1.8.0" +ethers@^4.0.32: + version "4.0.39" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.39.tgz#5ce9dfffedb03936415743f63b37d96280886a47" + integrity sha512-QVtC8TTUgTrnlQjQvdFJ7fkSWKwp8HVTbKRmrdbVryrPzJHMTf3WSeRNvLF2enGyAFtyHJyFNnjN0fSshcEr9w== + dependencies: + "@types/node" "^10.3.2" + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.3.3" + 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" + +ethjs-abi@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/ethjs-abi/-/ethjs-abi-0.1.8.tgz#cd288583ed628cdfadaf8adefa3ba1dbcbca6c18" + integrity sha1-zSiFg+1ijN+tr4re+juh28vKbBg= + dependencies: + bn.js "4.11.6" + js-sha3 "0.5.5" + number-to-bn "1.7.0" + ethjs-unit@0.1.6, ethjs-unit@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -1473,6 +3618,14 @@ ethjs-unit@0.1.6, 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: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + ethlint@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ethlint/-/ethlint-1.2.2.tgz#29efb5edd54a44863cbb694da1e4cd269b2fd5f9" @@ -1492,16 +3645,62 @@ ethlint@^1.2.2: solparse "2.2.8" text-table "^0.2.0" -eventemitter3@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== +ethpm-registry@0.1.0-next.2: + version "0.1.0-next.2" + resolved "https://registry.yarnpkg.com/ethpm-registry/-/ethpm-registry-0.1.0-next.2.tgz#1f21a5cbe45e9ec390d35d1740c86e498ba15b72" + integrity sha512-68KlD8iWKWlk1Y5hvJc0bquEDDSAs24mnSMwrrBei0+IGfkNe2lyxN1YZABRJEy2CqSMnWCr3TVOlyuofhlyxw== + dependencies: + fs-extra "^2.0.0" + left-pad "^1.1.3" + semver "^5.3.0" + solidity-sha3 "^0.4.1" + truffle-artifactor "^2.1.2" + truffle-contract "4.0.0-next.0" + web3 "^1.0.0-beta.36" + +ethpm-spec@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ethpm-spec/-/ethpm-spec-1.0.1.tgz#ad3c09ae0492ad3d3ec7b94b7f5fd8057d4deb91" + integrity sha1-rTwJrgSSrT0+x7lLf1/YBX1N65E= + dependencies: + json-schema-to-markdown "^1.0.3" + +ethpm@0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/ethpm/-/ethpm-0.0.16.tgz#c06b3eb3d969180f4fb2a49700b178457f9b6c94" + integrity sha512-EF7LPaofPDRu7LenMn+Q64NQeH8RSowJqjcYtYTsNM7Rgs5I2/0m4OTiU0QVQqwYhAj7a1DFBZfKFBs7+eONlg== + dependencies: + async "^2.1.2" + ethpm-spec "^1.0.1" + fs-extra "^6.0.1" + glob "^7.1.1" + ipfs-mini "^1.1.2" + jsonschema "^1.1.1" + lodash "^4.17.1" + node-dir "^0.1.16" + semver "^5.3.0" + wget-improved "^1.4.0" + +event-pubsub@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" + integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== + +eventemitter3@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.1.1.tgz#47786bdaa087caf7b1b75e73abc5c7d540158cd0" + integrity sha1-R3hr2qCHyvext15zq8XH1UAVjNA= -eventemitter3@3.1.2, eventemitter3@^3.1.0: +eventemitter3@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -1510,6 +3709,18 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +exec-sh@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" + integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== + dependencies: + merge "^1.2.0" + +exec-sh@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" + integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== + execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -1523,6 +3734,19 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -1593,6 +3817,13 @@ express@^4.14.0: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.1.2.tgz#d1d216c83641bb4cb7684622b063cff44a19ce35" + integrity sha512-/KLjJdTNyDepCihrk4HQt57nAE1IRCEo5jUt+WgWGCr1oARhibDvmI2DMcSNWood1T9AUWwq+jaV1wvRqaXfnA== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -1608,11 +3839,20 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -1644,6 +3884,23 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= +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 sha1-S4w6z7Ugr635hgsfFM2M40As3dM= + dependencies: + checkpoint-store "^1.1.0" + +fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" @@ -1654,21 +3911,41 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-diff@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== +fast-glob@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.0.tgz#77375a7e3e6f6fc9b18f061cddd28b8d1eec75ae" + integrity sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastq@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" + integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA== + dependencies: + reusify "^1.0.0" + +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + dependencies: + bser "^2.0.0" + fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -1676,10 +3953,27 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== +fetch-ponyfill@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" + integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= + dependencies: + node-fetch "~1.7.1" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" file-type@^3.8.0: version "3.9.0" @@ -1727,6 +4021,13 @@ fill-range@^4.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" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" @@ -1740,15 +4041,15 @@ finalhandler@1.1.1: statuses "~1.4.0" unpipe "~1.0.0" -find-up@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" + path-exists "^2.0.0" + pinkie-promise "^2.0.0" -find-up@^2.1.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" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -1762,7 +4063,58 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -flush-write-stream@^1.0.0: +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + +flat-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + +flow-stoplight@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" + integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= + +flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== @@ -1770,7 +4122,7 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -for-each@^0.3.2: +for-each@^0.3.2, 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== @@ -1789,10 +4141,22 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +foreach@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.3.2: version "2.3.3" @@ -1820,19 +4184,39 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@6.0.1, fs-extra@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" + integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.24.0.tgz#d4e4342a96675cb7846633a6099249332b539952" + integrity sha1-1OQ0KpZnXLeEZjOmCZJJMytTmVI= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -1844,6 +4228,23 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@^2.0.0, fs-extra@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" + integrity sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -1853,6 +4254,15 @@ fs-extra@^4.0.2: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^8.0.1, fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -1860,15 +4270,28 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" + graceful-fs "^4.1.11" + through2 "^2.0.3" + +fs-promise@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-2.0.3.tgz#f64e4f854bcf689aa8bddcba268916db3db46854" + integrity sha1-9k5PhUvPaJqovdy6JokW2z20aFQ= + dependencies: + any-promise "^1.3.0" + fs-extra "^2.0.0" + mz "^2.6.0" + thenify-all "^1.6.0" + +fs-readdir-recursive@^1.0.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" @@ -1883,14 +4306,143 @@ fsevents@^1.0.0: nan "^2.9.2" node-pre-gyp "^0.10.0" -ganache-cli@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.3.0.tgz#574f9d35aaec8da6e01c2be49db8fe73129eb561" - integrity sha512-8SyzfX2ipRVBx1fBZLg3j8I3E334U3Vazk5mEpYcWqnIjC2ace6jtOXHG4aTuAvSz3+HzQ8p8pRjOJxdDZ2pnQ== +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +fstream@^1.0.2, fstream@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +ganache-cli@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.7.0.tgz#b59845578221bdf686cf124d007c5ee62e85a62f" + integrity sha512-9CZsClo9hl5MxGL7hkk14mie89Q94P0idh92jcV7LmppTYTCG7SHatuwcfqN7emFHArMt3fneN4QbH2do2N6Ow== + dependencies: + ethereumjs-util "6.1.0" + source-map-support "0.5.12" + yargs "13.2.4" + +ganache-core-sc@2.7.0-sc.0: + version "2.7.0-sc.0" + resolved "https://registry.yarnpkg.com/ganache-core-sc/-/ganache-core-sc-2.7.0-sc.0.tgz#a802eb2b7f1f9fbe833d19752347f3dceefe55d3" + integrity sha512-mlOpZs5Jdk4mIy55m7vVbknTDRViFWbSV0vnESelHH2g/yS0BVbxIH3QVjI9KjH1rMNuC56Obny/KjKOtnP5Og== + 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 "2.2.0" + ethereumjs-abi "0.6.7" + ethereumjs-account "3.0.0" + ethereumjs-block "2.2.0" + ethereumjs-tx "1.3.7" + ethereumjs-util "6.1.0" + ethereumjs-vm "3.0.0" + heap "0.2.6" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.14" + merkle-patricia-tree "2.3.2" + seedrandom "3.0.1" + source-map-support "0.5.12" + tmp "0.1.0" + web3-provider-engine "14.2.0" + websocket "1.0.29" + optionalDependencies: + ethereumjs-wallet "0.6.3" + web3 "1.0.0-beta.35" + +ganache-core@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.3.3.tgz#e35c76d405f0ffba5c48621596fdcc38b0a03136" + integrity sha512-MGmcDm27bMPeQvY5cZWK08AyiJj/18P0dgiCOhGyhX1LRCQD4Pj4tvpxd6w3dftn5iCBnzGwm9j3+WT0k+B0XQ== dependencies: + abstract-leveldown "3.0.0" + async "2.6.1" + bip39 "2.5.0" bn.js "4.11.8" + cachedown "1.0.0" + clone "2.1.2" + debug "3.1.0" + encoding-down "5.0.4" + eth-sig-util "2.0.2" + ethereumjs-abi "0.6.5" + ethereumjs-account "2.0.5" + ethereumjs-block "2.1.0" + ethereumjs-tx "1.3.7" + ethereumjs-util "5.2.0" + ethereumjs-vm "2.4.0" + heap "0.2.6" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.10" + merkle-patricia-tree "2.3.1" + rlp "2.1.0" + seedrandom "2.4.4" source-map-support "0.5.9" - yargs "11.1.0" + tmp "0.0.33" + web3-provider-engine "14.1.0" + websocket "1.0.26" + optionalDependencies: + ethereumjs-wallet "0.6.2" + web3 "1.0.0-beta.35" + +ganache-core@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.8.0.tgz#eeadc7f7fc3a0c20d99f8f62021fb80b5a05490c" + integrity sha512-hfXqZGJx700jJqwDHNXrU2BnPYuETn1ekm36oRHuXY3oOuJLFs5C+cFdUFaBlgUxcau1dOgZUUwKqTAy0gTA9Q== + 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 "2.3.0" + ethereumjs-abi "0.6.7" + ethereumjs-account "3.0.0" + ethereumjs-block "2.2.0" + ethereumjs-tx "1.3.7" + ethereumjs-util "6.1.0" + ethereumjs-vm "3.0.0" + heap "0.2.6" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.14" + merkle-patricia-tree "2.3.2" + seedrandom "3.0.1" + source-map-support "0.5.12" + tmp "0.1.0" + web3-provider-engine "14.2.1" + websocket "1.0.29" + optionalDependencies: + ethereumjs-wallet "0.6.3" + web3 "1.2.1" gauge@~2.7.3: version "2.7.4" @@ -1906,16 +4458,21 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -genfun@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== - get-caller-file@^1.0.1: 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== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + 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 sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + get-installed-path@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/get-installed-path/-/get-installed-path-2.1.1.tgz#a1f33dc6b8af542c9331084e8edbe37fe2634152" @@ -1930,10 +4487,10 @@ get-installed-path@^4.0.8: dependencies: global-modules "1.0.0" -get-stdin@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== +get-params@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe" + integrity sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4= get-stream@^2.2.0: version "2.3.1" @@ -1948,7 +4505,7 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -get-stream@^4.1.0: +get-stream@^4.0.0, 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== @@ -1974,6 +4531,24 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== + dependencies: + chalk "^2.4.2" + node-emoji "^1.10.0" + +github-download@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/github-download/-/github-download-0.5.0.tgz#f7647a70aac4326fb091e5786c8f66ae157da51b" + integrity sha1-92R6cKrEMm+wkeV4bI9mrhV9pRs= + dependencies: + adm-zip "~0.4.3" + fs-extra "^0.24.0" + request "^2.12.0" + vcsurl "~0.1.0" + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -1989,6 +4564,49 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + dependencies: + is-glob "^4.0.1" + +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob-watcher@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" + integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + object.defaults "^1.1.0" + glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -2012,22 +4630,21 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= dependencies: - fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "2 || 3" once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3, glob@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -2036,13 +4653,6 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" - global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -2052,6 +4662,13 @@ global-modules@1.0.0, global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -2063,6 +4680,15 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + global@~4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" @@ -2071,24 +4697,50 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -got@9.6.0, 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== +globals@^11.7.0: + version "11.10.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50" + integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ== + +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== + +globby@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" + integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= 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" + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" -got@^7.1.0: +glogg@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + +got@7.1.0, got@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== @@ -2108,12 +4760,34 @@ got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -graceful-fs@^4.1.10, graceful-fs@^4.1.11: +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" + +graceful-fs@^4.0.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.2: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== -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: version "4.2.0" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== @@ -2133,6 +4807,47 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +gulp-cli@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" + integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.1.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.0.1" + yargs "^7.1.0" + +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= + dependencies: + glogg "^1.0.0" + handlebars@^4.0.1: version "4.0.12" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" @@ -2184,6 +4899,11 @@ has-symbol-support-x@^1.4.1: resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + has-to-string-tag-x@^1.2.0: version "1.4.1" resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" @@ -2227,10 +4947,12 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== +has@^1.0.1, 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== + dependencies: + function-bind "^1.1.1" hash-base@^3.0.0: version "3.0.4" @@ -2256,11 +4978,25 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hdkey@^1.0.0, hdkey@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.0.tgz#e74e7b01d2c47f797fa65d1d839adb7a44639f29" + integrity sha512-E7aU8pNlWUJbXGjTz/+lKf1LkMcA3hUrC5ZleeizrmLSd++kvf8mSOe3q8CmBDA9j4hdfXO5iY6hGiTUCOV2jQ== + dependencies: + coinstring "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= +heap@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" + integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2270,6 +5006,14 @@ hmac-drbg@^1.0.0: 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 sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -2282,10 +5026,28 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== -http-cache-semantics@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== +htmlparser2@^3.9.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" + integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.0.6" + +htmlparser2@~3.8.1: + version "3.8.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg= + dependencies: + domelementtype "1" + domhandler "2.3" + domutils "1.5" + entities "1.0" + readable-stream "1.1" http-cache-semantics@^4.0.0: version "4.0.3" @@ -2307,14 +5069,6 @@ http-https@^1.0.0: resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -2324,20 +5078,13 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-proxy-agent@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" - integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= +ice-cap@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/ice-cap/-/ice-cap-0.0.4.tgz#8a6d31ab4cac8d4b56de4fa946df3352561b6e18" + integrity sha1-im0xq0ysjUtW3k+pRt8zUlYbbhg= dependencies: - ms "^2.0.0" + cheerio "0.20.0" + color-logger "0.0.3" iconv-lite@0.4.23: version "0.4.23" @@ -2346,7 +5093,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2365,11 +5112,6 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" @@ -2377,26 +5119,39 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + +immediate@^3.2.3, immediate@~3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" + integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= + immutable@^4.0.0-rc.12: version "4.0.0-rc.12" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" integrity sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A== -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= +import-fresh@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" + integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2405,12 +5160,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, 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== - -inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= @@ -2420,26 +5170,72 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -interpret@^1.0.0: +inquirer@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52" + integrity sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.0" + figures "^2.0.0" + lodash "^4.17.10" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.1.0" + string-width "^2.1.0" + strip-ansi "^5.0.0" + through "^2.3.6" + +interpret@^1.0.0, interpret@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +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 sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-3.0.0.tgz#0a934694b4066558c46294244a23cc33116bf732" + integrity sha512-T8wDtjy+Qf2TAPDQmBp0eGKJ8GavlWlUnamr3wRn6vvdZlKVuJXXMlSncYFRYgVHOM3If5NR1H4+OvVQU9Idvg== ipaddr.js@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= +ipfs-mini@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ipfs-mini/-/ipfs-mini-1.1.2.tgz#9c0fad3fa00a82c82caed1ae04b3b99ed3b3e95d" + integrity sha1-nA+tP6AKgsgsrtGuBLO5ntOz6V0= + dependencies: + xmlhttprequest "^1.8.0" + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -2454,6 +5250,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -2466,18 +5267,18 @@ is-buffer@^1.1.5, is-buffer@~1.1.1: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3: +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== -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-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -2492,6 +5293,11 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -2539,6 +5345,23 @@ is-extglob@^1.0.0: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" + integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= + 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" @@ -2563,28 +5386,34 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - is-natural-number@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= -is-npm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" - integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA== +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= is-number@^2.1.0: version "2.1.0" @@ -2605,6 +5434,11 @@ is-number@^4.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -2615,6 +5449,18 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" @@ -2644,30 +5490,73 @@ is-primitive@^2.0.0: resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + is-windows@^1.0.1, is-windows@^1.0.2: 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-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" @@ -2724,10 +5613,22 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -jju@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= +js-message@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/js-message/-/js-message-1.0.5.tgz#2300d24b1af08e89dd095bc1a4c9c9cfcb892d15" + integrity sha1-IwDSSxrwjondCVvBpMnJz8uJLRU= + +js-queue@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/js-queue/-/js-queue-2.0.0.tgz#362213cf860f468f0125fc6c96abc1742531f948" + integrity sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug= + dependencies: + easy-stack "^1.0.0" + +js-sha3@0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.5.tgz#baf0c0e8c54ad5903447df96ade7a4a1bca79a4a" + integrity sha1-uvDA6MVK1ZA0R9+Wreekobynmko= js-sha3@0.5.7, js-sha3@^0.5.7: version "0.5.7" @@ -2739,11 +5640,26 @@ js-sha3@^0.6.1: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.6.1.tgz#5b89f77a7477679877f58c4a075240934b1f95c0" integrity sha1-W4n3enR3Z5h39YxKB1JAk0sflcA= +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-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= +"js-tokens@^3.0.0 || ^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 sha1-mGbfOVECEw449/mWvOtlRDIJwls= + js-yaml@3.x, js-yaml@^3.12.0: version "3.12.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" @@ -2752,27 +5668,87 @@ js-yaml@3.x, js-yaml@^3.12.0: argparse "^1.0.7" esprima "^4.0.0" +jsan@^3.1.13: + version "3.1.13" + resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.13.tgz#4de8c7bf8d1cfcd020c313d438f930cec4b91d86" + integrity sha512-9kGpCsGHifmw6oJet+y8HaCl14y7qgAsxVdV3pCHDySNR3BfDC30zgkssd7x5LRVAT22dnpbe9JdzzmXZnq9/g== + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdom@^7.0.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" + integrity sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4= + dependencies: + abab "^1.0.0" + acorn "^2.4.0" + acorn-globals "^1.0.4" + cssom ">= 0.3.0 < 0.4.0" + cssstyle ">= 0.2.29 < 0.3.0" + escodegen "^1.6.1" + nwmatcher ">= 1.3.7 < 2.0.0" + parse5 "^1.5.1" + request "^2.55.0" + sax "^1.1.4" + symbol-tree ">= 3.1.0 < 4.0.0" + tough-cookie "^2.2.0" + webidl-conversions "^2.0.0" + whatwg-url-compat "~0.6.5" + xml-name-validator ">= 2.0.1 < 3.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -json-parse-better-errors@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-pointer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.0.tgz#8e500550a6aac5464a473377da57aa6cc22828d7" + integrity sha1-jlAFUKaqxUZKRzN32leqbMIoKNc= + dependencies: + foreach "^2.0.4" -json-parse-helpfulerror@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" - integrity sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w= +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 sha1-p6+cICg4tekFxyUOVH8a/3cligI= dependencies: - jju "^1.1.0" + 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 sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + +json-schema-to-markdown@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/json-schema-to-markdown/-/json-schema-to-markdown-1.0.3.tgz#4411ca222b2b6760e616663f0bb2bd76bb26ebb8" + integrity sha1-RBHKIisrZ2DmFmY/C7K9drsm67g= json-schema-traverse@^0.3.0: version "0.3.1" @@ -2789,17 +5765,27 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + 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 sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== - dependencies: - minimist "^1.2.0" +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= jsonfile@^2.1.0: version "2.4.0" @@ -2815,10 +5801,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsonschema@^1.1.1, jsonschema@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.4.tgz#a46bac5d3506a254465bc548876e267c6d0d6464" + integrity sha512-lz1nOH69GbsVHeVgEdvyavc/33oymY1AZwtePMiMj4HZPMbP5OIKK3zT9INMWjwua/V4Z4yq7wSlBbSG+g4AEw== jsprim@^1.2.2: version "1.4.1" @@ -2830,6 +5821,11 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +just-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= + keccak@^1.0.2: version "1.4.0" resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" @@ -2840,7 +5836,7 @@ keccak@^1.0.2: nan "^2.2.1" safe-buffer "^5.1.0" -keccakjs@^0.2.1: +keccakjs@^0.2.0, keccakjs@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.3.tgz#5e4e969ce39689a3861f445d7752ee3477f9fe72" integrity sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg== @@ -2869,7 +5865,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0: +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" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -2886,17 +5882,20 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -kleur@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= dependencies: - package-json "^6.3.0" + readable-stream "^2.0.5" lcid@^1.0.0: version "1.0.0" @@ -2905,7 +5904,155 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -levn@~0.3.0: +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + +left-pad@^1.1.1, left-pad@^1.1.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +level-codec@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.0.tgz#2d3a0e835c4aa8339ec63de3f5a37480b74a5f87" + integrity sha512-OIpVvjCcZNP5SdhcNupnsI1zo5Y9Vpm+k/F1gfG5kXrtctlrwanisakweJtE0uA0OpLukRfOQae+Fg0M5Debhg== + +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== + dependencies: + errno "~0.1.1" + +level-errors@^2.0.0, level-errors@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.0.tgz#2de5b566b62eef92f99e19be74397fbc512563fa" + integrity sha512-AmY4HCp9h3OiU19uG+3YWkdELgy05OTP/r23aNHaQKWv8DO787yZgsEuGVkoph40uwN+YdUKnANlrxSsoOaaxg== + 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 sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= + 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== + dependencies: + level-packager "~4.0.0" + memdown "~3.0.0" + +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== + dependencies: + encoding-down "~5.0.0" + levelup "^3.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== + dependencies: + ltgt "^2.1.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-ws@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" + integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= + dependencies: + readable-stream "~1.0.15" + xtend "~2.1.1" + +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== + dependencies: + deferred-leveldown "~4.0.0" + level-errors "~2.0.0" + level-iterator-stream "~3.0.0" + xtend "~4.0.0" + +levelup@^1.2.1: + version "1.3.9" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" + integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== + 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" + xtend "~4.0.0" + +levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -2913,14 +6060,45 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libnpmconfig@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" - integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== dependencies: - figgy-pudding "^3.5.1" - find-up "^3.0.0" - ini "^1.3.5" + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +linked-list@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/linked-list/-/linked-list-0.1.0.tgz#798b0ff97d1b92a4fd08480f55aea4e9d49d37bf" + integrity sha1-eYsP+X0bkqT9CEgPVa6k6dSdN78= + +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 sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + 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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" locate-path@^2.0.0: version "2.0.0" @@ -2938,23 +6116,90 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" +lodash-es@^4.2.1: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.11.tgz#145ab4a7ac5c5e52a3531fb4f310255a152b4be0" + integrity sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q== + +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 sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= -lodash@^4.14.2, lodash@^4.16.4, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.2.0: +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash.merge@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" + integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== + +lodash.range@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.range/-/lodash.range-3.2.0.tgz#f461e588f66683f7eadeade513e38a69a565a15d" + integrity sha1-9GHliPZmg/fq3q3lE+OKaaVloV0= + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + +lodash@4.17.10: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== + +lodash@4.17.11, lodash@^4.1.0, lodash@^4.11.2, lodash@^4.13.1, lodash@^4.14.2, lodash@^4.15.0, lodash@^4.16.4, lodash@^4.17.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== -lodash@^4.17.13: +lodash@4.17.14: + version "4.17.14" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" + integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== + +lodash@^4.17.13, lodash@^4.17.14: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +looper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" + integrity sha1-Zs0Md0rz1P7axTeU90LbVtqPCew= + +looper@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" + integrity sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k= + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.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" + 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" @@ -2965,6 +6210,13 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" + integrity sha1-cXibO39Tmb7IVl3aOKow0qCX7+4= + dependencies: + pseudomap "^1.0.1" + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -2980,6 +6232,16 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +ltgt@^2.1.2, ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= + +ltgt@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" + integrity sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ= + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -2987,24 +6249,28 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-fetch-happen@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.0.tgz#a8e3fe41d3415dd656fe7b8e8172e1fb4458b38d" - integrity sha512-nFr/vpL1Jc60etMVKeaLOqfGjMMb3tAHFVJWxHOFCFS04Zmd7kGlMxo0l1tzfhoQje0/UPnd0X8OeGUiXXnfPA== - dependencies: - agentkeepalive "^3.4.1" - cacache "^12.0.0" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^5.1.1" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" -map-cache@^0.2.2: +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.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 sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= @@ -3016,6 +6282,21 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +marked@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" + integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== + +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + math-random@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" @@ -3051,6 +6332,39 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memdown@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" + integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= + 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== + dependencies: + abstract-leveldown "~5.0.0" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -3061,6 +6375,44 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge2@^1.2.3, merge2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +merge@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== + +merkle-patricia-tree@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.1.tgz#7d4e7263a9c85c1679187cad4a6d71f48d524c71" + integrity sha512-Qp9Mpb3xazznXzzGQBqHbqCpT2AR9joUOHYYPiQjYCarrdCPCnLWXo4BFv77y4xN26KR224xoU1n/qYY7RYYgw== + 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@2.3.2, 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" + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -3085,7 +6437,7 @@ micromatch@^2.1.5: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.1.10: +micromatch@^3.0.4, micromatch@^3.1.10, 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== @@ -3104,6 +6456,14 @@ micromatch@^3.1.10: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -3134,6 +6494,11 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mimic-fn@^2.0.0: + version "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" @@ -3156,7 +6521,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -3168,7 +6533,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.2.0: +minimist@1.2.0, minimist@^1.1.1, minimist@^1.2.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -3178,7 +6543,7 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.4, minipass@^2.3.5: +minipass@^2.2.1, minipass@^2.3.4: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== @@ -3186,28 +6551,27 @@ minipass@^2.2.1, minipass@^2.3.4, minipass@^2.3.5: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.1, minizlib@^1.2.1: +minipass@^2.8.6, 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" + +minizlib@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== dependencies: minipass "^2.2.1" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" + minipass "^2.9.0" mixin-deep@^1.2.0: version "1.3.1" @@ -3224,7 +6588,7 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -3267,7 +6631,7 @@ mocha@5.2.0: mkdirp "0.5.1" supports-color "5.4.0" -mocha@^4.0.1: +mocha@^4.0.1, mocha@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" integrity sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA== @@ -3288,39 +6652,46 @@ mock-fs@^4.1.0: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.7.0.tgz#9f17e219cacb8094f4010e0a8c38589e2b33c299" integrity sha512-WlQNtUlzMRpvLHf8dqeUmNqfdPjGY29KrJF50Ldb4AcL+vQeR8QH3wQcFMgrhTwb1gHjZn9xggho+84tBskLgA== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" +mout@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/mout/-/mout-0.11.1.tgz#ba3611df5f0e5b1ffbfd01166b8f02d1f5fa2b99" + integrity sha1-ujYR318OWx/7/QEWa48C0fX6K5k= ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +mute-stdout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mz@^2.6.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA== -nan@^2.0.8, nan@^2.3.3, nan@^2.9.2: +nan@^2.0.8, nan@^2.2.1, nan@^2.3.3, nan@^2.9.2: version "2.12.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== @@ -3330,7 +6701,7 @@ nan@^2.11.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== -nan@^2.2.1: +nan@^2.12.1, nan@^2.14.0: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== @@ -3340,6 +6711,11 @@ nano-json-stream-parser@^0.1.2: resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= +nanoid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.0.0.tgz#e1ab4a4b024a38d15531ba34a712a201540de639" + integrity sha512-SG2qscLE3iM4C0CNzGrsAojJHSVHMS1J8NnvJ31P1lH8P0hGHOiafmniNJz6w6q7vuoDlV7RdySlJgtqkFEVtQ== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -3357,6 +6733,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + needle@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" @@ -3371,27 +6752,63 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= -nested-error-stacks@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b" - integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -node-alias@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/node-alias/-/node-alias-1.0.4.tgz#1f1b916b56b9ea241c0135f97ced6940f556f292" - integrity sha1-HxuRa1a56iQcATX5fO1pQPVW8pI= +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== + +node-dir@0.1.17, node-dir@^0.1.16, node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= dependencies: - chalk "^1.1.1" - lodash "^4.2.0" + minimatch "^3.0.2" -node-fetch-npm@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" - integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== +node-emoji@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-emoji@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.8.1.tgz#6eec6bfb07421e2148c75c6bba72421f8530a826" + integrity sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg== + dependencies: + lodash.toarray "^4.4.0" + +node-fetch@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= + +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" - json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" + is-stream "^1.0.1" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-ipc@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/node-ipc/-/node-ipc-9.1.1.tgz#4e245ed6938e65100e595ebc5dc34b16e8dd5d69" + integrity sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w== + dependencies: + event-pubsub "4.3.0" + js-message "1.0.5" + js-queue "2.0.0" node-pre-gyp@^0.10.0: version "0.10.3" @@ -3409,8 +6826,24 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -nopt@3.x: - version "3.0.6" +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +nopt@3.x: + version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= dependencies: @@ -3424,77 +6857,45 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== dependencies: hosted-git-info "^2.1.4" - resolve "^1.10.0" + is-builtin-module "^1.0.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1: +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" +normalize-path@^3.0.0: + version "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.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.3.0.tgz#9c49e10fc1876aeb76dba88bf1b2b5d9fa57b2ee" - integrity sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ== + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== -npm-check-updates@^3.1.11: - version "3.1.20" - resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-3.1.20.tgz#9dd719bc04af9c273b33b44a7d5368d5e85ae9c2" - integrity sha512-mc9BAoOYSTwP/IvoA+ofdkWSipwRvhgC0qop1PvlMZojgzi7N/dykdxOIWrw0OlZPnEKvXkKFEuPk97LrvXE1A== - dependencies: - chalk "^2.4.2" - cint "^8.2.1" - cli-table "^0.3.1" - commander "^2.20.0" - fast-diff "^1.2.0" - find-up "4.1.0" - get-stdin "^7.0.0" - json-parse-helpfulerror "^1.0.3" - libnpmconfig "^1.2.1" - lodash "^4.17.13" - node-alias "^1.0.4" - pacote "^9.5.1" - progress "^2.0.3" - prompts "^2.1.0" - rc-config-loader "^2.0.4" - requireg "^0.2.2" - semver "^6.2.0" - semver-utils "^1.1.4" - spawn-please "^0.3.0" - update-notifier "^3.0.1" - -npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" - integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== - dependencies: - hosted-git-info "^2.6.0" - osenv "^0.1.5" - semver "^5.5.0" - validate-npm-package-name "^3.0.0" - -npm-packlist@^1.1.12: - version "1.4.4" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" - integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-packlist@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f" @@ -3503,26 +6904,12 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-pick-manifest@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" - integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.0.0" - semver "^5.4.1" - -npm-registry-fetch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz#5ef75845b605855c7964472542c25da172af8677" - integrity sha512-Jllq35Jag8dtv0M17ue74XtdQTyqKzuAYGiX9mAjOhkmNjib3bBUgK6mUY61+AHnXeSRobQkpY3/xIOS/omptw== +npm-programmatic@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/npm-programmatic/-/npm-programmatic-0.0.6.tgz#3c8f4dbb210efd65b99ee6a5ac76f27b4d5d6b78" + integrity sha1-PI9NuyEO/WW5nualrHbye01da3g= dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - npm-package-arg "^6.1.0" + bluebird "^3.4.1" npm-run-path@^2.0.0: version "2.0.2" @@ -3541,6 +6928,13 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" +nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.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" @@ -3554,12 +6948,17 @@ number-to-bn@1.7.0: bn.js "4.11.6" strip-hex-prefix "1.0.0" +"nwmatcher@>= 1.3.7 < 2.0.0": + version "1.4.4" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" + integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ== + oauth-sign@~0.9.0: version "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.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -3573,11 +6972,26 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" + integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== + +object-keys@^1.0.11: + 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@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -3585,6 +6999,34 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@^4.0.4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -3593,13 +7035,28 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -object.pick@^1.3.0: +object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +oboe@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.3.tgz#2b4865dbd46be81225713f4e9bfe4bcf4f680a4f" + integrity sha1-K0hl29Rr6BIlcT9Om/5Lz09oCk8= + dependencies: + http-https "^1.0.0" + oboe@2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" @@ -3614,13 +7071,20 @@ on-finished@~2.3.0: 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.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -3629,7 +7093,7 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1: +optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= @@ -3641,7 +7105,26 @@ optionator@^0.8.1: type-check "~0.3.2" wordwrap "~1.0.0" -original-require@1.0.1: +ora@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.0.0.tgz#8179e3525b9aafd99242d63cc206fd64732741d0" + integrity sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg== + dependencies: + chalk "^2.3.1" + cli-cursor "^2.1.0" + cli-spinners "^1.1.0" + log-symbols "^2.2.0" + strip-ansi "^4.0.0" + wcwidth "^1.0.1" + +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + +original-require@1.0.1, original-require@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" integrity sha1-DxMEcVhM0zURxew4yNWSE/msXiA= @@ -3651,6 +7134,13 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -3660,12 +7150,21 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4, osenv@^0.1.5: +osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -3673,6 +7172,15 @@ osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +output-file-sync@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + p-cancelable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" @@ -3683,11 +7191,21 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -3695,10 +7213,10 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== +p-limit@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== dependencies: p-try "^2.0.0" @@ -3716,13 +7234,6 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - p-timeout@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" @@ -3740,57 +7251,12 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pacote@^9.5.1: - version "9.5.4" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.4.tgz#8baa26f3d1326d13dc2fe0fe84040a364ae30aad" - integrity sha512-nWr0ari6E+apbdoN0hToTKZElO5h4y8DGFa2pyNA5GQIdcP0imC96bA0bbPw1gpeguVIiUgHHaAlq/6xfPp8Qw== - dependencies: - bluebird "^3.5.3" - cacache "^12.0.0" - figgy-pudding "^3.5.1" - get-stream "^4.1.0" - glob "^7.1.3" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - minimatch "^3.0.4" - minipass "^2.3.5" - mississippi "^3.0.0" - mkdirp "^0.5.1" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.1.12" - npm-pick-manifest "^2.2.3" - npm-registry-fetch "^4.0.0" - osenv "^0.1.5" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - protoduck "^5.0.1" - rimraf "^2.6.2" - safe-buffer "^5.1.2" - semver "^5.6.0" - ssri "^6.0.1" - tar "^4.4.8" - unique-filename "^1.1.1" - which "^1.3.1" - -parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= +parent-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" + integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA== dependencies: - cyclist "~0.2.2" - inherits "^2.0.3" - readable-stream "^2.1.5" + callsites "^3.0.0" parse-asn1@^5.0.0: version "5.1.1" @@ -3803,6 +7269,15 @@ parse-asn1@^5.0.0: evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -3821,11 +7296,35 @@ parse-headers@^2.0.0: for-each "^0.3.2" trim "0.0.1" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +parse5@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= + +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== + dependencies: + "@types/node" "*" + parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -3836,27 +7335,34 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + 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" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-exists@^4.0.0: - version "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.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= -path-key@^2.0.0: +path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= @@ -3866,12 +7372,50 @@ path-parse@^1.0.5, path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -pbkdf2@^3.0.3: +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + +pbkdf2@^3.0.3, pbkdf2@^3.0.9: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== @@ -3897,7 +7441,12 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pify@^2.3.0: +picomatch@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.0.tgz#0fd042f568d08b1ad9ff2d3ec0f0bfb3cb80e177" + integrity sha512-uhnEDzAbrcJ8R3g2fANnSuXZMBtkpSjxTTgn2LeSiQlfmq72enQJWdQllXW24MBLYnA1SBD2vfvx2o0Zw3Ielw== + +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -3907,6 +7456,11 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pify@^4.0.1: + version "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" @@ -3919,11 +7473,21 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + 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 sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +precond@0.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" + integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -3944,6 +7508,21 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +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== + +process-nextick-args@^2.0.0: + version "2.0.1" + 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-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" @@ -3954,38 +7533,18 @@ process@~0.5.1: resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= -progress@^2.0.3: +progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= - dependencies: - err-code "^1.0.0" - retry "^0.10.0" - -prompts@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db" - integrity sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg== - dependencies: - kleur "^3.0.2" - sisteransi "^1.0.0" - -protoduck@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== +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 sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= dependencies: - genfun "^5.0.0" + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" proxy-addr@~2.0.4: version "2.0.4" @@ -3995,12 +7554,17 @@ proxy-addr@~2.0.4: forwarded "~0.1.2" ipaddr.js "1.8.0" -pseudomap@^1.0.2: +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.1, pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24: +psl@^1.1.24, psl@^1.1.28: version "1.1.31" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== @@ -4017,6 +7581,54 @@ public-encrypt@^4.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 sha1-tkLdElXaN2pwa220+pYvX9t0wxs= + +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 sha1-pOzuAeMwFV6RJLu89HYfIbOPUfU= + 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 sha1-Xy867UethpGfAbEqLpnW8b13ZYE= + +pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: + version "3.6.9" + resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.9.tgz#c774724cd63bc0984c3695f74c819aa02e977320" + integrity sha512-hJn4POeBrkttshdNl0AoSCVjMVSuBwuHocMerUdoZ2+oIUzrWHFTwJMlbHND7OiKLVgvz6TFj8ZUVywUMXccbw== + +pull-window@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" + integrity sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA= + dependencies: + looper "^2.0.0" + pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -4033,7 +7645,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: +pumpify@^1.3.5: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== @@ -4052,7 +7664,7 @@ punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -4071,10 +7683,10 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -querystringify@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +querystring@0.2.0, querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= randomatic@^3.0.0: version "3.1.1" @@ -4085,13 +7697,20 @@ randomatic@^3.0.0: kind-of "^6.0.0" math-random "^1.0.1" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== dependencies: safe-buffer "^5.1.0" +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" @@ -4120,20 +7739,7 @@ raw-body@2.3.3: iconv-lite "0.4.23" unpipe "1.0.0" -rc-config-loader@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/rc-config-loader/-/rc-config-loader-2.0.4.tgz#fe23e26a87e2ec07541b29e7f37bfd75807a4c36" - integrity sha512-k06UzRbYDWgF4Mc/YrsZsmzSpDLuHoThJxep+vq5H09hiX8rbA5Ue/Ra0dwWm5MQvWYW4YBXgA186inNxuxidQ== - dependencies: - debug "^4.1.1" - js-yaml "^3.12.0" - json5 "^2.1.0" - object-assign "^4.1.0" - object-keys "^1.0.12" - path-exists "^3.0.0" - require-from-string "^2.0.2" - -rc@^1.2.7, rc@^1.2.8, rc@~1.2.7: +rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -4143,7 +7749,61 @@ rc@^1.2.7, rc@^1.2.8, rc@~1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +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 sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^1.0.33: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + 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.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -4156,7 +7816,26 @@ rc@^1.2.7, rc@^1.2.8, rc@~1.2.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdirp@^2.0.0: +readable-stream@^3.0.6: + version "3.1.1" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" + integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA== + dependencies: + inherits "^2.0.3" + 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 sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.0.0, readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== @@ -4172,42 +7851,164 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== +redux-cli-logger@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/redux-cli-logger/-/redux-cli-logger-2.1.0.tgz#7e546502a4b08c7fac4fe2faee2326a6326cb4a1" + integrity sha512-75mVsggAJRSykWy2qxdGI7osocDWvc3RCMeN93hlvS/FxgdRww12NaXslez+W6gBOrSJKO7W16V0IzuISSfCxg== dependencies: - is-equal-shallow "^0.1.3" + colors "^1.1.2" -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== +redux-devtools-core@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/redux-devtools-core/-/redux-devtools-core-0.2.1.tgz#4e43cbe590a1f18c13ee165d2d42e0bc77a164d8" + integrity sha512-RAGOxtUFdr/1USAvxrWd+Gq/Euzgw7quCZlO5TgFpDfG7rB5tMhZUrNyBjpzgzL2yMk0eHnPYIGm7NkIfRzHxQ== dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" + get-params "^0.1.2" + jsan "^3.1.13" + lodash "^4.17.11" + nanoid "^2.0.0" + remotedev-serialize "^0.1.8" -registry-auth-token@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be" - integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw== +redux-devtools-instrument@^1.9.4: + version "1.9.4" + resolved "https://registry.yarnpkg.com/redux-devtools-instrument/-/redux-devtools-instrument-1.9.4.tgz#36d2ae0f155c6a664e1393ef1203a009b3183a7e" + integrity sha512-jS/xyhepBmtsqAt+bIEusVAtgNTcYl2ac7DAfCDrTSX84C77D0DMjpCh45RntaVfa2bVpNkn9vKWUMQBzTKNRg== dependencies: - rc "^1.2.8" - safe-buffer "^5.0.1" + lodash "^4.2.0" + symbol-observable "^1.0.2" -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== +redux-saga@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.0.0.tgz#acb8b3ed9180fecbe75f342011d75af3ac11045b" + integrity sha512-GvJWs/SzMvEQgeaw6sRMXnS2FghlvEGsHiEtTLpJqc/FHF3I5EE/B+Hq5lyHZ8LSoT2r/X/46uWvkdCnK9WgHA== + dependencies: + "@redux-saga/core" "^1.0.0" + +"redux@>=0.10 <5": + version "4.0.4" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.4.tgz#4ee1aeb164b63d6a1bcc57ae4aa0b6e6fa7a3796" + integrity sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +redux@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" + integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== + dependencies: + lodash "^4.2.1" + lodash-es "^4.2.1" + loose-envify "^1.1.0" + symbol-observable "^1.0.3" + +regenerate@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + +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-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + +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-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +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: - rc "^1.2.8" + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + 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 sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +remote-redux-devtools@^0.5.12: + version "0.5.16" + resolved "https://registry.yarnpkg.com/remote-redux-devtools/-/remote-redux-devtools-0.5.16.tgz#95b1a4a1988147ca04f3368f3573b661748b3717" + integrity sha512-xZ2D1VRIWzat5nsvcraT6fKEX9Cfi+HbQBCwzNnUAM8Uicm/anOc60XGalcaDPrVmLug7nhDl2nimEa3bL3K9w== + dependencies: + jsan "^3.1.13" + querystring "^0.2.0" + redux-devtools-core "^0.2.1" + redux-devtools-instrument "^1.9.4" + rn-host-detect "^1.1.5" + socketcluster-client "^14.2.1" + +remotedev-serialize@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/remotedev-serialize/-/remotedev-serialize-0.1.8.tgz#c99cb184e7f71a906162abc404be8ce33810205f" + integrity sha512-3YG/FDcOmiK22bl5oMRM8RRnbGrFEuPGjbcDG+z2xi5aQaNQNZ8lqoRnZTwXVfaZtutXuiAQOgPRrogzQk8edg== + dependencies: + jsan "^3.1.13" -remove-trailing-separator@^1.0.1: +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= @@ -4222,21 +8023,61 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -req-cwd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-1.0.1.tgz#0d73aeae9266e697a78f7976019677e76acf0fff" - integrity sha1-DXOurpJm5penj3l2AZZ352rPD/8= +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= dependencies: - req-from "^1.0.1" + is-finite "^1.0.0" -req-from@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/req-from/-/req-from-1.0.1.tgz#bf81da5147947d32d13b947dc12a58ad4587350e" - integrity sha1-v4HaUUeUfTLRO5R9wSpYrUWHNQ4= +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + +request-promise-core@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" + integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= + dependencies: + lodash "^4.13.1" + +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== + dependencies: + lodash "^4.17.11" + +request-promise-native@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + dependencies: + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request-promise@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.2.tgz#d1ea46d654a6ee4f8ee6a4fea1018c22911904b4" + integrity sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ= dependencies: - resolve-from "^2.0.0" + bluebird "^3.5.0" + request-promise-core "1.1.1" + stealthy-require "^1.1.0" + tough-cookie ">=2.3.3" -request@^2.79.0, request@^2.85.0, request@^2.88.0: +request@^2.12.0, request@^2.55.0, request@^2.67.0, request@^2.79.0, request@^2.85.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -4267,6 +8108,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +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 sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= + 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" @@ -4277,21 +8123,28 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -requireg@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/requireg/-/requireg-0.2.2.tgz#437e77a5316a54c9bcdbbf5d1f755fe093089830" - integrity sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg== +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== + +reselect-tree@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/reselect-tree/-/reselect-tree-1.2.0.tgz#0851198f27bdfea08db98027bb1b65f41447e95a" + integrity sha512-jdM46p0LKFmSpdW9mUrgY8WIbK9icIWPdWrP1WcFMklroq2hHaIHrJLbytlF+jlVFpV5lAbxoAuUkQ9XbUys8A== dependencies: - nested-error-stacks "~2.0.1" - rc "~1.2.7" - resolve "~1.7.1" + debug "^3.1.0" + esdoc "^1.0.4" + json-pointer "^0.6.0" + reselect "^3.0.1" + source-map-support "^0.5.3" -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +reselect@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" + integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= -resolve-dir@^1.0.0: +resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= @@ -4299,10 +8152,17 @@ resolve-dir@^1.0.0: expand-tilde "^2.0.0" global-modules "^1.0.0" -resolve-from@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" - integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= +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-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" resolve-url@^0.2.1: version "0.2.1" @@ -4321,10 +8181,10 @@ resolve@^1.1.6: dependencies: path-parse "^1.0.6" -resolve@^1.10.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== +resolve@^1.1.7, resolve@^1.4.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" @@ -4342,23 +8202,57 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.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 sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= + 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.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= +reusify@^1.0.0: + version "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.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= + +rimraf@~2.4.3: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" + integrity sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto= + dependencies: + glob "^6.0.1" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -4367,29 +8261,82 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= +rlp@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.1.0.tgz#e4f9886d5a982174f314543831e36e1a658460f9" + integrity sha512-93U7IKH5j7nmXFVg19MeNBGzQW5uXW1pmCuKY8veeKIhYTE32C2d0mOegfiIAfXcHOKJjjPlJisn8iHDF5AezA== + dependencies: + safe-buffer "^5.1.1" + +rlp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.1.tgz#9cacf53ad2579163cc56fba64b1f4336f1f2fa46" + integrity sha512-nqB/qy+YjXdp/zj1CjCiDwfLMBPv/XFDol0ir/7O/+Ix90++rvi+QoK1CDJcn8JoqCu2WrPPeRucu4qyIDzALg== + dependencies: + safe-buffer "^5.1.1" + +rlp@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.4.tgz#d6b0e1659e9285fc509a5d169a9bd06f704951c1" + integrity sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw== dependencies: - aproba "^1.1.1" + bn.js "^4.11.1" -rxjs@^6.4.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== +rn-host-detect@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/rn-host-detect/-/rn-host-detect-1.1.5.tgz#fbecb982b73932f34529e97932b9a63e58d8deb6" + integrity sha512-ufk2dFT3QeP9HyZ/xTuMtW27KnFy815CYitJMqQm+pgG3ZAtHBsrU8nXizNKkqXGy3bQmhEoloVbrfbvMJMqkg== + +rsvp@^3.3.3: + version "3.6.2" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + +rustbn.js@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.1.2.tgz#979fa0f9562216dd667c9d2cd179ae5d13830eff" + integrity sha512-bAkNqSHYdJdFsBC7Z11JgzYktL31HIpB2o70jZcGiL1U1TVtPyvaVhDrGWwS8uZtaqwW2k6NOPGZCqW/Dgh5Lg== + +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +rxjs@^6.1.0: + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== dependencies: tslib "^1.9.0" -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-eval@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/safe-eval/-/safe-eval-0.4.1.tgz#e54ba5a1bbdec795d488f6c8765e0c2a78b4cdc0" + integrity sha512-wmiu4RSYVZ690RP1+cv/LxfPK1dIlEN35aW7iv4SMYdqDrHbkll4+NJcHmKm7PbCuI1df1otOcPwgcc2iFR85g== + +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@^1.1.0: version "1.1.0" @@ -4403,11 +8350,43 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: +sane@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.0.2.tgz#5bd4a3f1268fd7a921a2dc657047de635c8f8f25" + integrity sha512-/3STCUfNSgMVpoREJc1i6ajKFlYZ5OflzZTOhlqPLa+01Ey+QR9iGZK7K5/qIRsQbEDCvqEJH/PL7yZywmnWsA== + dependencies: + anymatch "^2.0.0" + capture-exit "^1.2.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + +sax@^1.1.4, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +sc-channel@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/sc-channel/-/sc-channel-1.2.0.tgz#d9209f3a91e3fa694c66b011ce55c4ad8c3087d9" + integrity sha512-M3gdq8PlKg0zWJSisWqAsMmTVxYRTpVRqw4CWAdKBgAfVKumFcTjoCV0hYu7lgUXccCtCD8Wk9VkkE+IXCxmZA== + dependencies: + component-emitter "1.2.1" + +sc-errors@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-1.4.1.tgz#53e80030fe647e133d73b51eaa7d2b0f7591fd5b" + integrity sha512-dBn92iIonpChTxYLgKkIT/PCApvmYT6EPIbRvbQKTgY6tbEbIy8XVUv4pGyKwEK4nCmvX4TKXcN0iXC6tNW6rQ== + +sc-formatter@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-3.0.2.tgz#9abdb14e71873ce7157714d3002477bbdb33c4e6" + integrity sha512-9PbqYBpCq+OoEeRQ3QfFIGE6qwjjBcd2j7UjgDlhnZbtSnuGgHdcRklPKYGuYFH82V/dwd+AIpu8XvA1zqTd+A== + scrypt-js@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" @@ -4426,6 +8405,14 @@ scrypt.js@0.2.0: scrypt "^6.0.2" scryptsy "^1.2.1" +scrypt.js@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.1.tgz#cc3f751933d6bac7a4bedf5301d7596e8146cdcd" + integrity sha512-XMoqxwABdotuW+l+qACmJ/h0kVSCgMPZXpbncA/zyBO90z/NnDISzVw+xJ4tUY+X/Hh0EFT269OYHm26VCPgmA== + dependencies: + scrypt "^6.0.2" + scryptsy "^1.2.1" + scrypt.js@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.3.0.tgz#6c62d61728ad533c8c376a2e5e3e86d41a95c4c0" @@ -4442,6 +8429,11 @@ scrypt@^6.0.2: dependencies: nan "^2.0.8" +scryptsy@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== + scryptsy@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" @@ -4449,6 +8441,30 @@ scryptsy@^1.2.1: dependencies: pbkdf2 "^3.0.3" +secp256k1@^3.0.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.6.1.tgz#f0475d42096218ff00e45a127242abdff9285335" + integrity sha512-utLpWv4P4agEw7hakR73wlWX0NBmC5t/vkJ0TAfTyvETAUzo0tm6aFKPYetVYRaVubxMeWm5Ekv9ETwOgcDCqw== + dependencies: + bindings "^1.2.1" + bip66 "^1.1.3" + bn.js "^4.11.3" + create-hash "^1.1.2" + drbg.js "^1.0.1" + elliptic "^6.2.3" + nan "^2.2.1" + safe-buffer "^5.1.0" + +seedrandom@2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" + integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== + +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== + seek-bzip@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" @@ -4456,32 +8472,32 @@ seek-bzip@^1.0.5: dependencies: commander "~2.8.1" -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= - dependencies: - semver "^5.0.3" +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== -semver-utils@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2" - integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA== +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= + dependencies: + sver-compat "^1.5.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== -semver@^5.0.3, semver@^5.4.1, semver@^5.5.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" + integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== -semver@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +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.16.2: version "0.16.2" @@ -4528,6 +8544,11 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +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 sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" @@ -4618,15 +8639,24 @@ simple-get@^2.7.0: once "^1.3.1" simple-concat "^1.0.0" -sisteransi@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.2.tgz#ec57d64b6f25c4f26c0e2c7dd23f2d7f12f7e418" - integrity sha512-ZcYcZcT69nSLAR2oLN2JwNmLkJEKGooFMCdvOkFrToUt/WfcRWqhIg4P4KwY4dmLbuyXIx4o4YmPsvMRJYJd/w== +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= -smart-buffer@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.2.tgz#5207858c3815cc69110703c6b94e46c15634395d" - integrity sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7" + integrity sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" snapdragon-node@^2.0.1: version "2.1.1" @@ -4658,21 +8688,21 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== - dependencies: - agent-base "~4.2.1" - socks "~2.3.2" - -socks@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.2.tgz#ade388e9e6d87fdb11649c15746c578922a5883e" - integrity sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ== - dependencies: - ip "^1.1.5" - smart-buffer "4.0.2" +socketcluster-client@^14.2.1: + version "14.2.1" + resolved "https://registry.yarnpkg.com/socketcluster-client/-/socketcluster-client-14.2.1.tgz#f5cc896fb713006deb2aea6727440c2bff5d43cb" + integrity sha512-peCBfewW1silqvLecFpLz5u2xr85r8b7A24mXaNTsXLnG9QR3zxecYtKS/odszzJSu2j2YyQPR4avy77tZSjZw== + dependencies: + base-64 "0.1.0" + clone "2.1.1" + component-emitter "1.2.1" + linked-list "0.1.0" + querystring "0.2.0" + sc-channel "^1.2.0" + sc-errors "^1.4.1" + sc-formatter "^3.0.1" + uuid "3.2.1" + ws "5.1.1" sol-digger@0.0.2: version "0.0.2" @@ -4684,15 +8714,33 @@ sol-explore@1.6.1: resolved "https://registry.yarnpkg.com/sol-explore/-/sol-explore-1.6.1.tgz#b59f073c69fe332560d5a10c32ba8ca7f2986cfb" integrity sha1-tZ8HPGn+MyVg1aEMMrqMp/KYbPs= -sol-explore@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/sol-explore/-/sol-explore-1.6.2.tgz#43ae8c419fd3ac056a05f8a9d1fb1022cd41ecc2" - integrity sha1-Q66MQZ/TrAVqBfip0fsQIs1B7MI= +solc@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.0.tgz#2deb2ae992acac3afb909f85c38d00f01dcb335e" + integrity sha512-mdLHDl9WeYrN+FIKcMc9PlPfnA9DG9ur5QpCDKcv6VC4RINAsTF4EMuXMZMKoQTvZhtLyJIVH/BZ+KU830Z8Xg== + dependencies: + fs-extra "^0.30.0" + keccak "^1.0.2" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + yargs "^11.0.0" + +solc@^0.4.2: + version "0.4.25" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.25.tgz#06b8321f7112d95b4b903639b1138a4d292f5faa" + integrity sha512-jU1YygRVy6zatgXrLY2rRm7HW1d7a8CkkEgNJwvH2VLpWhMFsMdWcJn6kUqZwcSz/Vm+w89dy7Z/aB5p6AFTrg== + 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.5.8: - version "0.5.8" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.8.tgz#a0aa2714082fc406926f5cb384376d7408080611" - integrity sha512-RQ2SlwPBOBSV7ktNQJkvbiQks3t+3V9dsqD014EdstxnJzSxBuOvbt3P5QXpNPYW1DsEmF7dhOaT3JL7yEae/A== +solc@^0.5.0: + version "0.5.10" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.10.tgz#e57d789b1028f3d35f7989e5134d6ddc0e3b32aa" + integrity sha512-Stdrh/MDkopsXYPRzPehTNYuV80Grr2CnQMuFvWj+EeRVbe3piGHxW47KebWn1sGdmK8FLaMfUehccqJP0KovQ== dependencies: command-exists "^1.2.8" fs-extra "^0.30.0" @@ -4703,22 +8751,29 @@ solc@0.5.8: tmp "0.0.33" yargs "^11.0.0" -solidity-coverage@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.6.3.tgz#c7e7afa0792ae1fe3c6039735e2a0ad5cb2f0aca" - integrity sha512-mHc8xtcVZwkANAWQrOROyD7eAEE8L5kUE/3KEvNp/y7+zR1/u2f8ouNKp5hKeCAmHhm7df7X3pLGINmnKili9w== +solidity-coverage@^0.7.0-beta.2: + version "0.7.0-beta.2" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.0-beta.2.tgz#e50b3a3ee8930c2cdbc0382187f11c1e3fef8096" + integrity sha512-2o38EZ6Hd013yyRURnUtfP9qaHbNTj+0Ahfq6BrPYu6i695euxkO/ypudgg0Bve93IX08xXEvXKt78Y5x7P26A== dependencies: + "@truffle/provider" "^0.1.17" + chalk "^2.4.2" death "^1.1.0" - ethereumjs-testrpc-sc "6.4.5-sc.3" + detect-port "^1.3.0" + fs-extra "^8.1.0" + ganache-core-sc "2.7.0-sc.0" + ghost-testrpc "^0.0.2" + global-modules "^2.0.0" + globby "^10.0.1" istanbul "^0.4.5" - keccakjs "^0.2.1" - req-cwd "^1.0.1" + jsonschema "^1.2.4" + node-dir "^0.1.17" + node-emoji "^1.10.0" + pify "^4.0.1" shelljs "^0.8.3" - sol-explore "^1.6.2" solidity-parser-antlr "^0.4.7" - tree-kill "^1.2.0" - web3 "1.0.0-beta.50" - web3-eth-abi "1.0.0-beta.50" + web3 "1.2.1" + web3-utils "^1.0.0" solidity-parser-antlr@^0.4.0: version "0.4.2" @@ -4726,11 +8781,20 @@ solidity-parser-antlr@^0.4.0: integrity sha512-0OKT2YKZAqPe14HN7Nbo24hjmnyUYh92UjyZG0Zz2rpQhl/w8asX8qHb+ASSXfayQaiW8g9zGIupXEE355tOQQ== solidity-parser-antlr@^0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.7.tgz#8e18867c95a956958ed008371e43f9e571dee6af" - integrity sha512-iVjNhgqkXw+o+0E+xoLcji+3KuXLe8Rm8omUuVGhsV14+ZsTwQ70nhBRXg8O3t9xwdS0iST1q9NJ5IqHnqpWkA== + version "0.4.11" + resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.11.tgz#af43e1f13b3b88309a875455f5d6e565b05ee5f1" + integrity sha512-4jtxasNGmyC0midtjH/lTFPZYvTTUMy6agYcF+HoMnzW8+cqo3piFrINb4ZCzpPW+7tTVFCGa5ubP34zOzeuMg== + +solidity-sha3@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/solidity-sha3/-/solidity-sha3-0.4.1.tgz#17577e93f6cfd58489c4ec7f2da3047530329ec1" + integrity sha1-F1d+k/bP1YSJxOx/LaMEdTAynsE= dependencies: - npm-check-updates "^3.1.11" + babel-cli "*" + babel-preset-es2015 "*" + babel-register "*" + left-pad "^1.1.1" + web3 "^0.16.0" solium-plugin-security@0.1.1: version "0.1.1" @@ -4757,7 +8821,15 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.9: +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.5.9, source-map-support@^0.5.3: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== @@ -4765,12 +8837,19 @@ source-map-support@0.5.9: 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-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.6: +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 sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -4787,10 +8866,15 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -spawn-please@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/spawn-please/-/spawn-please-0.3.0.tgz#db338ec4cff63abc69f1d0e08cee9eb8bebd9d11" - integrity sha1-2zOOxM/2Orxp8dDgjO6euL69nRE= +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + +spawn-args@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/spawn-args/-/spawn-args-0.1.0.tgz#3e0232a0571b387907f8b3f544aa531c6224848c" + integrity sha1-PgIyoFcbOHkH+LP1RKpTHGIkhIw= spdx-correct@^3.0.0: version "3.1.0" @@ -4845,12 +8929,10 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.0, ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= static-extend@^0.1.1: version "0.1.2" @@ -4870,25 +8952,35 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" +stealthy-require@^1.1.0, stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +stream-to-pull-stream@^1.7.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz#757609ae1cebd33c7432d4afbe31ff78650b9dde" + integrity sha1-dXYJrhzr0zx0MtSvvjH/eGULnd4= + dependencies: + looper "^3.0.0" + pull-stream "^3.2.3" + 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 sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -string-width@^1.0.1: +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -4897,7 +8989,7 @@ string-width@^1.0.1: 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@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.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== @@ -4905,7 +8997,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -4914,6 +9006,27 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string.prototype.trim@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" + integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.0" + function-bind "^1.0.2" + +string_decoder@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" + integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + dependencies: + safe-buffer "~5.1.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 sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -4935,13 +9048,32 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.1.0: +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" + +strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + 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" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" @@ -4961,7 +9093,7 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-json-comments@~2.0.1: +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -4999,7 +9131,34 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -swarm-js@0.1.39, swarm-js@^0.1.39: +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +swarm-js@0.1.37: + version "0.1.37" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.37.tgz#27d485317a340bbeec40292af783cc10acfa4663" + integrity sha512-G8gi5fcXP/2upwiuOShJ258sIufBVztekgobr3cVgYXObZwJ5AXLqZn52AI+/ffft29pJexF9WNdUxjlkVehoQ== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + decompress "^4.0.0" + eth-lib "^0.1.26" + fs-extra "^2.1.2" + fs-promise "^2.0.0" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar.gz "^1.0.5" + xhr-request-promise "^0.1.2" + +swarm-js@0.1.39: version "0.1.39" resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" integrity sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg== @@ -5017,7 +9176,51 @@ swarm-js@0.1.39, swarm-js@^0.1.39: tar "^4.0.2" xhr-request-promise "^0.1.2" -tar-stream@^1.5.2: +symbol-observable@^1.0.2, symbol-observable@^1.0.3, symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +"symbol-tree@>= 3.1.0 < 4.0.0": + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= + +table@^5.0.2: + version "5.1.1" + resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837" + integrity sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw== + dependencies: + ajv "^6.6.1" + lodash "^4.17.11" + slice-ansi "2.0.0" + string-width "^2.1.1" + +taffydb@2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.7.3.tgz#2ad37169629498fca5bc84243096d3cde0ec3a34" + integrity sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ= + +tape@^4.4.0, tape@^4.6.3, tape@^4.8.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.9.2.tgz#f233e40f09dc7e00fcf9b26755453c3822ad28c0" + integrity sha512-lPXKRKILZ1kZaUy5ynWKs8ATGSUO7HAFHCFnBam6FaGSqPdOwMWbxXHq4EXFLE8WRTleo/YOMXkaUTRmTB1Fiw== + dependencies: + deep-equal "~1.0.1" + defined "~1.0.0" + for-each "~0.3.3" + function-bind "~1.1.1" + glob "~7.1.2" + has "~1.0.3" + inherits "~2.0.3" + minimist "~1.2.0" + object-inspect "~1.6.0" + resolve "~1.7.1" + resumer "~0.0.0" + string.prototype.trim "~1.1.2" + through "~2.3.8" + +tar-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== @@ -5030,6 +9233,26 @@ tar-stream@^1.5.2: to-buffer "^1.1.1" xtend "^4.0.0" +tar.gz@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/tar.gz/-/tar.gz-1.0.7.tgz#577ef2c595faaa73452ef0415fed41113212257b" + integrity sha512-uhGatJvds/3diZrETqMj4RxBR779LKlIE74SsMcn5JProZsfs9j0QBwWO1RW+IWNJxS2x8Zzra1+AW6OQHWphg== + dependencies: + bluebird "^2.9.34" + commander "^2.8.1" + fstream "^1.0.8" + mout "^0.11.0" + tar "^2.1.1" + +tar@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + tar@^4: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" @@ -5043,32 +9266,55 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -tar@^4.0.2, tar@^4.4.8: - version "4.4.10" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" - integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== +tar@^4.0.2: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.5" + minipass "^2.8.6" minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" yallist "^3.0.3" -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= +temp@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k= dependencies: - execa "^0.7.0" + os-tmpdir "^1.0.0" + rimraf "~2.2.6" text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through2@^2.0.0: +thenify-all@^1.0.0, thenify-all@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0, through2@^2.0.3, 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== @@ -5076,28 +9322,58 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -"through@>=2.2.7 <3", through@^2.3.6: +through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= -tmp@0.0.33: +tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 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" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + to-buffer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== +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 sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + 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" @@ -5118,6 +9394,13 @@ to-regex-range@^2.1.0: 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" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + 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" @@ -5128,6 +9411,30 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + +tough-cookie@>=2.3.3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.0.tgz#d2bceddebde633153ff20a52fa844a0dc71dacef" + integrity sha512-LHMvg+RBP/mAVNqVbOX8t+iJ+tqhBA/t49DuI7+IDAWHrASnesqSu1vWbKB7UrE2yk+HMFUBMadRGMkB4VCfog== + dependencies: + ip-regex "^3.0.0" + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^2.2.0, tough-cookie@^2.3.3: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -5136,38 +9443,372 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -tree-kill@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" - integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q== +tr46@~0.0.1: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + +treeify@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= -truffle-config@^1.1.17: - version "1.1.17" - resolved "https://registry.yarnpkg.com/truffle-config/-/truffle-config-1.1.17.tgz#5f411f453c34809f99373c6ef223608d6f3f4d6e" - integrity sha512-XayW+x0o3HrPY74UXkmD1kMhyRftXUzBb2UEE5aUnlLr4HEsY4OoJPoMecgwLoOqC3kRJNNXhHtJqJv6w9S1RA== +truffle-artifactor@^2.1.2: + version "2.1.5" + resolved "https://registry.yarnpkg.com/truffle-artifactor/-/truffle-artifactor-2.1.5.tgz#939d6cb333984b56529850e03c3ddaca49006870" + integrity sha1-k51sszOYS1ZSmFDgPD3aykkAaHA= + dependencies: + async "^1.5.2" + fs-extra "^1.0.0" + lodash "^4.11.2" + truffle-contract "^2.0.3" + truffle-contract-schema "^0.0.5" + +truffle-artifactor@^4.0.22, truffle-artifactor@^4.0.4: + version "4.0.22" + resolved "https://registry.yarnpkg.com/truffle-artifactor/-/truffle-artifactor-4.0.22.tgz#3ca2061842ac0803b83538a11126fd2d8480d4e6" + integrity sha512-jqgLahO/29TnWvBZAj9Vo58LUs82fR5FcPvof5sy8q+b4y/nRc+v4cOWFYIZPkLo8sRRotN/U0T17S7CyrR9wQ== + dependencies: + fs-extra "6.0.1" + lodash "4.17.11" + truffle-contract-schema "^3.0.11" + +truffle-blockchain-utils@^0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/truffle-blockchain-utils/-/truffle-blockchain-utils-0.0.10.tgz#18b772673635a95a893f7083f7be6bd62227462b" + integrity sha512-gVvagLCvYD0QXfnkxy6I48P6O+d7TEY0smc2VFuwldl1/clLVWE+KfBO/jFMaAz+nupTQeKvPhNTeyh3JAsCeA== + +truffle-blockchain-utils@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/truffle-blockchain-utils/-/truffle-blockchain-utils-0.0.3.tgz#ae8a111ec124d96504f0e042c6f205c0b3817e29" + integrity sha1-rooRHsEk2WUE8OBCxvIFwLOBfik= + dependencies: + web3 "^0.20.1" + +truffle-blockchain-utils@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/truffle-blockchain-utils/-/truffle-blockchain-utils-0.0.5.tgz#a4e5c064dadd69f782a137f3d276d21095da7a47" + integrity sha1-pOXAZNrdafeCoTfz0nbSEJXaekc= + +truffle-box@^1.0.14: + version "1.0.29" + resolved "https://registry.yarnpkg.com/truffle-box/-/truffle-box-1.0.29.tgz#dd785925541f2bb024e0fe34276d1f53af6546e6" + integrity sha512-QdhEIAae+Jdf/QvheOFrz0gVaR09Sy9Q36FG2lCJVmrA0hxTT+JWJxQ7EXn3CyZD03KGy8ORUHyDAJX8bX/QUA== + dependencies: + fs-extra "6.0.1" + github-download "^0.5.0" + ora "^3.0.0" + request "^2.85.0" + request-promise-native "^1.0.7" + tmp "0.0.33" + truffle-config "^1.1.13" + vcsurl "^0.1.1" + +truffle-code-utils@^1.1.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/truffle-code-utils/-/truffle-code-utils-1.2.4.tgz#19acbc225a5c99081c7aa4bbda122f6fbf2d27e9" + integrity sha512-MtIusUMxJeJlOqoqda4DYJ86gqSGDVMGiqhVEVgHL2J5L4plci/uePgYROajklXE9H/g6u7yotnAKOhCdTB9/A== + +truffle-compile-vyper@^1.0.20: + version "1.0.20" + resolved "https://registry.yarnpkg.com/truffle-compile-vyper/-/truffle-compile-vyper-1.0.20.tgz#3984ffb17ca2bc9a4f207e1d930d0a27e22ff9f6" + integrity sha512-LkF+puWaSg+1AjMl/hWrQS2DlbrB3rDuN3Ap974gXTwagLUDc4yvmN6luQ3Wd5Irn89ugX6lYrzXaETfrEsD+Q== + dependencies: + async "2.6.1" + colors "^1.1.2" + eslint "^5.5.0" + minimatch "^3.0.4" + truffle-compile "^4.1.3" + +truffle-compile@^4.0.4, truffle-compile@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/truffle-compile/-/truffle-compile-4.1.3.tgz#698a650d27b961b12e0594c078ec870a931eafde" + integrity sha512-pCMhw3r5+M9RNe37/Hvzjk8FrOvTXm3qpuGufynQCMWYcsOwLPyLrMRmgtTWL5sABP42JuNpM4xrfBDqatmv6Q== + dependencies: + colors "^1.1.2" + debug "^4.1.0" + fs-extra "^8.0.1" + ora "^3.0.0" + original-require "^1.0.1" + request "^2.85.0" + request-promise "^4.2.2" + require-from-string "^2.0.2" + semver "^5.6.0" + solc "^0.5.0" + truffle-config "^1.1.13" + truffle-contract-sources "^0.1.5" + truffle-error "^0.0.5" + truffle-expect "^0.0.9" + +truffle-config@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/truffle-config/-/truffle-config-1.1.1.tgz#b5b479ede08eede989cc4cf97ca454014d1bb41a" + integrity sha512-ErCQbFvjnWAENPqCjwBu026YAMKzLV2XsEOHV29nPF6wlHFfPEZzFLk0oWBemHs/k8Hmy+srSZw+ba88zYBWCQ== dependencies: configstore "^4.0.0" find-up "^2.1.0" - lodash "^4.17.13" + lodash "4.17.10" original-require "1.0.1" + truffle-error "^0.0.3" + truffle-provider "^0.1.1" + +truffle-config@^1.1.13, truffle-config@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/truffle-config/-/truffle-config-1.1.13.tgz#fbfaab1152ca0373603ea7cc5c1ecf4c6cb3fa2c" + integrity sha512-ZjaeDFQfWIuqZ2tb+pGw1YXuHfOtukz/+803Ukl5WahkUlpPXKM4I542GyKw+U5lWASFviH0L9zGM3DhKmF9qQ== + dependencies: + configstore "^4.0.0" + find-up "^2.1.0" + lodash "4.17.11" + original-require "1.0.1" + truffle-error "^0.0.5" + truffle-provider "^0.1.10" + +truffle-contract-schema@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/truffle-contract-schema/-/truffle-contract-schema-0.0.5.tgz#5e9d20bd0bf2a27fe94310748249d484eee49961" + integrity sha1-Xp0gvQvyon/pQxB0gknUhO7kmWE= + dependencies: + crypto-js "^3.1.9-1" + +truffle-contract-schema@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/truffle-contract-schema/-/truffle-contract-schema-2.0.2.tgz#9db59e3a5ea85b63dca453a2dba9897c2c3523fd" + integrity sha512-8mYAu0Y7wgMqcIa612dxiN9pzr6rq2YxZCzPizvqyDq+/rGWy8s0irl/T7i92a/4ME1V5ddNFf3+86uIlYbPUg== + dependencies: + ajv "^5.1.1" + crypto-js "^3.1.9-1" + debug "^3.1.0" + +truffle-contract-schema@^3.0.11: + version "3.0.11" + resolved "https://registry.yarnpkg.com/truffle-contract-schema/-/truffle-contract-schema-3.0.11.tgz#202f6982b51bcad032b7ff2a8d5837853fb69301" + integrity sha512-YcgSOlrufi6VtnXg8LU5Ma7JHzHpnZQxzB1PSWnb+JOTc1nL02XRoCWTgEO7PkJnFgf6yrwOpW0ajSwHk3zQ7Q== + dependencies: + ajv "^6.10.0" + crypto-js "^3.1.9-1" + debug "^4.1.0" + +truffle-contract-sources@^0.1.2, truffle-contract-sources@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/truffle-contract-sources/-/truffle-contract-sources-0.1.5.tgz#cacd788b7904d53747fa88d04412b77a1826b46f" + integrity sha512-skhZ8s3sLM4PyRFqn8zbBWG2z1P5zX7ndQPYokr2aiez8o44x5hmUoPeiXgKlMYIyR1Y1zOyNpaVEZyBY1+4Cw== + dependencies: + debug "^4.1.0" + glob "^7.1.2" + +truffle-contract@4.0.0-next.0: + version "4.0.0-next.0" + resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-4.0.0-next.0.tgz#717b5921331ec70ca4f58a3d29ae955db80163fe" + integrity sha512-3YmR9isa58DeTGZzZVCIeXqPG5XcO9D5QjLuoVIqxNW6sKPDgSmpsI9rs75im9hOrnP0tbLirQBaibUMIu9Dew== + dependencies: + ethereumjs-util "^5.2.0" + ethjs-abi "0.1.8" + truffle-blockchain-utils "^0.0.5" + truffle-contract-schema "^2.0.1" + truffle-error "^0.0.3" + uglify-es "^3.3.9" + web3 "1.0.0-beta.35" + web3-core-promievent "1.0.0-beta.35" + web3-eth-abi "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + +truffle-contract@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-2.0.5.tgz#3394df90ffa927d106ae3b36b33c6debf9117491" + integrity sha512-ItnN85wh4qVYPg6T4CpubI40c8dWEArtUcWcDoZ7xzj9DL7cwxqstJ0yRxyQIh4u8SRSlrOtm1dh0B7R8jtG+w== + dependencies: + ethjs-abi "0.1.8" + truffle-blockchain-utils "^0.0.3" + truffle-contract-schema "^0.0.5" + web3 "^0.20.1" + +truffle-contract@^4.0.23, truffle-contract@^4.0.5: + version "4.0.23" + resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-4.0.23.tgz#a1e5a83972552bf81e879323eb1990970496db9f" + integrity sha512-aTiKSRoum01n9G77ESAqRvCoK8S5FBjNdN1NKkibAUfcdZTIm2VmFcmW702nKGX8hMAU+pSY3cXNaI8VhIdAfQ== + dependencies: + bignumber.js "^7.2.1" + ethers "^4.0.0-beta.1" + truffle-blockchain-utils "^0.0.10" + truffle-contract-schema "^3.0.11" truffle-error "^0.0.5" - truffle-provider "^0.1.13" + truffle-interface-adapter "^0.1.6" + web3 "1.0.0-beta.37" + web3-core-promievent "1.0.0-beta.37" + web3-eth-abi "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +truffle-core@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/truffle-core/-/truffle-core-5.0.4.tgz#74eddbb7806158a01931338d864f5d2fdefa607d" + integrity sha512-uok80gIdUbbX06zcPf/BCbIKgEeX0eaxHgBJELtEbgjhO97urpl0+tK4QMjqOBDietaE8SpVNnyoYNM2mQAuPQ== + dependencies: + app-module-path "^2.2.0" + async "2.6.1" + bip39 "^2.2.0" + chai "4.2.0" + colors "^1.1.2" + command-exists "^1.2.8" + configstore "^4.0.0" + cpr "^0.4.3" + debug "^4.1.0" + del "^2.2.0" + diff "1.4.0" + ethereumjs-wallet "^0.6.2" + ethpm "0.0.16" + ethpm-registry "0.1.0-next.2" + fs-extra "6.0.1" + ganache-core "2.3.3" + hdkey "^1.1.0" + lodash "4.17.11" + mkdirp "^0.5.1" + mocha "5.2.0" + node-dir "0.1.17" + node-emoji "^1.8.1" + node-ipc "^9.1.1" + original-require "1.0.1" + safe-eval "^0.4.1" + sane "^4.0.2" + source-map-support "^0.5.3" + spawn-args "^0.1.0" + temp "^0.8.3" + truffle-artifactor "^4.0.4" + truffle-box "^1.0.14" + truffle-compile "^4.0.4" + truffle-config "^1.1.4" + truffle-contract "^4.0.5" + truffle-contract-sources "^0.1.2" + truffle-debug-utils "^1.0.9" + truffle-debugger "^4.1.4" + truffle-deployer "^3.0.4" + truffle-error "^0.0.4" + truffle-expect "^0.0.7" + truffle-init "^1.0.7" + truffle-migrate "^3.0.4" + truffle-provider "^0.1.4" + truffle-provisioner "^0.1.2" + truffle-require "^2.0.4" + truffle-resolver "^5.0.4" + truffle-solidity-utils "^1.2.2" + truffle-workflow-compile "^2.0.4" + universal-analytics "^0.4.17" + web3 "1.0.0-beta.37" + yargs "^8.0.2" + +truffle-debug-utils@^1.0.9: + version "1.0.18" + resolved "https://registry.yarnpkg.com/truffle-debug-utils/-/truffle-debug-utils-1.0.18.tgz#112c967462c7cc5f2ff24d057d0e86dd497fa089" + integrity sha512-hr0FTe3J31Aok1hHnyGUQ09tcy2FQm4gXR/9YTgTJdz5nr7oW3A5nku2M5UPw+CcPaY7PevH5rAd/fPMdmIT1g== + dependencies: + async "2.6.1" + debug "^4.1.0" + node-dir "0.1.17" + +truffle-debugger@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/truffle-debugger/-/truffle-debugger-4.1.5.tgz#5fefdf830fbfe57d825e6e4977ee0ad912d39667" + integrity sha512-dqeLWT1I+vDbRoZWsY1oQ+/yrnF4IGl3HhbHl0pzMqKZj4DQ8LW9b3Pitb2PaQxX3LQ13IceAoCaO8olQOjcuA== + dependencies: + bn.js "^4.11.8" + debug "^4.1.0" + fast-levenshtein "^2.0.6" + json-pointer "^0.6.0" + redux "^3.7.2" + redux-cli-logger "^2.0.1" + redux-saga "1.0.0" + remote-redux-devtools "^0.5.12" + reselect-tree "^1.2.0" + truffle-code-utils "^1.1.4" + truffle-decode-utils "^1.0.3" + truffle-decoder "^1.0.5" + truffle-expect "^0.0.7" + truffle-solidity-utils "^1.2.2" + web3 "1.0.0-beta.37" + web3-eth-abi "1.0.0-beta.37" + +truffle-decode-utils@^1.0.3, truffle-decode-utils@^1.0.4: + version "1.0.14" + resolved "https://registry.yarnpkg.com/truffle-decode-utils/-/truffle-decode-utils-1.0.14.tgz#25784462145e696d8cd1534ab788e67e189a2a09" + integrity sha512-Ue1k5nNE/Tj38Ld9jH+/PWzw1q1PgDDMFT7yyqur8Yz/MQu9IT7NyYGx51+7LKWxF+yefyxL3c9GJ488Deic1g== + dependencies: + bn.js "^4.11.8" + lodash.clonedeep "^4.5.0" + lodash.escaperegexp "^4.1.2" + web3 "1.0.0-beta.37" + web3-eth-abi "1.0.0-beta.52" + +truffle-decoder@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/truffle-decoder/-/truffle-decoder-1.0.6.tgz#e62f6125ac74b0a35e874df691518a8c40da50fe" + integrity sha512-yVVcx/lQttDKjHxY9knm+NGt4Tu74XcclVPOd8rAqkGTmxJiYSE37eoSbOGPyNp0Gg1FtKssgE5H9DNtKTaN2Q== + dependencies: + abi-decoder "^1.2.0" + async-eventemitter "^0.2.4" + bn.js "^4.11.8" + debug "^4.1.0" + lodash.clonedeep "^4.5.0" + lodash.isequal "^4.5.0" + lodash.merge "^4.6.1" + lodash.range "^3.2.0" + truffle-decode-utils "^1.0.4" + web3 "1.0.0-beta.37" + +truffle-deployer@^3.0.24, truffle-deployer@^3.0.4: + version "3.0.24" + resolved "https://registry.yarnpkg.com/truffle-deployer/-/truffle-deployer-3.0.24.tgz#7c8fb6110018babee86911093d5949d45bf51704" + integrity sha512-1CoUsG0J8eVGS+aG6+c/r4Bf9YV4G+jVcKINDA438mJMNoDW7QgKCRU4qRGki1v4KlfnlhRVp0JfRuRVQvqQCQ== + dependencies: + emittery "^0.4.0" + truffle-contract "^4.0.23" + truffle-expect "^0.0.9" + +truffle-error@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/truffle-error/-/truffle-error-0.0.3.tgz#4bf55242e14deee1c7194932709182deff2c97ca" + integrity sha1-S/VSQuFN7uHHGUkycJGC3v8sl8o= + +truffle-error@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/truffle-error/-/truffle-error-0.0.4.tgz#c3ff027570c26ae1f20db78637902497857f898f" + integrity sha512-hER0TNR4alBIhUp7SNrZRRiZtM/MBx+xBdM9qXP0tC3YASFmhNAxPuOyB8JDHFRNbDx12K7nvaqmyYGsI5c8BQ== truffle-error@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/truffle-error/-/truffle-error-0.0.5.tgz#6b5740c9f3aac74f47b85d654fff7fe2c1fc5e0e" integrity sha512-JpzPLMPSCE0vaZ3vH5NO5u42GpMj/Y1SRBkQ6b69PSw3xMSH1umApN32cEcg1nnh8q5FNYc5FnKu0m4tiBffyQ== +truffle-expect@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/truffle-expect/-/truffle-expect-0.0.7.tgz#77cbd8e59c269679491cf5f3ddaad24127a05d55" + integrity sha512-qnasS3kXZ9EcqvRkpJ1Q7xSLTU1WxSWf487pudsGcDMsmcQ2YUMizmyV0BdhMVPUhcnXkNDaITHtMch1hGVyPA== + truffle-expect@^0.0.9: version "0.0.9" resolved "https://registry.yarnpkg.com/truffle-expect/-/truffle-expect-0.0.9.tgz#d4f0e4aae06333c7c1e093c8f6c0355eb7f9b0c3" integrity sha512-8ifOoAiRVHsmM8vsn4xATsa4zifTsRA3vt7rsz1ryP2JE+uUqavqQficdh2uVJoa/DIid6O7iZ7J1HtQsHikOQ== +truffle-external-compile@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/truffle-external-compile/-/truffle-external-compile-1.0.11.tgz#3139a2d75c139086e3d31d5c23c6367bac15f6d0" + integrity sha512-s253KcXnd/Tzi+AZRWtD42GiMY8TKVwJt6WBQhFoXcC5IkwRAKOoBFNrG9mnoUB2hNv5Mopom5pYU9AhTepH9w== + dependencies: + debug "^4.1.0" + glob "^7.1.2" + truffle-contract-schema "^3.0.11" + truffle-expect "^0.0.9" + web3-utils "1.0.0-beta.37" + truffle-flattener@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.3.0.tgz#a5b0340897e32cf8389fea105b52fa93c335f04c" @@ -5188,31 +9829,85 @@ truffle-hdwallet-provider@1.0.5: bindings "^1.3.1" websocket "^1.0.28" -truffle-interface-adapter@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/truffle-interface-adapter/-/truffle-interface-adapter-0.2.2.tgz#f2ca897b4769b2190e3fb03f09fb98a178362126" - integrity sha512-dAKN+mSOlQV/+PlzUhBH90RAWrbp0Avm8nQcALoTwKa35PkS5RyB2ir1Y0AVoZvKVFYOmRDt884KHpZe8YgJRA== +truffle-init@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/truffle-init/-/truffle-init-1.0.7.tgz#c3de57fbddfa77ae93642ae025f41c1157de2ba7" + integrity sha1-w95X+936d66TZCrgJfQcEVfeK6c= + dependencies: + fs-extra "^2.0.0" + github-download "^0.5.0" + npm-programmatic "0.0.6" + rimraf "^2.5.4" + temp "^0.8.3" + truffle-config "^1.0.1" + +truffle-interface-adapter@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/truffle-interface-adapter/-/truffle-interface-adapter-0.1.6.tgz#ae61f54613f3219fd8d420de57a6e457d6e81ad7" + integrity sha512-UFzVsbIPhE8w4b2Ywp/2xYPIOo4dtdLc2Lwa82UYg2ikf0q4/EteYLFE7hsiTgmPwmeB+L+YQZ8pqLtAa+AOgw== dependencies: bn.js "^4.11.8" - ethers "^4.0.32" - lodash "^4.17.13" - web3 "^1.2.0" + web3 "1.0.0-beta.37" + +truffle-migrate@^3.0.4: + version "3.0.24" + resolved "https://registry.yarnpkg.com/truffle-migrate/-/truffle-migrate-3.0.24.tgz#205e16aea91eca597e84d2f952c1dbda6367c685" + integrity sha512-0NekMBRC058Lk6PpJx7kCaBGVgOgM997tThRTL5brBb/oQg6wDOgPucChQEsKol07eqZ6BAfkXVyL9RkkFW+ow== + dependencies: + async "2.6.1" + emittery "^0.4.0" + node-dir "0.1.17" + truffle-config "^1.1.13" + truffle-deployer "^3.0.24" + truffle-expect "^0.0.9" + truffle-interface-adapter "^0.1.6" + truffle-reporters "^1.0.10" + truffle-require "^2.0.13" + web3 "1.0.0-beta.37" + +truffle-provider@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/truffle-provider/-/truffle-provider-0.1.1.tgz#bee7c3f802a6a6304ebab902d8f66d71530830ed" + integrity sha512-0cEQBo81VxZLtlx6fZxhLQiUfU5IJn6Pla+HQGlkQV8sTzrLYxKxnTn0ZXBYsFTqgDFjIDBb11nxH4ny1WY6BA== + dependencies: + truffle-error "^0.0.3" + web3 "^1.0.0-beta.37" -truffle-provider@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/truffle-provider/-/truffle-provider-0.1.13.tgz#e121dc190101e57db238b9283f8b1066a468bf15" - integrity sha512-zbO8fNLCHfcDyaC2MI+l5eybN2aUGBpVoQcEHGov2U5LD2F6GJP8Vb3gf/Eqb//X3kZSKaUfGmy32hc87qxvBA== +truffle-provider@^0.1.10, truffle-provider@^0.1.4: + version "0.1.10" + resolved "https://registry.yarnpkg.com/truffle-provider/-/truffle-provider-0.1.10.tgz#145bacf13bc8cf66009de7e6569f1b29967a7d9b" + integrity sha512-7M8p5FeUA7iLA4ykRmoRFKwk2q4Hopc39x0Hi8FsPpi94clbY5Lu8J8L++N1pMOlAMDoR2yelNHpEtveAm5PRA== dependencies: truffle-error "^0.0.5" - truffle-interface-adapter "^0.2.2" - web3 "^1.2.0" + truffle-interface-adapter "^0.1.6" + web3 "1.0.0-beta.37" -truffle-provisioner@^0.1.5: +truffle-provisioner@^0.1.2, truffle-provisioner@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/truffle-provisioner/-/truffle-provisioner-0.1.5.tgz#f940b2e0aa3a26d5227dfc4ebe8d29ebc68a9e03" integrity sha512-XSzD4Tj1T16E8qwoIHnQ9sOuvoemP1yqxX9Jg0VvvoLTdl8X17uau6dN08JgNR09hJroTrXPbkAi5Y8IfKhVMw== -truffle-resolver@^5.0.0: +truffle-reporters@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/truffle-reporters/-/truffle-reporters-1.0.10.tgz#4f45f1de93ea2c925b21bee8a5b62458ac7d1f75" + integrity sha512-ZKw6keXlQU2i/r+GoHgZb78YXZLxJ0RfQ/lSOlnZU4gvhaNaMdgU4l9ehDh3sjWSemkb7kaQbG7jG8T566WXzg== + dependencies: + node-emoji "^1.8.1" + ora "^3.0.0" + web3-utils "1.0.0-beta.37" + +truffle-require@^2.0.13, truffle-require@^2.0.4: + version "2.0.13" + resolved "https://registry.yarnpkg.com/truffle-require/-/truffle-require-2.0.13.tgz#c23caef4a747532a8e671e13282a0436de6fc0e6" + integrity sha512-OkQzGgb7H+N7XpscJMJ/3E8BAcqVVjB4vaL07mzdHDgFBJ6E3LnXBL+/RZw72UAeKLsdgEYL3zpPy/wlV1WPIA== + dependencies: + original-require "1.0.1" + truffle-config "^1.1.13" + truffle-expect "^0.0.9" + truffle-interface-adapter "^0.1.6" + web3 "1.0.0-beta.37" + +truffle-resolver@^5.0.14, truffle-resolver@^5.0.4: version "5.0.14" resolved "https://registry.yarnpkg.com/truffle-resolver/-/truffle-resolver-5.0.14.tgz#f403f944bb77a02ca8c2da86dc27a82145641ba4" integrity sha512-00Uhhm4PchDobtbgjr0e8j4LBAQoZuuS9guKTx3YGHYp10992KVJTsQ+7lZf0K4fGTA2OV/ON0BsN7Sj/xij/Q== @@ -5223,14 +9918,34 @@ truffle-resolver@^5.0.0: truffle-expect "^0.0.9" truffle-provisioner "^0.1.5" -truffle@^5.0.30: - version "5.0.30" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.0.30.tgz#13ac335939fc6c908c615c25cd94c7a56ba674d5" - integrity sha512-l13cUq5QUEPfW89b4dDBIahNmDWazpey4Y8UJXhNn+YTkHxVM5h8L8eNNIBTD1SiYerrXfw49QMIQubEcz3erA== +truffle-solidity-utils@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/truffle-solidity-utils/-/truffle-solidity-utils-1.2.3.tgz#9e83c80fe5eeac1b9587f227af57e3feee5e183c" + integrity sha512-Rf9KLx8BFTX6/1jxKuzWC5AegSMTN9uxLIKWP38oBAxHq/ilD64W+W5eyEqBxAXUYlAABj9jpOg4Pn5NRYtxOg== + +truffle-workflow-compile@^2.0.4: + version "2.0.22" + resolved "https://registry.yarnpkg.com/truffle-workflow-compile/-/truffle-workflow-compile-2.0.22.tgz#9ff49d5ddb0547bfed0ca2771923d18a07792210" + integrity sha512-RVcwWj61SwrAZFwoKMGm1lwWtJgNX6Yor+m5mxeVwJVoBH1d++mKUYTtf8eeujJQSfNHCo6OJe5RKtzrePOVfg== + dependencies: + mkdirp "^0.5.1" + truffle-artifactor "^4.0.22" + truffle-compile "^4.1.3" + truffle-compile-vyper "^1.0.20" + truffle-config "^1.1.13" + truffle-expect "^0.0.9" + truffle-external-compile "^1.0.11" + truffle-resolver "^5.0.14" + +truffle@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.0.4.tgz#fc68cb6a6a35b46a7ca69eca7b64d161b491db3d" + integrity sha512-pZYFbU10Hb6PiTalJm+dB6s1qIZjE5qc0ux5fIgQ7Nj24zDrlYmOYruP3yhuqywwzr3PUHGPxr6hXuje0BFYoA== dependencies: app-module-path "^2.2.0" - mocha "5.2.0" + mocha "^4.1.0" original-require "1.0.1" + solc "0.5.0" tslib@^1.9.0: version "1.9.3" @@ -5249,11 +9964,26 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tunnel@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.2.tgz#f23bcd8b7a7b8a864261b2084f66f93193396334" + integrity sha1-8jvNi3p7ioZCYbIIT2b5MZM5YzQ= + +tweetnacl-util@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.0.tgz#4576c1cee5e2d63d207fee52f1ba02819480bc75" + integrity sha1-RXbBzuXi1j0gf+5S8boCgZSAvHU= + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +tweetnacl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.1.tgz#2594d42da73cd036bd0d2a54683dd35a6b55ca17" + integrity sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A== + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -5261,10 +9991,10 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-fest@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-is@~1.6.16: version "1.6.16" @@ -5274,6 +10004,16 @@ type-is@~1.6.16: media-typer "0.3.0" mime-types "~2.1.18" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typedarray-to-buffer@^3.1.2, typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -5286,6 +10026,50 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript-compare@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/typescript-compare/-/typescript-compare-0.0.2.tgz#7ee40a400a406c2ea0a7e551efd3309021d5f425" + integrity sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA== + dependencies: + typescript-logic "^0.0.0" + +typescript-logic@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/typescript-logic/-/typescript-logic-0.0.0.tgz#66ebd82a2548f2b444a43667bec120b496890196" + integrity sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q== + +typescript-tuple@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/typescript-tuple/-/typescript-tuple-2.2.1.tgz#7d9813fb4b355f69ac55032e0363e8bb0f04dad2" + integrity sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q== + dependencies: + typescript-compare "^0.0.2" + +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 sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU= + +typewise@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" + integrity sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE= + 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 sha1-yIgvobsQksBgBal/NO9chQjjZk4= + +uglify-es@^3.3.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + uglify-js@^3.1.4: version "3.4.9" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" @@ -5307,11 +10091,41 @@ unbzip2-stream@^1.0.9: buffer "^3.0.1" through "^2.3.6" +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +underscore@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= + 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== +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= + +undertaker@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" + integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -5322,19 +10136,13 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== dependencies: - imurmurhash "^0.1.4" + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" unique-string@^1.0.0: version "1.0.0" @@ -5343,11 +10151,25 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +universal-analytics@^0.4.17: + version "0.4.20" + resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.20.tgz#d6b64e5312bf74f7c368e3024a922135dbf24b03" + integrity sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw== + dependencies: + debug "^3.0.0" + request "^2.88.0" + uuid "^3.0.0" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +unorm@^1.3.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.4.1.tgz#364200d5f13646ca8bcd44490271335614792300" + integrity sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA= + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -5361,23 +10183,10 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -update-notifier@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250" - integrity sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ== - dependencies: - boxen "^3.0.0" - chalk "^2.0.1" - configstore "^4.0.0" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.1.0" - is-npm "^3.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== uri-js@^4.2.2: version "4.2.2" @@ -5405,14 +10214,6 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" - integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== - dependencies: - querystringify "^2.0.0" - requires-port "^1.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" @@ -5428,17 +10229,27 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= + utf8@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" integrity sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g= -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== -util-deprecate@~1.0.1: +utf8@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" + integrity sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY= + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -5453,11 +10264,30 @@ uuid@2.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= -uuid@3.3.2, uuid@^3.3.2: +uuid@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + integrity sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA== + +uuid@3.3.2, uuid@^3.0.0, 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== +v8flags@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + dependencies: + user-home "^1.1.1" + +v8flags@^3.0.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" + integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== + dependencies: + homedir-polyfill "^1.0.1" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -5466,18 +10296,21 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@^3.0.0: +value-or-function@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vcsurl@^0.1.1, vcsurl@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/vcsurl/-/vcsurl-0.1.1.tgz#5e00a109e7381b55b5d45b892533c8ec35c9320c" + integrity sha1-XgChCec4G1W11FuJJTPI7DXJMgw= + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -5487,405 +10320,815 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -web3-bzz@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.50.tgz#5e234eecf427b33f773c78c00e34d370b542f6b0" - integrity sha512-0jD4/g+apH7t87cA9gXoZpvvVW7OqQtbu+X+olFKPrS9pKbkwfaKPdRwc1BNbjqvrRYN0K7koT9xV+Lzvyah6w== +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= dependencies: - "@babel/runtime" "^7.3.1" - "@types/node" "^10.12.18" - lodash "^4.17.11" - swarm-js "^0.1.39" + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" -web3-bzz@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.0.tgz#eab70a2cf6c437223f40fc069499fe70ff53feb0" - integrity sha512-QEIdvguSEpqBK9b815nzx4yvpfKv/SAvaFeCMjQ0vjIVqFhAwBHDxd+f+X3nWGVRGVeOTP7864tau26CPBtQ8Q== +vinyl@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== dependencies: - got "9.6.0" + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watch@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= + dependencies: + exec-sh "^0.2.0" + minimist "^1.2.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +web3-bzz@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.35.tgz#9d5e1362b3db2afd77d65619b7cd46dd5845c192" + integrity sha512-BhAU0qhlr8zltm4gs/+P1gki2VkxHJaM2Rrh4DGesDW0lzwufRoNvWFlwx1bKHoFPWNbSmm9PRkHOYOINL/Tgw== + dependencies: + got "7.1.0" + swarm-js "0.1.37" + underscore "1.8.3" + +web3-bzz@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.37.tgz#59e3e4f5a9d732731008fe9165c3ec8bf85d502f" + integrity sha512-E+dho49Nsm/QpQvYWOF35YDsQrMvLB19AApENxhlQsu6HpWQt534DQul0t3Y/aAh8rlKD6Kanxt8LhHDG3vejQ== + dependencies: + got "7.1.0" + swarm-js "0.1.37" + underscore "1.8.3" + +web3-bzz@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" + integrity sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw== + dependencies: + got "9.6.0" swarm-js "0.1.39" underscore "1.9.1" -web3-core-helpers@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.50.tgz#0de88656ffa5f13659141cc443ff8529f109deac" - integrity sha512-B1LMrlC9c5HEJYmBWUhsxHdJ78w5YGop/ptF1cFL8cHLwTCQqCFFKLgYUg+dax/554TP1xgJ2w/ArLpnPJ8dBg== +web3-core-helpers@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.35.tgz#d681d218a0c6e3283ee1f99a078ab9d3eef037f1" + integrity sha512-APOu3sEsamyqWt//8o4yq9KF25/uqGm+pQShson/sC4gKzmfJB07fLo2ond0X30E8fIqAPeVCotPXQxGciGUmA== dependencies: - "@babel/runtime" "^7.3.1" - lodash "^4.17.11" - web3-eth-iban "1.0.0-beta.50" - web3-utils "1.0.0-beta.50" + underscore "1.8.3" + web3-eth-iban "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" -web3-core-helpers@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.0.tgz#023947323cebd021e43a67145a5087627ce87fb3" - integrity sha512-KLCCP2FS1cMz23Y9l3ZaEDzaUky+GpsNavl4Hn1xX8lNaKcfgGEF+DgtAY/TfPQYAxLjLrSbIFUDzo9H/W1WAQ== +web3-core-helpers@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz#04ec354b7f5c57234c309eea2bda9bf1f2fe68ba" + integrity sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew== + dependencies: + underscore "1.8.3" + web3-eth-iban "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-core-helpers@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" + integrity sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.1" + web3-utils "1.2.1" + +web3-core-method@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.35.tgz#fc10e2d546cf4886038e6130bd5726b0952a4e5f" + integrity sha512-jidImCide8q0GpfsO4L73qoHrbkeWgwU3uOH5DKtJtv0ccmG086knNMRgryb/o9ZgetDWLmDEsJnHjBSoIwcbA== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-core-promievent "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + +web3-core-method@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz#53d148e63f818b23461b26307afdfbdaa9457744" + integrity sha512-pKWFUeqnVmzx3VrZg+CseSdrl/Yrk2ioid/HzolNXZE6zdoITZL0uRjnsbqXGEzgRRd1Oe/pFndpTlRsnxXloA== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" + web3-core-promievent "1.0.0-beta.37" + web3-core-subscriptions "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-core-method@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" + integrity sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ== dependencies: underscore "1.9.1" - web3-eth-iban "1.2.0" - web3-utils "1.2.0" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-utils "1.2.1" -web3-core-method@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.50.tgz#4f9b55699f6e46f49dc8ac6bde204f9ae877b513" - integrity sha512-0+L37KDT90DD1fcTye/ZWMyGOLiw0ZxX2vaC8qDSFvAV3scTEuZyEQuR+tCM2aGyUVihy8LdmZwioRwnTXgLwg== +web3-core-promievent@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.35.tgz#4f1b24737520fa423fee3afee110fbe82bcb8691" + integrity sha512-GvqXqKq07OmHuVi5uNRg6k79a1/CI0ViCC+EtNv4CORHtDRmYEt5Bvdv6z6FJEiaaQkD0lKbFwNhLxutx7HItw== dependencies: - "@babel/runtime" "^7.3.1" - eventemitter3 "3.1.0" - lodash "^4.17.11" + any-promise "1.3.0" + eventemitter3 "1.1.1" -web3-core-method@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.0.tgz#9f6a6939d15f53bc74d086f280fbd62461546cd3" - integrity sha512-Iff5rCL+sgHe6zZVZijp818aRixKQf3ZAyQsT6ewER1r9yqXsH89DJtX33Xw8xiaYSwUFcpNs2j+Kluhv/eVAw== +web3-core-promievent@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.37.tgz#4e51c469d0a7ac0a969885a4dbcde8504abe5b02" + integrity sha512-GTF2r1lP8nJBeA5Gxq5yZpJy9l8Fb9CXGZPfF8jHvaRdQHtm2Z+NDhqYmF833lcdkokRSyfPcXlz1mlWeClFpg== dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.0" - web3-core-promievent "1.2.0" - web3-core-subscriptions "1.2.0" - web3-utils "1.2.0" + any-promise "1.3.0" + eventemitter3 "1.1.1" -web3-core-promievent@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.0.tgz#d6454837a307da5b453fe3077743fe25801a07a1" - integrity sha512-9THNYsZka91AX4LZGZvka5hio9+QlOY22hNgCiagmCmYytyKk3cXftL6CWefnNF7XgW8sy/ew5lzWLVsQW61Lw== +web3-core-promievent@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" + integrity sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw== dependencies: any-promise "1.3.0" eventemitter3 "3.1.2" -web3-core-requestmanager@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.0.tgz#a7f9995495340037e7ac72792c1885c35c1e7616" - integrity sha512-hPe1jyESodXAiE7qJglu7ySo4GINCn5CgG+9G1ATLQbriZsir83QMSeKQekv/hckKFIf4SvZJRPEBhtAle+Dhw== +web3-core-requestmanager@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.35.tgz#2b77cbf6303720ad68899b39fa7f584dc03dbc8f" + integrity sha512-S+zW2h17ZZQU9oe3yaCJE0E7aJS4C3Kf4kGPDv+nXjW0gKhQQhgVhw1Doq/aYQGqNSWJp7f1VHkz5gQWwg6RRg== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-providers-http "1.0.0-beta.35" + web3-providers-ipc "1.0.0-beta.35" + web3-providers-ws "1.0.0-beta.35" + +web3-core-requestmanager@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz#721a75df5920621bff42d9d74f7a64413675d56b" + integrity sha512-66VUqye5BGp1Zz1r8psCxdNH+GtTjaFwroum2Osx+wbC5oRjAiXkkadiitf6wRb+edodjEMPn49u7B6WGNuewQ== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" + web3-providers-http "1.0.0-beta.37" + web3-providers-ipc "1.0.0-beta.37" + web3-providers-ws "1.0.0-beta.37" + +web3-core-requestmanager@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" + integrity sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg== dependencies: underscore "1.9.1" - web3-core-helpers "1.2.0" - web3-providers-http "1.2.0" - web3-providers-ipc "1.2.0" - web3-providers-ws "1.2.0" + web3-core-helpers "1.2.1" + web3-providers-http "1.2.1" + web3-providers-ipc "1.2.1" + web3-providers-ws "1.2.1" + +web3-core-subscriptions@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.35.tgz#c1b76a2ad3c6e80f5d40b8ba560f01e0f4628758" + integrity sha512-gXzLrWvcGkGiWq1y33Z4Y80XI8XMrwowiQJkrPSjQ81K5PBKquOGwcMffLaKcwdmEy/NpsOXDeFo3eLE1Ghvvw== + dependencies: + eventemitter3 "1.1.1" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + +web3-core-subscriptions@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz#40de5e2490cc05b15faa8f935c97fd48d670cd9a" + integrity sha512-FdXl8so9kwkRRWziuCSpFsAuAdg9KvpXa1fQlT16uoGcYYfxwFO/nkwyBGQzkZt7emShI2IRugcazyPCZDwkOA== + dependencies: + eventemitter3 "1.1.1" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" + +web3-core-subscriptions@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" + integrity sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.1" -web3-core-subscriptions@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.50.tgz#73df7143062f915e02b153239af10974e350e20f" - integrity sha512-q2Jmuy/BCwcKCFjR6kc03hPbdC6sR0n3IhPVg98Sk7ewgRLur/v3lLDz0fQpY4xE6U0XOqrjxwzlqISkOcP5Kw== +web3-core@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.35.tgz#0c44d3c50d23219b0b1531d145607a9bc7cd4b4f" + integrity sha512-ayGavbgVk4KL9Y88Uv411fBJ0SVgVfKhKEBweKYzmP0zOqneMzWt6YsyD1n6kRvjAbqA0AfUPEOKyMNjcx2tjw== dependencies: - "@babel/runtime" "^7.3.1" - eventemitter3 "^3.1.0" - lodash "^4.17.11" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-requestmanager "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" -web3-core-subscriptions@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.0.tgz#d359b9b5fb6f6a700f1b383be11de7925cb7549f" - integrity sha512-DHipGH8It5E4HxxvymhkudcYhBVgGx6MwGWobIVKFgp6JRxtuvAbqwrMbuD/+78J6yXOa4y9zVXBk12dm2NXGg== +web3-core@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.37.tgz#66c2c7000772c9db36d737ada31607ace09b7e90" + integrity sha512-cIwEqCj7OJyefQNauI0HOgW4sSaOQ98V99H2/HEIlnCZylsDzfw7gtQUdwnRFiIyIxjbWy3iWsjwDPoXNPZBYg== dependencies: - eventemitter3 "3.1.2" - underscore "1.9.1" - web3-core-helpers "1.2.0" + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-core-requestmanager "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" -web3-core@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.50.tgz#385137b8c34257db2679e925dfe41b98a0f7fe37" - integrity sha512-edOHdSnkRREi0vUXXNUsrbkTvXftCDroiF2tEvbPVyiBv0U6/VDYClFdHuZKdrrTRUcn/rUbvBqw8qCt3xgcuQ== +web3-core@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" + integrity sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg== dependencies: - "@babel/runtime" "^7.3.1" - "@types/node" "^10.12.18" - lodash "^4.17.11" - web3-utils "1.0.0-beta.50" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-requestmanager "1.2.1" + web3-utils "1.2.1" -web3-core@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.0.tgz#6f3c59f84b2af9ab0ee7617d3c5208a814d3953c" - integrity sha512-Vy+fargzx94COdihE79zIM5lb/XAl/LJlgGdmz2a6QhgGZrSL8K6DKKNS+OuORAcLJN2PWNMc4IdfknkOw1PhQ== +web3-eth-abi@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.35.tgz#2eb9c1c7c7233db04010defcb192293e0db250e6" + integrity sha512-KUDC+EtFFYG8z01ZleKrASdjj327/rtWHzEt6RWsEj7bBa0bGp9nEh+nqdZx/Sdgz1O8tnfFzJlrRcXpfr1vGg== + dependencies: + bn.js "4.11.6" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + +web3-eth-abi@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz#55592fa9cd2427d9f0441d78f3b8d0c1359a2a24" + integrity sha512-g9DKZGM2OqwKp/tX3W/yihcj7mQCtJ6CXyZXEIZfuDyRBED/iSEIFfieDOd+yo16sokLMig6FG7ADhhu+19hdA== dependencies: - web3-core-helpers "1.2.0" - web3-core-method "1.2.0" - web3-core-requestmanager "1.2.0" - web3-utils "1.2.0" + ethers "4.0.0-beta.1" + underscore "1.8.3" + web3-utils "1.0.0-beta.37" -web3-eth-abi@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.50.tgz#52ca509257648c6088aa9d8874d6ea5f249c6de7" - integrity sha512-Nwm1HL3xBbrs43j/9V3gH1CJWWR7jyTDSE7PIkjYVjwgygAjlHPMHzuzGffoFMp2tSQ2DywCGmXAY5I5+vznZw== +web3-eth-abi@1.0.0-beta.52: + version "1.0.0-beta.52" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.52.tgz#88dc2d36e2f99dfe255f8f64b6f613bad82779d8" + integrity sha512-c03sH6y7ncp9tBPt0EZEcyFyou4kyYdr72VJMY8ip0JAfZgl4WI9XcGpD207z0lR4Ki1PSCfkh+ZigoXxggouw== dependencies: "@babel/runtime" "^7.3.1" ethers "^4.0.27" lodash "^4.17.11" - web3-utils "1.0.0-beta.50" + web3-utils "1.0.0-beta.52" -web3-eth-abi@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.0.tgz#26b22261756ffbb3363bc37c1a6f5143bebb6469" - integrity sha512-FDuPq/tFeMg/D/f7cNSmvVYkMYb1z379gUUzSL8ZFtZrdHPkezq+lq/TmWmbCOMLYNXlhGJBzjGdLXRS4Upprg== +web3-eth-abi@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" + integrity sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g== dependencies: ethers "4.0.0-beta.3" underscore "1.9.1" - web3-utils "1.2.0" + web3-utils "1.2.1" -web3-eth-accounts@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.50.tgz#e405979db8d4dc0caccff576fa746cea3d87e3d1" - integrity sha512-cUuYxKhymob87zCUYgw7ieZY6aVStMhClocblI3FKNdI1I8dczhdhZ97qMj5iavOganN7/OxLzeji7ksAoNAhg== +web3-eth-accounts@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.35.tgz#7d0e5a69f510dc93874471599eb7abfa9ddf3e63" + integrity sha512-duIgRsfht/0kAW/eQ0X9lKtVIykbETrnM2H7EnvplCzPHtQLodpib4o9JXfh9n6ZDgdDC7cuJoiVB9QJg089ew== dependencies: - "@babel/runtime" "^7.3.1" + any-promise "1.3.0" crypto-browserify "3.12.0" - eth-lib "0.2.8" - lodash "^4.17.11" + eth-lib "0.2.7" scrypt.js "0.2.0" - uuid "3.3.2" - web3-core "1.0.0-beta.50" - web3-core-helpers "1.0.0-beta.50" - web3-core-method "1.0.0-beta.50" - web3-providers "1.0.0-beta.50" - web3-utils "1.0.0-beta.50" + underscore "1.8.3" + uuid "2.0.1" + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" -web3-eth-accounts@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.0.tgz#bb26d5446017700a13b75fc69a2b1226fe44f6bb" - integrity sha512-d/fUAL3F6HqstvEiBnZ1RwZ77/DytgF9d6A3mWVvPOUk2Pqi77PM0adRvsKvIWUaQ/k6OoCk/oXtbzaO7CyGpg== +web3-eth-accounts@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz#0a5a9f14a6c3bd285e001c15eb3bb38ffa4b5204" + integrity sha512-uvbHL62/zwo4GDmwKdqH9c/EgYd8QVnAfpVw8D3epSISpgbONNY7Hr4MRMSd/CqAP12l2Ls9JVQGLhhC83bW6g== dependencies: any-promise "1.3.0" crypto-browserify "3.12.0" eth-lib "0.2.7" - scrypt.js "^0.3.0" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.0" - web3-core-helpers "1.2.0" - web3-core-method "1.2.0" - web3-utils "1.2.0" + scrypt.js "0.2.0" + underscore "1.8.3" + uuid "2.0.1" + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" -web3-eth-contract@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.50.tgz#bc6d4523347e113c74c5e1c6c78219eeb61d9182" - integrity sha512-X8R1+qIeD4Dbz1RmQa5m3K1suVFigNgd7EFMp6vVC3ULDjt4R6T0cRmFw/x51v3MQoT7s6Yd1KiEWIAt9IYG6w== +web3-eth-accounts@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" + integrity sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ== dependencies: - "@babel/runtime" "^7.3.1" - lodash "^4.17.11" - web3-core "1.0.0-beta.50" - web3-core-helpers "1.0.0-beta.50" - web3-core-method "1.0.0-beta.50" - web3-core-subscriptions "1.0.0-beta.50" - web3-eth-abi "1.0.0-beta.50" - web3-eth-accounts "1.0.0-beta.50" - web3-providers "1.0.0-beta.50" - web3-utils "1.0.0-beta.50" - -web3-eth-contract@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.0.tgz#8d1c235c6624b5df428969ea2e9c26337095f6f0" - integrity sha512-hfjozNbfsoMeR3QklfkwU0Mqcw6YRD4y1Cb1ghGWNhFy2+/sbvKcQNPPJDKFTde22PRzGQBWyh/nb422Sux4bQ== + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + scryptsy "2.1.0" + semver "6.2.0" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" + +web3-eth-contract@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.35.tgz#5276242d8a3358d9f1ce92b71575c74f9015935c" + integrity sha512-foPohOg5O1UCGKGZOIs+kQK5IZdV2QQ7pAWwNxH8WHplUA+fre1MurXNpoxknUmH6mYplFhXjqgYq2MsrBpHrA== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-promievent "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-eth-abi "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + +web3-eth-contract@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz#87f93c95ed16f320ba54943b7886890de6766013" + integrity sha512-h1B3A8Z/C7BlnTCHkrWbXZQTViDxfR12lKMeTkT8Sqj5phFmxrBlPE4ORy4lf1Dk5b23mZYE0r/IRACx4ThCrQ== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-core-promievent "1.0.0-beta.37" + web3-core-subscriptions "1.0.0-beta.37" + web3-eth-abi "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-eth-contract@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" + integrity sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g== dependencies: underscore "1.9.1" - web3-core "1.2.0" - web3-core-helpers "1.2.0" - web3-core-method "1.2.0" - web3-core-promievent "1.2.0" - web3-core-subscriptions "1.2.0" - web3-eth-abi "1.2.0" - web3-utils "1.2.0" - -web3-eth-ens@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.50.tgz#29304e42e2671ea755a19ab3f1011ad197f115da" - integrity sha512-UnhYcNuSNRBOBcbD5y8cTyRh5ENn65/GfZkxCDXAKBY6sD4GzMZNkD7kq+37/34cnZEzzQPPGd9jLZNLXOklyg== + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-utils "1.2.1" + +web3-eth-ens@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.37.tgz#714ecb01eb447ee3eb39b2b20a10ae96edb1f01f" + integrity sha512-dR3UkrVzdRrJhfP57xBPx0CMiVnCcYFvh+u2XMkGydrhHgupSUkjqGr89xry/j1T0BkuN9mikpbyhdCVMXqMbg== dependencies: - "@babel/runtime" "^7.3.1" eth-ens-namehash "2.0.8" - lodash "^4.17.11" - web3-core "1.0.0-beta.50" - web3-core-helpers "1.0.0-beta.50" - web3-core-method "1.0.0-beta.50" - web3-eth-abi "1.0.0-beta.50" - web3-eth-contract "1.0.0-beta.50" - web3-net "1.0.0-beta.50" - web3-providers "1.0.0-beta.50" - web3-utils "1.0.0-beta.50" - -web3-eth-ens@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.0.tgz#af66308542f4acfa09ccd3ce370e3ad2de20ec30" - integrity sha512-kE6uHMLwH9dv+MZSKT7BcKXcQ6CcLP5m5mM44s2zg2e9Rl20F3J6R3Ik6sLc/w2ywdCwTe/Z22yEstHXQwu5ig== + underscore "1.8.3" + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-promievent "1.0.0-beta.37" + web3-eth-abi "1.0.0-beta.37" + web3-eth-contract "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-eth-ens@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" + integrity sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q== dependencies: eth-ens-namehash "2.0.8" underscore "1.9.1" - web3-core "1.2.0" - web3-core-helpers "1.2.0" - web3-core-promievent "1.2.0" - web3-eth-abi "1.2.0" - web3-eth-contract "1.2.0" - web3-utils "1.2.0" - -web3-eth-iban@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.50.tgz#311ea9422369ecbde6316e10a34de9fb07994cd6" - integrity sha512-rW5fpUUW3WaToPxBXNnqTfj5dh2BJ+9uognYAfThh2WWR1+EwWZethsKS/PyU6Jn9uA5p/kQoUIP0JKaeBm80Q== + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-contract "1.2.1" + web3-utils "1.2.1" + +web3-eth-iban@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.35.tgz#5aa10327a9abb26bcfc4ba79d7bad18a002b332c" + integrity sha512-H5wkcNcAIc+h/WoDIKv7ZYmrM2Xqu3O7jBQl1IWo73EDVQji+AoB2i3J8tuwI1yZRInRwrfpI3Zuwuf54hXHmQ== dependencies: - "@babel/runtime" "^7.3.1" - bn.js "4.11.8" - web3-utils "1.0.0-beta.50" + bn.js "4.11.6" + web3-utils "1.0.0-beta.35" -web3-eth-iban@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.0.tgz#1bece9cebf817dca82fa03230203351f4f263866" - integrity sha512-6DzTx/cvIgEvxadhJjLGpsuDUARA4RKskNOuwWYUsUODcPb50rsfMmRkHhGtLss/sNXVE5gNjbT9rX3TDqy2tg== +web3-eth-iban@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz#313a3f18ae2ab00ba98678ea1156b09ef32a3655" + integrity sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ== dependencies: - bn.js "4.11.8" - web3-utils "1.2.0" + bn.js "4.11.6" + web3-utils "1.0.0-beta.37" -web3-eth-personal@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.50.tgz#891f55bb93c2e38918be085dcb295634a59b31b1" - integrity sha512-52dS24YfJxx/Uy21RKj2m5rjag1kktdy5rY/R9vDwWZRrJkxfDf058CvtRF+QsD7A6QVxkHCZ9YwEWnLCLW9Cw== +web3-eth-iban@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" + integrity sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ== dependencies: - "@babel/runtime" "^7.3.1" - web3-core "1.0.0-beta.50" - web3-core-helpers "1.0.0-beta.50" - web3-core-method "1.0.0-beta.50" - web3-net "1.0.0-beta.50" - web3-providers "1.0.0-beta.50" - web3-utils "1.0.0-beta.50" - -web3-eth-personal@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.0.tgz#7194f519c870d720eee1349d867408004f0f78af" - integrity sha512-8QdcaT6dbdiMC8zEqvDuij8XeI34r2GGdQYGvYBP2UgCm15EZBHgewxO30A+O+j2oIW1/Hu60zP5upnhCuA1Dw== + bn.js "4.11.8" + web3-utils "1.2.1" + +web3-eth-personal@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.35.tgz#ecac95b7a53d04a567447062d5cae5f49879e89f" + integrity sha512-AcM9nnlxu7ZRRxPvkrFB9eLxMM4A2cPfj2aCg21Wb2EpMnhR+b/O1cT33k7ApRowoMpM+T9M8vx2oPNwXfaCOQ== + dependencies: + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + +web3-eth-personal@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz#187472f51861e2b6d45da43411801bc91a859f9a" + integrity sha512-B4dZpGbD+nGnn48i6nJBqrQ+HB7oDmd+Q3wGRKOsHSK5HRWO/KwYeA7wgwamMAElkut50lIsT9EJl4Apfk3G5Q== + dependencies: + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-net "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-eth-personal@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" + integrity sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg== + dependencies: + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" + +web3-eth@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.35.tgz#c52c804afb95e6624b6f5e72a9af90fbf5005b68" + integrity sha512-04mcb2nGPXThawuuYICPOxv0xOHofvQKsjZeIq+89nyOC8DQMGTAErDkGyMHQYtjpth5XDhic0wuEsA80AmFZA== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-eth-abi "1.0.0-beta.35" + web3-eth-accounts "1.0.0-beta.35" + web3-eth-contract "1.0.0-beta.35" + web3-eth-iban "1.0.0-beta.35" + web3-eth-personal "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + +web3-eth@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.37.tgz#0e8ffcd857a5f85ae4b5f052ad831ca5c56f4f74" + integrity sha512-Eb3aGtkz3G9q+Z9DKgSQNbn/u8RtcZQQ0R4sW9hy5KK47GoT6vab5c6DiD3QWzI0BzitHzR5Ji+3VHf/hPUGgw== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-core-subscriptions "1.0.0-beta.37" + web3-eth-abi "1.0.0-beta.37" + web3-eth-accounts "1.0.0-beta.37" + web3-eth-contract "1.0.0-beta.37" + web3-eth-ens "1.0.0-beta.37" + web3-eth-iban "1.0.0-beta.37" + web3-eth-personal "1.0.0-beta.37" + web3-net "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-eth@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" + integrity sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA== + dependencies: + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-accounts "1.2.1" + web3-eth-contract "1.2.1" + web3-eth-ens "1.2.1" + web3-eth-iban "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" + +web3-net@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.35.tgz#5c6688e0dea71fcd910ee9dc5437b94b7f6b3354" + integrity sha512-bbwaQ/KohGjIJ6HAKbZ6KrklCAaG6/B7hIbAbVLSFLxF+Yz9lmAgQYaDInpidpC/NLb3WOmcbRF+P77J4qMVIA== + dependencies: + web3-core "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + +web3-net@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.37.tgz#b494136043f3c6ba84fe4a47d4c028c2a63c9a8e" + integrity sha512-xG/uBtMdDa1UMXw9KjDUgf3fXA/fDEJUYUS0TDn+U9PMgngA+UVECHNNvQTrVVDxEky38V3sahwIDiopNsQdsw== + dependencies: + web3-core "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-net@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" + integrity sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw== dependencies: - web3-core "1.2.0" - web3-core-helpers "1.2.0" - web3-core-method "1.2.0" - web3-net "1.2.0" - web3-utils "1.2.0" + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" -web3-eth@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.50.tgz#6da9246d36d65ba7ff03209419c571359eda0e0a" - integrity sha512-ojsddEclIdu+C3hfRrLVJK0rcxt2O+Yj7c3b4YEzZQ9+Kd/HaSZfeSpUgKojgmFhUUiCCRTEc2holWtQ+Lx4gQ== +web3-provider-engine@14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.1.0.tgz#91590020f8b8c1b65846321310cbfdb039090fc6" + integrity sha512-vGZtqhSUzGTiMGhJXNnB/aRDlrPZLhLnBZ2NPArkZtr8XSrwg9m08tw4+PuWg5za0TJuoE/vuPQc501HddZZWw== dependencies: - "@babel/runtime" "^7.3.1" - eth-lib "0.2.8" - rxjs "^6.4.0" - web3-core "1.0.0-beta.50" - web3-core-helpers "1.0.0-beta.50" - web3-core-method "1.0.0-beta.50" - web3-core-subscriptions "1.0.0-beta.50" - web3-eth-abi "1.0.0-beta.50" - web3-eth-accounts "1.0.0-beta.50" - web3-eth-contract "1.0.0-beta.50" - web3-eth-ens "1.0.0-beta.50" - web3-eth-iban "1.0.0-beta.50" - web3-eth-personal "1.0.0-beta.50" - web3-net "1.0.0-beta.50" - web3-providers "1.0.0-beta.50" - web3-utils "1.0.0-beta.50" - -web3-eth@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.0.tgz#ac8d3409356538d2fe1cb6151036b724eace76f6" - integrity sha512-GP1+hHS/IVW1tAOIDS44PxCpvSl9PBU/KAB40WgP27UMvSy43LjHxGlP6hQQOdIfmBLBTvGvn2n+Z5kW2gzAzg== + 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-provider-engine@14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.0.tgz#2efec157b2c429c5c674c079aea96b0a06de8b3d" + integrity sha512-sfLH5VhGjJrJJT5WcF8aGehcIKRUQ553q9tjQkkLaKU2AaLsRcwffnnWvrgeTkmKSf0y9dwkDTa48RVp+GUCSg== dependencies: - underscore "1.9.1" - web3-core "1.2.0" - web3-core-helpers "1.2.0" - web3-core-method "1.2.0" - web3-core-subscriptions "1.2.0" - web3-eth-abi "1.2.0" - web3-eth-accounts "1.2.0" - web3-eth-contract "1.2.0" - web3-eth-ens "1.2.0" - web3-eth-iban "1.2.0" - web3-eth-personal "1.2.0" - web3-net "1.2.0" - web3-utils "1.2.0" - -web3-net@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.50.tgz#1ca188b9210da6ae560bbd35a2b6dea1d2e68da7" - integrity sha512-T9aBrWYzCeqZTTJlljonTm8x1tEjHT1uBqcdvEYZoyCS1Xxc+zCNBqP4SBfdcfwCeGohhI7bRx9qX1JjYH3cRA== + 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-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: - "@babel/runtime" "^7.3.1" - lodash "^4.17.11" - web3-core "1.0.0-beta.50" - web3-core-helpers "1.0.0-beta.50" - web3-core-method "1.0.0-beta.50" - web3-providers "1.0.0-beta.50" - web3-utils "1.0.0-beta.50" + 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-net@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.0.tgz#9e99c4326a28712451dc4d45f3acf26c1d4b3219" - integrity sha512-7iD8C6vvx8APXPMmlpPLGWjn4bsXHzd3BTdFzKjkoYjiiVFJdVAbY3j1BwN/6tVQu8Ay7sDpV2EdTNub7GKbyw== +web3-provider-engine@^13.3.2: + version "13.8.0" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-13.8.0.tgz#4c7c1ad2af5f1fe10343b8a65495879a2f9c00df" + integrity sha512-fZXhX5VWwWpoFfrfocslyg6P7cN3YWPG/ASaevNfeO80R+nzgoPUBXcWQekSGSsNDkeRTis4aMmpmofYf1TNtQ== dependencies: - web3-core "1.2.0" - web3-core-method "1.2.0" - web3-utils "1.2.0" + async "^2.5.0" + clone "^2.0.0" + eth-block-tracker "^2.2.2" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.1" + ethereumjs-vm "^2.0.2" + fetch-ponyfill "^4.0.0" + 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.67.0" + semaphore "^1.0.3" + solc "^0.4.2" + tape "^4.4.0" + xhr "^2.2.0" + xtend "^4.0.1" + +web3-providers-http@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.35.tgz#92059d9d6de6e9f82f4fae30b743efd841afc1e1" + integrity sha512-DcIMFq52Fb08UpWyZ3ZlES6NsNqJnco4hBS/Ej6eOcASfuUayPI+GLkYVZsnF3cBYqlH+DOKuArcKSuIxK7jIA== + dependencies: + web3-core-helpers "1.0.0-beta.35" + xhr2-cookies "1.1.0" -web3-providers-http@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.0.tgz#c6ebf9b6a23564439fa3c4a431cd6b405cc1ec0f" - integrity sha512-UrUn6JSz7NVCZ+0nZZtC4cmbl5JIi57w1flL1jN8jgkfdWDdErNvTkSwCt/QYdTQscMaUtWXDDOSAsVO6YC64g== +web3-providers-http@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz#c06efd60e16e329e25bd268d2eefc68d82d13651" + integrity sha512-FM/1YDB1jtZuTo78habFj7S9tNHoqt0UipdyoQV29b8LkGKZV9Vs3is8L24hzuj1j/tbwkcAH+ewIseHwu0DTg== dependencies: - web3-core-helpers "1.2.0" + web3-core-helpers "1.0.0-beta.37" xhr2-cookies "1.1.0" -web3-providers-ipc@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.0.tgz#98b8b8c9e77935dabfcf6d16e66c783f2429eac8" - integrity sha512-T2OSbiqu7+dahbGG5YFEQM5+FXdLVvaTCKmHXaQpw8IuL5hw7HELtyFOtHVudgDRyw0tJKxIfAiX/v2F1IL1fQ== +web3-providers-http@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" + integrity sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ== + dependencies: + web3-core-helpers "1.2.1" + xhr2-cookies "1.1.0" + +web3-providers-ipc@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.35.tgz#031afeb10fade2ebb0ef2fb82f5e58c04be842d9" + integrity sha512-iB0FG0HcpUnayfa8pn4guqEQ4Y1nrroi/jffdtQgFkrNt0sD3fMSwwC0AbmECqj3tDLl0e1slBR0RENll+ZF0g== + dependencies: + oboe "2.1.3" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + +web3-providers-ipc@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz#55d247e7197257ca0c3e4f4b0fe1561311b9d5b9" + integrity sha512-NdRPRxYMIU0C3u18NI8u4bwbhI9pCg5nRgDGYcmSAx5uOBxiYcQy+hb0WkJRRhBoyIXJmy+s26FoH8904+UnPg== + dependencies: + oboe "2.1.3" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" + +web3-providers-ipc@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" + integrity sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA== dependencies: oboe "2.1.4" underscore "1.9.1" - web3-core-helpers "1.2.0" + web3-core-helpers "1.2.1" -web3-providers-ws@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.0.tgz#c45929f0d1e1743301372e6e604aab63e83f66e3" - integrity sha512-rnwGcCe6cev5A6eG5UBCQqPmkJVZMCrK+HN1AvUCco0OHD/0asGc9LuLbtkQIyznA6Lzetq/OOcaTOM4KeT11g== +web3-providers-ws@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.35.tgz#5d38603fd450243a26aae0ff7f680644e77fa240" + integrity sha512-Cx64NgDStynKaUGDIIOfaCd0fZusL8h5avKTkdTjUu2aHhFJhZoVBGVLhoDtUaqZGWIZGcBJOoVf2JkGUOjDRQ== dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.0" - websocket "github:frozeman/WebSocket-Node#browserifyCompatible" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" -web3-providers@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-providers/-/web3-providers-1.0.0-beta.50.tgz#41d7cd3c38f3b12f721c115fea1972a3d1904d25" - integrity sha512-p2xtr6N72pdXvND5dLdK1G9T/9qCQiKC2EYDPmimnqvoHWixmM3tlBl042swkHspHHVL60vXPKxB4UDaQE2hWQ== +web3-providers-ws@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz#77c15aebc00b75d760d22d063ac2e415bdbef72f" + integrity sha512-8p6ZLv+1JYa5Vs8oBn33Nn3VGFBbF+wVfO+b78RJS1Qf1uIOzjFVDk3XwYDD7rlz9G5BKpxhaQw+6EGQ7L02aw== dependencies: - "@babel/runtime" "^7.3.1" - "@types/node" "^10.12.18" - eventemitter3 "3.1.0" - lodash "^4.17.11" - url-parse "1.4.4" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" - xhr2-cookies "1.1.0" -web3-shh@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.50.tgz#e5a4a64b2308267b1635858e4adcc92eeee147f1" - integrity sha512-a46Gz/YQdF3HJ4XK7rZh6bJiP3IEq+BDAvdxD1jW54yKM2k3RGarOY8hanC1crxKE7E9Q1UUkrp1Vjrj8XSQuQ== +web3-providers-ws@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" + integrity sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA== dependencies: - "@babel/runtime" "^7.3.1" - web3-core "1.0.0-beta.50" - web3-core-helpers "1.0.0-beta.50" - web3-core-method "1.0.0-beta.50" - web3-core-subscriptions "1.0.0-beta.50" - web3-net "1.0.0-beta.50" - web3-providers "1.0.0-beta.50" - web3-utils "1.0.0-beta.50" - -web3-shh@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.0.tgz#c07c306d761f70782c64e2b5b119db54e16f301f" - integrity sha512-VFjS8kvsQBodudFmIoVJWvDNZosONJZZnhvktngD3POu5dwbJmSCl6lzbLJ2C5XjR15dF+JvSstAkWbM+2sdPg== + underscore "1.9.1" + web3-core-helpers "1.2.1" + websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" + +web3-shh@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.35.tgz#7e4a585f8beee0c1927390937c6537748a5d1a58" + integrity sha512-8qSonk/x0xabERS9Sr6AIADN/Ty+5KwARkkGIfSYHKqFpdMDz+76F7cUCxtoCZoS8K04xgZlDKYe0TJXLYA0Fw== + dependencies: + web3-core "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + +web3-shh@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.37.tgz#3246ce5229601b525020828a56ee283307057105" + integrity sha512-h5STG/xqZNQWtCLYOu7NiMqwqPea8SfkKQUPUFxXKIPVCFVKpHuQEwW1qcPQRJMLhlQIv17xuoUe1A+RzDNbrw== + dependencies: + web3-core "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-core-subscriptions "1.0.0-beta.37" + web3-net "1.0.0-beta.37" + +web3-shh@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" + integrity sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA== dependencies: - web3-core "1.2.0" - web3-core-method "1.2.0" - web3-core-subscriptions "1.2.0" - web3-net "1.2.0" + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-net "1.2.1" -web3-utils@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.50.tgz#ed12454d3d2727d3b77695c1899ad3abbef303af" - integrity sha512-xGhM/YkepK2x0iMYUl/sws58LzTbodjMGlhZxrCZLZxJ0DoaDyk3UdmZ6aCSCwVTFg4hlVj3doaIhWnwGfhhpQ== +web3-utils@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.35.tgz#ced9e1df47c65581c441c5f2af76b05a37a273d7" + integrity sha512-Dq6f0SOKj3BDFRgOPnE6ALbzBDCKVIW8mKWVf7tGVhTDHf+wQaWwQSC3aArFSqdExB75BPBPyDpuMTNszhljpA== + dependencies: + bn.js "4.11.6" + eth-lib "0.1.27" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randomhex "0.1.5" + underscore "1.8.3" + utf8 "2.1.1" + +web3-utils@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.37.tgz#ab868a90fe5e649337e38bdaf72133fcbf4d414d" + integrity sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ== + dependencies: + bn.js "4.11.6" + eth-lib "0.1.27" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randomhex "0.1.5" + underscore "1.8.3" + utf8 "2.1.1" + +web3-utils@1.0.0-beta.52: + version "1.0.0-beta.52" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.52.tgz#27f9beeac3e1ea981eba9824d79e2971f156eebc" + integrity sha512-WdHyzPcZu/sOnNrkcOZT20QEX9FhwD9OJJXENojQNvMK2a1xo3n8JWBcC2gzAGwsa0Aah6z2B3Xwa1P//8FaoA== dependencies: "@babel/runtime" "^7.3.1" "@types/bn.js" "^4.11.4" @@ -5898,10 +11141,10 @@ web3-utils@1.0.0-beta.50: randomhex "0.1.5" utf8 "2.1.1" -web3-utils@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.0.tgz#1f11b05d173b757d3f5ba32cb90b375a487d3bf0" - integrity sha512-tI1low8ICoaWU2c53cikH0rsksKuIskI2nycH5E5sEXxxl9/BOD3CeDDBFbxgNPQ+bpDevbR7gXNEDB7Ud4G9g== +web3-utils@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" + integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== dependencies: bn.js "4.11.8" eth-lib "0.2.7" @@ -5911,36 +11154,116 @@ web3-utils@1.2.0: underscore "1.9.1" utf8 "3.0.0" -web3@1.0.0-beta.50: - version "1.0.0-beta.50" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.50.tgz#a82db1ac519e68696363eee46d9b233f52f37eed" - integrity sha512-N4YqT1jl2tZYNWiLk5gA5BMchHJaG76d65z899DT9UTR4iI6mfqe1QIE+1YLII1x+uE8ohFzBq/aaZ8praLeoA== +web3-utils@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.2.tgz#b53a08c40d2c3f31d3c4a28e7d749405df99c8c0" + integrity sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A== dependencies: - "@babel/runtime" "^7.3.1" - "@types/node" "^10.12.18" - web3-bzz "1.0.0-beta.50" - web3-core "1.0.0-beta.50" - web3-core-helpers "1.0.0-beta.50" - web3-core-method "1.0.0-beta.50" - web3-eth "1.0.0-beta.50" - web3-eth-personal "1.0.0-beta.50" - web3-net "1.0.0-beta.50" - web3-providers "1.0.0-beta.50" - web3-shh "1.0.0-beta.50" - web3-utils "1.0.0-beta.50" - -web3@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.0.tgz#ef9c43a99eac348a85c09179690290d45a96a5f2" - integrity sha512-iFrVAexsopX97x0ofBU/7HrCxzovf624qBkjBUeHZDf/G3Sb4tMQtjkCRc5lgVvzureq5SCqDiFDcqnw7eJ0bA== + bn.js "4.11.8" + eth-lib "0.2.7" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + +web3@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.35.tgz#6475095bd451a96e50a32b997ddee82279292f11" + integrity sha512-xwDmUhvTcHQvvNnOPcPZZgCxKUsI2e+GbHy7JkTK3/Rmnutazy8x7fsAXT9myw7V1qpi3GgLoZ3fkglSUbg1Mg== + dependencies: + web3-bzz "1.0.0-beta.35" + web3-core "1.0.0-beta.35" + web3-eth "1.0.0-beta.35" + web3-eth-personal "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-shh "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + +web3@1.0.0-beta.37, web3@^1.0.0-beta.36, web3@^1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.37.tgz#b42c30e67195f816cd19d048fda872f70eca7083" + integrity sha512-8XLgUspdzicC/xHG82TLrcF/Fxzj2XYNJ1KTYnepOI77bj5rvpsxxwHYBWQ6/JOjk0HkZqoBfnXWgcIHCDhZhQ== + dependencies: + web3-bzz "1.0.0-beta.37" + web3-core "1.0.0-beta.37" + web3-eth "1.0.0-beta.37" + web3-eth-personal "1.0.0-beta.37" + web3-net "1.0.0-beta.37" + web3-shh "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" + integrity sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw== + dependencies: + web3-bzz "1.2.1" + web3-core "1.2.1" + web3-eth "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-shh "1.2.1" + web3-utils "1.2.1" + +web3@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/web3/-/web3-0.16.0.tgz#a4554175cd462943035b1f1d39432f741c6b6019" + integrity sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk= + dependencies: + bignumber.js "git+https://github.com/debris/bignumber.js#master" + crypto-js "^3.1.4" + utf8 "^2.1.1" + xmlhttprequest "*" + +web3@^0.18.4: + version "0.18.4" + resolved "https://registry.yarnpkg.com/web3/-/web3-0.18.4.tgz#81ec1784145491f2eaa8955b31c06049e07c5e7d" + integrity sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0= + dependencies: + bignumber.js "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" + crypto-js "^3.1.4" + utf8 "^2.1.1" + xhr2 "*" + xmlhttprequest "*" + +web3@^0.20.1: + version "0.20.7" + resolved "https://registry.yarnpkg.com/web3/-/web3-0.20.7.tgz#1605e6d81399ed6f85a471a4f3da0c8be57df2f7" + integrity sha512-VU6/DSUX93d1fCzBz7WP/SGCQizO1rKZi4Px9j/3yRyfssHyFcZamMw2/sj4E8TlfMXONvZLoforR8B4bRoyTQ== + dependencies: + bignumber.js "git+https://github.com/frozeman/bignumber.js-nolookahead.git" + crypto-js "^3.1.4" + utf8 "^2.1.1" + xhr2-cookies "^1.1.0" + xmlhttprequest "*" + +webidl-conversions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" + integrity sha1-O/glj30xjHRDw28uFpQCoaZwNQY= + +websocket@1.0.26: + version "1.0.26" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.26.tgz#a03a01299849c35268c83044aa919c6374be8194" + integrity sha512-fjcrYDPIQxpTnqFQ9JjxUQcdvR89MFAOjPBlF+vjOt49w/XW4fJknUoMz/mDIn2eK1AdslVojcaOxOqyZZV8rw== dependencies: - web3-bzz "1.2.0" - web3-core "1.2.0" - web3-eth "1.2.0" - web3-eth-personal "1.2.0" - web3-net "1.2.0" - web3-shh "1.2.0" - web3-utils "1.2.0" + debug "^2.2.0" + nan "^2.3.3" + typedarray-to-buffer "^3.1.2" + yaeti "^0.0.6" + +websocket@1.0.29: + version "1.0.29" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.29.tgz#3f83e49d3279657c58b02a22d90749c806101b98" + integrity sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g== + dependencies: + debug "^2.2.0" + gulp "^4.0.2" + nan "^2.11.0" + typedarray-to-buffer "^3.1.5" + yaeti "^0.0.6" websocket@^1.0.28: version "1.0.28" @@ -5961,16 +11284,41 @@ websocket@^1.0.28: typedarray-to-buffer "^3.1.2" yaeti "^0.0.6" -"websocket@github:frozeman/WebSocket-Node#browserifyCompatible": - version "1.0.26" - uid "6c72925e3f8aaaea8dc8450f97627e85263999f2" - resolved "https://codeload.github.com/frozeman/WebSocket-Node/tar.gz/6c72925e3f8aaaea8dc8450f97627e85263999f2" +"websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": + version "1.0.29" + resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/905deb4812572b344f5801f8c9ce8bb02799d82e" dependencies: debug "^2.2.0" - nan "^2.3.3" - typedarray-to-buffer "^3.1.2" + es5-ext "^0.10.50" + nan "^2.14.0" + typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" +wget-improved@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/wget-improved/-/wget-improved-1.5.0.tgz#fc9e89379f6eba72a5586ccc9d52f5580616f20f" + integrity sha512-t+G+g9SQSy2h2+dg7h54r9adllfdI0fHHtshbl1V4jwIIBj1c10SmHwjP8vFx9fn1dr9QuF27uC7xoZr9YwEmg== + dependencies: + minimist "1.2.0" + tunnel "0.0.2" + +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-compat@~0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" + integrity sha1-AImBEa9om7CXVBzVpFymyHmERb8= + dependencies: + tr46 "~0.0.1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -5990,12 +11338,10 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" @@ -6015,6 +11361,15 @@ wrap-ansi@^2.0.0: 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" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -6029,6 +11384,20 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + +ws@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.1.1.tgz#1d43704689711ac1942fd2f283e38f825c4b8b95" + integrity sha512-bOusvpCb09TOBLbpMKszd45WKC2KPtxiyiHanv+H2DE3Az+1db5a/L7sVJZVDPUC1Br8f0SKRr1KjLpD1U/IAw== + dependencies: + async-limiter "~1.0.0" + ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -6038,6 +11407,13 @@ ws@^3.0.0: safe-buffer "~5.1.0" ultron "~1.1.0" +ws@^5.1.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" @@ -6063,14 +11439,19 @@ xhr-request@^1.0.1: url-set-query "^1.0.0" xhr "^2.0.4" -xhr2-cookies@1.1.0: +xhr2-cookies@1.1.0, xhr2-cookies@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= dependencies: cookiejar "^2.1.1" -xhr@^2.0.4, xhr@^2.3.3: +xhr2@*: + version "0.1.4" + resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" + integrity sha1-f4dliEdxbbUCYyOBL4GMras4el8= + +xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: version "2.5.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== @@ -6080,21 +11461,33 @@ xhr@^2.0.4, xhr@^2.3.3: parse-headers "^2.0.0" xtend "^4.0.0" +"xml-name-validator@>= 2.0.1 < 3.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU= + xml@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= -xmlhttprequest@1.8.0: +xmlhttprequest@*, xmlhttprequest@1.8.0, xmlhttprequest@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + dependencies: + object-keys "~0.4.0" + y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -6115,11 +11508,46 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.0, yallist@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^13.1.0: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" + integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= + dependencies: + camelcase "^4.1.0" + yargs-parser@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" @@ -6134,7 +11562,42 @@ yargs-parser@^9.0.2: dependencies: camelcase "^4.1.0" -yargs@11.1.0, yargs@^11.0.0: +yargs@13.2.4: + version "13.2.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" + integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.0" + +yargs@^10.0.3: + version "10.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" + integrity sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig== + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^8.1.0" + +yargs@^11.0.0: version "11.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== @@ -6152,23 +11615,63 @@ yargs@11.1.0, yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^10.0.3: - version "10.1.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" - integrity sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig== +yargs@^4.7.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" + integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= dependencies: - cliui "^4.0.0" + 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" + +yargs@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + 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.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" decamelize "^1.1.1" - find-up "^2.1.0" get-caller-file "^1.0.1" os-locale "^2.0.0" + read-pkg-up "^2.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1" - yargs-parser "^8.1.0" + yargs-parser "^7.0.0" yauzl@^2.4.2: version "2.10.0"