Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 134 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Close Contract | 11971147 | 1425 days ago | IN | 0 ETH | 0.01211154 | ||||
Add Liquidity | 11970002 | 1425 days ago | IN | 0 ETH | 0.0313602 | ||||
Add Liquidity | 11966152 | 1426 days ago | IN | 0 ETH | 0.05009727 | ||||
Add Liquidity | 11964224 | 1426 days ago | IN | 0 ETH | 0.05272923 | ||||
Add Liquidity | 11954322 | 1428 days ago | IN | 0 ETH | 0.03619822 | ||||
Add Liquidity | 11953795 | 1428 days ago | IN | 0 ETH | 0.05044212 | ||||
Add Liquidity | 11953760 | 1428 days ago | IN | 0 ETH | 0.065177 | ||||
Add Liquidity | 11953102 | 1428 days ago | IN | 0 ETH | 0.04534382 | ||||
Add Liquidity | 11951427 | 1428 days ago | IN | 0 ETH | 0.03433552 | ||||
Add Liquidity | 11951199 | 1428 days ago | IN | 0 ETH | 0.03350913 | ||||
Add Liquidity | 11950804 | 1428 days ago | IN | 0 ETH | 0.02503498 | ||||
Add Liquidity | 11950453 | 1428 days ago | IN | 0 ETH | 0.03144066 | ||||
Add Liquidity | 11950428 | 1428 days ago | IN | 0 ETH | 0.02665046 | ||||
Add Liquidity | 11950107 | 1428 days ago | IN | 0 ETH | 0.02559934 | ||||
Add Liquidity | 11947678 | 1429 days ago | IN | 0 ETH | 0.02882617 | ||||
Add Liquidity | 11947632 | 1429 days ago | IN | 0 ETH | 0.00683073 | ||||
Add Liquidity | 11947583 | 1429 days ago | IN | 0 ETH | 0.03546824 | ||||
Add Liquidity | 11947011 | 1429 days ago | IN | 0 ETH | 0.06391474 | ||||
Add Liquidity | 11944761 | 1429 days ago | IN | 0 ETH | 0.03365982 | ||||
Add Liquidity | 11943905 | 1429 days ago | IN | 0 ETH | 0.04300977 | ||||
Add Liquidity | 11938546 | 1430 days ago | IN | 0 ETH | 0.04373005 | ||||
Add Liquidity | 11938528 | 1430 days ago | IN | 0 ETH | 0.03515242 | ||||
Add Liquidity | 11938368 | 1430 days ago | IN | 0 ETH | 0.03627431 | ||||
Add Liquidity | 11938354 | 1430 days ago | IN | 0 ETH | 0.03477846 | ||||
Add Liquidity | 11938332 | 1430 days ago | IN | 0 ETH | 0.03702223 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Router
Compiler Version
v0.6.3+commit.8dda9521
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.6.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/math/SafeMath.sol"; import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol"; import "@uniswap/lib/contracts/libraries/TransferHelper.sol"; import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; import "./interfaces/IBalancerPool.sol"; import "./interfaces/IStakingManager.sol"; import "./templates/Initializable.sol"; /** * @title Router * @dev Liquidity management contract */ contract Router is Ownable, Initializable { using SafeMath for uint256; /** * @dev informs that EURxb router balance is empty */ event EmptyEURxbBalance(); address private _teamAddress; IStakingManager private _stakingManager; uint256 private _startTime; uint256 private _endTime; address private _tUSDT; address private _tUSDC; address private _tBUSD; address private _tDAI; IERC20 private _tEURxb; IUniswapV2Router02 private _uniswapRouter; bool _isClosedContract = false; mapping(address => address) private _pools; constructor(address teamAddress) public { _teamAddress = teamAddress; } /** * @dev setup uniswap router */ function configure( address stakingManager, address uniswapRouter, address tUSDT, address tUSDC, address tBUSD, address tDAI, address tEURxb ) external initializer { // set uniswap router contract address _uniswapRouter = IUniswapV2Router02(uniswapRouter); // set staking manager contract address _stakingManager = IStakingManager(stakingManager); // set stablecoins contract addresses _tUSDT = tUSDT; _tUSDC = tUSDC; _tBUSD = tBUSD; _tDAI = tDAI; // set eurxb contract address _tEURxb = IERC20(tEURxb); // set stakingManager start/end times _startTime = _stakingManager.startTime(); _endTime = _stakingManager.endTime(); // set balancer pools and uniswap pairs addresses address[4] memory pools = _stakingManager.getPools(); _pools[_tUSDT] = pools[0]; _pools[_tUSDC] = pools[1]; _pools[_tBUSD] = pools[2]; _pools[_tDAI] = pools[3]; } /** * @return are the tokens frozen */ function isClosedContract() external view returns (bool) { return _isClosedContract; } /** * @return staking manager address */ function stakingManager() external view returns (address) { return address(_stakingManager); } /** * @return uniswap router address */ function uniswapRouter() external view returns (address) { return address(_uniswapRouter); } /** * @return EURxb address */ function eurxb() external view returns (address) { return address(_tEURxb); } /** * @return start time */ function startTime() external view returns (uint256) { return _startTime; } /** * @return end time */ function endTime() external view returns (uint256) { return _endTime; } /** * @return stable coins pool addresses */ function getPoolAddress(address token) external view returns (address) { return _pools[token]; } /** * @return team address */ function teamAddress() external view returns (address) { return _teamAddress; } /** * @dev set team address * @param team address */ function setTeamAddress(address team) external onlyOwner { _teamAddress = team; } /** * @dev Close contract */ function closeContract() external onlyOwner { require(_endTime < block.timestamp, "Time is not over"); uint256 balance = _tEURxb.balanceOf(address(this)); if (balance > 0) { _tEURxb.transfer(_teamAddress, balance); } _isClosedContract = true; } /** * @dev Adding liquidity * @param token address * @param amount number of tokens */ function addLiquidity(address token, uint256 amount) external { require(block.timestamp >= _startTime, "The time has not come yet"); require(!_isClosedContract, "Contract closed"); if (token == _tUSDC || token == _tDAI) { _addLiquidityBalancer(_msgSender(), token, amount); } else if (token == _tUSDT || token == _tBUSD) { _addLiquidityUniswap(_msgSender(), token, amount); } else { revert("token is not supported"); } } /** * @dev Adds liquidity for USDT-EURxb and BUSD-EURxb pairs * @param token address * @param amount number of tokens */ function _addLiquidityUniswap(address sender, address token, uint256 amount) internal { address pairAddress = _pools[token]; uint256 exchangeAmount = amount.div(2); (uint256 tokenRatio, uint256 eurRatio) = _getUniswapReservesRatio(token); uint256 amountEUR = exchangeAmount.mul(eurRatio).div(tokenRatio); uint256 balanceEUR = _tEURxb.balanceOf(address(this)); require(balanceEUR >= 10 ** 18, 'EmptyEURxbBalance'); // balance great then 1 EURxb token // check if we don't have enough eurxb tokens if (balanceEUR <= amountEUR) { amountEUR = balanceEUR; // we can take only that much exchangeAmount = amountEUR.mul(tokenRatio).div(eurRatio); emit EmptyEURxbBalance(); } TransferHelper.safeTransferFrom(token, sender, address(this), exchangeAmount.mul(2)); // approve transfer tokens and eurxbs to uniswap pair TransferHelper.safeApprove(token, address(_uniswapRouter), exchangeAmount); TransferHelper.safeApprove(address(_tEURxb), address(_uniswapRouter), amountEUR); (, , uint256 liquidityAmount) = _uniswapRouter .addLiquidity( address(_tEURxb), token, amountEUR, // token B exchangeAmount, // token A 0, // min A amount 0, // min B amount address(this), // mint liquidity to router, not user block.timestamp + 10 minutes // deadline 10 minutes ); uint256 routerTokenBalance = IERC20(token).balanceOf(address(this)); TransferHelper.safeTransfer(token, _teamAddress, routerTokenBalance); // reward user with liquidity if (block.timestamp > _endTime) { TransferHelper.safeTransfer(pairAddress, sender, liquidityAmount); } else { TransferHelper.safeApprove(pairAddress, address(_stakingManager), liquidityAmount); _stakingManager.addStake(sender, pairAddress, liquidityAmount); } TransferHelper.safeApprove(token, address(_uniswapRouter), 0); } function _addLiquidityBalancer(address sender, address token, uint256 amount) internal { address poolAddress = _pools[token]; IBalancerPool pool = IBalancerPool(poolAddress); uint256 totalSupply = pool.totalSupply(); uint256 exchangeAmount = amount.div(2); (uint256 tokenRatio, uint256 eurRatio) = _getBalancerReservesRatio(token, pool); uint256 amountEUR = exchangeAmount.mul(eurRatio).div(tokenRatio); uint256 balanceEUR = _tEURxb.balanceOf(address(this)); require(balanceEUR >= 10 ** 18, 'EmptyEURxbBalance'); // balance great then 1 EURxb token uint256 routerTokenBalance = IERC20(token).balanceOf(address(this)); // check if we don't have enough eurxb tokens if (balanceEUR <= amountEUR) { amountEUR = balanceEUR; // we can take only that much exchangeAmount = amountEUR.mul(tokenRatio).div(eurRatio); emit EmptyEURxbBalance(); } TransferHelper.safeTransferFrom(token, sender, address(this), exchangeAmount.mul(2)); uint256 amountBPT; address addressEURxb = address(_tEURxb); { // to save stack space TransferHelper.safeApprove(token, poolAddress, exchangeAmount); TransferHelper.safeApprove(addressEURxb, poolAddress, amountEUR); uint256 balance = pool.getBalance(addressEURxb); amountBPT = totalSupply.mul(amountEUR).div(balance); amountBPT = amountBPT.mul(99).div(100); uint256[] memory data = new uint256[](2); data[0] = amountEUR; data[1] = exchangeAmount; pool.joinPool(amountBPT, data); } TransferHelper.safeTransfer(token, _teamAddress, exchangeAmount); routerTokenBalance = (IERC20(token).balanceOf(address(this))).sub(routerTokenBalance); TransferHelper.safeTransfer(token, msg.sender, routerTokenBalance); TransferHelper.safeTransfer(addressEURxb, msg.sender, routerTokenBalance.mul(eurRatio).div(tokenRatio)); if (block.timestamp > _endTime) { TransferHelper.safeTransfer(poolAddress, sender, amountBPT); } else { TransferHelper.safeApprove(poolAddress, address(_stakingManager), amountBPT); _stakingManager.addStake(sender, poolAddress, amountBPT); } TransferHelper.safeApprove(token, poolAddress, 0); } /** * @dev returns uniswap pair reserves numbers or default numbers * used to get token/eurxb ratio */ function _getUniswapReservesRatio(address token) internal returns (uint256 tokenRes, uint256 eurRes) { (uint112 res0, uint112 res1,) = IUniswapV2Pair(_pools[token]).getReserves(); if (res0 == 0 || res1 == 0) { (tokenRes, eurRes) = ( (10 ** uint256(_getTokenDecimals(token))).mul(27), (10 ** uint256(_getTokenDecimals(address(_tEURxb)))).mul(23) ); } else { (address token0,) = _sortTokens(token, address(_tEURxb)); (tokenRes, eurRes) = (token == token0) ? (res0, res1) : (res1, res0); } } /** * @dev returns balancer pair reserves numbers or default numbers * used to get token/eurxb ratio * guarantees, that returned numbers greater than zero */ function _getBalancerReservesRatio(address token, IBalancerPool pool) internal returns (uint256, uint256) { uint256 balanceEurXB = pool.getBalance(address(_tEURxb)); uint256 balanceToken = pool.getBalance(token); if (balanceEurXB == 0 || balanceToken == 0) { return ( (10 ** uint256(_getTokenDecimals(token))).mul(27), (10 ** uint256(_getTokenDecimals(address(_tEURxb)))).mul(23) ); } return (balanceToken, balanceEurXB); } /** * @dev sorts token addresses just like uniswap router does */ function _sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { require(tokenA != tokenB, "identical tokens"); (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), 'zero address'); } function _getTokenDecimals(address token) internal returns (uint8) { // bytes4(keccak256(bytes('decimals()'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x313ce567)); require(success && (data.length == 0 || abi.decode(data, (uint8)) > 0 || abi.decode(data, (uint8)) < 100), "DECIMALS_NOT_FOUND"); return abi.decode(data, (uint8)); } }
pragma solidity ^0.6.0; /** * @title IBalancerPool * @dev Pool balancer interface */ interface IBalancerPool { function joinPool(uint256 poolAmountOut, uint256[] calldata maxAmountsIn) external; function joinswapExternAmountIn( address tokenIn, uint256 tokenAmountIn, uint256 minPoolAmountOut ) external returns (uint256 poolAmountOut); function totalSupply() external view returns (uint256); function getBalance(address token) external view returns (uint256); function getDenormalizedWeight(address token) external view returns (uint256); function getTotalDenormalizedWeight() external view returns (uint256); function getSwapFee() external view returns (uint256); function calcPoolOutGivenSingleIn( uint256 tokenBalanceIn, uint256 tokenWeightIn, uint256 poolSupply, uint256 totalWeight, uint256 tokenAmountIn, uint256 swapFee ) external pure returns (uint256 poolAmountOut); }
pragma solidity ^0.6.0; /** * @title IStakingManager * @dev Staking manager interface */ interface IStakingManager { function addStake( address user, address pool, uint256 amount ) external; function startTime() external view returns (uint256); function endTime() external view returns (uint256); function getPools() external view returns (address[4] memory); }
pragma solidity >=0.6.0 <0.7.0; import "@openzeppelin/contracts/GSN/Context.sol"; /** * @title Initializable allows to create initializable contracts * so that only deployer can initialize contract and only once */ contract Initializable is Context { bool private _isContractInitialized; address private _deployer; constructor() public { _deployer = _msgSender(); } modifier initializer { require(_msgSender() == _deployer, "user not allowed to initialize"); require(!_isContractInitialized, "contract already initialized"); _; _isContractInitialized = true; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <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 GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../GSN/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. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
pragma solidity >=0.6.0; // 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, uint 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, uint 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, uint 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, uint value) internal { (bool success,) = to.call{value:value}(new bytes(0)); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } }
pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint 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 (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); 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 price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
pragma solidity >=0.6.2; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
{ "remappings": [], "optimizer": { "enabled": false, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"teamAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"EmptyEURxbBalance","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"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakingManager","type":"address"},{"internalType":"address","name":"uniswapRouter","type":"address"},{"internalType":"address","name":"tUSDT","type":"address"},{"internalType":"address","name":"tUSDC","type":"address"},{"internalType":"address","name":"tBUSD","type":"address"},{"internalType":"address","name":"tDAI","type":"address"},{"internalType":"address","name":"tEURxb","type":"address"}],"name":"configure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eurxb","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isClosedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"team","type":"address"}],"name":"setTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526000600b60146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405162003cca38038062003cca833981810160405260208110156200005257600080fd5b8101908080519060200190929190505050600062000075620001ab60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000123620001ab60201b60201c565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001b3565b600033905090565b613b0780620001c36000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a6116100975780638da5cb5b116100665780638da5cb5b14610388578063bc0a2aba146103d2578063ec4460c7146103f4578063f2fde38b146104f8576100f5565b8063715018a6146102cc578063735de9f7146102d657806378e9792514610320578063823fe5a71461033e576100f5565b80633197cbb6116100d35780633197cbb6146102125780635668870014610230578063610be6541461027e5780636690864e14610288576100f5565b80631228cbee146100fa5780631c75f0851461017e57806322828cc2146101c8575b600080fd5b61013c6004803603602081101561011057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061053c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101866105a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101d06105cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021a6105f9565b6040518082815260200191505060405180910390f35b61027c6004803603604081101561024657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610603565b005b6102866108fb565b005b6102ca6004803603602081101561029e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c48565b005b6102d4610d55565b005b6102de610edd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610328610f07565b6040518082815260200191505060405180910390f35b610346610f11565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610390610f3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103da610f64565b604051808215151515815260200191505060405180910390f35b6104f6600480360360e081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f7b565b005b61053a6004803603602081101561050e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177d565b005b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600554905090565b60045442101561067b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5468652074696d6520686173206e6f7420636f6d65207965740000000000000081525060200191505060405180910390fd5b600b60149054906101000a900460ff16156106fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f436f6e747261637420636c6f736564000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806107a75750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156107c3576107be6107b761198a565b8383611992565b6108f7565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061086c5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156108885761088361087c61198a565b838361225c565b6108f6565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f746f6b656e206973206e6f7420737570706f727465640000000000000000000081525060200191505060405180910390fd5b5b5050565b61090361198a565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b4260055410610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f54696d65206973206e6f74206f7665720000000000000000000000000000000081525060200191505060405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610adc57600080fd5b505afa158015610af0573d6000803e3d6000fd5b505050506040513d6020811015610b0657600080fd5b810190808051906020019092919050505090506000811115610c2a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b505050506040513d6020811015610c1757600080fd5b8101908080519060200190929190505050505b6001600b60146101000a81548160ff02191690831515021790555050565b610c5061198a565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d5d61198a565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600454905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600b60149054906101000a900460ff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fbc61198a565b73ffffffffffffffffffffffffffffffffffffffff1614611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f75736572206e6f7420616c6c6f77656420746f20696e697469616c697a65000081525060200191505060405180910390fd5b600060149054906101000a900460ff16156110c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b85600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e979256040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f757600080fd5b505afa15801561130b573d6000803e3d6000fd5b505050506040513d602081101561132157600080fd5b8101908080519060200190929190505050600481905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633197cbb66040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a057600080fd5b505afa1580156113b4573d6000803e3d6000fd5b505050506040513d60208110156113ca57600080fd5b81019080805190602001909291905050506005819055506113e9613a44565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663673a2a1f6040518163ffffffff1660e01b815260040160806040518083038186803b15801561145157600080fd5b505afa158015611465573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250608081101561148a57600080fd5b81019080919050509050806000600481106114a157fe5b6020020151600c6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016004811061155257fe5b6020020151600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060026004811061160357fe5b6020020151600c6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806003600481106116b457fe5b6020020151600c6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600060146101000a81548160ff02191690831515021790555050505050505050565b61178561198a565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a676026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a4357600080fd5b505afa158015611a57573d6000803e3d6000fd5b505050506040513d6020811015611a6d57600080fd5b810190808051906020019092919050505090506000611a9660028661297490919063ffffffff16565b9050600080611aa588866129be565b915091506000611ad083611ac28487612bf090919063ffffffff16565b61297490919063ffffffff16565b90506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b7357600080fd5b505afa158015611b87573d6000803e3d6000fd5b505050506040513d6020811015611b9d57600080fd5b81019080805190602001909291905050509050670de0b6b3a7640000811015611c2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456d707479455552786242616c616e636500000000000000000000000000000081525060200191505060405180910390fd5b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cad57600080fd5b505afa158015611cc1573d6000803e3d6000fd5b505050506040513d6020811015611cd757600080fd5b81019080805190602001909291905050509050828211611d4857819250611d1984611d0b8786612bf090919063ffffffff16565b61297490919063ffffffff16565b95507f92a03a3a3dc6fca53aaf2c4f86f258d7a2d4f5dbc18fe26a0ed4160b0ea4408d60405160405180910390a15b611d678b8d30611d6260028b612bf090919063ffffffff16565b612c76565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611d9a8d8c8a612e87565b611da5818c87612e87565b60008a73ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b81019080805190602001909291905050509050611e8681611e78888d612bf090919063ffffffff16565b61297490919063ffffffff16565b9250611eaf6064611ea1606386612bf090919063ffffffff16565b61297490919063ffffffff16565b925060606002604051908082528060200260200182016040528015611ee35781602001602082028036833780820191505090505b5090508681600081518110611ef457fe5b6020026020010181815250508981600181518110611f0e57fe5b6020026020010181815250508b73ffffffffffffffffffffffffffffffffffffffff16634f69c0d485836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611f90578082015181840152602081019050611f75565b505050509050019350505050600060405180830381600087803b158015611fb657600080fd5b505af1158015611fca573d6000803e3d6000fd5b505050505050611ffd8d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a613080565b6120c7838e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b810190808051906020019092919050505061327990919063ffffffff16565b92506120d48d3385613080565b61210381336120fe8a6120f08b89612bf090919063ffffffff16565b61297490919063ffffffff16565b613080565b60055442111561211d576121188b8f84613080565b612240565b61214a8b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e87565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dfc2d1ba8f8d856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b505050505b61224c8d8c6000612e87565b5050505050505050505050505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006122d660028461297490919063ffffffff16565b90506000806122e4866132c3565b91509150600061230f836123018487612bf090919063ffffffff16565b61297490919063ffffffff16565b90506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156123b257600080fd5b505afa1580156123c6573d6000803e3d6000fd5b505050506040513d60208110156123dc57600080fd5b81019080805190602001909291905050509050670de0b6b3a764000081101561246d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456d707479455552786242616c616e636500000000000000000000000000000081525060200191505060405180910390fd5b8181116124cb5780915061249c8361248e8685612bf090919063ffffffff16565b61297490919063ffffffff16565b94507f92a03a3a3dc6fca53aaf2c4f86f258d7a2d4f5dbc18fe26a0ed4160b0ea4408d60405160405180910390a15b6124ea888a306124e560028a612bf090919063ffffffff16565b612c76565b61251788600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687612e87565b612566600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e87565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b868a6000803061025842016040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200198505050505050505050606060405180830381600087803b1580156126c057600080fd5b505af11580156126d4573d6000803e3d6000fd5b505050506040513d60608110156126ea57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050509250505060008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561279257600080fd5b505afa1580156127a6573d6000803e3d6000fd5b505050506040513d60208110156127bc57600080fd5b810190808051906020019092919050505090506127fc8a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613080565b60055442111561281657612811888c84613080565b612939565b61284388600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e87565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dfc2d1ba8c8a856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561292057600080fd5b505af1158015612934573d6000803e3d6000fd5b505050505b6129678a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612e87565b5050505050505050505050565b60006129b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061350e565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612a6257600080fd5b505afa158015612a76573d6000803e3d6000fd5b505050506040513d6020811015612a8c57600080fd5b8101908080519060200190929190505050905060008473ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b1e57600080fd5b505afa158015612b32573d6000803e3d6000fd5b505050506040513d6020811015612b4857600080fd5b810190808051906020019092919050505090506000821480612b6a5750600081145b15612be057612b91601b612b7d886135d4565b60ff16600a0a612bf090919063ffffffff16565b612bd56017612bc1600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166135d4565b60ff16600a0a612bf090919063ffffffff16565b935093505050612be9565b80829350935050505b9250929050565b600080831415612c035760009050612c70565b6000828402905082848281612c1457fe5b0414612c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613a8d6021913960400191505060405180910390fd5b809150505b92915050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612d835780518252602082019150602081019050602083039250612d60565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612de5576040519150601f19603f3d011682016040523d82523d6000602084013e612dea565b606091505b5091509150818015612e2a5750600081511480612e295750808060200190516020811015612e1757600080fd5b81019080805190602001909291905050505b5b612e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613aae6024913960400191505060405180910390fd5b505050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612f605780518252602082019150602081019050602083039250612f3d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612fc2576040519150601f19603f3d011682016040523d82523d6000602084013e612fc7565b606091505b509150915081801561300757506000815114806130065750808060200190516020811015612ff457600080fd5b81019080805190602001909291905050505b5b613079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5472616e7366657248656c7065723a20415050524f56455f4641494c4544000081525060200191505060405180910390fd5b5050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106131595780518252602082019150602081019050602083039250613136565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146131bb576040519150601f19603f3d011682016040523d82523d6000602084013e6131c0565b606091505b509150915081801561320057506000815114806131ff57508080602001905160208110156131ed57600080fd5b81019080805190602001909291905050505b5b613272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5472616e7366657248656c7065723a205452414e534645525f4641494c45440081525060200191505060405180910390fd5b5050505050565b60006132bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137f0565b905092915050565b600080600080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561336e57600080fd5b505afa158015613382573d6000803e3d6000fd5b505050506040513d606081101561339857600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505050915091506000826dffffffffffffffffffffffffffff1614806133f157506000816dffffffffffffffffffffffffffff16145b1561346957613418601b613404876135d4565b60ff16600a0a612bf090919063ffffffff16565b61345c6017613448600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166135d4565b60ff16600a0a612bf090919063ffffffff16565b8094508195505050613507565b600061349786600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138b0565b5090508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146134d45781836134d7565b82825b816dffffffffffffffffffffffffffff169150806dffffffffffffffffffffffffffff1690508095508196505050505b5050915091565b600080831182906135ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561357f578082015181840152602081019050613564565b50505050905090810190601f1680156135ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816135c657fe5b049050809150509392505050565b60008060608373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040516024016040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061366f578051825260208201915060208101905060208303925061364c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146136d1576040519150601f19603f3d011682016040523d82523d6000602084013e6136d6565b606091505b509150915081801561374f575060008151148061371b5750600081806020019051602081101561370557600080fd5b810190808051906020019092919050505060ff16115b8061374e5750606481806020019051602081101561373857600080fd5b810190808051906020019092919050505060ff16105b5b6137c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f444543494d414c535f4e4f545f464f554e44000000000000000000000000000081525060200191505060405180910390fd5b8080602001905160208110156137d657600080fd5b810190808051906020019092919050505092505050919050565b600083831115829061389d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613862578082015181840152602081019050613847565b50505050905090810190601f16801561388f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613955576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6964656e746963616c20746f6b656e730000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061398f578284613992565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7a65726f2061646472657373000000000000000000000000000000000000000081525060200191505060405180910390fd5b9250929050565b604051806080016040528060049060208202803683378082019150509050509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220179bbed9f4499ec8eeebebaa2e0d64ae65fafd8593174e3f5ff364f2fdfc749f64736f6c634300060300330000000000000000000000006e7249c50c5dd738c0bcf5e3f8f17679d5978e28
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a6116100975780638da5cb5b116100665780638da5cb5b14610388578063bc0a2aba146103d2578063ec4460c7146103f4578063f2fde38b146104f8576100f5565b8063715018a6146102cc578063735de9f7146102d657806378e9792514610320578063823fe5a71461033e576100f5565b80633197cbb6116100d35780633197cbb6146102125780635668870014610230578063610be6541461027e5780636690864e14610288576100f5565b80631228cbee146100fa5780631c75f0851461017e57806322828cc2146101c8575b600080fd5b61013c6004803603602081101561011057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061053c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101866105a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101d06105cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021a6105f9565b6040518082815260200191505060405180910390f35b61027c6004803603604081101561024657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610603565b005b6102866108fb565b005b6102ca6004803603602081101561029e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c48565b005b6102d4610d55565b005b6102de610edd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610328610f07565b6040518082815260200191505060405180910390f35b610346610f11565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610390610f3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103da610f64565b604051808215151515815260200191505060405180910390f35b6104f6600480360360e081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f7b565b005b61053a6004803603602081101561050e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177d565b005b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600554905090565b60045442101561067b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5468652074696d6520686173206e6f7420636f6d65207965740000000000000081525060200191505060405180910390fd5b600b60149054906101000a900460ff16156106fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f436f6e747261637420636c6f736564000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806107a75750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156107c3576107be6107b761198a565b8383611992565b6108f7565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061086c5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156108885761088361087c61198a565b838361225c565b6108f6565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f746f6b656e206973206e6f7420737570706f727465640000000000000000000081525060200191505060405180910390fd5b5b5050565b61090361198a565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b4260055410610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f54696d65206973206e6f74206f7665720000000000000000000000000000000081525060200191505060405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610adc57600080fd5b505afa158015610af0573d6000803e3d6000fd5b505050506040513d6020811015610b0657600080fd5b810190808051906020019092919050505090506000811115610c2a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b505050506040513d6020811015610c1757600080fd5b8101908080519060200190929190505050505b6001600b60146101000a81548160ff02191690831515021790555050565b610c5061198a565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d5d61198a565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600454905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600b60149054906101000a900460ff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fbc61198a565b73ffffffffffffffffffffffffffffffffffffffff1614611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f75736572206e6f7420616c6c6f77656420746f20696e697469616c697a65000081525060200191505060405180910390fd5b600060149054906101000a900460ff16156110c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b85600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e979256040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f757600080fd5b505afa15801561130b573d6000803e3d6000fd5b505050506040513d602081101561132157600080fd5b8101908080519060200190929190505050600481905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633197cbb66040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a057600080fd5b505afa1580156113b4573d6000803e3d6000fd5b505050506040513d60208110156113ca57600080fd5b81019080805190602001909291905050506005819055506113e9613a44565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663673a2a1f6040518163ffffffff1660e01b815260040160806040518083038186803b15801561145157600080fd5b505afa158015611465573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250608081101561148a57600080fd5b81019080919050509050806000600481106114a157fe5b6020020151600c6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016004811061155257fe5b6020020151600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060026004811061160357fe5b6020020151600c6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806003600481106116b457fe5b6020020151600c6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600060146101000a81548160ff02191690831515021790555050505050505050565b61178561198a565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a676026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a4357600080fd5b505afa158015611a57573d6000803e3d6000fd5b505050506040513d6020811015611a6d57600080fd5b810190808051906020019092919050505090506000611a9660028661297490919063ffffffff16565b9050600080611aa588866129be565b915091506000611ad083611ac28487612bf090919063ffffffff16565b61297490919063ffffffff16565b90506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b7357600080fd5b505afa158015611b87573d6000803e3d6000fd5b505050506040513d6020811015611b9d57600080fd5b81019080805190602001909291905050509050670de0b6b3a7640000811015611c2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456d707479455552786242616c616e636500000000000000000000000000000081525060200191505060405180910390fd5b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cad57600080fd5b505afa158015611cc1573d6000803e3d6000fd5b505050506040513d6020811015611cd757600080fd5b81019080805190602001909291905050509050828211611d4857819250611d1984611d0b8786612bf090919063ffffffff16565b61297490919063ffffffff16565b95507f92a03a3a3dc6fca53aaf2c4f86f258d7a2d4f5dbc18fe26a0ed4160b0ea4408d60405160405180910390a15b611d678b8d30611d6260028b612bf090919063ffffffff16565b612c76565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611d9a8d8c8a612e87565b611da5818c87612e87565b60008a73ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b81019080805190602001909291905050509050611e8681611e78888d612bf090919063ffffffff16565b61297490919063ffffffff16565b9250611eaf6064611ea1606386612bf090919063ffffffff16565b61297490919063ffffffff16565b925060606002604051908082528060200260200182016040528015611ee35781602001602082028036833780820191505090505b5090508681600081518110611ef457fe5b6020026020010181815250508981600181518110611f0e57fe5b6020026020010181815250508b73ffffffffffffffffffffffffffffffffffffffff16634f69c0d485836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611f90578082015181840152602081019050611f75565b505050509050019350505050600060405180830381600087803b158015611fb657600080fd5b505af1158015611fca573d6000803e3d6000fd5b505050505050611ffd8d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a613080565b6120c7838e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b810190808051906020019092919050505061327990919063ffffffff16565b92506120d48d3385613080565b61210381336120fe8a6120f08b89612bf090919063ffffffff16565b61297490919063ffffffff16565b613080565b60055442111561211d576121188b8f84613080565b612240565b61214a8b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e87565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dfc2d1ba8f8d856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b505050505b61224c8d8c6000612e87565b5050505050505050505050505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006122d660028461297490919063ffffffff16565b90506000806122e4866132c3565b91509150600061230f836123018487612bf090919063ffffffff16565b61297490919063ffffffff16565b90506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156123b257600080fd5b505afa1580156123c6573d6000803e3d6000fd5b505050506040513d60208110156123dc57600080fd5b81019080805190602001909291905050509050670de0b6b3a764000081101561246d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456d707479455552786242616c616e636500000000000000000000000000000081525060200191505060405180910390fd5b8181116124cb5780915061249c8361248e8685612bf090919063ffffffff16565b61297490919063ffffffff16565b94507f92a03a3a3dc6fca53aaf2c4f86f258d7a2d4f5dbc18fe26a0ed4160b0ea4408d60405160405180910390a15b6124ea888a306124e560028a612bf090919063ffffffff16565b612c76565b61251788600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687612e87565b612566600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e87565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b868a6000803061025842016040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200198505050505050505050606060405180830381600087803b1580156126c057600080fd5b505af11580156126d4573d6000803e3d6000fd5b505050506040513d60608110156126ea57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050509250505060008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561279257600080fd5b505afa1580156127a6573d6000803e3d6000fd5b505050506040513d60208110156127bc57600080fd5b810190808051906020019092919050505090506127fc8a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613080565b60055442111561281657612811888c84613080565b612939565b61284388600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e87565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dfc2d1ba8c8a856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561292057600080fd5b505af1158015612934573d6000803e3d6000fd5b505050505b6129678a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612e87565b5050505050505050505050565b60006129b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061350e565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612a6257600080fd5b505afa158015612a76573d6000803e3d6000fd5b505050506040513d6020811015612a8c57600080fd5b8101908080519060200190929190505050905060008473ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b1e57600080fd5b505afa158015612b32573d6000803e3d6000fd5b505050506040513d6020811015612b4857600080fd5b810190808051906020019092919050505090506000821480612b6a5750600081145b15612be057612b91601b612b7d886135d4565b60ff16600a0a612bf090919063ffffffff16565b612bd56017612bc1600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166135d4565b60ff16600a0a612bf090919063ffffffff16565b935093505050612be9565b80829350935050505b9250929050565b600080831415612c035760009050612c70565b6000828402905082848281612c1457fe5b0414612c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613a8d6021913960400191505060405180910390fd5b809150505b92915050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612d835780518252602082019150602081019050602083039250612d60565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612de5576040519150601f19603f3d011682016040523d82523d6000602084013e612dea565b606091505b5091509150818015612e2a5750600081511480612e295750808060200190516020811015612e1757600080fd5b81019080805190602001909291905050505b5b612e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613aae6024913960400191505060405180910390fd5b505050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612f605780518252602082019150602081019050602083039250612f3d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612fc2576040519150601f19603f3d011682016040523d82523d6000602084013e612fc7565b606091505b509150915081801561300757506000815114806130065750808060200190516020811015612ff457600080fd5b81019080805190602001909291905050505b5b613079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5472616e7366657248656c7065723a20415050524f56455f4641494c4544000081525060200191505060405180910390fd5b5050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106131595780518252602082019150602081019050602083039250613136565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146131bb576040519150601f19603f3d011682016040523d82523d6000602084013e6131c0565b606091505b509150915081801561320057506000815114806131ff57508080602001905160208110156131ed57600080fd5b81019080805190602001909291905050505b5b613272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5472616e7366657248656c7065723a205452414e534645525f4641494c45440081525060200191505060405180910390fd5b5050505050565b60006132bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137f0565b905092915050565b600080600080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561336e57600080fd5b505afa158015613382573d6000803e3d6000fd5b505050506040513d606081101561339857600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505050915091506000826dffffffffffffffffffffffffffff1614806133f157506000816dffffffffffffffffffffffffffff16145b1561346957613418601b613404876135d4565b60ff16600a0a612bf090919063ffffffff16565b61345c6017613448600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166135d4565b60ff16600a0a612bf090919063ffffffff16565b8094508195505050613507565b600061349786600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138b0565b5090508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146134d45781836134d7565b82825b816dffffffffffffffffffffffffffff169150806dffffffffffffffffffffffffffff1690508095508196505050505b5050915091565b600080831182906135ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561357f578082015181840152602081019050613564565b50505050905090810190601f1680156135ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816135c657fe5b049050809150509392505050565b60008060608373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040516024016040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061366f578051825260208201915060208101905060208303925061364c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146136d1576040519150601f19603f3d011682016040523d82523d6000602084013e6136d6565b606091505b509150915081801561374f575060008151148061371b5750600081806020019051602081101561370557600080fd5b810190808051906020019092919050505060ff16115b8061374e5750606481806020019051602081101561373857600080fd5b810190808051906020019092919050505060ff16105b5b6137c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f444543494d414c535f4e4f545f464f554e44000000000000000000000000000081525060200191505060405180910390fd5b8080602001905160208110156137d657600080fd5b810190808051906020019092919050505092505050919050565b600083831115829061389d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613862578082015181840152602081019050613847565b50505050905090810190601f16801561388f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613955576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6964656e746963616c20746f6b656e730000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061398f578284613992565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7a65726f2061646472657373000000000000000000000000000000000000000081525060200191505060405180910390fd5b9250929050565b604051806080016040528060049060208202803683378082019150509050509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220179bbed9f4499ec8eeebebaa2e0d64ae65fafd8593174e3f5ff364f2fdfc749f64736f6c63430006030033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006e7249c50c5dd738c0bcf5e3f8f17679d5978e28
-----Decoded View---------------
Arg [0] : teamAddress (address): 0x6e7249c50c5Dd738c0bCf5e3F8f17679D5978E28
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006e7249c50c5dd738c0bcf5e3f8f17679d5978e28
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.