More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 93 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stake With Permi... | 12860032 | 1290 days ago | IN | 0 ETH | 0.0024457 | ||||
Remove Liquidity... | 12835978 | 1294 days ago | IN | 0 ETH | 0.00578255 | ||||
Stake With Permi... | 12657766 | 1322 days ago | IN | 0 ETH | 0.00231953 | ||||
Remove Liquidity... | 12650885 | 1323 days ago | IN | 0 ETH | 0.00567666 | ||||
Stake With Permi... | 12600364 | 1331 days ago | IN | 0 ETH | 0.0033287 | ||||
Remove Liquidity... | 12550929 | 1338 days ago | IN | 0 ETH | 0.01045273 | ||||
Stake With Permi... | 12535745 | 1341 days ago | IN | 0 ETH | 0.00345399 | ||||
Stake With Permi... | 12535117 | 1341 days ago | IN | 0 ETH | 0.00323206 | ||||
Stake With Permi... | 12523433 | 1343 days ago | IN | 0 ETH | 0.00442141 | ||||
Remove Liquidity... | 12508597 | 1345 days ago | IN | 0 ETH | 0.00634391 | ||||
Remove Liquidity... | 12479048 | 1349 days ago | IN | 0 ETH | 0.0378299 | ||||
Remove Liquidity... | 12401178 | 1362 days ago | IN | 0 ETH | 0.0196608 | ||||
Remove Liquidity... | 12376489 | 1365 days ago | IN | 0 ETH | 0.0193302 | ||||
Remove Liquidity... | 12376479 | 1365 days ago | IN | 0 ETH | 0.00163251 | ||||
Remove Liquidity... | 12335523 | 1372 days ago | IN | 0 ETH | 0.0186997 | ||||
Stake With Permi... | 12330806 | 1372 days ago | IN | 0 ETH | 0.01364742 | ||||
Remove Liquidity... | 12314474 | 1375 days ago | IN | 0 ETH | 0.00876242 | ||||
Remove Liquidity... | 12285573 | 1379 days ago | IN | 0 ETH | 0.02501935 | ||||
Remove Liquidity... | 12271094 | 1382 days ago | IN | 0 ETH | 0.04469769 | ||||
Remove Liquidity... | 12260225 | 1383 days ago | IN | 0 ETH | 0.01827313 | ||||
Remove Liquidity... | 12234300 | 1387 days ago | IN | 0 ETH | 0.0172508 | ||||
Stake | 12233411 | 1387 days ago | IN | 0 ETH | 0.02580219 | ||||
Stake With Permi... | 12219826 | 1390 days ago | IN | 0 ETH | 0.00357661 | ||||
Stake With Permi... | 12219825 | 1390 days ago | IN | 0 ETH | 0.01430075 | ||||
Remove Liquidity... | 12212434 | 1391 days ago | IN | 0 ETH | 0.01635979 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
13117014 | 1250 days ago | 0.18332267 ETH | ||||
13117014 | 1250 days ago | 0.18332267 ETH | ||||
12851576 | 1292 days ago | 0.2155235 ETH | ||||
12851576 | 1292 days ago | 0.2155235 ETH | ||||
12851536 | 1292 days ago | 0.00021899 ETH | ||||
12851536 | 1292 days ago | 0.00021899 ETH | ||||
12835970 | 1294 days ago | 0.05764 ETH | ||||
12835970 | 1294 days ago | 0.05764 ETH | ||||
12808832 | 1298 days ago | 0.31606384 ETH | ||||
12808832 | 1298 days ago | 0.31606384 ETH | ||||
12783598 | 1302 days ago | 0.48798753 ETH | ||||
12783598 | 1302 days ago | 0.48798753 ETH | ||||
12764751 | 1305 days ago | 0.88527166 ETH | ||||
12764751 | 1305 days ago | 0.88527166 ETH | ||||
12762932 | 1305 days ago | 0.26912673 ETH | ||||
12762932 | 1305 days ago | 0.26912673 ETH | ||||
12706789 | 1314 days ago | 0.00010715 ETH | ||||
12706789 | 1314 days ago | 0.00010715 ETH | ||||
12706619 | 1314 days ago | 0.05971779 ETH | ||||
12706619 | 1314 days ago | 0.05971779 ETH | ||||
12706602 | 1314 days ago | 0.05878497 ETH | ||||
12706602 | 1314 days ago | 0.05878497 ETH | ||||
12659436 | 1322 days ago | 0.01 ETH | ||||
12659436 | 1322 days ago | 0.01 ETH | ||||
12650885 | 1323 days ago | 0.54620359 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ValueLiquidProvider
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-01-20 */ // SPDX-License-Identifier: SEE LICENSE IN LICENSE pragma solidity >=0.7.6; pragma abicoder v2; interface IValueLiquidFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint32 tokenWeight0, uint32 swapFee, uint256); function feeTo() external view returns (address); function formula() external view returns (address); function protocolFee() external view returns (uint256); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB, uint32 tokenWeightA, uint32 swapFee ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function isPair(address) external view returns (bool); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB, uint32 tokenWeightA, uint32 swapFee ) external returns (address pair); function getWeightsAndSwapFee(address pair) external view returns ( uint32 tokenWeight0, uint32 tokenWeight1, uint32 swapFee ); function setFeeTo(address) external; function setFeeToSetter(address) external; function setProtocolFee(uint256) external; } /* Bancor Formula interface */ interface IValueLiquidFormula { function getReserveAndWeights(address pair, address tokenA) external view returns ( address tokenB, uint256 reserveA, uint256 reserveB, uint32 tokenWeightA, uint32 tokenWeightB, uint32 swapFee ); function getFactoryReserveAndWeights( address factory, address pair, address tokenA ) external view returns ( address tokenB, uint256 reserveA, uint256 reserveB, uint32 tokenWeightA, uint32 tokenWeightB, uint32 swapFee ); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut, uint32 tokenWeightIn, uint32 tokenWeightOut, uint32 swapFee ) external view returns (uint256 amountIn); function getPairAmountIn( address pair, address tokenIn, uint256 amountOut ) external view returns (uint256 amountIn); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut, uint32 tokenWeightIn, uint32 tokenWeightOut, uint32 swapFee ) external view returns (uint256 amountOut); function getPairAmountOut( address pair, address tokenIn, uint256 amountIn ) external view returns (uint256 amountOut); function getAmountsIn( address tokenIn, address tokenOut, uint256 amountOut, address[] calldata path ) external view returns (uint256[] memory amounts); function getFactoryAmountsIn( address factory, address tokenIn, address tokenOut, uint256 amountOut, address[] calldata path ) external view returns (uint256[] memory amounts); function getAmountsOut( address tokenIn, address tokenOut, uint256 amountIn, address[] calldata path ) external view returns (uint256[] memory amounts); function getFactoryAmountsOut( address factory, address tokenIn, address tokenOut, uint256 amountIn, address[] calldata path ) external view returns (uint256[] memory amounts); function ensureConstantValue( uint256 reserve0, uint256 reserve1, uint256 balance0Adjusted, uint256 balance1Adjusted, uint32 tokenWeight0 ) external view returns (bool); function getReserves( address pair, address tokenA, address tokenB ) external view returns (uint256 reserveA, uint256 reserveB); function getOtherToken(address pair, address tokenA) external view returns (address tokenB); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function sortTokens(address tokenA, address tokenB) external pure returns (address token0, address token1); function mintLiquidityFee( uint256 totalLiquidity, uint112 reserve0, uint112 reserve1, uint32 tokenWeight0, uint32 tokenWeight1, uint112 collectedFee0, uint112 collectedFee1 ) external view returns (uint256 amount); } interface IValueLiquidPair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event PaidProtocolFee(uint112 collectedFee0, uint112 collectedFee1); event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function getCollectedFees() external view returns (uint112 _collectedFee0, uint112 _collectedFee1); function getTokenWeights() external view returns (uint32 tokenWeight0, uint32 tokenWeight1); function getSwapFee() external view returns (uint32); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize( address, address, uint32, uint32 ) external; } interface IStakePool { event Deposit(address indexed account, uint256 amount); event AddRewardPool(uint256 indexed poolId); event UpdateRewardPool(uint256 indexed poolId, uint256 endRewardBlock, uint256 rewardPerBlock); event PayRewardPool( uint256 indexed poolId, address indexed rewardToken, address indexed account, uint256 pendingReward, uint256 rebaseAmount, uint256 paidReward ); event UpdateRewardRebaser(uint256 indexed poolId, address rewardRebaser); event UpdateRewardMultiplier(uint256 indexed poolId, address rewardMultiplier); event Withdraw(address indexed account, uint256 amount); function version() external returns (uint256); function pair() external returns (address); function initialize( address _pair, uint256 _unstakingFrozenTime, address _rewardFund, address _timelock ) external; function stake(uint256) external; function stakeFor(address _account) external; function withdraw(uint256) external; function getReward(uint8 _pid, address _account) external; function getAllRewards(address _account) external; function pendingReward(uint8 _pid, address _account) external view returns (uint256); function getEndRewardBlock(uint8 _pid) external view returns (address, uint256); function getRewardPerBlock(uint8 pid) external view returns (uint256); function rewardPoolInfoLength() external view returns (uint256); function unfrozenStakeTime(address _account) external view returns (uint256); function emergencyWithdraw() external; function updateReward() external; function updateReward(uint8 _pid) external; function updateRewardPool( uint8 _pid, uint256 _endRewardBlock, uint256 _rewardPerBlock ) external; function getRewardMultiplier( uint8 _pid, uint256 _from, uint256 _to, uint256 _rewardPerBlock ) external view returns (uint256); function getRewardRebase( uint8 _pid, address _rewardToken, uint256 _pendingReward ) external view returns (uint256); function updateRewardRebaser(uint8 _pid, address _rewardRebaser) external; function updateRewardMultiplier(uint8 _pid, address _rewardMultiplier) external; function getUserInfo(uint8 _pid, address _account) external view returns ( uint256 amount, uint256 rewardDebt, uint256 accumulatedEarned, uint256 lockReward, uint256 lockRewardReleased ); function addRewardPool( address _rewardToken, address _rewardRebaser, address _rewardMultiplier, uint256 _startBlock, uint256 _endRewardBlock, uint256 _rewardPerBlock, uint256 _lockRewardPercent, uint256 _startVestingBlock, uint256 _endVestingBlock ) external; function removeLiquidity( address provider, address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address provider, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityETHSupportingFeeOnTransferTokens( address provider, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); } // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: APPROVE_FAILED"); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FAILED"); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FROM_FAILED"); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, "TransferHelper: ETH_TRANSFER_FAILED"); } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); } interface IValueLiquidProvider { function factory() external view returns (address); function controller() external view returns (address); function formula() external view returns (address); function WETH() external view returns (address); function removeLiquidity( address pair, address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address pair, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address pair, address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address pair, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityETHSupportingFeeOnTransferTokens( address pair, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address pair, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function stake( address stakePool, uint256 amount, uint256 deadline ) external; function stakeWithPermit( address stakePool, uint256 amount, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external; } // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMath { function add(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x + y) >= x, "ds-math-add-overflow"); } function sub(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x - y) <= x, "ds-math-sub-underflow"); } function mul(uint256 x, uint256 y) internal pure returns (uint256 z) { require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow"); } function div(uint256 a, uint256 b) internal pure returns (uint256 c) { require(b > 0, "ds-math-division-by-zero"); c = a / b; } } interface IWETH { function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; function balanceOf(address account) external view returns (uint256); } interface IStakePoolController { event MasterCreated(address indexed farm, address indexed pair, uint256 version, address timelock, address stakePoolRewardFund, uint256 totalStakePool); event SetWhitelistStakingFor(address indexed contractAddress, bool value); event SetWhitelistStakePool(address indexed contractAddress, int8 value); event SetStakePoolCreator(address indexed contractAddress, uint256 verion); event SetWhitelistRewardRebaser(address indexed contractAddress, bool value); event SetWhitelistRewardMultiplier(address indexed contractAddress, bool value); event SetStakePoolVerifier(address indexed contractAddress, bool value); event ChangeGovernance(address indexed governance); event SetFeeCollector(address indexed feeCollector); event SetFeeToken(address indexed token); event SetFeeAmount(uint256 indexed amount); struct PoolRewardInfo { address rewardToken; address rewardRebaser; address rewardMultiplier; uint256 startBlock; uint256 endRewardBlock; uint256 rewardPerBlock; uint256 lockRewardPercent; uint256 startVestingBlock; uint256 endVestingBlock; uint256 unstakingFrozenTime; uint256 rewardFundAmount; } function allStakePools(uint256) external view returns (address stakePool); function isStakePool(address contractAddress) external view returns (bool); function isStakePoolVerifier(address contractAddress) external view returns (bool); function isWhitelistStakingFor(address contractAddress) external view returns (bool); function isWhitelistStakePool(address contractAddress) external view returns (int8); function setStakePoolVerifier(address contractAddress, bool state) external; function setWhitelistStakingFor(address contractAddress, bool state) external; function setWhitelistStakePool(address contractAddress, int8 state) external; function addStakePoolCreator(address contractAddress) external; function isWhitelistRewardRebaser(address contractAddress) external view returns (bool); function setWhitelistRewardRebaser(address contractAddress, bool state) external; function isWhitelistRewardMultiplier(address contractAddress) external view returns (bool); function setWhitelistRewardMultiplier(address contractAddress, bool state) external; function allStakePoolsLength() external view returns (uint256); function create( uint256 version, address pair, uint256 delayTimeLock, PoolRewardInfo calldata poolRewardInfo, uint8 flag ) external returns (address); function createPair( uint256 version, address tokenA, address tokenB, uint32 tokenWeightA, uint32 swapFee, uint256 delayTimeLock, PoolRewardInfo calldata poolRewardInfo, uint8 flag ) external returns (address); function setGovernance(address) external; function setFeeCollector(address _address) external; function setFeeToken(address _token) external; function setFeeAmount(uint256 _token) external; } contract ValueLiquidProvider is IValueLiquidProvider { using SafeMath for uint256; address public immutable override factory; address public immutable override controller; address public immutable override formula; address public immutable override WETH; address private constant ETH_ADDRESS = address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); modifier ensure(uint256 deadline) { require(deadline >= block.timestamp, "Router: EXPIRED"); _; } constructor( address _factory, address _controller, address _WETH ) { factory = _factory; controller = _controller; formula = IValueLiquidFactory(_factory).formula(); WETH = _WETH; } receive() external payable { assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract } function stake( address stakePool, uint256 amount, uint256 deadline ) external virtual override ensure(deadline) { require(IStakePoolController(controller).isStakePool(stakePool), "Router: Invalid stakePool"); address pair = IStakePool(stakePool).pair(); IValueLiquidPair(pair).transferFrom(msg.sender, stakePool, amount); IStakePool(stakePool).stakeFor(msg.sender); } function stakeWithPermit( address stakePool, uint256 amount, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override ensure(deadline) { require(IStakePoolController(controller).isStakePool(stakePool), "Router: Invalid stakePool"); address pair = IStakePool(stakePool).pair(); IValueLiquidPair(pair).permit(msg.sender, address(this), approveMax ? uint256(-1) : amount, deadline, v, r, s); IValueLiquidPair(pair).transferFrom(msg.sender, stakePool, amount); IStakePool(stakePool).stakeFor(msg.sender); } // **** REMOVE LIQUIDITY **** function _removeLiquidity( address pair, address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to ) internal returns (uint256 amountA, uint256 amountB) { require(IValueLiquidFactory(factory).isPair(pair), "Router: Invalid pair"); IValueLiquidPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair (uint256 amount0, uint256 amount1) = IValueLiquidPair(pair).burn(to); (address token0, ) = IValueLiquidFormula(formula).sortTokens(tokenA, tokenB); (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0); require(amountA >= amountAMin, "Router: INSUFFICIENT_A_AMOUNT"); require(amountB >= amountBMin, "Router: INSUFFICIENT_B_AMOUNT"); } function removeLiquidity( address pair, address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) public virtual override ensure(deadline) returns (uint256 amountA, uint256 amountB) { (amountA, amountB) = _removeLiquidity(pair, tokenA, tokenB, liquidity, amountAMin, amountBMin, to); } function removeLiquidityETH( address pair, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) public virtual override ensure(deadline) returns (uint256 amountToken, uint256 amountETH) { (amountToken, amountETH) = _removeLiquidity(pair, token, WETH, liquidity, amountTokenMin, amountETHMin, address(this)); TransferHelper.safeTransfer(token, to, amountToken); transferAll(ETH_ADDRESS, to, amountETH); } function removeLiquidityWithPermit( address pair, address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override ensure(deadline) returns (uint256 amountA, uint256 amountB) { { uint256 value = approveMax ? uint256(-1) : liquidity; IValueLiquidPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); } (amountA, amountB) = _removeLiquidity(pair, tokenA, tokenB, liquidity, amountAMin, amountBMin, to); } function removeLiquidityETHWithPermit( address pair, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint256 amountToken, uint256 amountETH) { uint256 value = approveMax ? uint256(-1) : liquidity; IValueLiquidPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); (amountToken, amountETH) = removeLiquidityETH(pair, token, liquidity, amountTokenMin, amountETHMin, to, deadline); } // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) **** function removeLiquidityETHSupportingFeeOnTransferTokens( address pair, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) public virtual override ensure(deadline) returns (uint256 amountETH) { (, amountETH) = removeLiquidity(pair, token, WETH, liquidity, amountTokenMin, amountETHMin, address(this), deadline); TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this))); transferAll(ETH_ADDRESS, to, amountETH); } function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address pair, address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint256 amountETH) { uint256 value = approveMax ? uint256(-1) : liquidity; IValueLiquidPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(pair, token, liquidity, amountTokenMin, amountETHMin, to, deadline); } function transferAll( address token, address to, uint256 amount ) internal returns (bool) { if (amount == 0) { return true; } if (isETH(token)) { IWETH(WETH).withdraw(amount); TransferHelper.safeTransferETH(to, amount); } else { TransferHelper.safeTransfer(token, to, amount); } return true; } function isETH(address token) internal pure returns (bool) { return (token == ETH_ADDRESS); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_controller","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"formula","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakePool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakePool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"stakeWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6101006040523480156200001257600080fd5b5060405162001e5338038062001e5383398101604081905262000035916200012f565b6001600160601b0319606084811b821660805283901b1660a05260408051634b75f54f60e01b815290516001600160a01b03851691634b75f54f916004808301926020929190829003018186803b1580156200009057600080fd5b505afa158015620000a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cb91906200010b565b6001600160601b0319606091821b811660c05291901b1660e05250620001789050565b80516001600160a01b03811681146200010657600080fd5b919050565b6000602082840312156200011d578081fd5b6200012882620000ee565b9392505050565b60008060006060848603121562000144578182fd5b6200014f84620000ee565b92506200015f60208501620000ee565b91506200016f60408501620000ee565b90509250925092565b60805160601c60a05160601c60c05160601c60e05160601c611c72620001e16000398060e85280610c245280610c8b5280610db752806113f6525080610675528061110352508061031c528061081f5280610ec1525080610cf25280610ee85250611c726000f3fe6080604052600436106100cb5760003560e01c8063ad5c464811610074578063e1f4a7841161004e578063e1f4a78414610246578063ebb5d2e914610266578063f77c47911461028657610111565b8063ad5c4648146101fc578063b56b681d14610211578063c45a01551461023157610111565b80634c17fd7c116100a55780634c17fd7c1461018e57806365babd99146101bc578063a4aabb08146101dc57610111565b80630c51b88f146101165780630e2f024c146101365780634b75f54f1461016c57610111565b36610111573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461010f57fe5b005b600080fd5b34801561012257600080fd5b5061010f61013136600461182d565b61029b565b34801561014257600080fd5b50610156610151366004611784565b610590565b6040516101639190611bf2565b60405180910390f35b34801561017857600080fd5b50610181610673565b604051610163919061195e565b34801561019a57600080fd5b506101ae6101a9366004611658565b610697565b604051610163929190611bfb565b3480156101c857600080fd5b5061010f6101d7366004611861565b6107a7565b3480156101e857600080fd5b506101ae6101f7366004611784565b610b39565b34801561020857600080fd5b50610181610c22565b34801561021d57600080fd5b506101ae61022c366004611713565b610c46565b34801561023d57600080fd5b50610181610cf0565b34801561025257600080fd5b506101ae6102613660046115d4565b610d14565b34801561027257600080fd5b50610156610281366004611713565b610d73565b34801561029257600080fd5b50610181610ebf565b80428110156102df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b60405180910390fd5b6040517f1047a85700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631047a8579061035190879060040161195e565b60206040518083038186803b15801561036957600080fd5b505afa15801561037d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a191906118ce565b6103d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b84565b60008473ffffffffffffffffffffffffffffffffffffffff1663a8aa1b316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561042157600080fd5b505af1158015610435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610459919061157f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd906104b2903390899089906004016119cd565b602060405180830381600087803b1580156104cc57600080fd5b505af11580156104e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050491906118ce565b506040517f4bf6920600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861690634bf692069061055790339060040161195e565b600060405180830381600087803b15801561057157600080fd5b505af1158015610585573d6000803e3d6000fd5b505050505050505050565b6000808561059e578a6105c0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8e169063d505accf90610621903390309086908d908c908c908c9060040161197f565b600060405180830381600087803b15801561063b57600080fd5b505af115801561064f573d6000803e3d6000fd5b505050506106628d8d8d8d8d8d8d610d73565b9d9c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008086428110156106d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b6000876106e2578c610704565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b90508f73ffffffffffffffffffffffffffffffffffffffff1663d505accf3330848d8c8c8c6040518863ffffffff1660e01b815260040161074b979695949392919061197f565b600060405180830381600087803b15801561076557600080fd5b505af1158015610779573d6000803e3d6000fd5b505050505061078d8f8f8f8f8f8f8f610ee3565b8093508194505050509c509c9a5050505050505050505050565b84428110156107e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b6040517f1047a85700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631047a85790610854908b9060040161195e565b60206040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a491906118ce565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b84565b60008873ffffffffffffffffffffffffffffffffffffffff1663a8aa1b316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095c919061157f565b90508073ffffffffffffffffffffffffffffffffffffffff1663d505accf333089610987578b6109a9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8b8a8a8a6040518863ffffffff1660e01b81526004016109cf979695949392919061197f565b600060405180830381600087803b1580156109e957600080fd5b505af11580156109fd573d6000803e3d6000fd5b50506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841692506323b872dd9150610a579033908d908d906004016119cd565b602060405180830381600087803b158015610a7157600080fd5b505af1158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa991906118ce565b506040517f4bf6920600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a1690634bf6920690610afc90339060040161195e565b600060405180830381600087803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b50505050505050505050505050565b600080600086610b49578b610b6b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8f169063d505accf90610bcc903390309086908e908d908d908d9060040161197f565b600060405180830381600087803b158015610be657600080fd5b505af1158015610bfa573d6000803e3d6000fd5b50505050610c0d8e8e8e8e8e8e8e610c46565b909f909e509c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000808242811015610c84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610cb38a8a7f00000000000000000000000000000000000000000000000000000000000000008b8b8b30610ee3565b9093509150610cc3898685611273565b610ce273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee868461139c565b505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000808242811015610d52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610d618b8b8b8b8b8b8b610ee3565b909c909b509950505050505050505050565b60008142811015610db0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610de089897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a610d14565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909350610e9391508990869073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610e3e90309060040161195e565b60206040518083038186803b158015610e5657600080fd5b505afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e91906118ea565b611273565b610eb273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee858461139c565b5050979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5e31b138a6040518263ffffffff1660e01b8152600401610f3f919061195e565b60206040518083038186803b158015610f5757600080fd5b505afa158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f91906118ce565b610fc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611bbb565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906323b872dd9061101b9033908d908b906004016119cd565b602060405180830381600087803b15801561103557600080fd5b505af1158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906118ce565b506000808a73ffffffffffffffffffffffffffffffffffffffff166389afcb44866040518263ffffffff1660e01b81526004016110aa919061195e565b6040805180830381600087803b1580156110c357600080fd5b505af11580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190611902565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663544caa568c8c6040518363ffffffff1660e01b815260040161115c9291906119fe565b604080518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061159b565b5090508073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16146111e85781836111eb565b82825b90955093508785101561122a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611ab9565b86841015611264576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611a82565b50505097509795505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016112a5929190611a25565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112f39190611925565b6000604051808303816000865af19150503d8060008114611330576040519150601f19603f3d011682016040523d82523d6000602084013e611335565b606091505b509150915081801561135f57508051158061135f57508080602001905181019061135f91906118ce565b611395576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611a4b565b5050505050565b6000816113ab5750600161147b565b6113b484611482565b1561146c576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d9061142b908590600401611bf2565b600060405180830381600087803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050505061146783836114b5565b611477565b611477848484611273565b5060015b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b919050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114ec9190611925565b60006040518083038185875af1925050503d8060008114611529576040519150601f19603f3d011682016040523d82523d6000602084013e61152e565b606091505b5050905080611569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b27565b505050565b803560ff811681146114b057600080fd5b600060208284031215611590578081fd5b815161147b81611c09565b600080604083850312156115ad578081fd5b82516115b881611c09565b60208401519092506115c981611c09565b809150509250929050565b600080600080600080600080610100898b0312156115f0578384fd5b88356115fb81611c09565b9750602089013561160b81611c09565b9650604089013561161b81611c09565b9550606089013594506080890135935060a0890135925060c089013561164081611c09565b8092505060e089013590509295985092959890939650565b6000806000806000806000806000806000806101808d8f03121561167a578384fd5b8c3561168581611c09565b9b5060208d013561169581611c09565b9a5060408d01356116a581611c09565b995060608d0135985060808d0135975060a08d0135965060c08d01356116ca81611c09565b955060e08d013594506101008d01356116e281611c2e565b93506116f16101208e0161156e565b92506101408d013591506101608d013590509295989b509295989b509295989b565b600080600080600080600060e0888a03121561172d578283fd5b873561173881611c09565b9650602088013561174881611c09565b955060408801359450606088013593506080880135925060a088013561176d81611c09565b8092505060c0880135905092959891949750929550565b60008060008060008060008060008060006101608c8e0312156117a5578081fd5b8b356117b081611c09565b9a5060208c01356117c081611c09565b995060408c0135985060608c0135975060808c0135965060a08c01356117e581611c09565b955060c08c0135945060e08c01356117fc81611c2e565b935061180b6101008d0161156e565b92506101208c013591506101408c013590509295989b509295989b9093969950565b600080600060608486031215611841578081fd5b833561184c81611c09565b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121561187b578081fd5b873561188681611c09565b9650602088013595506040880135945060608801356118a481611c2e565b93506118b26080890161156e565b925060a0880135915060c0880135905092959891949750929550565b6000602082840312156118df578081fd5b815161147b81611c2e565b6000602082840312156118fb578081fd5b5051919050565b60008060408385031215611914578182fd5b505080516020909101519092909150565b60008251815b81811015611945576020818601810151858301520161192b565b818111156119535782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601d908201527f526f757465723a20494e53554646494349454e545f425f414d4f554e54000000604082015260600190565b6020808252601d908201527f526f757465723a20494e53554646494349454e545f415f414d4f554e54000000604082015260600190565b6020808252600f908201527f526f757465723a20455850495245440000000000000000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f526f757465723a20496e76616c6964207374616b65506f6f6c00000000000000604082015260600190565b60208082526014908201527f526f757465723a20496e76616c69642070616972000000000000000000000000604082015260600190565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff81168114611c2b57600080fd5b50565b8015158114611c2b57600080fdfea2646970667358221220bfb1fc5395a2c1100f26d308a3a83e7e11293886d74b334b0906c1951a14e75864736f6c634300070600330000000000000000000000005021470fc598373fba4fe3384745940eab3e653d000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x6080604052600436106100cb5760003560e01c8063ad5c464811610074578063e1f4a7841161004e578063e1f4a78414610246578063ebb5d2e914610266578063f77c47911461028657610111565b8063ad5c4648146101fc578063b56b681d14610211578063c45a01551461023157610111565b80634c17fd7c116100a55780634c17fd7c1461018e57806365babd99146101bc578063a4aabb08146101dc57610111565b80630c51b88f146101165780630e2f024c146101365780634b75f54f1461016c57610111565b36610111573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2161461010f57fe5b005b600080fd5b34801561012257600080fd5b5061010f61013136600461182d565b61029b565b34801561014257600080fd5b50610156610151366004611784565b610590565b6040516101639190611bf2565b60405180910390f35b34801561017857600080fd5b50610181610673565b604051610163919061195e565b34801561019a57600080fd5b506101ae6101a9366004611658565b610697565b604051610163929190611bfb565b3480156101c857600080fd5b5061010f6101d7366004611861565b6107a7565b3480156101e857600080fd5b506101ae6101f7366004611784565b610b39565b34801561020857600080fd5b50610181610c22565b34801561021d57600080fd5b506101ae61022c366004611713565b610c46565b34801561023d57600080fd5b50610181610cf0565b34801561025257600080fd5b506101ae6102613660046115d4565b610d14565b34801561027257600080fd5b50610156610281366004611713565b610d73565b34801561029257600080fd5b50610181610ebf565b80428110156102df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b60405180910390fd5b6040517f1047a85700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b1690631047a8579061035190879060040161195e565b60206040518083038186803b15801561036957600080fd5b505afa15801561037d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a191906118ce565b6103d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b84565b60008473ffffffffffffffffffffffffffffffffffffffff1663a8aa1b316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561042157600080fd5b505af1158015610435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610459919061157f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd906104b2903390899089906004016119cd565b602060405180830381600087803b1580156104cc57600080fd5b505af11580156104e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050491906118ce565b506040517f4bf6920600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861690634bf692069061055790339060040161195e565b600060405180830381600087803b15801561057157600080fd5b505af1158015610585573d6000803e3d6000fd5b505050505050505050565b6000808561059e578a6105c0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8e169063d505accf90610621903390309086908d908c908c908c9060040161197f565b600060405180830381600087803b15801561063b57600080fd5b505af115801561064f573d6000803e3d6000fd5b505050506106628d8d8d8d8d8d8d610d73565b9d9c50505050505050505050505050565b7f000000000000000000000000d989212c51ba850a1787ce4c666eb44a170cc41581565b60008086428110156106d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b6000876106e2578c610704565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b90508f73ffffffffffffffffffffffffffffffffffffffff1663d505accf3330848d8c8c8c6040518863ffffffff1660e01b815260040161074b979695949392919061197f565b600060405180830381600087803b15801561076557600080fd5b505af1158015610779573d6000803e3d6000fd5b505050505061078d8f8f8f8f8f8f8f610ee3565b8093508194505050509c509c9a5050505050505050505050565b84428110156107e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b6040517f1047a85700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b1690631047a85790610854908b9060040161195e565b60206040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a491906118ce565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b84565b60008873ffffffffffffffffffffffffffffffffffffffff1663a8aa1b316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095c919061157f565b90508073ffffffffffffffffffffffffffffffffffffffff1663d505accf333089610987578b6109a9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8b8a8a8a6040518863ffffffff1660e01b81526004016109cf979695949392919061197f565b600060405180830381600087803b1580156109e957600080fd5b505af11580156109fd573d6000803e3d6000fd5b50506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841692506323b872dd9150610a579033908d908d906004016119cd565b602060405180830381600087803b158015610a7157600080fd5b505af1158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa991906118ce565b506040517f4bf6920600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a1690634bf6920690610afc90339060040161195e565b600060405180830381600087803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b50505050505050505050505050565b600080600086610b49578b610b6b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8f169063d505accf90610bcc903390309086908e908d908d908d9060040161197f565b600060405180830381600087803b158015610be657600080fd5b505af1158015610bfa573d6000803e3d6000fd5b50505050610c0d8e8e8e8e8e8e8e610c46565b909f909e509c50505050505050505050505050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6000808242811015610c84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610cb38a8a7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28b8b8b30610ee3565b9093509150610cc3898685611273565b610ce273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee868461139c565b505097509795505050505050565b7f0000000000000000000000005021470fc598373fba4fe3384745940eab3e653d81565b6000808242811015610d52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610d618b8b8b8b8b8b8b610ee3565b909c909b509950505050505050505050565b60008142811015610db0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610de089897f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28a8a8a308a610d14565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909350610e9391508990869073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610e3e90309060040161195e565b60206040518083038186803b158015610e5657600080fd5b505afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e91906118ea565b611273565b610eb273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee858461139c565b5050979650505050505050565b7f000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b81565b6000807f0000000000000000000000005021470fc598373fba4fe3384745940eab3e653d73ffffffffffffffffffffffffffffffffffffffff1663e5e31b138a6040518263ffffffff1660e01b8152600401610f3f919061195e565b60206040518083038186803b158015610f5757600080fd5b505afa158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f91906118ce565b610fc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611bbb565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906323b872dd9061101b9033908d908b906004016119cd565b602060405180830381600087803b15801561103557600080fd5b505af1158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906118ce565b506000808a73ffffffffffffffffffffffffffffffffffffffff166389afcb44866040518263ffffffff1660e01b81526004016110aa919061195e565b6040805180830381600087803b1580156110c357600080fd5b505af11580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190611902565b9150915060007f000000000000000000000000d989212c51ba850a1787ce4c666eb44a170cc41573ffffffffffffffffffffffffffffffffffffffff1663544caa568c8c6040518363ffffffff1660e01b815260040161115c9291906119fe565b604080518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061159b565b5090508073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16146111e85781836111eb565b82825b90955093508785101561122a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611ab9565b86841015611264576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611a82565b50505097509795505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016112a5929190611a25565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112f39190611925565b6000604051808303816000865af19150503d8060008114611330576040519150601f19603f3d011682016040523d82523d6000602084013e611335565b606091505b509150915081801561135f57508051158061135f57508080602001905181019061135f91906118ce565b611395576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611a4b565b5050505050565b6000816113ab5750600161147b565b6113b484611482565b1561146c576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21690632e1a7d4d9061142b908590600401611bf2565b600060405180830381600087803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050505061146783836114b5565b611477565b611477848484611273565b5060015b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b919050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114ec9190611925565b60006040518083038185875af1925050503d8060008114611529576040519150601f19603f3d011682016040523d82523d6000602084013e61152e565b606091505b5050905080611569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b27565b505050565b803560ff811681146114b057600080fd5b600060208284031215611590578081fd5b815161147b81611c09565b600080604083850312156115ad578081fd5b82516115b881611c09565b60208401519092506115c981611c09565b809150509250929050565b600080600080600080600080610100898b0312156115f0578384fd5b88356115fb81611c09565b9750602089013561160b81611c09565b9650604089013561161b81611c09565b9550606089013594506080890135935060a0890135925060c089013561164081611c09565b8092505060e089013590509295985092959890939650565b6000806000806000806000806000806000806101808d8f03121561167a578384fd5b8c3561168581611c09565b9b5060208d013561169581611c09565b9a5060408d01356116a581611c09565b995060608d0135985060808d0135975060a08d0135965060c08d01356116ca81611c09565b955060e08d013594506101008d01356116e281611c2e565b93506116f16101208e0161156e565b92506101408d013591506101608d013590509295989b509295989b509295989b565b600080600080600080600060e0888a03121561172d578283fd5b873561173881611c09565b9650602088013561174881611c09565b955060408801359450606088013593506080880135925060a088013561176d81611c09565b8092505060c0880135905092959891949750929550565b60008060008060008060008060008060006101608c8e0312156117a5578081fd5b8b356117b081611c09565b9a5060208c01356117c081611c09565b995060408c0135985060608c0135975060808c0135965060a08c01356117e581611c09565b955060c08c0135945060e08c01356117fc81611c2e565b935061180b6101008d0161156e565b92506101208c013591506101408c013590509295989b509295989b9093969950565b600080600060608486031215611841578081fd5b833561184c81611c09565b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121561187b578081fd5b873561188681611c09565b9650602088013595506040880135945060608801356118a481611c2e565b93506118b26080890161156e565b925060a0880135915060c0880135905092959891949750929550565b6000602082840312156118df578081fd5b815161147b81611c2e565b6000602082840312156118fb578081fd5b5051919050565b60008060408385031215611914578182fd5b505080516020909101519092909150565b60008251815b81811015611945576020818601810151858301520161192b565b818111156119535782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601d908201527f526f757465723a20494e53554646494349454e545f425f414d4f554e54000000604082015260600190565b6020808252601d908201527f526f757465723a20494e53554646494349454e545f415f414d4f554e54000000604082015260600190565b6020808252600f908201527f526f757465723a20455850495245440000000000000000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f526f757465723a20496e76616c6964207374616b65506f6f6c00000000000000604082015260600190565b60208082526014908201527f526f757465723a20496e76616c69642070616972000000000000000000000000604082015260600190565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff81168114611c2b57600080fd5b50565b8015158114611c2b57600080fdfea2646970667358221220bfb1fc5395a2c1100f26d308a3a83e7e11293886d74b334b0906c1951a14e75864736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005021470fc598373fba4fe3384745940eab3e653d000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : _factory (address): 0x5021470FC598373fBA4fE3384745940eaB3E653d
Arg [1] : _controller (address): 0xf0159d041DB29029cCF285A1043DcAAc7088030b
Arg [2] : _WETH (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000005021470fc598373fba4fe3384745940eab3e653d
Arg [1] : 000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode Sourcemap
21367:7319:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22187:10;:18;22201:4;22187:18;;22180:26;;;;21367:7319;;;;;22286:441;;;;;;;;;;-1:-1:-1;22286:441:0;;;;;:::i;:::-;;:::i;27421:701::-;;;;;;;;;;-1:-1:-1;27421:701:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21559:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25331:722::-;;;;;;;;;;-1:-1:-1;25331:722:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;22735:656::-;;;;;;;;;;-1:-1:-1;22735:656:0;;;;;:::i;:::-;;:::i;26061:679::-;;;;;;;;;;-1:-1:-1;26061:679:0;;;;;:::i;:::-;;:::i;21607:38::-;;;;;;;;;;;;;:::i;24762:561::-;;;;;;;;;;-1:-1:-1;24762:561:0;;;;;:::i;:::-;;:::i;21460:41::-;;;;;;;;;;;;;:::i;24314:440::-;;;;;;;;;;-1:-1:-1;24314:440:0;;;;;:::i;:::-;;:::i;26819:594::-;;;;;;;;;;-1:-1:-1;26819:594:0;;;;;:::i;:::-;;:::i;21508:44::-;;;;;;;;;;;;;:::i;22286:441::-;22421:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;22450::::1;::::0;;;;:44:::1;22471:10;22450:44;::::0;::::1;::::0;:55:::1;::::0;22495:9;;22450:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22442:93;;;;;;;;;;;;:::i;:::-;22546:12;22572:9;22561:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22600:66;::::0;;;;22546:43;;-1:-1:-1;22600:35:0::1;::::0;::::1;::::0;::::1;::::0;:66:::1;::::0;22636:10:::1;::::0;22648:9;;22659:6;;22600:66:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;22677:42:0::1;::::0;;;;:30:::1;::::0;::::1;::::0;::::1;::::0;:42:::1;::::0;22708:10:::1;::::0;22677:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21862:1;22286:441:::0;;;;:::o;27421:701::-;27801:17;27831:13;27847:10;:36;;27874:9;27847:36;;;27868:2;27847:36;27894:82;;;;;27831:52;;-1:-1:-1;27894:29:0;;;;;;:82;;27924:10;;27944:4;;27831:52;;27958:8;;27968:1;;27971;;27974;;27894:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27999:115;28047:4;28053:5;28060:9;28071:14;28087:12;28101:2;28105:8;27999:47;:115::i;:::-;27987:127;27421:701;-1:-1:-1;;;;;;;;;;;;;27421:701:0:o;21559:41::-;;;:::o;25331:722::-;25716:15;25733;25697:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;25776:13:::1;25792:10;:36;;25819:9;25792:36;;;25813:2;25792:36;25776:52;;25860:4;25843:29;;;25873:10;25893:4;25900:5;25907:8;25917:1;25920;25923;25843:82;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21862:1;25968:77;25985:4;25991:6;25999;26007:9;26018:10;26030;26042:2;25968:16;:77::i;:::-;25947:98;;;;;;;;25331:722:::0;;;;;;;;;;;;;;;;:::o;22735:656::-;22964:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;22993::::1;::::0;;;;:44:::1;23014:10;22993:44;::::0;::::1;::::0;:55:::1;::::0;23038:9;;22993:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22985:93;;;;;;;;;;;;:::i;:::-;23089:12;23115:9;23104:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23089:43;;23160:4;23143:29;;;23173:10;23193:4;23200:10;:33;;23227:6;23200:33;;;23221:2;23200:33;23235:8;23245:1;23248;23251;23143:110;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23264:66:0::1;::::0;;;;:35:::1;::::0;::::1;::::0;-1:-1:-1;23264:35:0::1;::::0;-1:-1:-1;23264:66:0::1;::::0;23300:10:::1;::::0;23312:9;;23323:6;;23264:66:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23341:42:0::1;::::0;;;;:30:::1;::::0;::::1;::::0;::::1;::::0;:42:::1;::::0;23372:10:::1;::::0;23341:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21862:1;22735:656:::0;;;;;;;;:::o;26061:679::-;26412:19;26433:17;26463:13;26479:10;:36;;26506:9;26479:36;;;26500:2;26479:36;26526:82;;;;;26463:52;;-1:-1:-1;26526:29:0;;;;;;:82;;26556:10;;26576:4;;26463:52;;26590:8;;26600:1;;26603;;26606;;26526:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26646:86;26665:4;26671:5;26678:9;26689:14;26705:12;26719:2;26723:8;26646:18;:86::i;:::-;26619:113;;;;-1:-1:-1;26061:679:0;-1:-1:-1;;;;;;;;;;;;;26061:679:0:o;21607:38::-;;;:::o;24762:561::-;25034:19;25055:17;25015:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;25112:91:::1;25129:4;25135:5;25142:4;25148:9;25159:14;25175:12;25197:4;25112:16;:91::i;:::-;25085:118:::0;;-1:-1:-1;25085:118:0;-1:-1:-1;25214:51:0::1;25242:5:::0;25249:2;25085:118;25214:27:::1;:51::i;:::-;25276:39;21699:42;25301:2;25305:9;25276:11;:39::i;:::-;;24762:561:::0;;;;;;;;;;;:::o;21460:41::-;;;:::o;24314:440::-;24603:15;24620;24584:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;24669:77:::1;24686:4;24692:6;24700;24708:9;24719:10;24731;24743:2;24669:16;:77::i;:::-;24648:98:::0;;;;-1:-1:-1;24314:440:0;-1:-1:-1;;;;;;;;;;24314:440:0:o;26819:594::-;27120:17;27101:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;27166:100:::1;27182:4;27188:5;27195:4;27201:9;27212:14;27228:12;27250:4;27257:8;27166:15;:100::i;:::-;27316:38;::::0;;;;27150:116;;-1:-1:-1;27277:78:0::1;::::0;-1:-1:-1;27305:5:0;;27312:2;;27316:23:::1;::::0;::::1;::::0;::::1;::::0;:38:::1;::::0;27348:4:::1;::::0;27316:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27277:27;:78::i;:::-;27366:39;21699:42;27391:2;27395:9;27366:11;:39::i;:::-;;26819:594:::0;;;;;;;;;;:::o;21508:44::-;;;:::o;23434:872::-;23665:15;23682;23738:7;23718:35;;;23754:4;23718:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23710:74;;;;;;;;;;;;:::i;:::-;23795:64;;;;;:35;;;;;;:64;;23831:10;;23812:4;;23849:9;;23795:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23906:15;23923;23959:4;23942:27;;;23970:2;23942:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23905:68;;;;23985:14;24025:7;24005:39;;;24045:6;24053;24005:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23984:76;;;24102:6;24092:16;;:6;:16;;;:58;;24133:7;24142;24092:58;;;24112:7;24121;24092:58;24071:79;;-1:-1:-1;24071:79:0;-1:-1:-1;24169:21:0;;;;24161:63;;;;;;;;;;;;:::i;:::-;24254:10;24243:7;:21;;24235:63;;;;;;;;;;;;:::i;:::-;23434:872;;;;;;;;;;;;;:::o;12519:398::-;12705:12;12719:17;12740:5;:10;;12774;12786:2;12790:5;12751:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12740:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12704:93;;;;12816:7;:57;;;;-1:-1:-1;12828:11:0;;:16;;:44;;;12859:4;12848:24;;;;;;;;;;;;:::i;:::-;12808:101;;;;;;;;;;;;:::i;:::-;12519:398;;;;;:::o;28130:438::-;28246:4;28267:11;28263:55;;-1:-1:-1;28302:4:0;28295:11;;28263:55;28334:12;28340:5;28334;:12::i;:::-;28330:209;;;28363:28;;;;;:20;28369:4;28363:20;;;;:28;;28384:6;;28363:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28406:42;28437:2;28441:6;28406:30;:42::i;:::-;28330:209;;;28481:46;28509:5;28516:2;28520:6;28481:27;:46::i;:::-;-1:-1:-1;28556:4:0;28130:438;;;;;;:::o;28576:107::-;28654:20;;;21699:42;28654:20;28576:107;;;;:::o;13381:200::-;13494:12;;;13454;13494;;;;;;;;;13472:7;;;;13487:5;;13472:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13453:54;;;13526:7;13518:55;;;;;;;;;;;;:::i;:::-;13381:200;;;:::o;14:158:1:-;82:20;;142:4;131:16;;121:27;;111:2;;162:1;159;152:12;177:263;;300:2;288:9;279:7;275:23;271:32;268:2;;;321:6;313;306:22;268:2;358:9;352:16;377:33;404:5;377:33;:::i;445:399::-;;;585:2;573:9;564:7;560:23;556:32;553:2;;;606:6;598;591:22;553:2;643:9;637:16;662:33;689:5;662:33;:::i;:::-;764:2;749:18;;743:25;714:5;;-1:-1:-1;777:35:1;743:25;777:35;:::i;:::-;831:7;821:17;;;543:301;;;;;:::o;849:965::-;;;;;;;;;1080:3;1068:9;1059:7;1055:23;1051:33;1048:2;;;1102:6;1094;1087:22;1048:2;1146:9;1133:23;1165:33;1192:5;1165:33;:::i;:::-;1217:5;-1:-1:-1;1274:2:1;1259:18;;1246:32;1287:35;1246:32;1287:35;:::i;:::-;1341:7;-1:-1:-1;1400:2:1;1385:18;;1372:32;1413:35;1372:32;1413:35;:::i;:::-;1467:7;-1:-1:-1;1521:2:1;1506:18;;1493:32;;-1:-1:-1;1572:3:1;1557:19;;1544:33;;-1:-1:-1;1624:3:1;1609:19;;1596:33;;-1:-1:-1;1681:3:1;1666:19;;1653:33;1695:35;1653:33;1695:35;:::i;:::-;1749:7;1739:17;;;1803:3;1792:9;1788:19;1775:33;1765:43;;1038:776;;;;;;;;;;;:::o;1819:1318::-;;;;;;;;;;;;;2115:3;2103:9;2094:7;2090:23;2086:33;2083:2;;;2137:6;2129;2122:22;2083:2;2181:9;2168:23;2200:33;2227:5;2200:33;:::i;:::-;2252:5;-1:-1:-1;2309:2:1;2294:18;;2281:32;2322:35;2281:32;2322:35;:::i;:::-;2376:7;-1:-1:-1;2435:2:1;2420:18;;2407:32;2448:35;2407:32;2448:35;:::i;:::-;2502:7;-1:-1:-1;2556:2:1;2541:18;;2528:32;;-1:-1:-1;2607:3:1;2592:19;;2579:33;;-1:-1:-1;2659:3:1;2644:19;;2631:33;;-1:-1:-1;2716:3:1;2701:19;;2688:33;2730:35;2688:33;2730:35;:::i;:::-;2784:7;-1:-1:-1;2838:3:1;2823:19;;2810:33;;-1:-1:-1;2895:3:1;2880:19;;2867:33;2909:32;2867:33;2909:32;:::i;:::-;2960:7;-1:-1:-1;2986:39:1;3020:3;3005:19;;2986:39;:::i;:::-;2976:49;;3073:3;3062:9;3058:19;3045:33;3034:44;;3126:3;3115:9;3111:19;3098:33;3087:44;;2073:1064;;;;;;;;;;;;;;:::o;3142:821::-;;;;;;;;3356:3;3344:9;3335:7;3331:23;3327:33;3324:2;;;3378:6;3370;3363:22;3324:2;3422:9;3409:23;3441:33;3468:5;3441:33;:::i;:::-;3493:5;-1:-1:-1;3550:2:1;3535:18;;3522:32;3563:35;3522:32;3563:35;:::i;:::-;3617:7;-1:-1:-1;3671:2:1;3656:18;;3643:32;;-1:-1:-1;3722:2:1;3707:18;;3694:32;;-1:-1:-1;3773:3:1;3758:19;;3745:33;;-1:-1:-1;3830:3:1;3815:19;;3802:33;3844:35;3802:33;3844:35;:::i;:::-;3898:7;3888:17;;;3952:3;3941:9;3937:19;3924:33;3914:43;;3314:649;;;;;;;;;;:::o;3968:1174::-;;;;;;;;;;;;4246:3;4234:9;4225:7;4221:23;4217:33;4214:2;;;4269:7;4260;4253:24;4214:2;4314:9;4301:23;4333:33;4360:5;4333:33;:::i;:::-;4385:5;-1:-1:-1;4442:2:1;4427:18;;4414:32;4455:35;4414:32;4455:35;:::i;:::-;4509:7;-1:-1:-1;4563:2:1;4548:18;;4535:32;;-1:-1:-1;4614:2:1;4599:18;;4586:32;;-1:-1:-1;4665:3:1;4650:19;;4637:33;;-1:-1:-1;4722:3:1;4707:19;;4694:33;4736:35;4694:33;4736:35;:::i;:::-;4790:7;-1:-1:-1;4844:3:1;4829:19;;4816:33;;-1:-1:-1;4901:3:1;4886:19;;4873:33;4915:32;4873:33;4915:32;:::i;:::-;4966:7;-1:-1:-1;4992:39:1;5026:3;5011:19;;4992:39;:::i;:::-;4982:49;;5078:3;5067:9;5063:19;5050:33;5040:43;;5131:3;5120:9;5116:19;5103:33;5092:44;;4204:938;;;;;;;;;;;;;;:::o;5147:395::-;;;;5293:2;5281:9;5272:7;5268:23;5264:32;5261:2;;;5314:6;5306;5299:22;5261:2;5358:9;5345:23;5377:33;5404:5;5377:33;:::i;:::-;5429:5;5481:2;5466:18;;5453:32;;-1:-1:-1;5532:2:1;5517:18;;;5504:32;;5251:291;-1:-1:-1;;;5251:291:1:o;5547:744::-;;;;;;;;5756:3;5744:9;5735:7;5731:23;5727:33;5724:2;;;5778:6;5770;5763:22;5724:2;5822:9;5809:23;5841:33;5868:5;5841:33;:::i;:::-;5893:5;-1:-1:-1;5945:2:1;5930:18;;5917:32;;-1:-1:-1;5996:2:1;5981:18;;5968:32;;-1:-1:-1;6052:2:1;6037:18;;6024:32;6065;6024;6065;:::i;:::-;6116:7;-1:-1:-1;6142:39:1;6176:3;6161:19;;6142:39;:::i;:::-;6132:49;;6228:3;6217:9;6213:19;6200:33;6190:43;;6280:3;6269:9;6265:19;6252:33;6242:43;;5714:577;;;;;;;;;;:::o;6296:257::-;;6416:2;6404:9;6395:7;6391:23;6387:32;6384:2;;;6437:6;6429;6422:22;6384:2;6474:9;6468:16;6493:30;6517:5;6493:30;:::i;6558:194::-;;6681:2;6669:9;6660:7;6656:23;6652:32;6649:2;;;6702:6;6694;6687:22;6649:2;-1:-1:-1;6730:16:1;;6639:113;-1:-1:-1;6639:113:1:o;6757:255::-;;;6897:2;6885:9;6876:7;6872:23;6868:32;6865:2;;;6918:6;6910;6903:22;6865:2;-1:-1:-1;;6946:16:1;;7002:2;6987:18;;;6981:25;6946:16;;6981:25;;-1:-1:-1;6855:157:1:o;7017:430::-;;7184:6;7178:13;7209:3;7221:129;7235:6;7232:1;7229:13;7221:129;;;7333:4;7317:14;;;7313:25;;7307:32;7294:11;;;7287:53;7250:12;7221:129;;;7368:6;7365:1;7362:13;7359:2;;;7403:3;7394:6;7389:3;7385:16;7378:29;7359:2;-1:-1:-1;7425:16:1;;;;;7154:293;-1:-1:-1;;7154:293:1:o;7452:226::-;7628:42;7616:55;;;;7598:74;;7586:2;7571:18;;7553:125::o;7922:709::-;8259:42;8328:15;;;8310:34;;8380:15;;;;8375:2;8360:18;;8353:43;8427:2;8412:18;;8405:34;;;;8470:2;8455:18;;8448:34;;;;8531:4;8519:17;8513:3;8498:19;;8491:46;8568:3;8553:19;;8546:35;8612:3;8597:19;;8590:35;;;;8236:3;8221:19;;8203:428::o;8636:406::-;8856:42;8925:15;;;8907:34;;8977:15;;;;8972:2;8957:18;;8950:43;9024:2;9009:18;;9002:34;;;;8834:2;8819:18;;8801:241::o;9047:327::-;9231:42;9300:15;;;9282:34;;9352:15;;9347:2;9332:18;;9325:43;9209:2;9194:18;;9176:198::o;9379:297::-;9583:42;9571:55;;;;9553:74;;9658:2;9643:18;;9636:34;9541:2;9526:18;;9508:168::o;9681:355::-;9883:2;9865:21;;;9922:2;9902:18;;;9895:30;9961:33;9956:2;9941:18;;9934:61;10027:2;10012:18;;9855:181::o;10041:353::-;10243:2;10225:21;;;10282:2;10262:18;;;10255:30;10321:31;10316:2;10301:18;;10294:59;10385:2;10370:18;;10215:179::o;10399:353::-;10601:2;10583:21;;;10640:2;10620:18;;;10613:30;10679:31;10674:2;10659:18;;10652:59;10743:2;10728:18;;10573:179::o;10757:339::-;10959:2;10941:21;;;10998:2;10978:18;;;10971:30;11037:17;11032:2;11017:18;;11010:45;11087:2;11072:18;;10931:165::o;11101:399::-;11303:2;11285:21;;;11342:2;11322:18;;;11315:30;11381:34;11376:2;11361:18;;11354:62;11452:5;11447:2;11432:18;;11425:33;11490:3;11475:19;;11275:225::o;11505:349::-;11707:2;11689:21;;;11746:2;11726:18;;;11719:30;11785:27;11780:2;11765:18;;11758:55;11845:2;11830:18;;11679:175::o;11859:344::-;12061:2;12043:21;;;12100:2;12080:18;;;12073:30;12139:22;12134:2;12119:18;;12112:50;12194:2;12179:18;;12033:170::o;12208:177::-;12354:25;;;12342:2;12327:18;;12309:76::o;12390:248::-;12564:25;;;12620:2;12605:18;;12598:34;12552:2;12537:18;;12519:119::o;12643:156::-;12731:42;12724:5;12720:54;12713:5;12710:65;12700:2;;12789:1;12786;12779:12;12700:2;12690:109;:::o;12804:120::-;12892:5;12885:13;12878:21;12871:5;12868:32;12858:2;;12914:1;12911;12904:12
Swarm Source
ipfs://bfb1fc5395a2c1100f26d308a3a83e7e11293886d74b334b0906c1951a14e758
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.