More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 429 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 15827589 | 624 days ago | IN | 0 ETH | 0.00193476 | ||||
Deposit | 15827554 | 624 days ago | IN | 0 ETH | 0.00316727 | ||||
Withdraw | 15762422 | 633 days ago | IN | 0 ETH | 0.0010201 | ||||
Withdraw | 15639505 | 650 days ago | IN | 0 ETH | 0.0019145 | ||||
Deposit | 15639452 | 650 days ago | IN | 0 ETH | 0.0016273 | ||||
Withdraw | 15492147 | 672 days ago | IN | 0 ETH | 0.00220616 | ||||
Deposit | 15492135 | 672 days ago | IN | 0 ETH | 0.00139389 | ||||
Deposit | 15492127 | 672 days ago | IN | 0 ETH | 0.00201129 | ||||
Deposit | 15439330 | 680 days ago | IN | 0 ETH | 0.00209739 | ||||
Withdraw | 15378022 | 690 days ago | IN | 0 ETH | 0.00093115 | ||||
Withdraw | 14881927 | 770 days ago | IN | 0 ETH | 0.00255392 | ||||
Withdraw | 14779747 | 787 days ago | IN | 0 ETH | 0.00100204 | ||||
Withdraw | 14504804 | 830 days ago | IN | 0 ETH | 0.00259914 | ||||
Deposit | 14494123 | 832 days ago | IN | 0 ETH | 0.00292324 | ||||
Withdraw | 14334165 | 857 days ago | IN | 0 ETH | 0.00245701 | ||||
Deposit | 14334163 | 857 days ago | IN | 0 ETH | 0.00320802 | ||||
Withdraw | 14236127 | 872 days ago | IN | 0 ETH | 0.00539754 | ||||
Withdraw | 14222069 | 874 days ago | IN | 0 ETH | 0.00447685 | ||||
Withdraw | 14201466 | 877 days ago | IN | 0 ETH | 0.00311035 | ||||
Deposit | 14201460 | 877 days ago | IN | 0 ETH | 0.00409873 | ||||
Withdraw | 14050232 | 901 days ago | IN | 0 ETH | 0.0189764 | ||||
Withdraw | 14048827 | 901 days ago | IN | 0 ETH | 0.01121682 | ||||
Withdraw | 13917562 | 921 days ago | IN | 0 ETH | 0.00710081 | ||||
Withdraw | 13763061 | 945 days ago | IN | 0 ETH | 0.0064821 | ||||
Withdraw | 13758342 | 946 days ago | IN | 0 ETH | 0.0067452 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PinknodeLiquidityMining
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import "./Ownable.sol"; import "./SafeMath.sol"; import "./IERC20.sol"; contract PinknodeLiquidityMining is Ownable { using SafeMath for uint; // Events event Deposit(uint256 _timestmap, address indexed _address, uint256 indexed _pid, uint256 _amount); event Withdraw(uint256 _timestamp, address indexed _address, uint256 indexed _pid, uint256 _amount); event EmergencyWithdraw(uint256 _timestamp, address indexed _address, uint256 indexed _pid, uint256 _amount); // PNODE Token Contract & Funding Address IERC20 public constant PNODE = IERC20(0xAF691508BA57d416f895e32a1616dA1024e882D2); address public fundingAddress = 0xF7897E58A72dFf79Ab8538647A62fecEf8344ffe; struct LPInfo { // Address of LP token contract IERC20 lpToken; // LP reward per block uint256 rewardPerBlock; // Last reward block uint256 lastRewardBlock; // Accumulated reward per share (times 1e12 to minimize rounding errors) uint256 accRewardPerShare; } struct Staker { // Total Amount Staked uint256 amountStaked; // Reward Debt (pending reward = (staker.amountStaked * pool.accRewardPerShare) - staker.rewardDebt) uint256 rewardDebt; } // Liquidity Pools LPInfo[] public liquidityPools; // Info of each user that stakes LP tokens. // poolId => address => staker mapping (uint256 => mapping (address => Staker)) public stakers; // Starting block for mining uint256 public startBlock; // End block for mining (Will be ongoing if unset/0) uint256 public endBlock; /** * @dev Constructor */ constructor(uint256 _startBlock) public { startBlock = _startBlock; } /** * @dev Contract Modifiers */ function updateFundingAddress(address _address) public onlyOwner { fundingAddress = _address; } function updateStartBlock(uint256 _startBlock) public onlyOwner { require(startBlock > block.number, "Mining has started, unable to update startBlock"); require(_startBlock > block.number, "startBlock has to be in the future"); for (uint256 i = 0; i < liquidityPools.length; i++) { LPInfo storage pool = liquidityPools[i]; pool.lastRewardBlock = _startBlock; } startBlock = _startBlock; } function updateEndBlock(uint256 _endBlock) public onlyOwner { require(endBlock > block.number || endBlock == 0, "Mining has ended, unable to update endBlock"); require(_endBlock > block.number, "endBlock has to be in the future"); endBlock = _endBlock; } /** * @dev Liquidity Pool functions */ // Add liquidity pool function addLiquidityPool(IERC20 _lpToken, uint256 _rewardPerBlock) public onlyOwner { uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock; liquidityPools.push(LPInfo({ lpToken: _lpToken, rewardPerBlock: _rewardPerBlock, lastRewardBlock: lastRewardBlock, accRewardPerShare: 0 })); } // Update LP rewardPerBlock function updateRewardPerBlock(uint256 _pid, uint256 _rewardPerBlock) public onlyOwner { updatePoolRewards(_pid); liquidityPools[_pid].rewardPerBlock = _rewardPerBlock; } // Update pool rewards variables function updatePoolRewards(uint256 _pid) public { LPInfo storage pool = liquidityPools[_pid]; if (block.number <= pool.lastRewardBlock) { return; } uint256 lpSupply = pool.lpToken.balanceOf(address(this)); if (lpSupply == 0) { pool.lastRewardBlock = block.number; return; } uint256 blockElapsed = 0; if (block.number < endBlock || endBlock == 0) { blockElapsed = (block.number).sub(pool.lastRewardBlock); } else if (endBlock >= pool.lastRewardBlock) { blockElapsed = endBlock.sub(pool.lastRewardBlock); } uint256 totalReward = blockElapsed.mul(pool.rewardPerBlock); pool.accRewardPerShare = pool.accRewardPerShare.add(totalReward.mul(1e12).div(lpSupply)); pool.lastRewardBlock = block.number; } /** * @dev Stake functions */ // Deposit LP tokens into the liquidity pool function deposit(uint256 _pid, uint256 _amount) public { require(block.number < endBlock || endBlock == 0); LPInfo storage pool = liquidityPools[_pid]; Staker storage user = stakers[_pid][msg.sender]; updatePoolRewards(_pid); // Issue accrued rewards to user if (user.amountStaked > 0) { uint256 pending = user.amountStaked.mul(pool.accRewardPerShare).div(1e12).sub(user.rewardDebt); if(pending > 0) { _issueRewards(msg.sender, pending); } } // Process deposit if(_amount > 0) { require(pool.lpToken.transferFrom(msg.sender, address(this), _amount)); user.amountStaked = user.amountStaked.add(_amount); } // Update user reward debt user.rewardDebt = user.amountStaked.mul(pool.accRewardPerShare).div(1e12); emit Deposit(block.timestamp, msg.sender, _pid, _amount); } // Withdraw LP tokens from liquidity pool function withdraw(uint256 _pid, uint256 _amount) public { LPInfo storage pool = liquidityPools[_pid]; Staker storage user = stakers[_pid][msg.sender]; require(user.amountStaked >= _amount, "Amount to withdraw more than amount staked"); updatePoolRewards(_pid); // Issue accrued rewards to user if (user.amountStaked > 0) { uint256 pending = user.amountStaked.mul(pool.accRewardPerShare).div(1e12).sub(user.rewardDebt); if(pending > 0) { _issueRewards(msg.sender, pending); } } // Process withdraw if(_amount > 0) { user.amountStaked = user.amountStaked.sub(_amount); require(pool.lpToken.transfer(msg.sender, _amount)); } // Update user reward debt user.rewardDebt = user.amountStaked.mul(pool.accRewardPerShare).div(1e12); emit Withdraw(block.timestamp, msg.sender, _pid, _amount); } // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) public { LPInfo storage pool = liquidityPools[_pid]; Staker storage user = stakers[_pid][msg.sender]; uint256 amount = user.amountStaked; user.amountStaked = 0; user.rewardDebt = 0; require(pool.lpToken.transfer(msg.sender, amount)); emit EmergencyWithdraw(block.timestamp, msg.sender, _pid, amount); } // Function to issue rewards from funding address to user function _issueRewards(address _to, uint256 _amount) internal { // For transparency, rewards are transfered from funding address to contract then to user // Transfer rewards from funding address to contract require(PNODE.transferFrom(fundingAddress, address(this), _amount)); // Transfer rewards from contract to user require(PNODE.transfer(_to, _amount)); } // View function to see pending rewards on frontend. function pendingRewards(uint256 _pid, address _user) external view returns (uint256) { LPInfo storage pool = liquidityPools[_pid]; Staker storage user = stakers[_pid][_user]; uint256 accRewardPerShare = pool.accRewardPerShare; uint256 lpSupply = pool.lpToken.balanceOf(address(this)); if (block.number > pool.lastRewardBlock && lpSupply != 0) { uint256 blockElapsed = 0; if (block.number < endBlock || endBlock == 0) { blockElapsed = (block.number).sub(pool.lastRewardBlock); } else if (endBlock >= pool.lastRewardBlock) { blockElapsed = endBlock.sub(pool.lastRewardBlock); } uint256 totalReward = blockElapsed.mul(pool.rewardPerBlock); accRewardPerShare = accRewardPerShare.add(totalReward.mul(1e12).div(lpSupply)); } return user.amountStaked.mul(accRewardPerShare).div(1e12).sub(user.rewardDebt); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import "./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. */ 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; /** * @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; /** * @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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.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; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_startBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timestmap","type":"uint256"},{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":true,"internalType":"uint256","name":"_pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"},{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":true,"internalType":"uint256","name":"_pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"},{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":true,"internalType":"uint256","name":"_pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"PNODE","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityPools","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"rewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accRewardPerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"stakers","outputs":[{"internalType":"uint256","name":"amountStaked","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_endBlock","type":"uint256"}],"name":"updateEndBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateFundingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePoolRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"}],"name":"updateRewardPerBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startBlock","type":"uint256"}],"name":"updateStartBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405273f7897e58a72dff79ab8538647a62fecef8344ffe600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b5060405161247f38038061247f8339818101604052602081101561008857600080fd5b810190808051906020019092919050505060006100a961015460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350806004819055505061015c565b600033905090565b6123148061016b6000396000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c806361cd014d116100ad578063d18df53c11610071578063d18df53c14610435578063d3b7bfb414610497578063e2bbb158146104cb578063f2fde38b14610503578063fac2b9ba1461054757610120565b806361cd014d14610318578063715018a61461035c57806379d747be146103665780638da5cb5b146103d3578063adb82b311461040757610120565b80631228a370116100f45780631228a370146101dd578063441a3e701461022b57806348cd4cb1146102635780635312ea8e146102815780635e225621146102af57610120565b80626f023114610125578063083c6323146101535780630a8d1be21461017157806312069a7f146101a9575b600080fd5b6101516004803603602081101561013b57600080fd5b8101908080359060200190929190505050610575565b005b61015b610723565b6040518082815260200191505060405180910390f35b6101a76004803603604081101561018757600080fd5b810190808035906020019092919080359060200190929190505050610729565b005b6101b1610821565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610229600480360360408110156101f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610839565b005b6102616004803603604081101561024157600080fd5b8101908080359060200190929190803590602001909291905050506109e7565b005b61026b610cc8565b6040518082815260200191505060405180910390f35b6102ad6004803603602081101561029757600080fd5b8101908080359060200190929190505050610cce565b005b6102fb600480360360408110156102c557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e94565b604051808381526020018281526020019250505060405180910390f35b61035a6004803603602081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec5565b005b610364610fd1565b005b6103926004803603602081101561037c57600080fd5b8101908080359060200190929190505050611157565b604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b6103db6111b4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104336004803603602081101561041d57600080fd5b81019080803590602001909291905050506111dd565b005b6104816004803603604081101561044b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c5565b6040518082815260200191505060405180910390f35b61049f611632565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610501600480360360408110156104e157600080fd5b810190808035906020019092919080359060200190929190505050611658565b005b6105456004803603602081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611915565b005b6105736004803603602081101561055d57600080fd5b8101908080359060200190929190505050611b20565b005b61057d611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461063d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b43600554118061064f57506000600554145b6106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612242602b913960400191505060405180910390fd5b438111610719576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f656e64426c6f636b2068617320746f20626520696e207468652066757475726581525060200191505060405180910390fd5b8060058190555050565b60055481565b610731611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6107fa826111dd565b806002838154811061080857fe5b9060005260206000209060040201600101819055505050565b73af691508ba57d416f895e32a1616da1024e882d281565b610841611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600454431161091457600454610916565b435b9050600260405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301555050505050565b6000600283815481106109f657fe5b9060005260206000209060040201905060006003600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612218602a913960400191505060405180910390fd5b610ac0846111dd565b600081600001541115610b2f576000610b178260010154610b0964e8d4a51000610afb87600301548760000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b611dc390919063ffffffff16565b90506000811115610b2d57610b2c3382611e0d565b5b505b6000831115610c3157610b4f838260000154611dc390919063ffffffff16565b81600001819055508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bec57600080fd5b505af1158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b8101908080519060200190929190505050610c3057600080fd5b5b610c6364e8d4a51000610c5584600301548460000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167fb0ecf14e184effded5473bba77dcfab32b094b77ac1fbb36beec2aef555879704286604051808381526020018281526020019250505060405180910390a350505050565b60045481565b600060028281548110610cdd57fe5b9060005260206000209060040201905060006003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154905060008260000181905550600082600101819055508260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610df357600080fd5b505af1158015610e07573d6000803e3d6000fd5b505050506040513d6020811015610e1d57600080fd5b8101908080519060200190929190505050610e3757600080fd5b833373ffffffffffffffffffffffffffffffffffffffff167f9249974f830acfda0206ff647cec28bc54307e021dafd01bdc6218a3993e156f4284604051808381526020018281526020019250505060405180910390a350505050565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b610ecd611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610fd9611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6002818154811061116457fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600282815481106111ec57fe5b906000526020600020906004020190508060020154431161120d57506113c2565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129a57600080fd5b505afa1580156112ae573d6000803e3d6000fd5b505050506040513d60208110156112c457600080fd5b8101908080519060200190929190505050905060008114156112f05743826002018190555050506113c2565b600060055443108061130457506000600554145b1561132757611320836002015443611dc390919063ffffffff16565b9050611351565b8260020154600554106113505761134d8360020154600554611dc390919063ffffffff16565b90505b5b600061136a846001015483611cf390919063ffffffff16565b90506113ac6113998461138b64e8d4a5100085611cf390919063ffffffff16565b611d7990919063ffffffff16565b8560030154611fe390919063ffffffff16565b8460030181905550438460020181905550505050505b50565b600080600284815481106113d557fe5b9060005260206000209060040201905060006003600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114cf57600080fd5b505afa1580156114e3573d6000803e3d6000fd5b505050506040513d60208110156114f957600080fd5b81019080805190602001909291905050509050836002015443118015611520575060008114155b156115e257600060055443108061153957506000600554145b1561155c57611555856002015443611dc390919063ffffffff16565b9050611586565b846002015460055410611585576115828560020154600554611dc390919063ffffffff16565b90505b5b600061159f866001015483611cf390919063ffffffff16565b90506115dd6115ce846115c064e8d4a5100085611cf390919063ffffffff16565b611d7990919063ffffffff16565b85611fe390919063ffffffff16565b935050505b611626836001015461161864e8d4a5100061160a868860000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b611dc390919063ffffffff16565b94505050505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055443108061166a57506000600554145b61167357600080fd5b60006002838154811061168257fe5b9060005260206000209060040201905060006003600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506116ef846111dd565b60008160000154111561175e576000611746826001015461173864e8d4a5100061172a87600301548760000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b611dc390919063ffffffff16565b9050600081111561175c5761175b3382611e0d565b5b505b600083111561187e578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561181a57600080fd5b505af115801561182e573d6000803e3d6000fd5b505050506040513d602081101561184457600080fd5b810190808051906020019092919050505061185e57600080fd5b611875838260000154611fe390919063ffffffff16565b81600001819055505b6118b064e8d4a510006118a284600301548460000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167fd36a2f67d06d285786f61a32b052b9ace6b0b7abef5177b54358abdc83a0b69b4286604051808381526020018281526020019250505060405180910390a350505050565b61191d611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121f26026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b28611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b4360045411611c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061228e602f913960400191505060405180910390fd5b438111611c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806122bd6022913960400191505060405180910390fd5b60005b600280549050811015611ce057600060028281548110611cb957fe5b90600052602060002090600402019050828160020181905550508080600101915050611c9d565b508060048190555050565b600033905090565b600080831415611d065760009050611d73565b6000828402905082848281611d1757fe5b0414611d6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061226d6021913960400191505060405180910390fd5b809150505b92915050565b6000611dbb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061206b565b905092915050565b6000611e0583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612131565b905092915050565b73af691508ba57d416f895e32a1616da1024e882d273ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ed257600080fd5b505af1158015611ee6573d6000803e3d6000fd5b505050506040513d6020811015611efc57600080fd5b8101908080519060200190929190505050611f1657600080fd5b73af691508ba57d416f895e32a1616da1024e882d273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f9b57600080fd5b505af1158015611faf573d6000803e3d6000fd5b505050506040513d6020811015611fc557600080fd5b8101908080519060200190929190505050611fdf57600080fd5b5050565b600080828401905083811015612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083118290612117576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120dc5780820151818401526020810190506120c1565b50505050905090810190601f1680156121095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161212357fe5b049050809150509392505050565b60008383111582906121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121a3578082015181840152602081019050612188565b50505050905090810190601f1680156121d05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416d6f756e7420746f207769746864726177206d6f7265207468616e20616d6f756e74207374616b65644d696e696e672068617320656e6465642c20756e61626c6520746f2075706461746520656e64426c6f636b536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d696e696e672068617320737461727465642c20756e61626c6520746f20757064617465207374617274426c6f636b7374617274426c6f636b2068617320746f20626520696e2074686520667574757265a2646970667358221220809a90d535367bb74f2fc252112ce836782d5a0b892add3002f8c6112b58e82964736f6c634300060c00330000000000000000000000000000000000000000000000000000000000bfc8e0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101205760003560e01c806361cd014d116100ad578063d18df53c11610071578063d18df53c14610435578063d3b7bfb414610497578063e2bbb158146104cb578063f2fde38b14610503578063fac2b9ba1461054757610120565b806361cd014d14610318578063715018a61461035c57806379d747be146103665780638da5cb5b146103d3578063adb82b311461040757610120565b80631228a370116100f45780631228a370146101dd578063441a3e701461022b57806348cd4cb1146102635780635312ea8e146102815780635e225621146102af57610120565b80626f023114610125578063083c6323146101535780630a8d1be21461017157806312069a7f146101a9575b600080fd5b6101516004803603602081101561013b57600080fd5b8101908080359060200190929190505050610575565b005b61015b610723565b6040518082815260200191505060405180910390f35b6101a76004803603604081101561018757600080fd5b810190808035906020019092919080359060200190929190505050610729565b005b6101b1610821565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610229600480360360408110156101f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610839565b005b6102616004803603604081101561024157600080fd5b8101908080359060200190929190803590602001909291905050506109e7565b005b61026b610cc8565b6040518082815260200191505060405180910390f35b6102ad6004803603602081101561029757600080fd5b8101908080359060200190929190505050610cce565b005b6102fb600480360360408110156102c557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e94565b604051808381526020018281526020019250505060405180910390f35b61035a6004803603602081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec5565b005b610364610fd1565b005b6103926004803603602081101561037c57600080fd5b8101908080359060200190929190505050611157565b604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b6103db6111b4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104336004803603602081101561041d57600080fd5b81019080803590602001909291905050506111dd565b005b6104816004803603604081101561044b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c5565b6040518082815260200191505060405180910390f35b61049f611632565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610501600480360360408110156104e157600080fd5b810190808035906020019092919080359060200190929190505050611658565b005b6105456004803603602081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611915565b005b6105736004803603602081101561055d57600080fd5b8101908080359060200190929190505050611b20565b005b61057d611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461063d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b43600554118061064f57506000600554145b6106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612242602b913960400191505060405180910390fd5b438111610719576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f656e64426c6f636b2068617320746f20626520696e207468652066757475726581525060200191505060405180910390fd5b8060058190555050565b60055481565b610731611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6107fa826111dd565b806002838154811061080857fe5b9060005260206000209060040201600101819055505050565b73af691508ba57d416f895e32a1616da1024e882d281565b610841611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600454431161091457600454610916565b435b9050600260405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301555050505050565b6000600283815481106109f657fe5b9060005260206000209060040201905060006003600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612218602a913960400191505060405180910390fd5b610ac0846111dd565b600081600001541115610b2f576000610b178260010154610b0964e8d4a51000610afb87600301548760000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b611dc390919063ffffffff16565b90506000811115610b2d57610b2c3382611e0d565b5b505b6000831115610c3157610b4f838260000154611dc390919063ffffffff16565b81600001819055508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bec57600080fd5b505af1158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b8101908080519060200190929190505050610c3057600080fd5b5b610c6364e8d4a51000610c5584600301548460000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167fb0ecf14e184effded5473bba77dcfab32b094b77ac1fbb36beec2aef555879704286604051808381526020018281526020019250505060405180910390a350505050565b60045481565b600060028281548110610cdd57fe5b9060005260206000209060040201905060006003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154905060008260000181905550600082600101819055508260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610df357600080fd5b505af1158015610e07573d6000803e3d6000fd5b505050506040513d6020811015610e1d57600080fd5b8101908080519060200190929190505050610e3757600080fd5b833373ffffffffffffffffffffffffffffffffffffffff167f9249974f830acfda0206ff647cec28bc54307e021dafd01bdc6218a3993e156f4284604051808381526020018281526020019250505060405180910390a350505050565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b610ecd611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610fd9611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6002818154811061116457fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600282815481106111ec57fe5b906000526020600020906004020190508060020154431161120d57506113c2565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129a57600080fd5b505afa1580156112ae573d6000803e3d6000fd5b505050506040513d60208110156112c457600080fd5b8101908080519060200190929190505050905060008114156112f05743826002018190555050506113c2565b600060055443108061130457506000600554145b1561132757611320836002015443611dc390919063ffffffff16565b9050611351565b8260020154600554106113505761134d8360020154600554611dc390919063ffffffff16565b90505b5b600061136a846001015483611cf390919063ffffffff16565b90506113ac6113998461138b64e8d4a5100085611cf390919063ffffffff16565b611d7990919063ffffffff16565b8560030154611fe390919063ffffffff16565b8460030181905550438460020181905550505050505b50565b600080600284815481106113d557fe5b9060005260206000209060040201905060006003600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114cf57600080fd5b505afa1580156114e3573d6000803e3d6000fd5b505050506040513d60208110156114f957600080fd5b81019080805190602001909291905050509050836002015443118015611520575060008114155b156115e257600060055443108061153957506000600554145b1561155c57611555856002015443611dc390919063ffffffff16565b9050611586565b846002015460055410611585576115828560020154600554611dc390919063ffffffff16565b90505b5b600061159f866001015483611cf390919063ffffffff16565b90506115dd6115ce846115c064e8d4a5100085611cf390919063ffffffff16565b611d7990919063ffffffff16565b85611fe390919063ffffffff16565b935050505b611626836001015461161864e8d4a5100061160a868860000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b611dc390919063ffffffff16565b94505050505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055443108061166a57506000600554145b61167357600080fd5b60006002838154811061168257fe5b9060005260206000209060040201905060006003600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506116ef846111dd565b60008160000154111561175e576000611746826001015461173864e8d4a5100061172a87600301548760000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b611dc390919063ffffffff16565b9050600081111561175c5761175b3382611e0d565b5b505b600083111561187e578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561181a57600080fd5b505af115801561182e573d6000803e3d6000fd5b505050506040513d602081101561184457600080fd5b810190808051906020019092919050505061185e57600080fd5b611875838260000154611fe390919063ffffffff16565b81600001819055505b6118b064e8d4a510006118a284600301548460000154611cf390919063ffffffff16565b611d7990919063ffffffff16565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167fd36a2f67d06d285786f61a32b052b9ace6b0b7abef5177b54358abdc83a0b69b4286604051808381526020018281526020019250505060405180910390a350505050565b61191d611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121f26026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b28611ceb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b4360045411611c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061228e602f913960400191505060405180910390fd5b438111611c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806122bd6022913960400191505060405180910390fd5b60005b600280549050811015611ce057600060028281548110611cb957fe5b90600052602060002090600402019050828160020181905550508080600101915050611c9d565b508060048190555050565b600033905090565b600080831415611d065760009050611d73565b6000828402905082848281611d1757fe5b0414611d6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061226d6021913960400191505060405180910390fd5b809150505b92915050565b6000611dbb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061206b565b905092915050565b6000611e0583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612131565b905092915050565b73af691508ba57d416f895e32a1616da1024e882d273ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ed257600080fd5b505af1158015611ee6573d6000803e3d6000fd5b505050506040513d6020811015611efc57600080fd5b8101908080519060200190929190505050611f1657600080fd5b73af691508ba57d416f895e32a1616da1024e882d273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f9b57600080fd5b505af1158015611faf573d6000803e3d6000fd5b505050506040513d6020811015611fc557600080fd5b8101908080519060200190929190505050611fdf57600080fd5b5050565b600080828401905083811015612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083118290612117576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120dc5780820151818401526020810190506120c1565b50505050905090810190601f1680156121095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161212357fe5b049050809150509392505050565b60008383111582906121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121a3578082015181840152602081019050612188565b50505050905090810190601f1680156121d05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416d6f756e7420746f207769746864726177206d6f7265207468616e20616d6f756e74207374616b65644d696e696e672068617320656e6465642c20756e61626c6520746f2075706461746520656e64426c6f636b536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d696e696e672068617320737461727465642c20756e61626c6520746f20757064617465207374617274426c6f636b7374617274426c6f636b2068617320746f20626520696e2074686520667574757265a2646970667358221220809a90d535367bb74f2fc252112ce836782d5a0b892add3002f8c6112b58e82964736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000bfc8e0
-----Decoded View---------------
Arg [0] : _startBlock (uint256): 12568800
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000bfc8e0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $9.89 | 2,049.2799 | $20,270.96 |
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.