Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EthereumZap
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;import "../../interfaces/external/IERC20Querier.sol";import "../../interfaces/external/IWETH9.sol";import "../../interfaces/IZap.sol";import "../../interfaces/IZapEvent.sol";import "../../interfaces/uniswapV3/ISwapRouter.sol";import "../../libraries/constants/ZapConstants.sol";import "../../libraries/constants/Constants.sol";import "../../libraries/uniswapV3/TransferHelper.sol";import "../../libraries/ParameterVerificationHelper.sol";import "../../libraries/PoolHelper.sol";import "./EthereumZapInitializer.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/math/SafeMath.sol";/// @dev verified, public contract/// @dev ceratin functions only owner callablecontract EthereumZap is IZap, IZapEvent, Ownable, EthereumZapInitializer {using SafeMath for uint256;uint24 public override slippageToleranceNumerator;address public WETH;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)pragma solidity ^0.8.0;import "../utils/Context.sol";/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract Ownable is Context {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/*** @dev Initializes the contract setting the deployer as the initial owner.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20 {/*** @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);/*** @dev Returns the amount of tokens in existence.*/
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)pragma solidity ^0.8.0;// CAUTION// This version of SafeMath should only be used with Solidity 0.8 or later,// because it relies on the compiler's built in overflow checks./*** @dev Wrappers over Solidity's arithmetic operations.** NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler* now has built in overflow checking.*/library SafeMath {/*** @dev Returns the addition of two unsigned integers, with an overflow flag.** _Available since v3.4._*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked {uint256 c = a + b;if (c < a) return (false, 0);return (true, c);
12345678910111213// SPDX-License-Identifier: MITpragma solidity ^0.8.0;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";interface IERC20Querier is IERC20 {function decimals() external view returns (uint256);function name() external view returns (string memory);function symbol() external view returns (string memory);}
12345678910111213// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;/// @title Interface for WETH9import "./IERC20Querier.sol";interface IWETH9 is IERC20Querier {/// @notice Deposit ether to get wrapped etherfunction deposit() external payable;/// @notice Withdraw wrapped ether to get etherfunction withdraw(uint256 amount) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;interface IConstants {/// @dev Uniswap v3 Relatedfunction UNISWAP_V3_FACTORY_ADDRESS() external view returns (address);function NONFUNGIBLE_POSITION_MANAGER_ADDRESS() external view returns (address);function SWAP_ROUTER_ADDRESS() external view returns (address);/// @dev Distribute reward token addressfunction DISTRIBUTE_REWARD_ADDRESS() external view returns (address);/// @dev Token address (combine each chain)function WETH_ADDRESS() external view returns (address);function WBTC_ADDRESS() external view returns (address);function ARB_ADDRESS() external view returns (address);function USDC_ADDRESS() external view returns (address);function USDCE_ADDRESS() external view returns (address);function USDT_ADDRESS() external view returns (address);function RDNT_ADDRESS() external view returns (address);function LINK_ADDRESS() external view returns (address);function DEGEN_ADDRESS() external view returns (address);function BRETT_ADDRESS() external view returns (address);function TOSHI_ADDRESS() external view returns (address);function CIRCLE_ADDRESS() external view returns (address);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;interface IZap {/// @dev get zap datafunction slippageToleranceNumerator() external view returns (uint24);function getSwapInfo(address inputToken, address outputToken)externalviewreturns (bool isPathDefined, address[] memory swapPathArray, uint24[] memory swapTradeFeeArray);function getTokenExchangeRate(address inputToken, address outputToken)externalviewreturns (address token0, address token1, uint256 tokenPriceWith18Decimals);function getMinimumSwapOutAmount(address inputToken, address outputToken, uint256 inputAmount)externalviewreturns (uint256 minimumSwapOutAmount);/// @dev swapTokenfunction swapToken(bool isETH, address inputToken, address outputToken, uint256 inputAmount, address recipient)external
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;interface IZapEvent {event UpdateSlippageTolerance(uint24 slippageTolerance);event UpdateSwapTradeFee(address indexed inputToken,address indexed outputToken,uint24 swapTradeFee);event UpdateSwapPath(address indexed inputToken,address indexed outputToken,address[] newSwapPath);event SingleSwap(address indexed recipient,bool isETH,address inputToken,uint256 inputAmount,address outputToken,uint256 outputAmount,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.7.5;pragma abicoder v2;interface ISwapRouter {struct ExactInputSingleParams {address tokenIn;address tokenOut;uint24 fee;address recipient;// uint256 deadline;uint256 amountIn;uint256 amountOutMinimum;uint160 sqrtPriceLimitX96;}/// @notice Swaps `amountIn` of one token for as much as possible of another token/// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata/// @return amountOut The amount of the received tokenfunction exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);struct ExactInputParams {bytes path;address recipient;// uint256 deadline;uint256 amountIn;
12345678910111213141516// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;interface IUniswapV3Factory {/// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist/// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order/// @param tokenA The contract address of either token0 or token1/// @param tokenB The contract address of the other token/// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip/// @return pool The pool addressfunction getPool(address tokenA,address tokenB,uint24 fee) external view returns (address pool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;interface IUniswapV3Pool {/// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas/// when accessed externally./// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value/// tick The current tick of the pool, i.e. according to the last tick transition that was run./// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick/// boundary./// observationIndex The index of the last oracle observation that was written,/// observationCardinality The current maximum number of observations stored in the pool,/// observationCardinalityNext The next maximum number of observations, to be updated when the observation./// feeProtocol The protocol fee for both tokens of the pool./// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0/// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee./// unlocked Whether the pool is currently locked to reentrancyfunction slot0()externalviewreturns (uint160 sqrtPriceX96,int24 tick,uint16 observationIndex,uint16 observationCardinality,uint16 observationCardinalityNext,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;library Constants {/// @dev Base uniswap V3address public constant UNISWAP_V3_FACTORY_ADDRESS = address(0x33128a8fC17869897dcE68Ed026d694621f6FDfD);address public constant NONFUNGIBLE_POSITION_MANAGER_ADDRESS = address(0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1);address public constant SWAP_ROUTER_ADDRESS = address(0x2626664c2603336E57B271c5C0b26F421741e481); //swap router v2/// @dev Base token addressaddress public constant WETH_ADDRESS = address(0x4200000000000000000000000000000000000006);address public constant USDC_ADDRESS = address(0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913);address public constant DEGEN_ADDRESS = address(0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed);address public constant BRETT_ADDRESS = address(0x532f27101965dd16442E59d40670FaF5eBB142E4);address public constant TOSHI_ADDRESS = address(0xAC1Bd2486aAf3B5C0fc3Fd868558b082a531B2B4);address public constant CIRCLE_ADDRESS = address(0x5baBfc2F240bc5De90Eb7e19D789412dB1dEc402);address public constant ROOST_ADDRESS = address(0xE1aBD004250AC8D1F199421d647e01d094FAa180);address public constant AERO_ADDRESS = address(0x940181a94A35A4569E4529A3CDfB74e38FD98631);address public constant INT_ADDRESS = address(0x968D6A288d7B024D5012c0B25d67A889E4E3eC19);address public constant HIGHER_ADDRESS = address(0x0578d8A44db98B23BF096A382e016e29a5Ce0ffe);address public constant KEYCAT_ADDRESS = address(0x9a26F5433671751C3276a065f57e5a02D2817973);/// @dev black hole addressaddress public constant BLACK_HOLE_ADDRESS = address(0x000000000000000000000000000000000000dEaD);}
123456789101112// SPDX-License-Identifier: MITpragma solidity ^0.8.0;library ZapConstants {/// @dev decimal precisionuint256 public constant DECIMALS_PRECISION = 18;/// @dev denominatoruint24 public constant SLIPPAGE_TOLERANCE_DENOMINATOR = 1000000;uint24 public constant SWAP_TRADE_FEE_DENOMINATOR = 1000000;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;library ParameterVerificationHelper {function verifyNotZeroAddress(address inputAddress) internal pure {require(inputAddress != address(0), "input zero address");}function verifyGreaterThanZero(uint256 inputNumber) internal pure {require(inputNumber > 0, "input 0");}function verifyGreaterThanZero(int24 inputNumber) internal pure {require(inputNumber > 0, "input 0");}function verifyGreaterThanOne(int24 inputNumber) internal pure {require(inputNumber > 1, "input <= 1");}function verifyGreaterThanOrEqualToZero(int24 inputNumber) internal pure {require(inputNumber >= 0, "input less than 0");}function verifyPairTokensHaveWeth(
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;import "../interfaces/external/IERC20Querier.sol";import "../interfaces/uniswapV3/IUniswapV3Factory.sol";import "../interfaces/uniswapV3/IUniswapV3Pool.sol";import "@openzeppelin/contracts/utils/math/SafeMath.sol";library PoolHelper {using SafeMath for uint256;function getPoolAddress(address uniswapV3FactoryAddress, address tokenA, address tokenB, uint24 poolFee)internalviewreturns (address poolAddress){return IUniswapV3Factory(uniswapV3FactoryAddress).getPool(tokenA, tokenB, poolFee);}function getPoolInfo(address poolAddress)internalviewreturns (address token0,address token1,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.6.0;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";library TransferHelper {/// @notice Transfers tokens from the targeted address to the given destination/// @notice Errors with 'STF' if transfer fails/// @param token The contract address of the token to be transferred/// @param from The originating address from which the tokens will be transferred/// @param to The destination address of the transfer/// @param value The amount to be transferredfunction safeTransferFrom(address token, address from, address to, uint256 value) internal {(bool success, bytes memory data) =token.call(abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, value));require(success && (data.length == 0 || abi.decode(data, (bool))), "STF");}/// @notice Transfers tokens from msg.sender to a recipient/// @dev Errors with ST if transfer fails/// @param token The contract address of the token which will be transferred/// @param to The recipient of the transfer/// @param value The value of the transferfunction safeTransfer(address token, address to, uint256 value) internal {(bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;// import "./libraries/constants/Constants.sol";import "../../interfaces/IConstants.sol";contract EthereumZapInitializer {IConstants public Constants;/// @dev Uniswap-Transaction-related Variableuint256 public transactionDeadlineDuration = 300;// inputToken => outputToken => swapPathmapping(address => mapping(address => address[])) internal swapPath;// inputToken => outputToken => swapTradeFeeNumeratormapping(address => mapping(address => uint24)) internal swapTradeFeeNumerator;constructor(address _constants) {Constants = IConstants(_constants);}function initializeSwapTradeFeeNumerator() internal {address WETH = Constants.WETH_ADDRESS();address ARB = Constants.ARB_ADDRESS();
12345678910111213141516171819{"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
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_constants","type":"address"},{"internalType":"uint24","name":"_slippageToleranceNumerator","type":"uint24"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"bool","name":"isETH","type":"bool"},{"indexed":false,"internalType":"address","name":"inputToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"inputAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"outputAmount","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"swapPath","type":"address[]"},{"indexed":false,"internalType":"uint24[]","name":"swapTradeFee","type":"uint24[]"}],"name":"MultiSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"bool","name":"isETH","type":"bool"},{"indexed":false,"internalType":"address","name":"inputToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"inputAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"outputAmount","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"swapPath","type":"address[]"},{"indexed":false,"internalType":"uint24[]","name":"swapTradeFee","type":"uint24[]"}],"name":"SingleSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint24","name":"slippageTolerance","type":"uint24"}],"name":"UpdateSlippageTolerance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"inputToken","type":"address"},{"indexed":true,"internalType":"address","name":"outputToken","type":"address"},{"indexed":false,"internalType":"address[]","name":"newSwapPath","type":"address[]"}],"name":"UpdateSwapPath","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"inputToken","type":"address"},{"indexed":true,"internalType":"address","name":"outputToken","type":"address"},{"indexed":false,"internalType":"uint24","name":"swapTradeFee","type":"uint24"}],"name":"UpdateSwapTradeFee","type":"event"},{"inputs":[],"name":"Constants","outputs":[{"internalType":"contract IConstants","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"}],"name":"getEstimateSwapOutAmount","outputs":[{"internalType":"uint256","name":"estimateSwapOutAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"}],"name":"getMinimumSwapOutAmount","outputs":[{"internalType":"uint256","name":"minimumSwapOutAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"address","name":"outputToken","type":"address"}],"name":"getSwapInfo","outputs":[{"internalType":"bool","name":"isPathDefined","type":"bool"},{"internalType":"address[]","name":"swapPathArray","type":"address[]"},{"internalType":"uint24[]","name":"swapTradeFeeArray","type":"uint24[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"address","name":"outputToken","type":"address"}],"name":"getTokenExchangeRate","outputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint256","name":"tokenPriceWith18Decimals","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"slippageTolerance","type":"uint24"}],"name":"setSlippageToleranceNumerator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"address[]","name":"newSwapPath","type":"address[]"}],"name":"setSwapPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint24","name":"swapTradeFee","type":"uint24"}],"name":"setSwapTradeFeeNumerator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slippageToleranceNumerator","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isETH","type":"bool"},{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"swapToken","outputs":[{"internalType":"uint256","name":"outputAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"isETH","type":"bool"},{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"uint256","name":"minimumSwapOutAmount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"swapTokenWithMinimumOutput","outputs":[{"internalType":"uint256","name":"outputAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"transactionDeadlineDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405261012c6002553480156200001757600080fd5b5060405162004510380380620045108339810160408190526200003a9162001be2565b8162000046336200012c565b600180546001600160a01b0319166001600160a01b0392909216919091179055620000706200017c565b6200007a62000b5a565b6005805462ffffff191662ffffff83161790556001546040805163040141e560e01b815290516001600160a01b039092169163040141e5916004808201926020929091908290030181865afa158015620000d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fe919062001c25565b600560036101000a8154816001600160a01b0302191690836001600160a01b03160217905550505062001c4a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001546040805163040141e560e01b815290516000926001600160a01b03169163040141e59160048083019260209291908290030181865afa158015620001c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ed919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663fc3766296040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026b919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663bdd5915f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e9919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663bb09d9b76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000341573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000367919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663c18920586040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e5919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316637cbd8b706040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200043d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000463919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663ed08d8eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e1919062001c25565b9050606460046000866001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff160217905550606460046000856001600160a01b03166001600160a01b031681526020019081526020016000206000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000896001600160a01b03166001600160a01b031681526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000896001600160a01b03166001600160a01b031681526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000896001600160a01b03166001600160a01b031681526020019081526020016000206000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000896001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000886001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000876001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000866001600160a01b03166001600160a01b031681526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000866001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000866001600160a01b03166001600160a01b031681526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff1602179055506101f460046000856001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff160217905550610bb860046000896001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff160217905550610bb860046000896001600160a01b03166001600160a01b031681526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff160217905550610bb860046000846001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff160217905550610bb860046000836001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548162ffffff021916908362ffffff16021790555050505050505050565b6001546040805163040141e560e01b815290516000926001600160a01b03169163040141e59160048083019260209291908290030181865afa15801562000ba5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bcb919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663fc3766296040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c49919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663bdd5915f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ca1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cc7919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663bb09d9b76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000d1f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d45919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663c18920586040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000d9d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dc3919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316637cbd8b706040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e41919062001c25565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663ed08d8eb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ebf919062001c25565b6040805180820182526001600160a01b038088168083529087166020808401829052600092835260038152848320918352529190912091925062000f069190600262001b44565b506040805180820182526001600160a01b038086168083529087166020808401829052600092835260038152848320918352529190912062000f4a91600262001b44565b506040805180820182526001600160a01b03808a168083529089166020808401829052600092835260038152848320918352529190912062000f8e91600262001b44565b506040805180820182526001600160a01b03808a168083529088166020808401829052600092835260038152848320918352529190912062000fd291600262001b44565b506040805180820182526001600160a01b03808a16808352908716602080840182905260009283526003815284832091835252919091206200101691600262001b44565b506040805180820182526001600160a01b03808a16808352908616602080840182905260009283526003815284832091835252919091206200105a91600262001b44565b506040805180820182526001600160a01b03808916808352908a16602080840182905260009283526003815284832091835252919091206200109e91600262001b44565b506040805180820182526001600160a01b03808816808352908a1660208084018290526000928352600381528483209183525291909120620010e291600262001b44565b506040805180820182526001600160a01b03808616808352908a16602080840182905260009283526003815284832091835252919091206200112691600262001b44565b506040805180820182526001600160a01b03808a16808352908516602080840182905260009283526003815284832091835252919091206200116a91600262001b44565b506040805180820182526001600160a01b03808a1680835290841660208084018290526000928352600381528483209183525291909120620011ae91600262001b44565b506040805180820182526001600160a01b03808516808352908a1660208084018290526000928352600381528483209183525291909120620011f291600262001b44565b506040805180820182526001600160a01b03808416808352908a16602080840182905260009283526003815284832091835252919091206200123691600262001b44565b50604080516060810182526001600160a01b038089168083528a821660208085019190915291891683850181905260009182526003808452858320918352925292909220620012889290919062001b44565b50604080516060810182526001600160a01b038089168083528a821660208085019190915291881683850181905260009182526003808452858320918352925292909220620012da9290919062001b44565b50604080516060810182526001600160a01b038089168083528a8216602080850191909152918716838501819052600091825260038084528583209183529252929092206200132c9290919062001b44565b50604080516060810182526001600160a01b038089168083528a8216602080850191909152918616838501819052600091825260038084528583209183529252929092206200137e9290919062001b44565b50604080516060810182526001600160a01b038089168083528a821660208085019190915291851683850181905260009182526003808452858320918352925292909220620013d09290919062001b44565b50604080516060810182526001600160a01b038088168083528a8216602080850191909152918a1683850181905260009182526003808452858320918352925292909220620014229290919062001b44565b50604080516060810182526001600160a01b038088168083528a821660208085019190915291881683850181905260009182526003808452858320918352925292909220620014749290919062001b44565b50604080516060810182526001600160a01b038088168083528a821660208085019190915291871683850181905260009182526003808452858320918352925292909220620014c69290919062001b44565b50604080516060810182526001600160a01b038088168083528a821660208085019190915291861683850181905260009182526003808452858320918352925292909220620015189290919062001b44565b50604080516060810182526001600160a01b038088168083528a8216602080850191909152918516838501819052600091825260038084528583209183529252929092206200156a9290919062001b44565b506040805180820182526001600160a01b0380871680835290891660208084018290526000928352600381528483209183525291909120620015ae91600262001b44565b506040805180820182526001600160a01b03808716808352908a1660208084018290526000928352600381528483209183525291909120620015f291600262001b44565b506040805180820182526001600160a01b03808716808352908816602080840182905260009283526003815284832091835252919091206200163691600262001b44565b50604080516060810182526001600160a01b038087168083528a821660208085019190915291861683850181905260009182526003808452858320918352925292909220620016889290919062001b44565b50604080516060810182526001600160a01b038087168083528a821660208085019190915291851683850181905260009182526003808452858320918352925292909220620016da9290919062001b44565b506040805180820182526001600160a01b03808616808352908916602080840182905260009283526003815284832091835252919091206200171e91600262001b44565b506040805180820182526001600160a01b03808616808352908816602080840182905260009283526003815284832091835252919091206200176291600262001b44565b50604080516060810182526001600160a01b038086168083528a821660208085019190915291861683850181905260009182526003808452858320918352925292909220620017b49290919062001b44565b50604080516060810182526001600160a01b038086168083528a821660208085019190915291851683850181905260009182526003808452858320918352925292909220620018069290919062001b44565b50604080516060810182526001600160a01b038085168083528a8216602080850191909152918a1683850181905260009182526003808452858320918352925292909220620018589290919062001b44565b50604080516060810182526001600160a01b038085168083528a821660208085019190915291891683850181905260009182526003808452858320918352925292909220620018aa9290919062001b44565b50604080516060810182526001600160a01b038085168083528a821660208085019190915291881683850181905260009182526003808452858320918352925292909220620018fc9290919062001b44565b50604080516060810182526001600160a01b038085168083528a8216602080850191909152918716838501819052600091825260038084528583209183529252929092206200194e9290919062001b44565b50604080516060810182526001600160a01b038085168083528a821660208085019190915291851683850181905260009182526003808452858320918352925292909220620019a09290919062001b44565b50604080516060810182526001600160a01b038084168083528a8216602080850191909152918a1683850181905260009182526003808452858320918352925292909220620019f29290919062001b44565b50604080516060810182526001600160a01b038084168083528a82166020808501919091529189168385018190526000918252600380845285832091835292529290922062001a449290919062001b44565b50604080516060810182526001600160a01b038084168083528a82166020808501919091529188168385018190526000918252600380845285832091835292529290922062001a969290919062001b44565b50604080516060810182526001600160a01b038084168083528a82166020808501919091529187168385018190526000918252600380845285832091835292529290922062001ae89290919062001b44565b50604080516060810182526001600160a01b038084168083528a82166020808501919091529186168385018190526000918252600380845285832091835292529290922062001b3a9290919062001b44565b5050505050505050565b82805482825590600052602060002090810192821562001b9c579160200282015b8281111562001b9c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062001b65565b5062001baa92915062001bae565b5090565b5b8082111562001baa576000815560010162001baf565b80516001600160a01b038116811462001bdd57600080fd5b919050565b6000806040838503121562001bf657600080fd5b62001c018362001bc5565b9150602083015162ffffff8116811462001c1a57600080fd5b809150509250929050565b60006020828403121562001c3857600080fd5b62001c438262001bc5565b9392505050565b6128b68062001c5a6000396000f3fe6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063cb612cfb11610059578063cb612cfb146102a4578063da02e718146102ba578063e1454fd0146102da578063f2fde38b1461032057600080fd5b80638da5cb5b14610210578063ac94e8ca1461022e578063ad5c46481461024e578063ae39ecfc1461027557600080fd5b806352c076c3116100c657806352c076c3146101735780635cb7d1f4146101a3578063666fc8b3146101db578063715018a6146101fb57600080fd5b80630ddb88ae146100f857806336d02ea11461011a5780633b4cdc431461013a5780634aec7a3114610160575b600080fd5b34801561010457600080fd5b5061011861011336600461209e565b610340565b005b34801561012657600080fd5b5061011861013536600461219b565b61069a565b61014d6101483660046121f4565b61082a565b6040519081526020015b60405180910390f35b61014d61016e36600461225c565b610853565b34801561017f57600080fd5b5060055461018f9062ffffff1681565b60405162ffffff9091168152602001610157565b3480156101af57600080fd5b506001546101c3906001600160a01b031681565b6040516001600160a01b039091168152602001610157565b3480156101e757600080fd5b5061014d6101f63660046122cc565b610f9c565b34801561020757600080fd5b50610118611252565b34801561021c57600080fd5b506000546001600160a01b03166101c3565b34801561023a57600080fd5b5061011861024936600461230d565b611266565b34801561025a57600080fd5b506005546101c390630100000090046001600160a01b031681565b34801561028157600080fd5b50610295610290366004612331565b61131f565b604051610157939291906123e3565b3480156102b057600080fd5b5061014d60025481565b3480156102c657600080fd5b5061014d6102d53660046122cc565b611563565b3480156102e657600080fd5b506102fa6102f5366004612331565b6115a8565b604080516001600160a01b03948516815293909216602084015290820152606001610157565b34801561032c57600080fd5b5061011861033b366004612410565b61175e565b6103486117d7565b61035183611831565b61035a82611831565b805160005b8181101561039b5761038983828151811061037c5761037c61242d565b6020026020010151611831565b8061039381612459565b91505061035f565b50826001600160a01b0316846001600160a01b0316036103d65760405162461bcd60e51b81526004016103cd90612472565b60405180910390fd5b60028110156104185760405162461bcd60e51b815260206004820152600e60248201526d1c185d1a081d1bdbc81cda1bdc9d60921b60448201526064016103cd565b836001600160a01b0316826000815181106104355761043561242d565b60200260200101516001600160a01b0316146104935760405162461bcd60e51b815260206004820152601e60248201527f70617468206e6f742073746172742066726f6d20696e707574546f6b656e000060448201526064016103cd565b6001600160a01b038316826104a96001846124a9565b815181106104b9576104b961242d565b60200260200101516001600160a01b0316146105175760405162461bcd60e51b815260206004820152601d60248201527f70617468206e6f7420656e642077697468206f7574707574546f6b656e00000060448201526064016103cd565b60005b6105256001836124a9565b811015610612576000600460008584815181106105445761054461242d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008584600161057c91906124bc565b8151811061058c5761058c61242d565b6020908102919091018101516001600160a01b0316825281019190915260400160009081205462ffffff1691508190036105ff5760405162461bcd60e51b81526020600482015260146024820152731d1c985919599959481b9bdd081919599a5b995960621b60448201526064016103cd565b508061060a81612459565b91505061051a565b506001600160a01b0380851660009081526003602090815260408083209387168352928152919020835161064892850190611fe9565b50826001600160a01b0316846001600160a01b03167f1b8a2f263025a93091ad02833d5c0dffaa83d6e6d8d21e11f0e0b5c48f63dd578460405161068c91906124cf565b60405180910390a350505050565b6106a26117d7565b6106ab83611831565b6106b482611831565b6106c28162ffffff1661187c565b816001600160a01b0316836001600160a01b0316036106f35760405162461bcd60e51b81526004016103cd90612472565b6000610777600160009054906101000a90046001600160a01b03166001600160a01b031663e3d11ba06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f91906124e2565b8585856118b6565b90506001600160a01b0381166107c05760405162461bcd60e51b815260206004820152600e60248201526d1c1bdbdb081b9bdd08195e1a5cdd60921b60448201526064016103cd565b6001600160a01b03848116600081815260046020908152604080832094881680845294825291829020805462ffffff191662ffffff881690811790915591519182527f036c706ce028591ddd5006239a630c0bb9bce2ece55d1120c8519913fe74fc63910161068c565b600080610838868686611563565b9050610848878787878588610853565b979650505050505050565b600061085e86611831565b61086785611831565b61087082611831565b6108798461187c565b846001600160a01b0316866001600160a01b0316036108aa5760405162461bcd60e51b81526004016103cd90612472565b60008060006108b9898961131f565b919450925090506001831515146109045760405162461bcd60e51b815260206004820152600f60248201526e70617468206e6f7420646566696e6560881b60448201526064016103cd565b89156109f55761091387611940565b6005546001600160a01b038a8116630100000090920416146109875760405162461bcd60e51b815260206004820152602760248201527f696e70757420455448206d7573742068617665207377617020706174682066726044820152660deda40ae8aa8960cb1b60648201526084016103cd565b600560039054906101000a90046001600160a01b03166001600160a01b031663d0e30db0886040518263ffffffff1660e01b81526004016000604051808303818588803b1580156109d757600080fd5b505af11580156109eb573d6000803e3d6000fd5b5050505050610ab8565b604051636eb1769f60e11b815233600482015230602482015287906001600160a01b038b169063dd62ed3e90604401602060405180830381865afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6591906124ff565b1015610aac5760405162461bcd60e51b8152602060048201526016602482015275185b1b1bddd85b98d9481a5b9cdd59999a58da595b9d60521b60448201526064016103cd565b610ab88933308a61198f565b610b3989600160009054906101000a90046001600160a01b03166001600160a01b0316639194da636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3391906124e2565b89611a99565b81516002819003610d4c57600160009054906101000a90046001600160a01b03166001600160a01b0316639194da636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb91906124e2565b6001600160a01b03166304e45aaf6040518060e001604052808d6001600160a01b031681526020018c6001600160a01b0316815260200185600081518110610c0557610c0561242d565b602002602001015162ffffff168152602001896001600160a01b031681526020018b81526020018a815260200160006001600160a01b03168152506040518263ffffffff1660e01b8152600401610cb5919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0838101519083015260c092830151169181019190915260e00190565b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf891906124ff565b9450856001600160a01b03167f0ff70a757dde6555c17e755d4725dbec5d2662e928b64e2a2772a047db1d9f0d8c8c8b8d8a8989604051610d3f9796959493929190612518565b60405180910390a2610f8e565b600083600081518110610d6157610d6161242d565b6020026020010151604051602001610d91919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052905060005b610db06001846124a9565b811015610e2e5781848281518110610dca57610dca61242d565b602002602001015186836001610de091906124bc565b81518110610df057610df061242d565b6020026020010151604051602001610e0a9392919061259e565b60405160208183030381529060405291508080610e2690612459565b915050610da5565b50600160009054906101000a90046001600160a01b03166001600160a01b0316639194da636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea691906124e2565b6001600160a01b031663b858183f60405180608001604052808481526020018a6001600160a01b031681526020018c81526020018b8152506040518263ffffffff1660e01b8152600401610efa91906125ea565b6020604051808303816000875af1158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3d91906124ff565b9550866001600160a01b03167fe2fbd4605def93f01b1643f166a5a181f02f79d949cd5fccb5b0e5416b32ee6e8d8d8c8e8b8a8a604051610f849796959493929190612518565b60405180910390a2505b505050509695505050505050565b6000610fa784611831565b610fb083611831565b610fb98261187c565b60055462ffffff1661100d5760405162461bcd60e51b815260206004820152601f60248201527f736c697070616765546f6c6572616e63654e756d657261746f7220697320300060448201526064016103cd565b826001600160a01b0316846001600160a01b03160361103e5760405162461bcd60e51b81526004016103cd90612472565b600080600061104d878761131f565b919450925090506001831515146110985760405162461bcd60e51b815260206004820152600f60248201526e70617468206e6f7420646566696e6560881b60448201526064016103cd565b815160006110ba6110a88a611b99565b6110b390600a612734565b8890611c18565b905060005b6110ca6001846124a9565b8110156112265760008582815181106110e5576110e561242d565b602002602001015190506000868360016110ff91906124bc565b8151811061110f5761110f61242d565b60200260200101519050600080600061112885856115a8565b925092509250611183620f424062ffffff1661117d6111768c8a815181106111525761115261242d565b602002602001015162ffffff16620f424062ffffff16611c2d90919063ffffffff16565b8a90611c18565b90611c39565b9650826001600160a01b0316856001600160a01b031614806111b65750816001600160a01b0316856001600160a01b0316145b6111bf57600080fd5b826001600160a01b0316856001600160a01b0316036111f8576111f16111e76012600a612734565b61117d8984611c18565b965061120e565b61120b8161117d6111766012600a612734565b96505b5050505050808061121e90612459565b9150506110bf565b5061124561123389611b99565b61123e90600a612734565b8290611c39565b9998505050505050505050565b61125a6117d7565b6112646000611c45565b565b61126e6117d7565b61127c8162ffffff1661187c565b620f424062ffffff8216106112d35760405162461bcd60e51b815260206004820152601960248201527f736c697070616765546f6c6572616e636520746f6f206269670000000000000060448201526064016103cd565b6005805462ffffff191662ffffff83169081179091556040519081527f6dee1c9db313684d98cb20b5cbbd22b75f01ce5241372a0bb9328b9ff7f53ab29060200160405180910390a150565b600060608061132d85611831565b61133684611831565b836001600160a01b0316856001600160a01b0316036113675760405162461bcd60e51b81526004016103cd90612472565b6001600160a01b0380861660009081526003602090815260408083209388168352928152828220805484518184028101840190955280855292939290918301828280156113dd57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113bf575b505050505090506000815190506002811061153d576001600061140082846124a9565b67ffffffffffffffff81111561141857611418612088565b604051908082528060200260200182016040528015611441578160200160208202803683370190505b50905060005b6114526001856124a9565b81101561152c576000600460008784815181106114715761147161242d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000878460016114a991906124bc565b815181106114b9576114b961242d565b6020908102919091018101516001600160a01b0316825281019190915260400160009081205462ffffff1691508190036114f257600093505b808383815181106115055761150561242d565b62ffffff90921660209283029190910190910152508061152481612459565b915050611447565b5090955091935090915061155c9050565b5050604080516000808252602082018181528284019093529450925090505b9250925092565b600080611571858585610f9c565b60055490915060009061159e90620f42409061117d9061159790839062ffffff16611c2d565b8590611c18565b9695505050505050565b60008060006115b685611831565b6115bf84611831565b836001600160a01b0316856001600160a01b0316036115f05760405162461bcd60e51b81526004016103cd90612472565b6001600160a01b03808616600090815260046020908152604080832093881683529290529081205462ffffff16908190036116635760405162461bcd60e51b81526020600482015260136024820152727472616465466565206e6f7420646566696e6560681b60448201526064016103cd565b60006116e7600160009054906101000a90046001600160a01b03166001600160a01b031663e3d11ba06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df91906124e2565b8888856118b6565b90506001600160a01b0381166117305760405162461bcd60e51b815260206004820152600e60248201526d1c1bdbdb081b9bdd08195e1a5cdd60921b60448201526064016103cd565b61173981611c95565b50949950929750611753935084925060129150611f119050565b925050509250925092565b6117666117d7565b6001600160a01b0381166117cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103cd565b6117d481611c45565b50565b6000546001600160a01b031633146112645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103cd565b6001600160a01b0381166117d45760405162461bcd60e51b8152602060048201526012602482015271696e707574207a65726f206164647265737360701b60448201526064016103cd565b600081116117d45760405162461bcd60e51b81526020600482015260076024820152660696e70757420360cc1b60448201526064016103cd565b604051630b4c774160e11b81526001600160a01b038481166004830152838116602483015262ffffff8316604483015260009190861690631698ee8290606401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193791906124e2565b95945050505050565b8034146117d45760405162461bcd60e51b815260206004820152601860248201527f6d73672e76616c756520213d20696e707574416d6f756e74000000000000000060448201526064016103cd565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916119f39190612740565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091509150818015611a5f575080511580611a5f575080806020019051810190611a5f919061275c565b611a915760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b60448201526064016103cd565b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151600092839290871691611af59190612740565b6000604051808303816000865af19150503d8060008114611b32576040519150601f19603f3d011682016040523d82523d6000602084013e611b37565b606091505b5091509150818015611b61575080511580611b61575080806020019051810190611b61919061275c565b611b925760405162461bcd60e51b8152602060048201526002602482015261534160f01b60448201526064016103cd565b5050505050565b600080601290506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0491906124ff565b9050611c108282611c2d565b949350505050565b6000611c248284612779565b90505b92915050565b6000611c2482846124a9565b6000611c248284612790565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000806000806000876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0291906127c4565b505060408051630dfe168160e01b8152905194995094975050506001600160a01b038b1692630dfe168192600480830193506020928290030181865afa158015611d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7491906124e2565b9650876001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd891906124e2565b9550876001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3c9190612863565b9450866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea091906124ff565b9150856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0491906124ff565b9050919395979092949650565b600080600080611f2086611c95565b965096509650505050506000611f54600160601b61117d88600a611f449190612734565b6001600160a01b03881690611c18565b90506000611f628280611c18565b90506000611f7a85611f748a87611fdd565b90611c2d565b90506000611f93611f8c83600a612734565b8490611c39565b9050600081116112455760405162461bcd60e51b81526020600482015260156024820152741d1bdad95b881c1c9a58d9481d1bdbc81cdb585b1b605a1b60448201526064016103cd565b6000611c2482846124bc565b82805482825590600052602060002090810192821561203e579160200282015b8281111561203e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612009565b5061204a92915061204e565b5090565b5b8082111561204a576000815560010161204f565b6001600160a01b03811681146117d457600080fd5b803561208381612063565b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156120b357600080fd5b83356120be81612063565b92506020848101356120cf81612063565b9250604085013567ffffffffffffffff808211156120ec57600080fd5b818701915087601f83011261210057600080fd5b81358181111561211257612112612088565b8060051b604051601f19603f8301168101818110858211171561213757612137612088565b60405291825284820192508381018501918a83111561215557600080fd5b938501935b8285101561217a5761216b85612078565b8452938501939285019261215a565b8096505050505050509250925092565b62ffffff811681146117d457600080fd5b6000806000606084860312156121b057600080fd5b83356121bb81612063565b925060208401356121cb81612063565b915060408401356121db8161218a565b809150509250925092565b80151581146117d457600080fd5b600080600080600060a0868803121561220c57600080fd5b8535612217816121e6565b9450602086013561222781612063565b9350604086013561223781612063565b925060608601359150608086013561224e81612063565b809150509295509295909350565b60008060008060008060c0878903121561227557600080fd5b8635612280816121e6565b9550602087013561229081612063565b945060408701356122a081612063565b9350606087013592506080870135915060a08701356122be81612063565b809150509295509295509295565b6000806000606084860312156122e157600080fd5b83356122ec81612063565b925060208401356122fc81612063565b929592945050506040919091013590565b60006020828403121561231f57600080fd5b813561232a8161218a565b9392505050565b6000806040838503121561234457600080fd5b823561234f81612063565b9150602083013561235f81612063565b809150509250929050565b600081518084526020808501945080840160005b838110156123a35781516001600160a01b03168752958201959082019060010161237e565b509495945050505050565b600081518084526020808501945080840160005b838110156123a357815162ffffff16875295820195908201906001016123c2565b83151581526060602082015260006123fe606083018561236a565b828103604084015261159e81856123ae565b60006020828403121561242257600080fd5b813561232a81612063565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161246b5761246b612443565b5060010190565b60208082526019908201527f696e707574546f6b656e203d3d206f7574707574546f6b656e00000000000000604082015260600190565b81810381811115611c2757611c27612443565b80820180821115611c2757611c27612443565b602081526000611c24602083018461236a565b6000602082840312156124f457600080fd5b815161232a81612063565b60006020828403121561251157600080fd5b5051919050565b87151581526001600160a01b03878116602083015260408201879052851660608201526080810184905260e060a0820181905260009061255a9083018561236a565b82810360c084015261256c81856123ae565b9a9950505050505050505050565b60005b8381101561259557818101518382015260200161257d565b50506000910152565b600084516125b081846020890161257a565b60e89490941b6001600160e81b0319169190930190815260609190911b6bffffffffffffffffffffffff1916600382015260170192915050565b60208152600082516080602084015280518060a08501526126128160c086016020850161257a565b60208501516001600160a01b0316604085810191909152850151606080860191909152909401516080840152505060c0601f909201601f1916010190565b600181815b8085111561268b57816000190482111561267157612671612443565b8085161561267e57918102915b93841c9390800290612655565b509250929050565b6000826126a257506001611c27565b816126af57506000611c27565b81600181146126c557600281146126cf576126eb565b6001915050611c27565b60ff8411156126e0576126e0612443565b50506001821b611c27565b5060208310610133831016604e8410600b841016171561270e575081810a611c27565b6127188383612650565b806000190482111561272c5761272c612443565b029392505050565b6000611c248383612693565b6000825161275281846020870161257a565b9190910192915050565b60006020828403121561276e57600080fd5b815161232a816121e6565b8082028115828204841417611c2757611c27612443565b6000826127ad57634e487b7160e01b600052601260045260246000fd5b500490565b805161ffff8116811461208357600080fd5b600080600080600080600060e0888a0312156127df57600080fd5b87516127ea81612063565b8097505060208801518060020b811461280257600080fd5b9550612810604089016127b2565b945061281e606089016127b2565b935061282c608089016127b2565b925060a088015160ff8116811461284257600080fd5b60c0890151909250612853816121e6565b8091505092959891949750929550565b60006020828403121561287557600080fd5b815161232a8161218a56fea26469706673582212207313969d270f4b1e4b567d80279635defe6ae8a77ed377d77f56996984875f6364736f6c63430008120033000000000000000000000000ac709f816af2ee3a2ac7b70bfa6a8a110c6c76340000000000000000000000000000000000000000000000000000000000001388
Deployed Bytecode
0x6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063cb612cfb11610059578063cb612cfb146102a4578063da02e718146102ba578063e1454fd0146102da578063f2fde38b1461032057600080fd5b80638da5cb5b14610210578063ac94e8ca1461022e578063ad5c46481461024e578063ae39ecfc1461027557600080fd5b806352c076c3116100c657806352c076c3146101735780635cb7d1f4146101a3578063666fc8b3146101db578063715018a6146101fb57600080fd5b80630ddb88ae146100f857806336d02ea11461011a5780633b4cdc431461013a5780634aec7a3114610160575b600080fd5b34801561010457600080fd5b5061011861011336600461209e565b610340565b005b34801561012657600080fd5b5061011861013536600461219b565b61069a565b61014d6101483660046121f4565b61082a565b6040519081526020015b60405180910390f35b61014d61016e36600461225c565b610853565b34801561017f57600080fd5b5060055461018f9062ffffff1681565b60405162ffffff9091168152602001610157565b3480156101af57600080fd5b506001546101c3906001600160a01b031681565b6040516001600160a01b039091168152602001610157565b3480156101e757600080fd5b5061014d6101f63660046122cc565b610f9c565b34801561020757600080fd5b50610118611252565b34801561021c57600080fd5b506000546001600160a01b03166101c3565b34801561023a57600080fd5b5061011861024936600461230d565b611266565b34801561025a57600080fd5b506005546101c390630100000090046001600160a01b031681565b34801561028157600080fd5b50610295610290366004612331565b61131f565b604051610157939291906123e3565b3480156102b057600080fd5b5061014d60025481565b3480156102c657600080fd5b5061014d6102d53660046122cc565b611563565b3480156102e657600080fd5b506102fa6102f5366004612331565b6115a8565b604080516001600160a01b03948516815293909216602084015290820152606001610157565b34801561032c57600080fd5b5061011861033b366004612410565b61175e565b6103486117d7565b61035183611831565b61035a82611831565b805160005b8181101561039b5761038983828151811061037c5761037c61242d565b6020026020010151611831565b8061039381612459565b91505061035f565b50826001600160a01b0316846001600160a01b0316036103d65760405162461bcd60e51b81526004016103cd90612472565b60405180910390fd5b60028110156104185760405162461bcd60e51b815260206004820152600e60248201526d1c185d1a081d1bdbc81cda1bdc9d60921b60448201526064016103cd565b836001600160a01b0316826000815181106104355761043561242d565b60200260200101516001600160a01b0316146104935760405162461bcd60e51b815260206004820152601e60248201527f70617468206e6f742073746172742066726f6d20696e707574546f6b656e000060448201526064016103cd565b6001600160a01b038316826104a96001846124a9565b815181106104b9576104b961242d565b60200260200101516001600160a01b0316146105175760405162461bcd60e51b815260206004820152601d60248201527f70617468206e6f7420656e642077697468206f7574707574546f6b656e00000060448201526064016103cd565b60005b6105256001836124a9565b811015610612576000600460008584815181106105445761054461242d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008584600161057c91906124bc565b8151811061058c5761058c61242d565b6020908102919091018101516001600160a01b0316825281019190915260400160009081205462ffffff1691508190036105ff5760405162461bcd60e51b81526020600482015260146024820152731d1c985919599959481b9bdd081919599a5b995960621b60448201526064016103cd565b508061060a81612459565b91505061051a565b506001600160a01b0380851660009081526003602090815260408083209387168352928152919020835161064892850190611fe9565b50826001600160a01b0316846001600160a01b03167f1b8a2f263025a93091ad02833d5c0dffaa83d6e6d8d21e11f0e0b5c48f63dd578460405161068c91906124cf565b60405180910390a350505050565b6106a26117d7565b6106ab83611831565b6106b482611831565b6106c28162ffffff1661187c565b816001600160a01b0316836001600160a01b0316036106f35760405162461bcd60e51b81526004016103cd90612472565b6000610777600160009054906101000a90046001600160a01b03166001600160a01b031663e3d11ba06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f91906124e2565b8585856118b6565b90506001600160a01b0381166107c05760405162461bcd60e51b815260206004820152600e60248201526d1c1bdbdb081b9bdd08195e1a5cdd60921b60448201526064016103cd565b6001600160a01b03848116600081815260046020908152604080832094881680845294825291829020805462ffffff191662ffffff881690811790915591519182527f036c706ce028591ddd5006239a630c0bb9bce2ece55d1120c8519913fe74fc63910161068c565b600080610838868686611563565b9050610848878787878588610853565b979650505050505050565b600061085e86611831565b61086785611831565b61087082611831565b6108798461187c565b846001600160a01b0316866001600160a01b0316036108aa5760405162461bcd60e51b81526004016103cd90612472565b60008060006108b9898961131f565b919450925090506001831515146109045760405162461bcd60e51b815260206004820152600f60248201526e70617468206e6f7420646566696e6560881b60448201526064016103cd565b89156109f55761091387611940565b6005546001600160a01b038a8116630100000090920416146109875760405162461bcd60e51b815260206004820152602760248201527f696e70757420455448206d7573742068617665207377617020706174682066726044820152660deda40ae8aa8960cb1b60648201526084016103cd565b600560039054906101000a90046001600160a01b03166001600160a01b031663d0e30db0886040518263ffffffff1660e01b81526004016000604051808303818588803b1580156109d757600080fd5b505af11580156109eb573d6000803e3d6000fd5b5050505050610ab8565b604051636eb1769f60e11b815233600482015230602482015287906001600160a01b038b169063dd62ed3e90604401602060405180830381865afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6591906124ff565b1015610aac5760405162461bcd60e51b8152602060048201526016602482015275185b1b1bddd85b98d9481a5b9cdd59999a58da595b9d60521b60448201526064016103cd565b610ab88933308a61198f565b610b3989600160009054906101000a90046001600160a01b03166001600160a01b0316639194da636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3391906124e2565b89611a99565b81516002819003610d4c57600160009054906101000a90046001600160a01b03166001600160a01b0316639194da636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb91906124e2565b6001600160a01b03166304e45aaf6040518060e001604052808d6001600160a01b031681526020018c6001600160a01b0316815260200185600081518110610c0557610c0561242d565b602002602001015162ffffff168152602001896001600160a01b031681526020018b81526020018a815260200160006001600160a01b03168152506040518263ffffffff1660e01b8152600401610cb5919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0838101519083015260c092830151169181019190915260e00190565b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf891906124ff565b9450856001600160a01b03167f0ff70a757dde6555c17e755d4725dbec5d2662e928b64e2a2772a047db1d9f0d8c8c8b8d8a8989604051610d3f9796959493929190612518565b60405180910390a2610f8e565b600083600081518110610d6157610d6161242d565b6020026020010151604051602001610d91919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052905060005b610db06001846124a9565b811015610e2e5781848281518110610dca57610dca61242d565b602002602001015186836001610de091906124bc565b81518110610df057610df061242d565b6020026020010151604051602001610e0a9392919061259e565b60405160208183030381529060405291508080610e2690612459565b915050610da5565b50600160009054906101000a90046001600160a01b03166001600160a01b0316639194da636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea691906124e2565b6001600160a01b031663b858183f60405180608001604052808481526020018a6001600160a01b031681526020018c81526020018b8152506040518263ffffffff1660e01b8152600401610efa91906125ea565b6020604051808303816000875af1158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3d91906124ff565b9550866001600160a01b03167fe2fbd4605def93f01b1643f166a5a181f02f79d949cd5fccb5b0e5416b32ee6e8d8d8c8e8b8a8a604051610f849796959493929190612518565b60405180910390a2505b505050509695505050505050565b6000610fa784611831565b610fb083611831565b610fb98261187c565b60055462ffffff1661100d5760405162461bcd60e51b815260206004820152601f60248201527f736c697070616765546f6c6572616e63654e756d657261746f7220697320300060448201526064016103cd565b826001600160a01b0316846001600160a01b03160361103e5760405162461bcd60e51b81526004016103cd90612472565b600080600061104d878761131f565b919450925090506001831515146110985760405162461bcd60e51b815260206004820152600f60248201526e70617468206e6f7420646566696e6560881b60448201526064016103cd565b815160006110ba6110a88a611b99565b6110b390600a612734565b8890611c18565b905060005b6110ca6001846124a9565b8110156112265760008582815181106110e5576110e561242d565b602002602001015190506000868360016110ff91906124bc565b8151811061110f5761110f61242d565b60200260200101519050600080600061112885856115a8565b925092509250611183620f424062ffffff1661117d6111768c8a815181106111525761115261242d565b602002602001015162ffffff16620f424062ffffff16611c2d90919063ffffffff16565b8a90611c18565b90611c39565b9650826001600160a01b0316856001600160a01b031614806111b65750816001600160a01b0316856001600160a01b0316145b6111bf57600080fd5b826001600160a01b0316856001600160a01b0316036111f8576111f16111e76012600a612734565b61117d8984611c18565b965061120e565b61120b8161117d6111766012600a612734565b96505b5050505050808061121e90612459565b9150506110bf565b5061124561123389611b99565b61123e90600a612734565b8290611c39565b9998505050505050505050565b61125a6117d7565b6112646000611c45565b565b61126e6117d7565b61127c8162ffffff1661187c565b620f424062ffffff8216106112d35760405162461bcd60e51b815260206004820152601960248201527f736c697070616765546f6c6572616e636520746f6f206269670000000000000060448201526064016103cd565b6005805462ffffff191662ffffff83169081179091556040519081527f6dee1c9db313684d98cb20b5cbbd22b75f01ce5241372a0bb9328b9ff7f53ab29060200160405180910390a150565b600060608061132d85611831565b61133684611831565b836001600160a01b0316856001600160a01b0316036113675760405162461bcd60e51b81526004016103cd90612472565b6001600160a01b0380861660009081526003602090815260408083209388168352928152828220805484518184028101840190955280855292939290918301828280156113dd57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113bf575b505050505090506000815190506002811061153d576001600061140082846124a9565b67ffffffffffffffff81111561141857611418612088565b604051908082528060200260200182016040528015611441578160200160208202803683370190505b50905060005b6114526001856124a9565b81101561152c576000600460008784815181106114715761147161242d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000878460016114a991906124bc565b815181106114b9576114b961242d565b6020908102919091018101516001600160a01b0316825281019190915260400160009081205462ffffff1691508190036114f257600093505b808383815181106115055761150561242d565b62ffffff90921660209283029190910190910152508061152481612459565b915050611447565b5090955091935090915061155c9050565b5050604080516000808252602082018181528284019093529450925090505b9250925092565b600080611571858585610f9c565b60055490915060009061159e90620f42409061117d9061159790839062ffffff16611c2d565b8590611c18565b9695505050505050565b60008060006115b685611831565b6115bf84611831565b836001600160a01b0316856001600160a01b0316036115f05760405162461bcd60e51b81526004016103cd90612472565b6001600160a01b03808616600090815260046020908152604080832093881683529290529081205462ffffff16908190036116635760405162461bcd60e51b81526020600482015260136024820152727472616465466565206e6f7420646566696e6560681b60448201526064016103cd565b60006116e7600160009054906101000a90046001600160a01b03166001600160a01b031663e3d11ba06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df91906124e2565b8888856118b6565b90506001600160a01b0381166117305760405162461bcd60e51b815260206004820152600e60248201526d1c1bdbdb081b9bdd08195e1a5cdd60921b60448201526064016103cd565b61173981611c95565b50949950929750611753935084925060129150611f119050565b925050509250925092565b6117666117d7565b6001600160a01b0381166117cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103cd565b6117d481611c45565b50565b6000546001600160a01b031633146112645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103cd565b6001600160a01b0381166117d45760405162461bcd60e51b8152602060048201526012602482015271696e707574207a65726f206164647265737360701b60448201526064016103cd565b600081116117d45760405162461bcd60e51b81526020600482015260076024820152660696e70757420360cc1b60448201526064016103cd565b604051630b4c774160e11b81526001600160a01b038481166004830152838116602483015262ffffff8316604483015260009190861690631698ee8290606401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193791906124e2565b95945050505050565b8034146117d45760405162461bcd60e51b815260206004820152601860248201527f6d73672e76616c756520213d20696e707574416d6f756e74000000000000000060448201526064016103cd565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916119f39190612740565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091509150818015611a5f575080511580611a5f575080806020019051810190611a5f919061275c565b611a915760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b60448201526064016103cd565b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151600092839290871691611af59190612740565b6000604051808303816000865af19150503d8060008114611b32576040519150601f19603f3d011682016040523d82523d6000602084013e611b37565b606091505b5091509150818015611b61575080511580611b61575080806020019051810190611b61919061275c565b611b925760405162461bcd60e51b8152602060048201526002602482015261534160f01b60448201526064016103cd565b5050505050565b600080601290506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0491906124ff565b9050611c108282611c2d565b949350505050565b6000611c248284612779565b90505b92915050565b6000611c2482846124a9565b6000611c248284612790565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000806000806000876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0291906127c4565b505060408051630dfe168160e01b8152905194995094975050506001600160a01b038b1692630dfe168192600480830193506020928290030181865afa158015611d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7491906124e2565b9650876001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd891906124e2565b9550876001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3c9190612863565b9450866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea091906124ff565b9150856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0491906124ff565b9050919395979092949650565b600080600080611f2086611c95565b965096509650505050506000611f54600160601b61117d88600a611f449190612734565b6001600160a01b03881690611c18565b90506000611f628280611c18565b90506000611f7a85611f748a87611fdd565b90611c2d565b90506000611f93611f8c83600a612734565b8490611c39565b9050600081116112455760405162461bcd60e51b81526020600482015260156024820152741d1bdad95b881c1c9a58d9481d1bdbc81cdb585b1b605a1b60448201526064016103cd565b6000611c2482846124bc565b82805482825590600052602060002090810192821561203e579160200282015b8281111561203e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612009565b5061204a92915061204e565b5090565b5b8082111561204a576000815560010161204f565b6001600160a01b03811681146117d457600080fd5b803561208381612063565b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156120b357600080fd5b83356120be81612063565b92506020848101356120cf81612063565b9250604085013567ffffffffffffffff808211156120ec57600080fd5b818701915087601f83011261210057600080fd5b81358181111561211257612112612088565b8060051b604051601f19603f8301168101818110858211171561213757612137612088565b60405291825284820192508381018501918a83111561215557600080fd5b938501935b8285101561217a5761216b85612078565b8452938501939285019261215a565b8096505050505050509250925092565b62ffffff811681146117d457600080fd5b6000806000606084860312156121b057600080fd5b83356121bb81612063565b925060208401356121cb81612063565b915060408401356121db8161218a565b809150509250925092565b80151581146117d457600080fd5b600080600080600060a0868803121561220c57600080fd5b8535612217816121e6565b9450602086013561222781612063565b9350604086013561223781612063565b925060608601359150608086013561224e81612063565b809150509295509295909350565b60008060008060008060c0878903121561227557600080fd5b8635612280816121e6565b9550602087013561229081612063565b945060408701356122a081612063565b9350606087013592506080870135915060a08701356122be81612063565b809150509295509295509295565b6000806000606084860312156122e157600080fd5b83356122ec81612063565b925060208401356122fc81612063565b929592945050506040919091013590565b60006020828403121561231f57600080fd5b813561232a8161218a565b9392505050565b6000806040838503121561234457600080fd5b823561234f81612063565b9150602083013561235f81612063565b809150509250929050565b600081518084526020808501945080840160005b838110156123a35781516001600160a01b03168752958201959082019060010161237e565b509495945050505050565b600081518084526020808501945080840160005b838110156123a357815162ffffff16875295820195908201906001016123c2565b83151581526060602082015260006123fe606083018561236a565b828103604084015261159e81856123ae565b60006020828403121561242257600080fd5b813561232a81612063565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161246b5761246b612443565b5060010190565b60208082526019908201527f696e707574546f6b656e203d3d206f7574707574546f6b656e00000000000000604082015260600190565b81810381811115611c2757611c27612443565b80820180821115611c2757611c27612443565b602081526000611c24602083018461236a565b6000602082840312156124f457600080fd5b815161232a81612063565b60006020828403121561251157600080fd5b5051919050565b87151581526001600160a01b03878116602083015260408201879052851660608201526080810184905260e060a0820181905260009061255a9083018561236a565b82810360c084015261256c81856123ae565b9a9950505050505050505050565b60005b8381101561259557818101518382015260200161257d565b50506000910152565b600084516125b081846020890161257a565b60e89490941b6001600160e81b0319169190930190815260609190911b6bffffffffffffffffffffffff1916600382015260170192915050565b60208152600082516080602084015280518060a08501526126128160c086016020850161257a565b60208501516001600160a01b0316604085810191909152850151606080860191909152909401516080840152505060c0601f909201601f1916010190565b600181815b8085111561268b57816000190482111561267157612671612443565b8085161561267e57918102915b93841c9390800290612655565b509250929050565b6000826126a257506001611c27565b816126af57506000611c27565b81600181146126c557600281146126cf576126eb565b6001915050611c27565b60ff8411156126e0576126e0612443565b50506001821b611c27565b5060208310610133831016604e8410600b841016171561270e575081810a611c27565b6127188383612650565b806000190482111561272c5761272c612443565b029392505050565b6000611c248383612693565b6000825161275281846020870161257a565b9190910192915050565b60006020828403121561276e57600080fd5b815161232a816121e6565b8082028115828204841417611c2757611c27612443565b6000826127ad57634e487b7160e01b600052601260045260246000fd5b500490565b805161ffff8116811461208357600080fd5b600080600080600080600060e0888a0312156127df57600080fd5b87516127ea81612063565b8097505060208801518060020b811461280257600080fd5b9550612810604089016127b2565b945061281e606089016127b2565b935061282c608089016127b2565b925060a088015160ff8116811461284257600080fd5b60c0890151909250612853816121e6565b8091505092959891949750929550565b60006020828403121561287557600080fd5b815161232a8161218a56fea26469706673582212207313969d270f4b1e4b567d80279635defe6ae8a77ed377d77f56996984875f6364736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ac709f816af2ee3a2ac7b70bfa6a8a110c6c76340000000000000000000000000000000000000000000000000000000000001388
-----Decoded View---------------
Arg [0] : _constants (address): 0xac709f816aF2ee3a2ac7B70bfa6A8a110C6c7634
Arg [1] : _slippageToleranceNumerator (uint24): 5000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ac709f816af2ee3a2ac7b70bfa6a8a110c6c7634
Arg [1] : 0000000000000000000000000000000000000000000000000000000000001388
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.