Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 14868307 | 831 days ago | IN | 0 ETH | 0.07785275 |
Loading...
Loading
Contract Name:
InstaVaultUIResolver
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "./interface.sol"; import "./helpers.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; contract InstaVaultUIResolver is Helpers { struct CommonVaultInfo { address token; uint8 decimals; uint256 userBalance; uint256 userBalanceStETH; uint256 aaveTokenSupplyRate; uint256 aaveWETHBorrowRate_; uint256 totalStEthBal; uint256 wethDebtAmt; uint256 userSupplyAmount; uint256 vaultTVLInAsset; uint256 availableWithdraw; uint256 revenueFee; VaultInterfaceToken.Ratios ratios; } /** * @dev Get all the info * @notice Get info of all the vaults and the user */ function getInfoCommon(address user_, address[] memory vaults_) public view returns (CommonVaultInfo[] memory commonInfo_) { uint256 len_ = vaults_.length; commonInfo_ = new CommonVaultInfo[](vaults_.length); for (uint256 i = 0; i < len_; i++) { VaultInterfaceCommon vault_ = VaultInterfaceCommon(vaults_[i]); IAavePriceOracle aaveOracle_ = IAavePriceOracle( AAVE_ADDR_PROVIDER.getPriceOracle() ); uint256 ethPriceInBaseCurrency_ = aaveOracle_.getAssetPrice( WETH_ADDR ); if (vaults_[i] == ETH_VAULT_ADDR) { HelperStruct memory helper_; VaultInterfaceETH ethVault_ = VaultInterfaceETH(vaults_[i]); VaultInterfaceETH.Ratios memory ratios_ = ethVault_.ratios(); commonInfo_[i].token = ETH_ADDR; commonInfo_[i].decimals = 18; commonInfo_[i].userBalance = user_.balance; commonInfo_[i].userBalanceStETH = TokenInterface(STETH_ADDR) .balanceOf(user_); commonInfo_[i].aaveTokenSupplyRate = 0; VaultInterfaceETH.BalVariables memory balances_; ( helper_.stethCollateralAmt, commonInfo_[i].wethDebtAmt, balances_, , ) = ethVault_.netAssets(); commonInfo_[i].totalStEthBal = helper_.stethCollateralAmt + balances_.stethDsaBal + balances_.stethVaultBal; commonInfo_[i].availableWithdraw = balances_.totalBal; uint256 currentRatioMax_ = (commonInfo_[i].wethDebtAmt * 1e4) / helper_.stethCollateralAmt; uint256 maxLimitThreshold = ratios_.maxLimit - 10; // taking 0.1% margin if (currentRatioMax_ < maxLimitThreshold) { commonInfo_[i].availableWithdraw += helper_.stethCollateralAmt - ((1e4 * commonInfo_[i].wethDebtAmt) / maxLimitThreshold); } commonInfo_[i].ratios.maxLimit = ratios_.maxLimit; commonInfo_[i].ratios.minLimit = ratios_.minLimit; commonInfo_[i].ratios.minLimitGap = ratios_.minLimitGap; commonInfo_[i].ratios.maxBorrowRate = ratios_.maxBorrowRate; } else { VaultInterfaceToken tokenVault_ = VaultInterfaceToken( vaults_[i] ); commonInfo_[i].ratios = tokenVault_.ratios(); commonInfo_[i].token = tokenVault_.token(); commonInfo_[i].decimals = vault_.decimals(); commonInfo_[i].userBalance = TokenInterface( commonInfo_[i].token ).balanceOf(user_); commonInfo_[i].userBalanceStETH = 0; ( , , , commonInfo_[i].aaveTokenSupplyRate, , , , , , ) = AAVE_DATA.getReserveData(commonInfo_[i].token); uint256 maxLimitThreshold = (commonInfo_[i].ratios.maxLimit - 100) - 10; // taking 0.1% margin from withdrawLimit uint256 stethCollateralAmt_; ( stethCollateralAmt_, commonInfo_[i].wethDebtAmt, commonInfo_[i].availableWithdraw ) = getAmounts( vaults_[i], commonInfo_[i].decimals, aaveOracle_.getAssetPrice(commonInfo_[i].token), ethPriceInBaseCurrency_, commonInfo_[i].ratios.stEthLimit, maxLimitThreshold ); commonInfo_[i].totalStEthBal = stethCollateralAmt_ + IERC20(STETH_ADDR).balanceOf(vault_.vaultDsa()) + IERC20(STETH_ADDR).balanceOf(vaults_[i]); } (uint256 exchangePrice, ) = vault_.getCurrentExchangePrice(); commonInfo_[i].userSupplyAmount = (vault_.balanceOf(user_) * exchangePrice) / 1e18; (, , , , commonInfo_[i].aaveWETHBorrowRate_, , , , , ) = AAVE_DATA .getReserveData(WETH_ADDR); commonInfo_[i].vaultTVLInAsset = (vault_.totalSupply() * exchangePrice) / 1e18; commonInfo_[i].revenueFee = vault_.revenueFee(); } } struct DeleverageAndWithdrawVars { uint256 withdrawalFee; uint256 currentRatioMax; uint256 currentRatioMin; uint256 netCollateral; uint256 netBorrow; VaultInterfaceETH.BalVariables balances; uint256 netSupply; uint256 availableWithdraw; uint256 maxLimitThreshold; address tokenAddr; uint256 tokenCollateralAmt; uint256 tokenVaultBal; uint256 tokenDSABal; uint256 netTokenBal; uint256 idealTokenBal; uint256 tokenPriceInBaseCurrency; uint256 ethPriceInBaseCurrency; uint256 tokenColInEth; uint256 tokenSupplyInEth; uint256 withdrawAmtInEth; uint256 idealTokenBalInEth; } function getDeleverageAndWithdrawData( address vaultAddr_, uint256 withdrawAmt_ ) public view returns ( address tokenAddr_, uint256 tokenDecimals_, uint256 premium, uint256 tokenPriceInEth_, uint256 exchangePrice_, uint256 itokenAmt_, uint256 deleverageAmtMax_, uint256 deleverageAmtMin_, uint256 deleverageAmtTillMinLimit_, uint256 deleverageAmtTillMaxLimit_ ) { DeleverageAndWithdrawVars memory v_; premium = deleverageAndWithdrawWrapper.premium(); v_.withdrawalFee = VaultInterfaceCommon(vaultAddr_).withdrawalFee(); (exchangePrice_, ) = VaultInterfaceCommon(vaultAddr_) .getCurrentExchangePrice(); itokenAmt_ = (withdrawAmt_ * 1e18) / exchangePrice_; withdrawAmt_ = withdrawAmt_ - (withdrawAmt_ * v_.withdrawalFee) / 1e4; (v_.currentRatioMax, v_.currentRatioMin) = getCurrentRatios(vaultAddr_); tokenDecimals_ = VaultInterfaceCommon(vaultAddr_).decimals(); if (vaultAddr_ == ETH_VAULT_ADDR) { tokenAddr_ = ETH_ADDR; tokenPriceInEth_ = 1e18; VaultInterfaceETH.Ratios memory ratios_ = VaultInterfaceETH( vaultAddr_ ).ratios(); ( v_.netCollateral, v_.netBorrow, v_.balances, v_.netSupply, ) = VaultInterfaceETH(vaultAddr_).netAssets(); v_.availableWithdraw = v_.balances.totalBal; v_.maxLimitThreshold = ratios_.maxLimit; if (v_.currentRatioMax < v_.maxLimitThreshold) { v_.availableWithdraw += v_.netCollateral - ((1e4 * v_.netBorrow) / v_.maxLimitThreshold); } // using this deleverageAmt_ the max ratio will remain the same if (withdrawAmt_ > v_.balances.totalBal) { deleverageAmtMax_ = (v_.netBorrow * (withdrawAmt_ - v_.balances.totalBal)) / (v_.netCollateral - v_.netBorrow); } else deleverageAmtMax_ = 0; // using this deleverageAmt_ the min ratio will remain the same deleverageAmtMin_ = (v_.netBorrow * withdrawAmt_) / (v_.netSupply - v_.netBorrow); // using this deleverageAmt_ the max ratio will be taken to maxLimit (unless ideal balance is sufficient) if ( v_.availableWithdraw <= withdrawAmt_ && withdrawAmt_ > v_.balances.totalBal ) { deleverageAmtTillMaxLimit_ = ((v_.netBorrow * 1e4) - ((ratios_.maxLimit - 10) * // taking 0.1% margin from maxLimit (v_.netSupply - withdrawAmt_))) / (1e4 - (ratios_.maxLimit - 10)); } else deleverageAmtTillMaxLimit_ = 0; // using this deleverageAmt_ the min ratio will be taken to minLimit if (v_.availableWithdraw <= withdrawAmt_) { deleverageAmtTillMinLimit_ = ((v_.netBorrow * 1e4) - (ratios_.minLimit * (v_.netSupply - withdrawAmt_))) / (1e4 - ratios_.minLimit); } else deleverageAmtTillMinLimit_ = 0; } else { tokenAddr_ = VaultInterfaceToken(vaultAddr_).token(); VaultInterfaceToken.Ratios memory ratios_ = VaultInterfaceToken( vaultAddr_ ).ratios(); v_.tokenAddr = VaultInterfaceToken(vaultAddr_).token(); ( v_.tokenCollateralAmt, , , v_.tokenVaultBal, v_.tokenDSABal, v_.netTokenBal ) = VaultInterfaceToken(vaultAddr_).getVaultBalances(); v_.idealTokenBal = v_.tokenVaultBal + v_.tokenDSABal; IAavePriceOracle aaveOracle_ = IAavePriceOracle( AAVE_ADDR_PROVIDER.getPriceOracle() ); v_.tokenPriceInBaseCurrency = aaveOracle_.getAssetPrice( v_.tokenAddr ); v_.ethPriceInBaseCurrency = aaveOracle_.getAssetPrice(WETH_ADDR); tokenPriceInEth_ = (v_.tokenPriceInBaseCurrency * 1e18) / v_.ethPriceInBaseCurrency; v_.tokenColInEth = (v_.tokenCollateralAmt * tokenPriceInEth_) / (10**tokenDecimals_); v_.tokenSupplyInEth = (v_.netTokenBal * tokenPriceInEth_) / (10**tokenDecimals_); v_.withdrawAmtInEth = (withdrawAmt_ * tokenPriceInEth_) / (10**tokenDecimals_); v_.idealTokenBalInEth = (v_.idealTokenBal * tokenPriceInEth_) / (10**tokenDecimals_); // using this deleverageAmt_ the max ratio will remain the same if (v_.withdrawAmtInEth > v_.idealTokenBalInEth) { deleverageAmtMax_ = (v_.currentRatioMax * (v_.withdrawAmtInEth - v_.idealTokenBalInEth)) / (10000 - ratios_.stEthLimit); } else deleverageAmtMax_ = 0; // using this deleverageAmt_ the min ratio will remain the same deleverageAmtMin_ = (v_.currentRatioMin * v_.withdrawAmtInEth) / (10000 - ratios_.stEthLimit); v_.availableWithdraw = v_.tokenVaultBal + v_.tokenDSABal; v_.maxLimitThreshold = ratios_.maxLimit - 100; if (v_.currentRatioMax < v_.maxLimitThreshold) { v_.availableWithdraw += (((v_.maxLimitThreshold - v_.currentRatioMax) * v_.tokenCollateralAmt) / v_.maxLimitThreshold); } // using this deleverageAmt_ the max ratio will be taken to maxLimit (unless ideal balance is sufficient) if ( v_.availableWithdraw <= withdrawAmt_ && withdrawAmt_ > v_.idealTokenBal ) { deleverageAmtTillMaxLimit_ = ((v_.currentRatioMax * v_.tokenColInEth) - (ratios_.maxLimit * (v_.tokenColInEth - (v_.withdrawAmtInEth - v_.idealTokenBalInEth)))) / (10000 - ratios_.stEthLimit); } else deleverageAmtTillMaxLimit_ = 0; // using this deleverageAmt_ the min ratio will be taken to minLimit if (v_.availableWithdraw <= withdrawAmt_) { deleverageAmtTillMinLimit_ = ((v_.currentRatioMin * v_.tokenSupplyInEth) - (ratios_.minLimit * (v_.tokenSupplyInEth - v_.withdrawAmtInEth))) / (10000 - ratios_.stEthLimit); } else deleverageAmtTillMinLimit_ = 0; } } }
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; interface IAaveAddressProvider { function getPriceOracle() external view returns (address); } interface IAavePriceOracle { function getAssetPrice(address _asset) external view returns (uint256); } interface IAaveDataprovider { function getReserveData(address asset) external view returns ( uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint40 ); } interface TokenInterface { function approve(address, uint256) external; function transfer(address, uint256) external; function transferFrom( address, address, uint256 ) external; function deposit() external payable; function withdraw(uint256) external; function balanceOf(address) external view returns (uint256); function decimals() external view returns (uint256); function totalSupply() external view returns (uint256); } interface VaultInterfaceETH { struct BalVariables { uint256 wethVaultBal; uint256 wethDsaBal; uint256 stethVaultBal; uint256 stethDsaBal; uint256 totalBal; } function netAssets() external view returns ( uint256 netCollateral_, uint256 netBorrow_, BalVariables memory balances_, uint256 netSupply_, uint256 netBal_ ); struct Ratios { uint16 maxLimit; uint16 minLimit; uint16 minLimitGap; uint128 maxBorrowRate; } function ratios() external view returns (Ratios memory); } interface VaultInterfaceToken { struct Ratios { uint16 maxLimit; uint16 maxLimitGap; uint16 minLimit; uint16 minLimitGap; uint16 stEthLimit; uint128 maxBorrowRate; } function ratios() external view returns (Ratios memory); function token() external view returns (address); function idealExcessAmt() external view returns (uint256); function getVaultBalances() external view returns ( uint256 tokenCollateralAmt_, uint256 stethCollateralAmt_, uint256 wethDebtAmt_, uint256 tokenVaultBal_, uint256 tokenDSABal_, uint256 netTokenBal_ ); } interface VaultInterfaceCommon { function decimals() external view returns (uint8); function balanceOf(address account) external view returns (uint256); function getCurrentExchangePrice() external view returns (uint256 exchangePrice_, uint256 newRevenue_); function vaultDsa() external view returns (address); function totalSupply() external view returns (uint256); function revenueFee() external view returns (uint256); function withdrawalFee() external view returns (uint256); } interface InstaDeleverageAndWithdrawWrapper { function premium() external view returns (uint256); }
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "./interface.sol"; contract Helpers { IAaveAddressProvider internal constant AAVE_ADDR_PROVIDER = IAaveAddressProvider(0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5); IAaveDataprovider internal constant AAVE_DATA = IAaveDataprovider(0x057835Ad21a177dbdd3090bB1CAE03EaCF78Fc6d); InstaDeleverageAndWithdrawWrapper internal constant deleverageAndWithdrawWrapper = InstaDeleverageAndWithdrawWrapper( 0xA6978cBA39f86491Ae5dcA53f4cdeFCB100E3E3d ); address internal constant ETH_ADDR = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; address internal constant WETH_ADDR = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address internal constant STETH_ADDR = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84; address internal constant ETH_VAULT_ADDR = 0xc383a3833A87009fD9597F8184979AF5eDFad019; struct BalVariables { uint256 wethVaultBal; uint256 wethDsaBal; uint256 stethVaultBal; uint256 stethDsaBal; uint256 totalBal; } struct HelperStruct { uint256 stethCollateralAmt; uint256 tokenVaultBal; uint256 tokenDSABal; uint256 netTokenBal; uint256 tokenCollateralAmt; } /** * @dev Helper function * @notice Helper function for calculating amounts */ function getAmounts( address vaultAddr_, uint256 decimals_, uint256 tokenPriceInBaseCurrency_, uint256 ethPriceInBaseCurrency_, uint256 stEthLimit_, uint256 maxLimitThreshold_ ) internal view returns ( uint256 stethCollateralAmt, uint256 wethDebtAmt, uint256 availableWithdraw ) { VaultInterfaceToken tokenVault_ = VaultInterfaceToken(vaultAddr_); HelperStruct memory helper_; ( helper_.tokenCollateralAmt, stethCollateralAmt, wethDebtAmt, helper_.tokenVaultBal, helper_.tokenDSABal, helper_.netTokenBal ) = tokenVault_.getVaultBalances(); uint256 tokenPriceInEth = (tokenPriceInBaseCurrency_ * 1e18) / ethPriceInBaseCurrency_; uint256 tokenColInEth_ = (helper_.tokenCollateralAmt * tokenPriceInEth) / (10**decimals_); uint256 ethCoveringDebt_ = (stethCollateralAmt * stEthLimit_) / 10000; uint256 excessDebt_ = (ethCoveringDebt_ < wethDebtAmt) ? wethDebtAmt - ethCoveringDebt_ : 0; uint256 currentRatioMax = tokenColInEth_ == 0 ? 0 : (excessDebt_ * 10000) / tokenColInEth_; availableWithdraw = helper_.tokenVaultBal + helper_.tokenDSABal; if (currentRatioMax < maxLimitThreshold_) { availableWithdraw += (((maxLimitThreshold_ - currentRatioMax) * helper_.tokenCollateralAmt) / maxLimitThreshold_); } } struct CurrentRatioVars { uint256 netCollateral; uint256 netBorrow; uint256 netSupply; address tokenAddr; uint256 tokenDecimals; uint256 tokenColAmt; uint256 stethColAmt; uint256 wethDebt; uint256 netTokenBal; uint256 ethCoveringDebt; uint256 excessDebt; uint256 tokenPriceInBaseCurrency; uint256 ethPriceInBaseCurrency; uint256 excessDebtInBaseCurrency; uint256 netTokenColInBaseCurrency; uint256 netTokenSupplyInBaseCurrency; } function getCurrentRatios(address vaultAddr_) public view returns (uint256 currentRatioMax_, uint256 currentRatioMin_) { CurrentRatioVars memory v_; if (vaultAddr_ == ETH_VAULT_ADDR) { ( v_.netCollateral, v_.netBorrow, , v_.netSupply, ) = VaultInterfaceETH(vaultAddr_).netAssets(); currentRatioMax_ = (v_.netBorrow * 1e4) / v_.netCollateral; currentRatioMin_ = (v_.netBorrow * 1e4) / v_.netSupply; } else { VaultInterfaceToken vault_ = VaultInterfaceToken(vaultAddr_); v_.tokenAddr = vault_.token(); v_.tokenDecimals = VaultInterfaceCommon(vaultAddr_).decimals(); ( v_.tokenColAmt, v_.stethColAmt, v_.wethDebt, , , v_.netTokenBal ) = vault_.getVaultBalances(); VaultInterfaceToken.Ratios memory ratios_ = vault_.ratios(); v_.ethCoveringDebt = (v_.stethColAmt * ratios_.stEthLimit) / 10000; v_.excessDebt = v_.ethCoveringDebt < v_.wethDebt ? v_.wethDebt - v_.ethCoveringDebt : 0; IAavePriceOracle aaveOracle_ = IAavePriceOracle( AAVE_ADDR_PROVIDER.getPriceOracle() ); v_.tokenPriceInBaseCurrency = aaveOracle_.getAssetPrice( v_.tokenAddr ); v_.ethPriceInBaseCurrency = aaveOracle_.getAssetPrice(WETH_ADDR); v_.excessDebtInBaseCurrency = (v_.excessDebt * v_.ethPriceInBaseCurrency) / 1e18; v_.netTokenColInBaseCurrency = (v_.tokenColAmt * v_.tokenPriceInBaseCurrency) / (10**v_.tokenDecimals); v_.netTokenSupplyInBaseCurrency = (v_.netTokenBal * v_.tokenPriceInBaseCurrency) / (10**v_.tokenDecimals); currentRatioMax_ = (v_.excessDebtInBaseCurrency * 10000) / v_.netTokenColInBaseCurrency; currentRatioMin_ = (v_.excessDebtInBaseCurrency * 10000) / v_.netTokenSupplyInBaseCurrency; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"vaultAddr_","type":"address"}],"name":"getCurrentRatios","outputs":[{"internalType":"uint256","name":"currentRatioMax_","type":"uint256"},{"internalType":"uint256","name":"currentRatioMin_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vaultAddr_","type":"address"},{"internalType":"uint256","name":"withdrawAmt_","type":"uint256"}],"name":"getDeleverageAndWithdrawData","outputs":[{"internalType":"address","name":"tokenAddr_","type":"address"},{"internalType":"uint256","name":"tokenDecimals_","type":"uint256"},{"internalType":"uint256","name":"premium","type":"uint256"},{"internalType":"uint256","name":"tokenPriceInEth_","type":"uint256"},{"internalType":"uint256","name":"exchangePrice_","type":"uint256"},{"internalType":"uint256","name":"itokenAmt_","type":"uint256"},{"internalType":"uint256","name":"deleverageAmtMax_","type":"uint256"},{"internalType":"uint256","name":"deleverageAmtMin_","type":"uint256"},{"internalType":"uint256","name":"deleverageAmtTillMinLimit_","type":"uint256"},{"internalType":"uint256","name":"deleverageAmtTillMaxLimit_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user_","type":"address"},{"internalType":"address[]","name":"vaults_","type":"address[]"}],"name":"getInfoCommon","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"userBalance","type":"uint256"},{"internalType":"uint256","name":"userBalanceStETH","type":"uint256"},{"internalType":"uint256","name":"aaveTokenSupplyRate","type":"uint256"},{"internalType":"uint256","name":"aaveWETHBorrowRate_","type":"uint256"},{"internalType":"uint256","name":"totalStEthBal","type":"uint256"},{"internalType":"uint256","name":"wethDebtAmt","type":"uint256"},{"internalType":"uint256","name":"userSupplyAmount","type":"uint256"},{"internalType":"uint256","name":"vaultTVLInAsset","type":"uint256"},{"internalType":"uint256","name":"availableWithdraw","type":"uint256"},{"internalType":"uint256","name":"revenueFee","type":"uint256"},{"components":[{"internalType":"uint16","name":"maxLimit","type":"uint16"},{"internalType":"uint16","name":"maxLimitGap","type":"uint16"},{"internalType":"uint16","name":"minLimit","type":"uint16"},{"internalType":"uint16","name":"minLimitGap","type":"uint16"},{"internalType":"uint16","name":"stEthLimit","type":"uint16"},{"internalType":"uint128","name":"maxBorrowRate","type":"uint128"}],"internalType":"struct VaultInterfaceToken.Ratios","name":"ratios","type":"tuple"}],"internalType":"struct InstaVaultUIResolver.CommonVaultInfo[]","name":"commonInfo_","type":"tuple[]"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061312b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806328327584146100465780639bdbd7f71461006f578063c691d6dc146100d6575b600080fd5b6100596100543660046129b2565b6100fe565b6040516100669190612d87565b60405180910390f35b61008261007d366004612a80565b6112d5565b604080516001600160a01b03909b168b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015261012082015261014001610066565b6100e96100e4366004612971565b611f5e565b60408051928352602083019190915201610066565b80516060908067ffffffffffffffff81111561011c5761011c6130c7565b60405190808252806020026020018201604052801561015557816020015b6101426127a3565b81526020019060019003908161013a5790505b50915060005b818110156112cd576000848281518110610177576101776130b1565b60200260200101519050600073b53c1a33016b2dc2ff3653530bff1848a515c8c56001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156101d057600080fd5b505afa1580156101e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102089190612995565b60405163b3596f0760e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201529091506000906001600160a01b0383169063b3596f079060240160206040518083038186803b15801561026157600080fd5b505afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102999190612bc8565b905073c383a3833a87009fd9597f8184979af5edfad0196001600160a01b03168785815181106102cb576102cb6130b1565b60200260200101516001600160a01b0316141561081e576103146040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000888681518110610328576103286130b1565b602002602001015190506000816001600160a01b031663cf6d625e6040518163ffffffff1660e01b815260040160806040518083038186803b15801561036d57600080fd5b505afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190612aac565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8988815181106103ce576103ce6130b1565b6020026020010151600001906001600160a01b031690816001600160a01b0316815250506012898881518110610406576104066130b1565b60200260200101516020019060ff16908160ff16815250508a6001600160a01b03163189888151811061043b5761043b6130b1565b6020908102919091010151604090810191909152516370a0823160e01b81526001600160a01b038c16600482015273ae7ab96520de3a18e5e111b5eaab095312d7fe84906370a082319060240160206040518083038186803b1580156104a057600080fd5b505afa1580156104b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d89190612bc8565b8988815181106104ea576104ea6130b1565b60200260200101516060018181525050600089888151811061050e5761050e6130b1565b602002602001015160800181815250506105506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b826001600160a01b0316630782d4216040518163ffffffff1660e01b81526004016101206040518083038186803b15801561058a57600080fd5b505afa15801561059e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c29190612c05565b905050866000018d8c815181106105db576105db6130b1565b602002602001015160e001829550838152508381525050505080604001518160600151856000015161060d9190612f00565b6106179190612f00565b8a8981518110610629576106296130b1565b602002602001015160c001818152505080608001518a8981518110610650576106506130b1565b6020026020010151610140018181525050600084600001518b8a8151811061067a5761067a6130b1565b602002602001015160e001516127106106939190613027565b61069d9190612f18565b90506000600a84600001516106b29190613046565b61ffff1690508082101561073157808c8b815181106106d3576106d36130b1565b602002602001015160e001516127106106ec9190613027565b6106f69190612f18565b86516107029190613069565b8c8b81518110610714576107146130b1565b60200260200101516101400181815161072d9190612f00565b9052505b83600001518c8b81518110610748576107486130b1565b602002602001015161018001516000019061ffff16908161ffff168152505083602001518c8b8151811061077e5761077e6130b1565b602002602001015161018001516040019061ffff16908161ffff168152505083604001518c8b815181106107b4576107b46130b1565b602002602001015161018001516060019061ffff16908161ffff168152505083606001518c8b815181106107ea576107ea6130b1565b6020026020010151610180015160a001906001600160801b031690816001600160801b031681525050505050505050610f75565b6000878581518110610832576108326130b1565b60200260200101519050806001600160a01b031663cf6d625e6040518163ffffffff1660e01b815260040160c06040518083038186803b15801561087557600080fd5b505afa158015610889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ad9190612b29565b8786815181106108bf576108bf6130b1565b60200260200101516101800181905250806001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561090857600080fd5b505afa15801561091c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109409190612995565b878681518110610952576109526130b1565b6020026020010151600001906001600160a01b031690816001600160a01b031681525050836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e79190612d64565b8786815181106109f9576109f96130b1565b60200260200101516020019060ff16908160ff1681525050868581518110610a2357610a236130b1565b6020908102919091010151516040516370a0823160e01b81526001600160a01b038b81166004830152909116906370a082319060240160206040518083038186803b158015610a7157600080fd5b505afa158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa99190612bc8565b878681518110610abb57610abb6130b1565b602002602001015160400181815250506000878681518110610adf57610adf6130b1565b6020026020010151606001818152505073057835ad21a177dbdd3090bb1cae03eacf78fc6d6001600160a01b03166335ea6a75888781518110610b2457610b246130b1565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016101406040518083038186803b158015610b7057600080fd5b505afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190612cdb565b50508e519497508e96508c955050509183109150610bca905057610bca6130b1565b602002602001015160800181815250506000600a6064898881518110610bf257610bf26130b1565b6020026020010151610180015160000151610c0d9190613046565b610c179190613046565b61ffff1690506000610d2f8a8881518110610c3457610c346130b1565b60200260200101518a8981518110610c4e57610c4e6130b1565b60200260200101516020015160ff16876001600160a01b031663b3596f078d8c81518110610c7e57610c7e6130b1565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190612bc8565b878d8c81518110610d1457610d146130b1565b602002602001015161018001516080015161ffff16876125cf565b8b8a81518110610d4157610d416130b1565b602002602001015160e0018c8b81518110610d5e57610d5e6130b1565b602002602001015161014001828152508281525082935050505073ae7ab96520de3a18e5e111b5eaab095312d7fe846001600160a01b03166370a082318b8981518110610dad57610dad6130b1565b60200260200101516040518263ffffffff1660e01b8152600401610de091906001600160a01b0391909116815260200190565b60206040518083038186803b158015610df857600080fd5b505afa158015610e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e309190612bc8565b73ae7ab96520de3a18e5e111b5eaab095312d7fe846001600160a01b03166370a08231886001600160a01b031663dc9356986040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8c57600080fd5b505afa158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190612995565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b9190612bc8565b610f459083612f00565b610f4f9190612f00565b898881518110610f6157610f616130b1565b602002602001015160c00181815250505050505b6000836001600160a01b031663cc4a01586040518163ffffffff1660e01b8152600401604080518083038186803b158015610faf57600080fd5b505afa158015610fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe79190612be1565b506040516370a0823160e01b81526001600160a01b038b81166004830152919250670de0b6b3a7640000918391908716906370a082319060240160206040518083038186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190612bc8565b61107b9190613027565b6110859190612f18565b878681518110611097576110976130b1565b602090810291909101015161010001526040516335ea6a7560e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600482015273057835ad21a177dbdd3090bb1cae03eacf78fc6d906335ea6a75906024016101406040518083038186803b15801561110657600080fd5b505afa15801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190612cdb565b50508e519397508e96508c9550505090831091506111609050576111606130b1565b602002602001015160a0018181525050670de0b6b3a764000081856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b357600080fd5b505afa1580156111c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111eb9190612bc8565b6111f59190613027565b6111ff9190612f18565b878681518110611211576112116130b1565b6020026020010151610120018181525050836001600160a01b03166336e4ec646040518163ffffffff1660e01b815260040160206040518083038186803b15801561125b57600080fd5b505afa15801561126f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112939190612bc8565b8786815181106112a5576112a56130b1565b60200260200101516101600181815250505050505080806112c590613080565b91505061015b565b505092915050565b6000806000806000806000806000806112ec61286a565b73a6978cba39f86491ae5dca53f4cdefcb100e3e3d6001600160a01b031663e0a73a936040518163ffffffff1660e01b815260040160206040518083038186803b15801561133957600080fd5b505afa15801561134d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113719190612bc8565b98508c6001600160a01b0316638bc7e8c46040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ac57600080fd5b505afa1580156113c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e49190612bc8565b8160000181815250508c6001600160a01b031663cc4a01586040518163ffffffff1660e01b8152600401604080518083038186803b15801561142557600080fd5b505afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d9190612be1565b509650866114738d670de0b6b3a7640000613027565b61147d9190612f18565b815190965061271090611490908e613027565b61149a9190612f18565b6114a4908d613069565b9b506114af8d611f5e565b8260200183604001828152508281525050508c6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156114fa57600080fd5b505afa15801561150e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115329190612d64565b60ff1699506001600160a01b038d1673c383a3833a87009fd9597f8184979af5edfad01914156118895773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9a50670de0b6b3a7640000975060008d6001600160a01b031663cf6d625e6040518163ffffffff1660e01b815260040160806040518083038186803b1580156115b957600080fd5b505afa1580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f19190612aac565b90508d6001600160a01b0316630782d4216040518163ffffffff1660e01b81526004016101206040518083038186803b15801561162d57600080fd5b505afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190612c05565b5060c086015260a085018190526080808601929092526060850192909252015160e0830152805161ffff166101008301819052602083015110156116e85761010082015160808301516116ba90612710613027565b6116c49190612f18565b82606001516116d39190613069565b8260e0018181516116e49190612f00565b9052505b8160a00151608001518d111561173f578160800151826060015161170c9190613069565b60a08301516080015161171f908f613069565b836080015161172e9190613027565b6117389190612f18565b9550611744565b600095505b81608001518260c001516117589190613069565b8d83608001516117689190613027565b6117729190612f18565b94508c8260e001511115801561178f57508160a00151608001518d115b1561180a5780516117a290600a90613046565b6117ae90612710613046565b61ffff168d8360c001516117c29190613069565b82516117d090600a90613046565b61ffff166117de9190613027565b60808401516117ef90612710613027565b6117f99190613069565b6118039190612f18565b925061180f565b600092505b8c8260e001511161187e57602081015161182b90612710613046565b61ffff168d8360c0015161183f9190613069565b826020015161ffff166118529190613027565b608084015161186390612710613027565b61186d9190613069565b6118779190612f18565b9350611883565b600093505b50611f4e565b8c6001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c257600080fd5b505afa1580156118d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fa9190612995565b9a5060008d6001600160a01b031663cf6d625e6040518163ffffffff1660e01b815260040160c06040518083038186803b15801561193757600080fd5b505afa15801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f9190612b29565b90508d6001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119aa57600080fd5b505afa1580156119be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e29190612995565b8261012001906001600160a01b031690816001600160a01b0316815250508d6001600160a01b031663223706856040518163ffffffff1660e01b815260040160c06040518083038186803b158015611a3957600080fd5b505afa158015611a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a719190612c91565b6101a088015261018087018190526101608701829052610140870194909452611a9d9392509050612f00565b826101c0018181525050600073b53c1a33016b2dc2ff3653530bff1848a515c8c56001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015611af657600080fd5b505afa158015611b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2e9190612995565b61012084015160405163b3596f0760e01b81526001600160a01b03918216600482015291925082169063b3596f079060240160206040518083038186803b158015611b7857600080fd5b505afa158015611b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb09190612bc8565b6101e084015260405163b3596f0760e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201526001600160a01b0382169063b3596f079060240160206040518083038186803b158015611c0957600080fd5b505afa158015611c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c419190612bc8565b61020084018190526101e0840151611c6190670de0b6b3a7640000613027565b611c6b9190612f18565b9950611c788c600a612f7d565b8a846101400151611c899190613027565b611c939190612f18565b610220840152611ca48c600a612f7d565b8a846101a00151611cb59190613027565b611cbf9190612f18565b610240840152611cd08c600a612f7d565b8a8f611cdc9190613027565b611ce69190612f18565b610260840152611cf78c600a612f7d565b8a846101c00151611d089190613027565b611d129190612f18565b61028084018190526102608401511115611d71576080820151611d3790612710613046565b61ffff16836102800151846102600151611d519190613069565b8460200151611d609190613027565b611d6a9190612f18565b9650611d76565b600096505b6080820151611d8790612710613046565b61ffff168361026001518460400151611da09190613027565b611daa9190612f18565b9550826101800151836101600151611dc29190612f00565b60e08401528151611dd590606490613046565b61ffff16610100840181905260208401511015611e30576101008301516101408401516020850151611e079083613069565b611e119190613027565b611e1b9190612f18565b8360e001818151611e2c9190612f00565b9052505b8d8360e0015111158015611e485750826101c001518e115b15611ec8576080820151611e5e90612710613046565b61ffff16836102800151846102600151611e789190613069565b846102200151611e889190613069565b8351611e98919061ffff16613027565b8461022001518560200151611ead9190613027565b611eb79190613069565b611ec19190612f18565b9350611ecd565b600093505b8d8360e0015111611f46576080820151611ee990612710613046565b61ffff16836102600151846102400151611f039190613069565b836040015161ffff16611f169190613027565b8461024001518560400151611f2b9190613027565b611f359190613069565b611f3f9190612f18565b9450611f4b565b600094505b50505b509295989b9194979a5092959850565b600080611fea60405180610200016040528060008152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b03841673c383a3833a87009fd9597f8184979af5edfad01914156120d257836001600160a01b0316630782d4216040518163ffffffff1660e01b81526004016101206040518083038186803b15801561204957600080fd5b505afa15801561205d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120819190612c05565b506040850152506020830181905281835261209e90612710613027565b6120a89190612f18565b9250806040015181602001516127106120c19190613027565b6120cb9190612f18565b91506125c9565b6000849050806001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561211057600080fd5b505afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190612995565b82606001906001600160a01b031690816001600160a01b031681525050846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561219e57600080fd5b505afa1580156121b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d69190612d64565b60ff16826080018181525050806001600160a01b031663223706856040518163ffffffff1660e01b815260040160c06040518083038186803b15801561221b57600080fd5b505afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122539190612c91565b610100880152505060e085015260c08085019190915260a0840191909152604080516367b6b12f60e11b815290516000926001600160a01b0385169263cf6d625e9260048083019392829003018186803b1580156122b057600080fd5b505afa1580156122c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e89190612b29565b9050612710816080015161ffff168460c001516123059190613027565b61230f9190612f18565b610120840181905260e08401511161232857600061233d565b8261012001518360e0015161233d9190613069565b83610140018181525050600073b53c1a33016b2dc2ff3653530bff1848a515c8c56001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561239657600080fd5b505afa1580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ce9190612995565b606085015160405163b3596f0760e01b81526001600160a01b03918216600482015291925082169063b3596f079060240160206040518083038186803b15801561241757600080fd5b505afa15801561242b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244f9190612bc8565b61016085015260405163b3596f0760e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201526001600160a01b0382169063b3596f079060240160206040518083038186803b1580156124a857600080fd5b505afa1580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190612bc8565b6101808501819052610140850151670de0b6b3a76400009161250191613027565b61250b9190612f18565b6101a0850152608084015161252190600a612f7d565b8461016001518560a001516125369190613027565b6125409190612f18565b6101c0850152608084015161255690600a612f7d565b84610160015185610100015161256c9190613027565b6125769190612f18565b6101e08501526101c08401516101a085015161259490612710613027565b61259e9190612f18565b9550836101e00151846101a001516127106125b99190613027565b6125c39190612f18565b94505050505b50915091565b60008060008089905061260a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b816001600160a01b031663223706856040518163ffffffff1660e01b815260040160c06040518083038186803b15801561264357600080fd5b505afa158015612657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267b9190612c91565b6060870152604086015260208501526080840192909252955093506000886126ab8b670de0b6b3a7640000613027565b6126b59190612f18565b905060006126c48c600a612f7d565b8284608001516126d49190613027565b6126de9190612f18565b905060006127106126ef8b8a613027565b6126f99190612f18565b9050600087821061270b576000612715565b6127158289613069565b90506000831561273b578361272c83612710613027565b6127369190612f18565b61273e565b60005b9050856040015186602001516127549190612f00565b97508a8110156127905760808601518b9061276f8383613069565b6127799190613027565b6127839190612f18565b61278d9089612f00565b97505b5050505050505096509650969350505050565b604051806101a0016040528060006001600160a01b03168152602001600060ff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016128656040518060c00160405280600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff16815260200160006001600160801b031681525090565b905290565b604051806102a0016040528060008152602001600081526020016000815260200160008152602001600081526020016128cb6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80516001600160801b038116811461295a57600080fd5b919050565b805161ffff8116811461295a57600080fd5b60006020828403121561298357600080fd5b813561298e816130dd565b9392505050565b6000602082840312156129a757600080fd5b815161298e816130dd565b600080604083850312156129c557600080fd5b82356129d0816130dd565b915060208381013567ffffffffffffffff808211156129ee57600080fd5b818601915086601f830112612a0257600080fd5b813581811115612a1457612a146130c7565b8060051b9150612a25848301612ecf565b8181528481019084860184860187018b1015612a4057600080fd5b600095505b83861015612a6f5780359450612a5a856130dd565b84835260019590950194918601918601612a45565b508096505050505050509250929050565b60008060408385031215612a9357600080fd5b8235612a9e816130dd565b946020939093013593505050565b600060808284031215612abe57600080fd5b6040516080810181811067ffffffffffffffff82111715612ae157612ae16130c7565b604052612aed8361295f565b8152612afb6020840161295f565b6020820152612b0c6040840161295f565b6040820152612b1d60608401612943565b60608201529392505050565b600060c08284031215612b3b57600080fd5b60405160c0810181811067ffffffffffffffff82111715612b5e57612b5e6130c7565b604052612b6a8361295f565b8152612b786020840161295f565b6020820152612b896040840161295f565b6040820152612b9a6060840161295f565b6060820152612bab6080840161295f565b6080820152612bbc60a08401612943565b60a08201529392505050565b600060208284031215612bda57600080fd5b5051919050565b60008060408385031215612bf457600080fd5b505080516020909101519092909150565b6000806000806000858703610120811215612c1f57600080fd5b865195506020870151945060a0603f1982011215612c3c57600080fd5b50612c45612ea6565b60408701518152606087015160208201526080870151604082015260a0870151606082015260c087015160808201528093505060e0860151915061010086015190509295509295909350565b60008060008060008060c08789031215612caa57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b6000806000806000806000806000806101408b8d031215612cfb57600080fd5b8a51995060208b0151985060408b0151975060608b0151965060808b0151955060a08b0151945060c08b0151935060e08b015192506101008b015191506101208b015164ffffffffff81168114612d5157600080fd5b809150509295989b9194979a5092959850565b600060208284031215612d7657600080fd5b815160ff8116811461298e57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015612e9957815180516001600160a01b031685528681015160ff16878601528581015186860152606080820151818701526080808301518188015260a0808401518189015260c0808501519089015260e08085015190890152610100808501519089015261012080850151908901526101408085015190890152610160808501519089015261018093840151805161ffff908116958a0195909552602081015185166101a08a0152604081015185166101c08a01529283015184166101e08901529082015190921661020087015201516001600160801b03166102208501526102409093019290850190600101612da4565b5091979650505050505050565b60405160a0810167ffffffffffffffff81118282101715612ec957612ec96130c7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ef857612ef86130c7565b604052919050565b60008219821115612f1357612f1361309b565b500190565b600082612f3557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612f75578160001904821115612f5b57612f5b61309b565b80851615612f6857918102915b93841c9390800290612f3f565b509250929050565b600061298e8383600082612f9357506001613021565b81612fa057506000613021565b8160018114612fb65760028114612fc057612fdc565b6001915050613021565b60ff841115612fd157612fd161309b565b50506001821b613021565b5060208310610133831016604e8410600b8410161715612fff575081810a613021565b6130098383612f3a565b806000190482111561301d5761301d61309b565b0290505b92915050565b60008160001904831182151516156130415761304161309b565b500290565b600061ffff838116908316818110156130615761306161309b565b039392505050565b60008282101561307b5761307b61309b565b500390565b60006000198214156130945761309461309b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146130f257600080fd5b5056fea2646970667358221220fc933c5c82748dd57fab68bd06e885a6ac92ee47ea61bfed35f0e867ae67726564736f6c63430008060033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100415760003560e01c806328327584146100465780639bdbd7f71461006f578063c691d6dc146100d6575b600080fd5b6100596100543660046129b2565b6100fe565b6040516100669190612d87565b60405180910390f35b61008261007d366004612a80565b6112d5565b604080516001600160a01b03909b168b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015261012082015261014001610066565b6100e96100e4366004612971565b611f5e565b60408051928352602083019190915201610066565b80516060908067ffffffffffffffff81111561011c5761011c6130c7565b60405190808252806020026020018201604052801561015557816020015b6101426127a3565b81526020019060019003908161013a5790505b50915060005b818110156112cd576000848281518110610177576101776130b1565b60200260200101519050600073b53c1a33016b2dc2ff3653530bff1848a515c8c56001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156101d057600080fd5b505afa1580156101e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102089190612995565b60405163b3596f0760e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201529091506000906001600160a01b0383169063b3596f079060240160206040518083038186803b15801561026157600080fd5b505afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102999190612bc8565b905073c383a3833a87009fd9597f8184979af5edfad0196001600160a01b03168785815181106102cb576102cb6130b1565b60200260200101516001600160a01b0316141561081e576103146040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000888681518110610328576103286130b1565b602002602001015190506000816001600160a01b031663cf6d625e6040518163ffffffff1660e01b815260040160806040518083038186803b15801561036d57600080fd5b505afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190612aac565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8988815181106103ce576103ce6130b1565b6020026020010151600001906001600160a01b031690816001600160a01b0316815250506012898881518110610406576104066130b1565b60200260200101516020019060ff16908160ff16815250508a6001600160a01b03163189888151811061043b5761043b6130b1565b6020908102919091010151604090810191909152516370a0823160e01b81526001600160a01b038c16600482015273ae7ab96520de3a18e5e111b5eaab095312d7fe84906370a082319060240160206040518083038186803b1580156104a057600080fd5b505afa1580156104b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d89190612bc8565b8988815181106104ea576104ea6130b1565b60200260200101516060018181525050600089888151811061050e5761050e6130b1565b602002602001015160800181815250506105506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b826001600160a01b0316630782d4216040518163ffffffff1660e01b81526004016101206040518083038186803b15801561058a57600080fd5b505afa15801561059e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c29190612c05565b905050866000018d8c815181106105db576105db6130b1565b602002602001015160e001829550838152508381525050505080604001518160600151856000015161060d9190612f00565b6106179190612f00565b8a8981518110610629576106296130b1565b602002602001015160c001818152505080608001518a8981518110610650576106506130b1565b6020026020010151610140018181525050600084600001518b8a8151811061067a5761067a6130b1565b602002602001015160e001516127106106939190613027565b61069d9190612f18565b90506000600a84600001516106b29190613046565b61ffff1690508082101561073157808c8b815181106106d3576106d36130b1565b602002602001015160e001516127106106ec9190613027565b6106f69190612f18565b86516107029190613069565b8c8b81518110610714576107146130b1565b60200260200101516101400181815161072d9190612f00565b9052505b83600001518c8b81518110610748576107486130b1565b602002602001015161018001516000019061ffff16908161ffff168152505083602001518c8b8151811061077e5761077e6130b1565b602002602001015161018001516040019061ffff16908161ffff168152505083604001518c8b815181106107b4576107b46130b1565b602002602001015161018001516060019061ffff16908161ffff168152505083606001518c8b815181106107ea576107ea6130b1565b6020026020010151610180015160a001906001600160801b031690816001600160801b031681525050505050505050610f75565b6000878581518110610832576108326130b1565b60200260200101519050806001600160a01b031663cf6d625e6040518163ffffffff1660e01b815260040160c06040518083038186803b15801561087557600080fd5b505afa158015610889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ad9190612b29565b8786815181106108bf576108bf6130b1565b60200260200101516101800181905250806001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561090857600080fd5b505afa15801561091c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109409190612995565b878681518110610952576109526130b1565b6020026020010151600001906001600160a01b031690816001600160a01b031681525050836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e79190612d64565b8786815181106109f9576109f96130b1565b60200260200101516020019060ff16908160ff1681525050868581518110610a2357610a236130b1565b6020908102919091010151516040516370a0823160e01b81526001600160a01b038b81166004830152909116906370a082319060240160206040518083038186803b158015610a7157600080fd5b505afa158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa99190612bc8565b878681518110610abb57610abb6130b1565b602002602001015160400181815250506000878681518110610adf57610adf6130b1565b6020026020010151606001818152505073057835ad21a177dbdd3090bb1cae03eacf78fc6d6001600160a01b03166335ea6a75888781518110610b2457610b246130b1565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016101406040518083038186803b158015610b7057600080fd5b505afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190612cdb565b50508e519497508e96508c955050509183109150610bca905057610bca6130b1565b602002602001015160800181815250506000600a6064898881518110610bf257610bf26130b1565b6020026020010151610180015160000151610c0d9190613046565b610c179190613046565b61ffff1690506000610d2f8a8881518110610c3457610c346130b1565b60200260200101518a8981518110610c4e57610c4e6130b1565b60200260200101516020015160ff16876001600160a01b031663b3596f078d8c81518110610c7e57610c7e6130b1565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190612bc8565b878d8c81518110610d1457610d146130b1565b602002602001015161018001516080015161ffff16876125cf565b8b8a81518110610d4157610d416130b1565b602002602001015160e0018c8b81518110610d5e57610d5e6130b1565b602002602001015161014001828152508281525082935050505073ae7ab96520de3a18e5e111b5eaab095312d7fe846001600160a01b03166370a082318b8981518110610dad57610dad6130b1565b60200260200101516040518263ffffffff1660e01b8152600401610de091906001600160a01b0391909116815260200190565b60206040518083038186803b158015610df857600080fd5b505afa158015610e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e309190612bc8565b73ae7ab96520de3a18e5e111b5eaab095312d7fe846001600160a01b03166370a08231886001600160a01b031663dc9356986040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8c57600080fd5b505afa158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190612995565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b9190612bc8565b610f459083612f00565b610f4f9190612f00565b898881518110610f6157610f616130b1565b602002602001015160c00181815250505050505b6000836001600160a01b031663cc4a01586040518163ffffffff1660e01b8152600401604080518083038186803b158015610faf57600080fd5b505afa158015610fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe79190612be1565b506040516370a0823160e01b81526001600160a01b038b81166004830152919250670de0b6b3a7640000918391908716906370a082319060240160206040518083038186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190612bc8565b61107b9190613027565b6110859190612f18565b878681518110611097576110976130b1565b602090810291909101015161010001526040516335ea6a7560e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600482015273057835ad21a177dbdd3090bb1cae03eacf78fc6d906335ea6a75906024016101406040518083038186803b15801561110657600080fd5b505afa15801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190612cdb565b50508e519397508e96508c9550505090831091506111609050576111606130b1565b602002602001015160a0018181525050670de0b6b3a764000081856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b357600080fd5b505afa1580156111c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111eb9190612bc8565b6111f59190613027565b6111ff9190612f18565b878681518110611211576112116130b1565b6020026020010151610120018181525050836001600160a01b03166336e4ec646040518163ffffffff1660e01b815260040160206040518083038186803b15801561125b57600080fd5b505afa15801561126f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112939190612bc8565b8786815181106112a5576112a56130b1565b60200260200101516101600181815250505050505080806112c590613080565b91505061015b565b505092915050565b6000806000806000806000806000806112ec61286a565b73a6978cba39f86491ae5dca53f4cdefcb100e3e3d6001600160a01b031663e0a73a936040518163ffffffff1660e01b815260040160206040518083038186803b15801561133957600080fd5b505afa15801561134d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113719190612bc8565b98508c6001600160a01b0316638bc7e8c46040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ac57600080fd5b505afa1580156113c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e49190612bc8565b8160000181815250508c6001600160a01b031663cc4a01586040518163ffffffff1660e01b8152600401604080518083038186803b15801561142557600080fd5b505afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d9190612be1565b509650866114738d670de0b6b3a7640000613027565b61147d9190612f18565b815190965061271090611490908e613027565b61149a9190612f18565b6114a4908d613069565b9b506114af8d611f5e565b8260200183604001828152508281525050508c6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156114fa57600080fd5b505afa15801561150e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115329190612d64565b60ff1699506001600160a01b038d1673c383a3833a87009fd9597f8184979af5edfad01914156118895773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9a50670de0b6b3a7640000975060008d6001600160a01b031663cf6d625e6040518163ffffffff1660e01b815260040160806040518083038186803b1580156115b957600080fd5b505afa1580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f19190612aac565b90508d6001600160a01b0316630782d4216040518163ffffffff1660e01b81526004016101206040518083038186803b15801561162d57600080fd5b505afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190612c05565b5060c086015260a085018190526080808601929092526060850192909252015160e0830152805161ffff166101008301819052602083015110156116e85761010082015160808301516116ba90612710613027565b6116c49190612f18565b82606001516116d39190613069565b8260e0018181516116e49190612f00565b9052505b8160a00151608001518d111561173f578160800151826060015161170c9190613069565b60a08301516080015161171f908f613069565b836080015161172e9190613027565b6117389190612f18565b9550611744565b600095505b81608001518260c001516117589190613069565b8d83608001516117689190613027565b6117729190612f18565b94508c8260e001511115801561178f57508160a00151608001518d115b1561180a5780516117a290600a90613046565b6117ae90612710613046565b61ffff168d8360c001516117c29190613069565b82516117d090600a90613046565b61ffff166117de9190613027565b60808401516117ef90612710613027565b6117f99190613069565b6118039190612f18565b925061180f565b600092505b8c8260e001511161187e57602081015161182b90612710613046565b61ffff168d8360c0015161183f9190613069565b826020015161ffff166118529190613027565b608084015161186390612710613027565b61186d9190613069565b6118779190612f18565b9350611883565b600093505b50611f4e565b8c6001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c257600080fd5b505afa1580156118d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fa9190612995565b9a5060008d6001600160a01b031663cf6d625e6040518163ffffffff1660e01b815260040160c06040518083038186803b15801561193757600080fd5b505afa15801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f9190612b29565b90508d6001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119aa57600080fd5b505afa1580156119be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e29190612995565b8261012001906001600160a01b031690816001600160a01b0316815250508d6001600160a01b031663223706856040518163ffffffff1660e01b815260040160c06040518083038186803b158015611a3957600080fd5b505afa158015611a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a719190612c91565b6101a088015261018087018190526101608701829052610140870194909452611a9d9392509050612f00565b826101c0018181525050600073b53c1a33016b2dc2ff3653530bff1848a515c8c56001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015611af657600080fd5b505afa158015611b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2e9190612995565b61012084015160405163b3596f0760e01b81526001600160a01b03918216600482015291925082169063b3596f079060240160206040518083038186803b158015611b7857600080fd5b505afa158015611b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb09190612bc8565b6101e084015260405163b3596f0760e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201526001600160a01b0382169063b3596f079060240160206040518083038186803b158015611c0957600080fd5b505afa158015611c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c419190612bc8565b61020084018190526101e0840151611c6190670de0b6b3a7640000613027565b611c6b9190612f18565b9950611c788c600a612f7d565b8a846101400151611c899190613027565b611c939190612f18565b610220840152611ca48c600a612f7d565b8a846101a00151611cb59190613027565b611cbf9190612f18565b610240840152611cd08c600a612f7d565b8a8f611cdc9190613027565b611ce69190612f18565b610260840152611cf78c600a612f7d565b8a846101c00151611d089190613027565b611d129190612f18565b61028084018190526102608401511115611d71576080820151611d3790612710613046565b61ffff16836102800151846102600151611d519190613069565b8460200151611d609190613027565b611d6a9190612f18565b9650611d76565b600096505b6080820151611d8790612710613046565b61ffff168361026001518460400151611da09190613027565b611daa9190612f18565b9550826101800151836101600151611dc29190612f00565b60e08401528151611dd590606490613046565b61ffff16610100840181905260208401511015611e30576101008301516101408401516020850151611e079083613069565b611e119190613027565b611e1b9190612f18565b8360e001818151611e2c9190612f00565b9052505b8d8360e0015111158015611e485750826101c001518e115b15611ec8576080820151611e5e90612710613046565b61ffff16836102800151846102600151611e789190613069565b846102200151611e889190613069565b8351611e98919061ffff16613027565b8461022001518560200151611ead9190613027565b611eb79190613069565b611ec19190612f18565b9350611ecd565b600093505b8d8360e0015111611f46576080820151611ee990612710613046565b61ffff16836102600151846102400151611f039190613069565b836040015161ffff16611f169190613027565b8461024001518560400151611f2b9190613027565b611f359190613069565b611f3f9190612f18565b9450611f4b565b600094505b50505b509295989b9194979a5092959850565b600080611fea60405180610200016040528060008152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b03841673c383a3833a87009fd9597f8184979af5edfad01914156120d257836001600160a01b0316630782d4216040518163ffffffff1660e01b81526004016101206040518083038186803b15801561204957600080fd5b505afa15801561205d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120819190612c05565b506040850152506020830181905281835261209e90612710613027565b6120a89190612f18565b9250806040015181602001516127106120c19190613027565b6120cb9190612f18565b91506125c9565b6000849050806001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561211057600080fd5b505afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190612995565b82606001906001600160a01b031690816001600160a01b031681525050846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561219e57600080fd5b505afa1580156121b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d69190612d64565b60ff16826080018181525050806001600160a01b031663223706856040518163ffffffff1660e01b815260040160c06040518083038186803b15801561221b57600080fd5b505afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122539190612c91565b610100880152505060e085015260c08085019190915260a0840191909152604080516367b6b12f60e11b815290516000926001600160a01b0385169263cf6d625e9260048083019392829003018186803b1580156122b057600080fd5b505afa1580156122c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e89190612b29565b9050612710816080015161ffff168460c001516123059190613027565b61230f9190612f18565b610120840181905260e08401511161232857600061233d565b8261012001518360e0015161233d9190613069565b83610140018181525050600073b53c1a33016b2dc2ff3653530bff1848a515c8c56001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561239657600080fd5b505afa1580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ce9190612995565b606085015160405163b3596f0760e01b81526001600160a01b03918216600482015291925082169063b3596f079060240160206040518083038186803b15801561241757600080fd5b505afa15801561242b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244f9190612bc8565b61016085015260405163b3596f0760e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201526001600160a01b0382169063b3596f079060240160206040518083038186803b1580156124a857600080fd5b505afa1580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190612bc8565b6101808501819052610140850151670de0b6b3a76400009161250191613027565b61250b9190612f18565b6101a0850152608084015161252190600a612f7d565b8461016001518560a001516125369190613027565b6125409190612f18565b6101c0850152608084015161255690600a612f7d565b84610160015185610100015161256c9190613027565b6125769190612f18565b6101e08501526101c08401516101a085015161259490612710613027565b61259e9190612f18565b9550836101e00151846101a001516127106125b99190613027565b6125c39190612f18565b94505050505b50915091565b60008060008089905061260a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b816001600160a01b031663223706856040518163ffffffff1660e01b815260040160c06040518083038186803b15801561264357600080fd5b505afa158015612657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267b9190612c91565b6060870152604086015260208501526080840192909252955093506000886126ab8b670de0b6b3a7640000613027565b6126b59190612f18565b905060006126c48c600a612f7d565b8284608001516126d49190613027565b6126de9190612f18565b905060006127106126ef8b8a613027565b6126f99190612f18565b9050600087821061270b576000612715565b6127158289613069565b90506000831561273b578361272c83612710613027565b6127369190612f18565b61273e565b60005b9050856040015186602001516127549190612f00565b97508a8110156127905760808601518b9061276f8383613069565b6127799190613027565b6127839190612f18565b61278d9089612f00565b97505b5050505050505096509650969350505050565b604051806101a0016040528060006001600160a01b03168152602001600060ff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016128656040518060c00160405280600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff16815260200160006001600160801b031681525090565b905290565b604051806102a0016040528060008152602001600081526020016000815260200160008152602001600081526020016128cb6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80516001600160801b038116811461295a57600080fd5b919050565b805161ffff8116811461295a57600080fd5b60006020828403121561298357600080fd5b813561298e816130dd565b9392505050565b6000602082840312156129a757600080fd5b815161298e816130dd565b600080604083850312156129c557600080fd5b82356129d0816130dd565b915060208381013567ffffffffffffffff808211156129ee57600080fd5b818601915086601f830112612a0257600080fd5b813581811115612a1457612a146130c7565b8060051b9150612a25848301612ecf565b8181528481019084860184860187018b1015612a4057600080fd5b600095505b83861015612a6f5780359450612a5a856130dd565b84835260019590950194918601918601612a45565b508096505050505050509250929050565b60008060408385031215612a9357600080fd5b8235612a9e816130dd565b946020939093013593505050565b600060808284031215612abe57600080fd5b6040516080810181811067ffffffffffffffff82111715612ae157612ae16130c7565b604052612aed8361295f565b8152612afb6020840161295f565b6020820152612b0c6040840161295f565b6040820152612b1d60608401612943565b60608201529392505050565b600060c08284031215612b3b57600080fd5b60405160c0810181811067ffffffffffffffff82111715612b5e57612b5e6130c7565b604052612b6a8361295f565b8152612b786020840161295f565b6020820152612b896040840161295f565b6040820152612b9a6060840161295f565b6060820152612bab6080840161295f565b6080820152612bbc60a08401612943565b60a08201529392505050565b600060208284031215612bda57600080fd5b5051919050565b60008060408385031215612bf457600080fd5b505080516020909101519092909150565b6000806000806000858703610120811215612c1f57600080fd5b865195506020870151945060a0603f1982011215612c3c57600080fd5b50612c45612ea6565b60408701518152606087015160208201526080870151604082015260a0870151606082015260c087015160808201528093505060e0860151915061010086015190509295509295909350565b60008060008060008060c08789031215612caa57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b6000806000806000806000806000806101408b8d031215612cfb57600080fd5b8a51995060208b0151985060408b0151975060608b0151965060808b0151955060a08b0151945060c08b0151935060e08b015192506101008b015191506101208b015164ffffffffff81168114612d5157600080fd5b809150509295989b9194979a5092959850565b600060208284031215612d7657600080fd5b815160ff8116811461298e57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015612e9957815180516001600160a01b031685528681015160ff16878601528581015186860152606080820151818701526080808301518188015260a0808401518189015260c0808501519089015260e08085015190890152610100808501519089015261012080850151908901526101408085015190890152610160808501519089015261018093840151805161ffff908116958a0195909552602081015185166101a08a0152604081015185166101c08a01529283015184166101e08901529082015190921661020087015201516001600160801b03166102208501526102409093019290850190600101612da4565b5091979650505050505050565b60405160a0810167ffffffffffffffff81118282101715612ec957612ec96130c7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ef857612ef86130c7565b604052919050565b60008219821115612f1357612f1361309b565b500190565b600082612f3557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612f75578160001904821115612f5b57612f5b61309b565b80851615612f6857918102915b93841c9390800290612f3f565b509250929050565b600061298e8383600082612f9357506001613021565b81612fa057506000613021565b8160018114612fb65760028114612fc057612fdc565b6001915050613021565b60ff841115612fd157612fd161309b565b50506001821b613021565b5060208310610133831016604e8410600b8410161715612fff575081810a613021565b6130098383612f3a565b806000190482111561301d5761301d61309b565b0290505b92915050565b60008160001904831182151516156130415761304161309b565b500290565b600061ffff838116908316818110156130615761306161309b565b039392505050565b60008282101561307b5761307b61309b565b500390565b60006000198214156130945761309461309b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146130f257600080fd5b5056fea2646970667358221220fc933c5c82748dd57fab68bd06e885a6ac92ee47ea61bfed35f0e867ae67726564736f6c63430008060033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.