More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 580 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Change Release T... | 21537456 | 23 days ago | IN | 0 ETH | 0.00044702 | ||||
Change Release T... | 21537448 | 23 days ago | IN | 0 ETH | 0.0004644 | ||||
Revoke | 20661350 | 145 days ago | IN | 0 ETH | 0.0001038 | ||||
Issue | 20661348 | 145 days ago | IN | 0 ETH | 0.00020366 | ||||
Revoke | 20661330 | 145 days ago | IN | 0 ETH | 0.0001046 | ||||
Issue | 20661327 | 145 days ago | IN | 0 ETH | 0.00019954 | ||||
Revoke | 20661304 | 145 days ago | IN | 0 ETH | 0.00010853 | ||||
Issue | 20661272 | 145 days ago | IN | 0 ETH | 0.00021296 | ||||
Issue | 20660885 | 145 days ago | IN | 0 ETH | 0.00019626 | ||||
Issue | 20660119 | 145 days ago | IN | 0 ETH | 0.00019215 | ||||
Issue | 20660090 | 145 days ago | IN | 0 ETH | 0.00019082 | ||||
Issue | 20660081 | 145 days ago | IN | 0 ETH | 0.00013964 | ||||
Revoke | 20660049 | 145 days ago | IN | 0 ETH | 0.00009777 | ||||
Issue | 20660040 | 145 days ago | IN | 0 ETH | 0.00013787 | ||||
Issue | 20660040 | 145 days ago | IN | 0 ETH | 0.00019113 | ||||
Issue | 20659965 | 145 days ago | IN | 0 ETH | 0.00019635 | ||||
Issue | 20659965 | 145 days ago | IN | 0 ETH | 0.00019631 | ||||
Issue | 20659946 | 145 days ago | IN | 0 ETH | 0.00019162 | ||||
Issue | 20659943 | 145 days ago | IN | 0 ETH | 0.00013653 | ||||
Issue | 20659923 | 145 days ago | IN | 0 ETH | 0.0001401 | ||||
Issue | 20659923 | 145 days ago | IN | 0 ETH | 0.0001401 | ||||
Issue | 20659921 | 145 days ago | IN | 0 ETH | 0.00013632 | ||||
Issue | 20659921 | 145 days ago | IN | 0 ETH | 0.00013632 | ||||
Issue | 20659917 | 145 days ago | IN | 0 ETH | 0.0001322 | ||||
Issue | 20659917 | 145 days ago | IN | 0 ETH | 0.00018328 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TokenTimelockMulti
Compiler Version
v0.5.8+commit.23d335f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-01-23 */ // File: openzeppelin-solidity/contracts/GSN/Context.sol pragma solidity ^0.5.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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: openzeppelin-solidity/contracts/ownership/Ownable.sol pragma solidity ^0.5.0; /** * @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. * * 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 { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } /** * @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(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: openzeppelin-solidity/contracts/math/SafeMath.sol pragma solidity ^0.5.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. * * _Available since v2.4.0._ */ 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. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 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. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ 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); } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol pragma solidity ^0.5.0; /** * @dev Optional functions from the ERC20 standard. */ contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of * these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } } // File: contracts/TokenTimelockMulti.sol pragma solidity 0.5.8; // TokenTimelockMulti - Copyright (c) 2019-2020 Ossip Kaehr /** * @dev A token holder contract that will allow beneficiaries to extract the * tokens after a given release time. * * Useful for simple vesting schedules like "advisors get all of their tokens * after 1 year". * based on openzeppelin - TokenTimelock expanded for multiple beneficiaries; */ contract TokenTimelockMulti is Ownable { using SafeMath for uint256; // ERC20 token contract being held ERC20Detailed private _token; string _name; // timestamp when token release is enabled uint256 private _releaseTime; mapping(address => uint256) private _balances; uint256 private _total; // total assigned balance event Transfer(address indexed _from, address indexed _to, uint256 _value); constructor (string memory name, ERC20Detailed token, uint256 releaseTime) public { // solhint-disable-next-line not-rely-on-time require(releaseTime > block.timestamp, "release time is before current time"); _name = name; _token = token; _releaseTime = releaseTime; _total = 0; } function name() public view returns (string memory) { // for ERC20 compliance return _name; } function token() public view returns (ERC20Detailed) { return _token; } function decimals() public view returns (uint256) { // for ERC20 compliance return _token.decimals(); } function symbol() public view returns (string memory) { // for ERC20 compliance return _token.symbol(); } function releaseTime() public view returns (uint256) { return _releaseTime; } function changeReleaseTime(uint256 time) public onlyOwner { require(time > block.timestamp, "release time is before current time"); _releaseTime = time; } function total() public view returns (uint256) { return _total; } function totalSupply() public view returns (uint256) { return _token.balanceOf(address(this)); } function balanceOf(address beneficiary) public view returns (uint) { return _balances[beneficiary]; } function withdraw(address beneficiary) public { // solhint-disable-next-line not-rely-on-time require(block.timestamp >= _releaseTime, "current time is before release time"); uint256 amount = _balances[beneficiary]; require(amount > 0, "no tokens to release"); uint256 available = totalSupply(); require(available > 0, "no tokens to release"); if (amount > available) amount = available; // max available - better give what we have _total = _total.sub(amount); _balances[beneficiary] = _balances[beneficiary].sub(amount); _token.transfer(beneficiary, amount); emit Transfer(beneficiary, address(0), amount); } function canWithdraw() public view returns (bool) { return block.timestamp >= _releaseTime; } function issue(address payable beneficiary, uint256 amount) public onlyOwner { require(amount > 0, "amount zero"); require(beneficiary != address(0), "invalid zero address"); uint256 available = totalSupply(); require(available - _total >= amount, "not enough tokens available"); _total = _total.add(amount); _balances[beneficiary] = _balances[beneficiary].add(amount); emit Transfer(address(0), beneficiary, amount); } function revoke(address beneficiary) public onlyOwner { require(beneficiary != address(0), "invalid zero address"); uint256 bal = _balances[beneficiary]; if (bal > 0) { _total = _total.sub(bal); _balances[beneficiary] = 0; emit Transfer(beneficiary, address(0), bal); } } // release unallocated funds to owner function releaseFunds() public onlyOwner { uint256 available = totalSupply(); require(available > _total, "no additional funds to release"); _token.transfer(owner(), available - _total); } // maybe overkill, but allow user to change his wallet function changeAddress(address payable beneficiary) public { require(beneficiary != address(0), "invalid zero address"); require(msg.sender != beneficiary, "send from old address"); uint256 bal = _balances[msg.sender]; require(bal > 0, "no balance"); _balances[msg.sender] = 0; _balances[beneficiary] = _balances[beneficiary].add(bal); emit Transfer(msg.sender, beneficiary, bal); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"changeReleaseTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"releaseFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"beneficiary","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"revoke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"amount","type":"uint256"}],"name":"issue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"canWithdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"releaseTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"changeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"name","type":"string"},{"name":"token","type":"address"},{"name":"releaseTime","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200213338038062002133833981018060405260608110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b828101905060208101848111156200006757600080fd5b81518560018202830111640100000000821117156200008557600080fd5b50509291906020018051906020019092919080519060200190929190505050620000b46200023b60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3428111620001c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180620021106023913960400191505060405180910390fd5b8260029080519060200190620001e192919062000243565b5081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806003819055506000600581905550505050620002f2565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028657805160ff1916838001178555620002b7565b82800160010185558215620002b7579182015b82811115620002b657825182559160200191906001019062000299565b5b509050620002c69190620002ca565b5090565b620002ef91905b80821115620002eb576000816000905550600101620002d1565b5090565b90565b611e0e80620003026000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806374a8f103116100ad578063b51459fe11610071578063b51459fe14610462578063b91d400114610484578063f2fde38b146104a2578063fc0c546a146104e6578063fe64d6ff1461053057610121565b806374a8f103146102e1578063867904b4146103255780638da5cb5b146103735780638f32d59b146103bd57806395d89b41146103df57610121565b8063313ce567116100f4578063313ce5671461021357806351cff8d91461023157806369d895751461027557806370a082311461027f578063715018a6146102d757610121565b806306fdde031461012657806318160ddd146101a95780632ddbd13a146101c75780632e0f2ce1146101e5575b600080fd5b61012e610574565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016e578082015181840152602081019050610153565b50505050905090810190601f16801561019b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b1610616565b6040518082815260200191505060405180910390f35b6101cf6106f7565b6040518082815260200191505060405180910390f35b610211600480360360208110156101fb57600080fd5b8101908080359060200190929190505050610701565b005b61021b6107dd565b6040518082815260200191505060405180910390f35b6102736004803603602081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061088a565b005b61027d610c2d565b005b6102c16004803603602081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e1d565b6040518082815260200191505060405180910390f35b6102df610e66565b005b610323600480360360208110156102f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9f565b005b6103716004803603604081101561033b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d4565b005b61037b611508565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103c5611531565b604051808215151515815260200191505060405180910390f35b6103e761158f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042757808201518184015260208101905061040c565b50505050905090810190601f1680156104545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61046a61168f565b604051808215151515815260200191505060405180910390f35b61048c61169c565b6040518082815260200191505060405180910390f35b6104e4600480360360208110156104b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116a6565b005b6104ee61172c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105726004803603602081101561054657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611756565b005b606060028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561060c5780601f106105e15761010080835404028352916020019161060c565b820191906000526020600020905b8154815290600101906020018083116105ef57829003601f168201915b5050505050905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106b757600080fd5b505afa1580156106cb573d6000803e3d6000fd5b505050506040513d60208110156106e157600080fd5b8101908080519060200190929190505050905090565b6000600554905090565b610709611531565b61077b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b4281116107d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611dc06023913960400191505060405180910390fd5b8060038190555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561084757600080fd5b505afa15801561085b573d6000803e3d6000fd5b505050506040513d602081101561087157600080fd5b810190808051906020019092919050505060ff16905090565b6003544210156108e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611d9d6023913960400191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811161099f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20746f6b656e7320746f2072656c6561736500000000000000000000000081525060200191505060405180910390fd5b60006109a9610616565b905060008111610a21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20746f6b656e7320746f2072656c6561736500000000000000000000000081525060200191505060405180910390fd5b80821115610a2d578091505b610a4282600554611a9890919063ffffffff16565b600581905550610a9a82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610b8657600080fd5b505af1158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b810190808051906020019092919050505050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b610c35611531565b610ca7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000610cb1610616565b90506005548111610d2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6e6f206164646974696f6e616c2066756e647320746f2072656c65617365000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610d70611508565b60055484036040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610dde57600080fd5b505af1158015610df2573d6000803e3d6000fd5b505050506040513d6020811015610e0857600080fd5b81019080805190602001909291905050505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e6e611531565b610ee0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fa7611531565b611019576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207a65726f206164647265737300000000000000000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156111d05761111e81600554611a9890919063ffffffff16565b6005819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b6111dc611531565b61124e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081116112c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f616d6f756e74207a65726f00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611367576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207a65726f206164647265737300000000000000000000000081525060200191505060405180910390fd5b6000611371610616565b905081600554820310156113ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6e6f7420656e6f75676820746f6b656e7320617661696c61626c65000000000081525060200191505060405180910390fd5b61140282600554611ae290919063ffffffff16565b60058190555061145a82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae290919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611573611b6a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156115f957600080fd5b505afa15801561160d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561163757600080fd5b81019080805164010000000081111561164f57600080fd5b8281019050602081018481111561166557600080fd5b815185600182028301116401000000008211171561168257600080fd5b5050929190505050905090565b6000600354421015905090565b6000600354905090565b6116ae611531565b611720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61172981611b72565b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207a65726f206164647265737300000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561189b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f73656e642066726f6d206f6c642061646472657373000000000000000000000081525060200191505060405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6e6f2062616c616e63650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119ec81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae290919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611ada83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb6565b905092915050565b600080828401905083811015611b60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611d776026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290611d63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d28578082015181840152602081019050611d0d565b50505050905090810190601f168015611d555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737363757272656e742074696d65206973206265666f72652072656c656173652074696d6572656c656173652074696d65206973206265666f72652063757272656e742074696d65a165627a7a72305820593e54b3ab9e512d8804ae176c772dcdde3aa794b3a5147be4354a73184ee269002972656c656173652074696d65206973206265666f72652063757272656e742074696d6500000000000000000000000000000000000000000000000000000000000000600000000000000000000000008c7e3b5e720b7a9bbcf15c38be5b657bb2b71dba000000000000000000000000000000000000000000000000000000005efbd200000000000000000000000000000000000000000000000000000000000000000c4754452054696d654c6f636b0000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c806374a8f103116100ad578063b51459fe11610071578063b51459fe14610462578063b91d400114610484578063f2fde38b146104a2578063fc0c546a146104e6578063fe64d6ff1461053057610121565b806374a8f103146102e1578063867904b4146103255780638da5cb5b146103735780638f32d59b146103bd57806395d89b41146103df57610121565b8063313ce567116100f4578063313ce5671461021357806351cff8d91461023157806369d895751461027557806370a082311461027f578063715018a6146102d757610121565b806306fdde031461012657806318160ddd146101a95780632ddbd13a146101c75780632e0f2ce1146101e5575b600080fd5b61012e610574565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016e578082015181840152602081019050610153565b50505050905090810190601f16801561019b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b1610616565b6040518082815260200191505060405180910390f35b6101cf6106f7565b6040518082815260200191505060405180910390f35b610211600480360360208110156101fb57600080fd5b8101908080359060200190929190505050610701565b005b61021b6107dd565b6040518082815260200191505060405180910390f35b6102736004803603602081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061088a565b005b61027d610c2d565b005b6102c16004803603602081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e1d565b6040518082815260200191505060405180910390f35b6102df610e66565b005b610323600480360360208110156102f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9f565b005b6103716004803603604081101561033b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d4565b005b61037b611508565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103c5611531565b604051808215151515815260200191505060405180910390f35b6103e761158f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042757808201518184015260208101905061040c565b50505050905090810190601f1680156104545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61046a61168f565b604051808215151515815260200191505060405180910390f35b61048c61169c565b6040518082815260200191505060405180910390f35b6104e4600480360360208110156104b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116a6565b005b6104ee61172c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105726004803603602081101561054657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611756565b005b606060028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561060c5780601f106105e15761010080835404028352916020019161060c565b820191906000526020600020905b8154815290600101906020018083116105ef57829003601f168201915b5050505050905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106b757600080fd5b505afa1580156106cb573d6000803e3d6000fd5b505050506040513d60208110156106e157600080fd5b8101908080519060200190929190505050905090565b6000600554905090565b610709611531565b61077b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b4281116107d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611dc06023913960400191505060405180910390fd5b8060038190555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561084757600080fd5b505afa15801561085b573d6000803e3d6000fd5b505050506040513d602081101561087157600080fd5b810190808051906020019092919050505060ff16905090565b6003544210156108e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611d9d6023913960400191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811161099f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20746f6b656e7320746f2072656c6561736500000000000000000000000081525060200191505060405180910390fd5b60006109a9610616565b905060008111610a21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20746f6b656e7320746f2072656c6561736500000000000000000000000081525060200191505060405180910390fd5b80821115610a2d578091505b610a4282600554611a9890919063ffffffff16565b600581905550610a9a82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610b8657600080fd5b505af1158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b810190808051906020019092919050505050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b610c35611531565b610ca7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000610cb1610616565b90506005548111610d2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6e6f206164646974696f6e616c2066756e647320746f2072656c65617365000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610d70611508565b60055484036040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610dde57600080fd5b505af1158015610df2573d6000803e3d6000fd5b505050506040513d6020811015610e0857600080fd5b81019080805190602001909291905050505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e6e611531565b610ee0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fa7611531565b611019576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207a65726f206164647265737300000000000000000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156111d05761111e81600554611a9890919063ffffffff16565b6005819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b6111dc611531565b61124e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081116112c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f616d6f756e74207a65726f00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611367576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207a65726f206164647265737300000000000000000000000081525060200191505060405180910390fd5b6000611371610616565b905081600554820310156113ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6e6f7420656e6f75676820746f6b656e7320617661696c61626c65000000000081525060200191505060405180910390fd5b61140282600554611ae290919063ffffffff16565b60058190555061145a82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae290919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611573611b6a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156115f957600080fd5b505afa15801561160d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561163757600080fd5b81019080805164010000000081111561164f57600080fd5b8281019050602081018481111561166557600080fd5b815185600182028301116401000000008211171561168257600080fd5b5050929190505050905090565b6000600354421015905090565b6000600354905090565b6116ae611531565b611720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61172981611b72565b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207a65726f206164647265737300000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561189b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f73656e642066726f6d206f6c642061646472657373000000000000000000000081525060200191505060405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6e6f2062616c616e63650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119ec81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae290919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611ada83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb6565b905092915050565b600080828401905083811015611b60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611d776026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290611d63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d28578082015181840152602081019050611d0d565b50505050905090810190601f168015611d555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737363757272656e742074696d65206973206265666f72652072656c656173652074696d6572656c656173652074696d65206973206265666f72652063757272656e742074696d65a165627a7a72305820593e54b3ab9e512d8804ae176c772dcdde3aa794b3a5147be4354a73184ee2690029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000600000000000000000000000008c7e3b5e720b7a9bbcf15c38be5b657bb2b71dba000000000000000000000000000000000000000000000000000000005efbd200000000000000000000000000000000000000000000000000000000000000000c4754452054696d654c6f636b0000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): GTE TimeLock
Arg [1] : token (address): 0x8C7e3b5e720B7a9BBCF15c38Be5B657bB2B71dBa
Arg [2] : releaseTime (uint256): 1593561600
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000008c7e3b5e720b7a9bbcf15c38be5b657bb2b71dba
Arg [2] : 000000000000000000000000000000000000000000000000000000005efbd200
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [4] : 4754452054696d654c6f636b0000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
14202:4363:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14202:4363:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15001:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15001:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15832:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15745:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15560:177;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15560:177:0;;;;;;;;;;;;;;;;;:::i;:::-;;15209:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16073:721;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16073:721:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;17820:220;;;:::i;:::-;;15950:115;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15950:115:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2936:140;;;:::i;:::-;;17418:351;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17418:351:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;16917:493;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16917:493:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2125:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2491:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15334:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15334:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16802:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15461:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3231:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3231:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;15116:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18108:452;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18108:452:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;15001:107;15038:13;15095:5;15088:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15001:107;:::o;15832:110::-;15876:7;15903:6;;;;;;;;;;;:16;;;15928:4;15903:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15903:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15903:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15903:31:0;;;;;;;;;;;;;;;;15896:38;;15832:110;:::o;15745:79::-;15783:7;15810:6;;15803:13;;15745:79;:::o;15560:177::-;2337:9;:7;:9::i;:::-;2329:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15644:15;15637:4;:22;15629:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15725:4;15710:12;:19;;;;15560:177;:::o;15209:117::-;15250:7;15301:6;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15301:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15301:17:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15301:17:0;;;;;;;;;;;;;;;;15294:24;;;;15209:117;:::o;16073:721::-;16212:12;;16193:15;:31;;16185:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16277:14;16294:9;:22;16304:11;16294:22;;;;;;;;;;;;;;;;16277:39;;16344:1;16335:6;:10;16327:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16383:17;16403:13;:11;:13::i;:::-;16383:33;;16447:1;16435:9;:13;16427:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16497:9;16488:6;:18;16484:42;;;16517:9;16508:18;;16484:42;16592:18;16603:6;16592;;:10;;:18;;;;:::i;:::-;16583:6;:27;;;;16646:34;16673:6;16646:9;:22;16656:11;16646:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;16621:9;:22;16631:11;16621:22;;;;;;;;;;;;;;;:59;;;;16691:6;;;;;;;;;;;:15;;;16707:11;16720:6;16691:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16691:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16691:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16691:36:0;;;;;;;;;;;;;;;;;16775:1;16745:41;;16754:11;16745:41;;;16779:6;16745:41;;;;;;;;;;;;;;;;;;16073:721;;;:::o;17820:220::-;2337:9;:7;:9::i;:::-;2329:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17872:17;17892:13;:11;:13::i;:::-;17872:33;;17936:6;;17924:9;:18;17916:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17988:6;;;;;;;;;;;:15;;;18004:7;:5;:7::i;:::-;18025:6;;18013:9;:18;17988:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17988:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17988:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17988:44:0;;;;;;;;;;;;;;;;;2394:1;17820:220::o;15950:115::-;16011:4;16035:9;:22;16045:11;16035:22;;;;;;;;;;;;;;;;16028:29;;15950:115;;;:::o;2936:140::-;2337:9;:7;:9::i;:::-;2329:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3035:1;2998:40;;3019:6;;;;;;;;;;;2998:40;;;;;;;;;;;;3066:1;3049:6;;:19;;;;;;;;;;;;;;;;;;2936:140::o;17418:351::-;2337:9;:7;:9::i;:::-;2329:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17514:1;17491:25;;:11;:25;;;;17483:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17552:11;17566:9;:22;17576:11;17566:22;;;;;;;;;;;;;;;;17552:36;;17609:1;17603:3;:7;17599:163;;;17636:15;17647:3;17636:6;;:10;;:15;;;;:::i;:::-;17627:6;:24;;;;17691:1;17666:9;:22;17676:11;17666:22;;;;;;;;;;;;;;;:26;;;;17742:1;17712:38;;17721:11;17712:38;;;17746:3;17712:38;;;;;;;;;;;;;;;;;;17599:163;2394:1;17418:351;:::o;16917:493::-;2337:9;:7;:9::i;:::-;2329:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17022:1;17013:6;:10;17005:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17081:1;17058:25;;:11;:25;;;;17050:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17121:17;17141:13;:11;:13::i;:::-;17121:33;;17195:6;17185;;17173:9;:18;:28;;17165:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17255:18;17266:6;17255;;:10;;:18;;;;:::i;:::-;17246:6;:27;;;;17309:34;17336:6;17309:9;:22;17319:11;17309:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;17284:9;:22;17294:11;17284:22;;;;;;;;;;;;;;;:59;;;;17382:11;17361:41;;17378:1;17361:41;;;17395:6;17361:41;;;;;;;;;;;;;;;;;;2394:1;16917:493;;:::o;2125:79::-;2163:7;2190:6;;;;;;;;;;;2183:13;;2125:79;:::o;2491:94::-;2531:4;2571:6;;;;;;;;;;;2555:22;;:12;:10;:12::i;:::-;:22;;;2548:29;;2491:94;:::o;15334:119::-;15373:13;15430:6;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15430:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15430:15:0;;;;;;39:16:-1;36:1;17:17;2:54;15430:15:0;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15430:15:0;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;15430:15:0;;;;;;15423:22;;15334:119;:::o;16802:107::-;16846:4;16889:12;;16870:15;:31;;16863:38;;16802:107;:::o;15461:91::-;15505:7;15532:12;;15525:19;;15461:91;:::o;3231:109::-;2337:9;:7;:9::i;:::-;2329:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3304:28;3323:8;3304:18;:28::i;:::-;3231:109;:::o;15116:85::-;15154:13;15187:6;;;;;;;;;;;15180:13;;15116:85;:::o;18108:452::-;18209:1;18186:25;;:11;:25;;;;18178:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18269:11;18255:25;;:10;:25;;;;18247:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18317:11;18331:9;:21;18341:10;18331:21;;;;;;;;;;;;;;;;18317:35;;18377:1;18371:3;:7;18363:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18428:1;18404:9;:21;18414:10;18404:21;;;;;;;;;;;;;;;:25;;;;18465:31;18492:3;18465:9;:22;18475:11;18465:22;;;;;;;;;;;;;;;;:26;;:31;;;;:::i;:::-;18440:9;:22;18450:11;18440:22;;;;;;;;;;;;;;;:56;;;;18535:11;18514:38;;18523:10;18514:38;;;18548:3;18514:38;;;;;;;;;;;;;;;;;;18108:452;;:::o;5059:136::-;5117:7;5144:43;5148:1;5151;5144:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5137:50;;5059:136;;;;:::o;4603:181::-;4661:7;4681:9;4697:1;4693;:5;4681:17;;4722:1;4717;:6;;4709:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4775:1;4768:8;;;4603:181;;;;:::o;866:98::-;911:15;946:10;939:17;;866:98;:::o;3446:229::-;3540:1;3520:22;;:8;:22;;;;3512:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3630:8;3601:38;;3622:6;;;;;;;;;;;3601:38;;;;;;;;;;;;3659:8;3650:6;;:17;;;;;;;;;;;;;;;;;;3446:229;:::o;5532:192::-;5618:7;5651:1;5646;:6;;5654:12;5638:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5638:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5678:9;5694:1;5690;:5;5678:17;;5715:1;5708:8;;;5532:192;;;;;:::o
Swarm Source
bzzr://593e54b3ab9e512d8804ae176c772dcdde3aa794b3a5147be4354a73184ee269
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.071267 | 84,739,998 | $6,039,147.52 |
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.