ERC-20
Overview
Max Total Supply
16,689,832.999958198753772325 TLS
Holders
485
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TLSToken
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-04 */ 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; } } 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); } 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; } } pragma solidity ^0.5.5; contract Governance { address public governance; constructor() public { governance = tx.origin; } event GovernanceTransferred(address indexed previousOwner, address indexed newOwner); modifier onlyGovernance { require(msg.sender == governance, "not governance"); _; } function setGovernance(address _governance) public onlyGovernance { require(_governance != address(0), "new governance the zero address"); emit GovernanceTransferred(governance, _governance); governance = _governance; } } pragma solidity ^0.5.5; /// @title DegoToken Contract contract TLSToken is Governance, ERC20Detailed{ using SafeMath for uint256; //events event eveSetRate(uint256 burn_rate, uint256 reward_rate); event eveRewardPool(address rewardPool); event Transfer(address indexed from, address indexed to, uint256 value); event Mint(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); // for minters mapping (address => bool) public _minters; mapping (address => uint256) public _minters_number; //token base data uint256 internal _totalSupply; mapping(address => uint256) public _balances; mapping (address => mapping (address => uint256)) public _allowances; /// Constant token specific fields uint8 internal constant _decimals = 18; uint256 public _maxSupply = 0; /// bool public _openTransfer = false; // hardcode limit rate uint256 public constant _maxGovernValueRate = 2000;//2000/10000 uint256 public constant _minGovernValueRate = 10; //10/10000 uint256 public constant _rateBase = 10000; // additional variables for use if transaction fees ever became necessary uint256 public _burnRate = 150; uint256 public _rewardRate = 150; uint256 public _totalBurnToken = 0; uint256 public _totalRewardToken = 0; //todo reward pool! address public _rewardPool = 0xd340A68642C3de2c73C98713006663633E6F93E1; //todo burn pool! address public _burnPool = 0x6666666666666666666666666666666666666666; /** * @dev set the token transfer switch */ function enableOpenTransfer() public onlyGovernance { _openTransfer = true; } /** * CONSTRUCTOR * * @dev Initialize the Token */ constructor () public ERC20Detailed("tellus", "TLS", _decimals) { uint256 _exp = _decimals; _maxSupply = 21000000 * (10**_exp); } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * @param spender The address which will spend the funds. * @param amount The amount of tokens to be spent. */ function approve(address spender, uint256 amount) public returns (bool) { require(msg.sender != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @dev Function to check the amount of tokens than an owner _allowed to a spender. * @param owner address The address which owns the funds. * @param spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } /** * @dev Gets the balance of the specified address. * @param owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address owner) public view returns (uint256) { return _balances[owner]; } /** * @dev return the token total supply */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev for mint function */ function mint(address account, uint256 amount) public { require(account != address(0), "ERC20: mint to the zero address"); require(_minters[msg.sender], "!minter"); require(_minters_number[msg.sender]>=amount); uint256 curMintSupply = _totalSupply.add(_totalBurnToken); uint256 newMintSupply = curMintSupply.add(amount); require( newMintSupply <= _maxSupply,"supply is max!"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); _minters_number[msg.sender] = _minters_number[msg.sender].sub(amount); emit Mint(address(0), account, amount); emit Transfer(address(0), account, amount); } function addMinter(address _minter,uint256 number) public onlyGovernance { _minters[_minter] = true; _minters_number[_minter] = number; } function setMinter_number(address _minter,uint256 number) public onlyGovernance { require(_minters[_minter]); _minters_number[_minter] = number; } function removeMinter(address _minter) public onlyGovernance { _minters[_minter] = false; _minters_number[_minter] = 0; } function() external payable { revert(); } /** * @dev for govern value */ function setRate(uint256 burn_rate, uint256 reward_rate) public onlyGovernance { require(_maxGovernValueRate >= burn_rate && burn_rate >= _minGovernValueRate,"invalid burn rate"); require(_maxGovernValueRate >= reward_rate && reward_rate >= _minGovernValueRate,"invalid reward rate"); _burnRate = burn_rate; _rewardRate = reward_rate; emit eveSetRate(burn_rate, reward_rate); } /** * @dev for set reward */ function setRewardPool(address rewardPool) public onlyGovernance { require(rewardPool != address(0x0)); _rewardPool = rewardPool; emit eveRewardPool(_rewardPool); } /** * @dev transfer token for a specified address * @param to The address to transfer to. * @param value The amount to be transferred. */ function transfer(address to, uint256 value) public returns (bool) { return _transfer(msg.sender,to,value); } /** * @dev Transfer tokens from one address to another * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param value uint256 the amount of tokens to be transferred */ function transferFrom(address from, address to, uint256 value) public returns (bool) { uint256 allow = _allowances[from][msg.sender]; _allowances[from][msg.sender] = allow.sub(value); return _transfer(from,to,value); } /** * @dev Transfer tokens with fee * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param value uint256s the amount of tokens to be transferred */ function _transfer(address from, address to, uint256 value) internal returns (bool) { // :) require(_openTransfer || from == governance, "transfer closed"); require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); uint256 sendAmount = value; uint256 burnFee = (value.mul(_burnRate)).div(_rateBase); if (burnFee > 0) { //to burn _balances[_burnPool] = _balances[_burnPool].add(burnFee); _totalSupply = _totalSupply.sub(burnFee); sendAmount = sendAmount.sub(burnFee); _totalBurnToken = _totalBurnToken.add(burnFee); emit Transfer(from, _burnPool, burnFee); } uint256 rewardFee = (value.mul(_rewardRate)).div(_rateBase); if (rewardFee > 0) { //to reward _balances[_rewardPool] = _balances[_rewardPool].add(rewardFee); sendAmount = sendAmount.sub(rewardFee); _totalRewardToken = _totalRewardToken.add(rewardFee); emit Transfer(from, _rewardPool, rewardFee); } _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add(sendAmount); emit Transfer(from, to, sendAmount); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"GovernanceTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"rewardPool","type":"address"}],"name":"eveRewardPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"burn_rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward_rate","type":"uint256"}],"name":"eveSetRate","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_burnPool","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_burnRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_maxGovernValueRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_minGovernValueRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_minters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_minters_number","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_openTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_rateBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_rewardPool","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalBurnToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalRewardToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"uint256","name":"number","type":"uint256"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableOpenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"uint256","name":"number","type":"uint256"}],"name":"setMinter_number","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"burn_rate","type":"uint256"},{"internalType":"uint256","name":"reward_rate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"rewardPool","type":"address"}],"name":"setRewardPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260006009819055600a805460ff191690556096600b819055600c55600d819055600e55600f80546001600160a01b031990811673d340a68642c3de2c73c98713006663633e6f93e117909155601080549091167366666666666666666666666666666666666666661790553480156200007c57600080fd5b50604080518082018252600681526574656c6c757360d01b602080830191825283518085019094526003845262544c5360e81b90840152600080546001600160a01b031916321790558151919291601291620000dc91600191906200011e565b508151620000f29060029060208501906200011e565b506003805460ff191660ff9290921691909117905550506a115eec47f6cf7e35000000600955620001c3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016157805160ff191683800117855562000191565b8280016001018555821562000191579182015b828111156200019157825182559160200191906001019062000174565b506200019f929150620001a3565b5090565b620001c091905b808211156200019f5760008155600101620001aa565b90565b6118bd80620001d36000396000f3fe6080604052600436106101ee5760003560e01c806368fd25cd1161010d57806395d89b41116100a0578063c110e3b21161006f578063c110e3b2146106c1578063d28303a0146106f4578063dc7ced3d1461072d578063dd62ed3e14610742578063e312848f1461077d576101ee565b806395d89b411461062b578063a9059cbb14610640578063ab033ea914610679578063bde8e9fa146106ac576101ee565b8063775e1377116100dc578063775e1377146105b957806378238c37146105ce57806379138df1146106015780638afefd8814610616576101ee565b806368fd25cd146105055780636ebcf6071461051a57806370a082311461054d578063761248b414610580576101ee565b80632d201af01161018557806340c10f191161015457806340c10f191461047257806346df2ccb146104ab57806353c76e13146104db5780635aa6e675146104f0576101ee565b80632d201af0146103cc5780633092afd5146103e1578063313ce567146104145780633575597d1461043f576101ee565b80631ae6ddec116101c15780631ae6ddec1461032c57806322f4596f1461034357806323b872dd1461035857806328d2bc911461039b576101ee565b8063024c2ddd146101f357806306fdde0314610240578063095ea7b3146102ca57806318160ddd14610317575b600080fd5b3480156101ff57600080fd5b5061022e6004803603604081101561021657600080fd5b506001600160a01b0381358116916020013516610792565b60408051918252519081900360200190f35b34801561024c57600080fd5b506102556107af565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028f578181015183820152602001610277565b50505050905090810190601f1680156102bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d657600080fd5b50610303600480360360408110156102ed57600080fd5b506001600160a01b038135169060200135610844565b604080519115158252519081900360200190f35b34801561032357600080fd5b5061022e61092f565b34801561033857600080fd5b50610341610935565b005b34801561034f57600080fd5b5061022e610994565b34801561036457600080fd5b506103036004803603606081101561037b57600080fd5b506001600160a01b0381358116916020810135909116906040013561099a565b3480156103a757600080fd5b506103b0610a06565b604080516001600160a01b039092168252519081900360200190f35b3480156103d857600080fd5b5061022e610a15565b3480156103ed57600080fd5b506103416004803603602081101561040457600080fd5b50356001600160a01b0316610a1b565b34801561042057600080fd5b50610429610a97565b6040805160ff9092168252519081900360200190f35b34801561044b57600080fd5b506103036004803603602081101561046257600080fd5b50356001600160a01b0316610aa0565b34801561047e57600080fd5b506103416004803603604081101561049557600080fd5b506001600160a01b038135169060200135610ab5565b3480156104b757600080fd5b50610341600480360360408110156104ce57600080fd5b5080359060200135610cee565b3480156104e757600080fd5b5061022e610e39565b3480156104fc57600080fd5b506103b0610e3f565b34801561051157600080fd5b5061022e610e4e565b34801561052657600080fd5b5061022e6004803603602081101561053d57600080fd5b50356001600160a01b0316610e54565b34801561055957600080fd5b5061022e6004803603602081101561057057600080fd5b50356001600160a01b0316610e66565b34801561058c57600080fd5b50610341600480360360408110156105a357600080fd5b506001600160a01b038135169060200135610e81565b3480156105c557600080fd5b5061022e610f02565b3480156105da57600080fd5b50610341600480360360208110156105f157600080fd5b50356001600160a01b0316610f08565b34801561060d57600080fd5b5061022e610fc5565b34801561062257600080fd5b5061022e610fcb565b34801561063757600080fd5b50610255610fd0565b34801561064c57600080fd5b506103036004803603604081101561066357600080fd5b506001600160a01b03813516906020013561102e565b34801561068557600080fd5b506103416004803603602081101561069c57600080fd5b50356001600160a01b0316611042565b3480156106b857600080fd5b50610303611148565b3480156106cd57600080fd5b5061022e600480360360208110156106e457600080fd5b50356001600160a01b0316611151565b34801561070057600080fd5b506103416004803603604081101561071757600080fd5b506001600160a01b038135169060200135611163565b34801561073957600080fd5b506103b06111f4565b34801561074e57600080fd5b5061022e6004803603604081101561076557600080fd5b506001600160a01b0381358116916020013516611203565b34801561078957600080fd5b5061022e61122e565b600860209081526000928352604080842090915290825290205481565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b820191906000526020600020905b81548152906001019060200180831161081d57829003601f168201915b5050505050905090565b6000336108825760405162461bcd60e51b81526004018080602001828103825260248152602001806118656024913960400191505060405180910390fd5b6001600160a01b0383166108c75760405162461bcd60e51b81526004018080602001828103825260228152602001806117dd6022913960400191505060405180910390fd5b3360008181526008602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60065490565b6000546001600160a01b03163314610985576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b600a805460ff19166001179055565b60095481565b6001600160a01b03831660009081526008602090815260408083203384529091528120546109ce818463ffffffff61123416565b6001600160a01b03861660009081526008602090815260408083203384529091529020556109fd858585611276565b95945050505050565b6010546001600160a01b031681565b600d5481565b6000546001600160a01b03163314610a6b576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b03166000908152600460209081526040808320805460ff191690556005909152812055565b60035460ff1690565b60046020526000908152604090205460ff1681565b6001600160a01b038216610b10576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b3360009081526004602052604090205460ff16610b5e576040805162461bcd60e51b815260206004820152600760248201526610b6b4b73a32b960c91b604482015290519081900360640190fd5b33600090815260056020526040902054811115610b7a57600080fd5b6000610b93600d546006546115cd90919063ffffffff16565b90506000610ba7828463ffffffff6115cd16565b9050600954811115610bf1576040805162461bcd60e51b815260206004820152600e60248201526d737570706c79206973206d61782160901b604482015290519081900360640190fd5b600654610c04908463ffffffff6115cd16565b6006556001600160a01b038416600090815260076020526040902054610c30908463ffffffff6115cd16565b6001600160a01b038516600090815260076020908152604080832093909355338252600590522054610c68908463ffffffff61123416565b33600090815260056020908152604080832093909355825186815292516001600160a01b038816937fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f892908290030190a36040805184815290516001600160a01b038616916000916000805160206118208339815191529181900360200190a350505050565b6000546001600160a01b03163314610d3e576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b816107d010158015610d515750600a8210155b610d96576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964206275726e207261746560781b604482015290519081900360640190fd5b806107d010158015610da95750600a8110155b610df0576040805162461bcd60e51b8152602060048201526013602482015272696e76616c696420726577617264207261746560681b604482015290519081900360640190fd5b600b829055600c819055604080518381526020810183905281517f99bd43c9924d56731589e9fa71c7f8c709cf5e851306f09f8ceca0ba3eac1be7929181900390910190a15050565b600e5481565b6000546001600160a01b031681565b600c5481565b60076020526000908152604090205481565b6001600160a01b031660009081526007602052604090205490565b6000546001600160a01b03163314610ed1576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b039091166000908152600460209081526040808320805460ff191660011790556005909152902055565b61271081565b6000546001600160a01b03163314610f58576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b038116610f6b57600080fd5b600f80546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f977df9b5dcd6535fed64eaab16d59511d1c7eaf4a8d4a3682b8cb62c207156da916020908290030190a150565b600b5481565b600a81565b60028054604080516020601f600019610100600187161502019094168590049384018190048102820181019092528281526060939092909183018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b600061103b338484611276565b9392505050565b6000546001600160a01b03163314611092576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b0381166110ed576040805162461bcd60e51b815260206004820152601f60248201527f6e657720676f7665726e616e636520746865207a65726f206164647265737300604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce8091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600a5460ff1681565b60056020526000908152604090205481565b6000546001600160a01b031633146111b3576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b03821660009081526004602052604090205460ff166111d857600080fd5b6001600160a01b03909116600090815260056020526040902055565b600f546001600160a01b031681565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6107d081565b600061103b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611627565b600a5460009060ff168061129757506000546001600160a01b038581169116145b6112da576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8818db1bdcd959608a1b604482015290519081900360640190fd5b6001600160a01b03841661131f5760405162461bcd60e51b81526004018080602001828103825260258152602001806118406025913960400191505060405180910390fd5b6001600160a01b0383166113645760405162461bcd60e51b81526004018080602001828103825260238152602001806117ba6023913960400191505060405180910390fd5b60008290506000611392612710611386600b54876116be90919063ffffffff16565b9063ffffffff61171716565b90508015611454576010546001600160a01b03166000908152600760205260409020546113c5908263ffffffff6115cd16565b6010546001600160a01b03166000908152600760205260409020556006546113f3908263ffffffff61123416565b600655611406828263ffffffff61123416565b600d5490925061141c908263ffffffff6115cd16565b600d556010546040805183815290516001600160a01b0392831692891691600080516020611820833981519152919081900360200190a35b6000611471612710611386600c54886116be90919063ffffffff16565b9050801561151d57600f546001600160a01b03166000908152600760205260409020546114a4908263ffffffff6115cd16565b600f546001600160a01b03166000908152600760205260409020556114cf838263ffffffff61123416565b600e549093506114e5908263ffffffff6115cd16565b600e55600f546040805183815290516001600160a01b03928316928a1691600080516020611820833981519152919081900360200190a35b6001600160a01b038716600090815260076020526040902054611546908663ffffffff61123416565b6001600160a01b03808916600090815260076020526040808220939093559088168152205461157b908463ffffffff6115cd16565b6001600160a01b0380881660008181526007602090815260409182902094909455805187815290519193928b169260008051602061182083398151915292918290030190a35060019695505050505050565b60008282018381101561103b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081848411156116b65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561167b578181015183820152602001611663565b50505050905090810190601f1680156116a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000826116cd57506000610929565b828202828482816116da57fe5b041461103b5760405162461bcd60e51b81526004018080602001828103825260218152602001806117ff6021913960400191505060405180910390fd5b600061103b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836117a35760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561167b578181015183820152602001611663565b5060008385816117af57fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723158204b1e9b3b89fdd2baf82c128b8042964b573dff4f0b107dbceb14bc86de3d631f64736f6c63430005110032
Deployed Bytecode
0x6080604052600436106101ee5760003560e01c806368fd25cd1161010d57806395d89b41116100a0578063c110e3b21161006f578063c110e3b2146106c1578063d28303a0146106f4578063dc7ced3d1461072d578063dd62ed3e14610742578063e312848f1461077d576101ee565b806395d89b411461062b578063a9059cbb14610640578063ab033ea914610679578063bde8e9fa146106ac576101ee565b8063775e1377116100dc578063775e1377146105b957806378238c37146105ce57806379138df1146106015780638afefd8814610616576101ee565b806368fd25cd146105055780636ebcf6071461051a57806370a082311461054d578063761248b414610580576101ee565b80632d201af01161018557806340c10f191161015457806340c10f191461047257806346df2ccb146104ab57806353c76e13146104db5780635aa6e675146104f0576101ee565b80632d201af0146103cc5780633092afd5146103e1578063313ce567146104145780633575597d1461043f576101ee565b80631ae6ddec116101c15780631ae6ddec1461032c57806322f4596f1461034357806323b872dd1461035857806328d2bc911461039b576101ee565b8063024c2ddd146101f357806306fdde0314610240578063095ea7b3146102ca57806318160ddd14610317575b600080fd5b3480156101ff57600080fd5b5061022e6004803603604081101561021657600080fd5b506001600160a01b0381358116916020013516610792565b60408051918252519081900360200190f35b34801561024c57600080fd5b506102556107af565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028f578181015183820152602001610277565b50505050905090810190601f1680156102bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d657600080fd5b50610303600480360360408110156102ed57600080fd5b506001600160a01b038135169060200135610844565b604080519115158252519081900360200190f35b34801561032357600080fd5b5061022e61092f565b34801561033857600080fd5b50610341610935565b005b34801561034f57600080fd5b5061022e610994565b34801561036457600080fd5b506103036004803603606081101561037b57600080fd5b506001600160a01b0381358116916020810135909116906040013561099a565b3480156103a757600080fd5b506103b0610a06565b604080516001600160a01b039092168252519081900360200190f35b3480156103d857600080fd5b5061022e610a15565b3480156103ed57600080fd5b506103416004803603602081101561040457600080fd5b50356001600160a01b0316610a1b565b34801561042057600080fd5b50610429610a97565b6040805160ff9092168252519081900360200190f35b34801561044b57600080fd5b506103036004803603602081101561046257600080fd5b50356001600160a01b0316610aa0565b34801561047e57600080fd5b506103416004803603604081101561049557600080fd5b506001600160a01b038135169060200135610ab5565b3480156104b757600080fd5b50610341600480360360408110156104ce57600080fd5b5080359060200135610cee565b3480156104e757600080fd5b5061022e610e39565b3480156104fc57600080fd5b506103b0610e3f565b34801561051157600080fd5b5061022e610e4e565b34801561052657600080fd5b5061022e6004803603602081101561053d57600080fd5b50356001600160a01b0316610e54565b34801561055957600080fd5b5061022e6004803603602081101561057057600080fd5b50356001600160a01b0316610e66565b34801561058c57600080fd5b50610341600480360360408110156105a357600080fd5b506001600160a01b038135169060200135610e81565b3480156105c557600080fd5b5061022e610f02565b3480156105da57600080fd5b50610341600480360360208110156105f157600080fd5b50356001600160a01b0316610f08565b34801561060d57600080fd5b5061022e610fc5565b34801561062257600080fd5b5061022e610fcb565b34801561063757600080fd5b50610255610fd0565b34801561064c57600080fd5b506103036004803603604081101561066357600080fd5b506001600160a01b03813516906020013561102e565b34801561068557600080fd5b506103416004803603602081101561069c57600080fd5b50356001600160a01b0316611042565b3480156106b857600080fd5b50610303611148565b3480156106cd57600080fd5b5061022e600480360360208110156106e457600080fd5b50356001600160a01b0316611151565b34801561070057600080fd5b506103416004803603604081101561071757600080fd5b506001600160a01b038135169060200135611163565b34801561073957600080fd5b506103b06111f4565b34801561074e57600080fd5b5061022e6004803603604081101561076557600080fd5b506001600160a01b0381358116916020013516611203565b34801561078957600080fd5b5061022e61122e565b600860209081526000928352604080842090915290825290205481565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b820191906000526020600020905b81548152906001019060200180831161081d57829003601f168201915b5050505050905090565b6000336108825760405162461bcd60e51b81526004018080602001828103825260248152602001806118656024913960400191505060405180910390fd5b6001600160a01b0383166108c75760405162461bcd60e51b81526004018080602001828103825260228152602001806117dd6022913960400191505060405180910390fd5b3360008181526008602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60065490565b6000546001600160a01b03163314610985576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b600a805460ff19166001179055565b60095481565b6001600160a01b03831660009081526008602090815260408083203384529091528120546109ce818463ffffffff61123416565b6001600160a01b03861660009081526008602090815260408083203384529091529020556109fd858585611276565b95945050505050565b6010546001600160a01b031681565b600d5481565b6000546001600160a01b03163314610a6b576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b03166000908152600460209081526040808320805460ff191690556005909152812055565b60035460ff1690565b60046020526000908152604090205460ff1681565b6001600160a01b038216610b10576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b3360009081526004602052604090205460ff16610b5e576040805162461bcd60e51b815260206004820152600760248201526610b6b4b73a32b960c91b604482015290519081900360640190fd5b33600090815260056020526040902054811115610b7a57600080fd5b6000610b93600d546006546115cd90919063ffffffff16565b90506000610ba7828463ffffffff6115cd16565b9050600954811115610bf1576040805162461bcd60e51b815260206004820152600e60248201526d737570706c79206973206d61782160901b604482015290519081900360640190fd5b600654610c04908463ffffffff6115cd16565b6006556001600160a01b038416600090815260076020526040902054610c30908463ffffffff6115cd16565b6001600160a01b038516600090815260076020908152604080832093909355338252600590522054610c68908463ffffffff61123416565b33600090815260056020908152604080832093909355825186815292516001600160a01b038816937fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f892908290030190a36040805184815290516001600160a01b038616916000916000805160206118208339815191529181900360200190a350505050565b6000546001600160a01b03163314610d3e576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b816107d010158015610d515750600a8210155b610d96576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964206275726e207261746560781b604482015290519081900360640190fd5b806107d010158015610da95750600a8110155b610df0576040805162461bcd60e51b8152602060048201526013602482015272696e76616c696420726577617264207261746560681b604482015290519081900360640190fd5b600b829055600c819055604080518381526020810183905281517f99bd43c9924d56731589e9fa71c7f8c709cf5e851306f09f8ceca0ba3eac1be7929181900390910190a15050565b600e5481565b6000546001600160a01b031681565b600c5481565b60076020526000908152604090205481565b6001600160a01b031660009081526007602052604090205490565b6000546001600160a01b03163314610ed1576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b039091166000908152600460209081526040808320805460ff191660011790556005909152902055565b61271081565b6000546001600160a01b03163314610f58576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b038116610f6b57600080fd5b600f80546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f977df9b5dcd6535fed64eaab16d59511d1c7eaf4a8d4a3682b8cb62c207156da916020908290030190a150565b600b5481565b600a81565b60028054604080516020601f600019610100600187161502019094168590049384018190048102820181019092528281526060939092909183018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b600061103b338484611276565b9392505050565b6000546001600160a01b03163314611092576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b0381166110ed576040805162461bcd60e51b815260206004820152601f60248201527f6e657720676f7665726e616e636520746865207a65726f206164647265737300604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce8091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600a5460ff1681565b60056020526000908152604090205481565b6000546001600160a01b031633146111b3576040805162461bcd60e51b815260206004820152600e60248201526d6e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b03821660009081526004602052604090205460ff166111d857600080fd5b6001600160a01b03909116600090815260056020526040902055565b600f546001600160a01b031681565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6107d081565b600061103b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611627565b600a5460009060ff168061129757506000546001600160a01b038581169116145b6112da576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8818db1bdcd959608a1b604482015290519081900360640190fd5b6001600160a01b03841661131f5760405162461bcd60e51b81526004018080602001828103825260258152602001806118406025913960400191505060405180910390fd5b6001600160a01b0383166113645760405162461bcd60e51b81526004018080602001828103825260238152602001806117ba6023913960400191505060405180910390fd5b60008290506000611392612710611386600b54876116be90919063ffffffff16565b9063ffffffff61171716565b90508015611454576010546001600160a01b03166000908152600760205260409020546113c5908263ffffffff6115cd16565b6010546001600160a01b03166000908152600760205260409020556006546113f3908263ffffffff61123416565b600655611406828263ffffffff61123416565b600d5490925061141c908263ffffffff6115cd16565b600d556010546040805183815290516001600160a01b0392831692891691600080516020611820833981519152919081900360200190a35b6000611471612710611386600c54886116be90919063ffffffff16565b9050801561151d57600f546001600160a01b03166000908152600760205260409020546114a4908263ffffffff6115cd16565b600f546001600160a01b03166000908152600760205260409020556114cf838263ffffffff61123416565b600e549093506114e5908263ffffffff6115cd16565b600e55600f546040805183815290516001600160a01b03928316928a1691600080516020611820833981519152919081900360200190a35b6001600160a01b038716600090815260076020526040902054611546908663ffffffff61123416565b6001600160a01b03808916600090815260076020526040808220939093559088168152205461157b908463ffffffff6115cd16565b6001600160a01b0380881660008181526007602090815260409182902094909455805187815290519193928b169260008051602061182083398151915292918290030190a35060019695505050505050565b60008282018381101561103b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081848411156116b65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561167b578181015183820152602001611663565b50505050905090810190601f1680156116a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000826116cd57506000610929565b828202828482816116da57fe5b041461103b5760405162461bcd60e51b81526004018080602001828103825260218152602001806117ff6021913960400191505060405180910390fd5b600061103b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836117a35760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561167b578181015183820152602001611663565b5060008385816117af57fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723158204b1e9b3b89fdd2baf82c128b8042964b573dff4f0b107dbceb14bc86de3d631f64736f6c63430005110032
Deployed Bytecode Sourcemap
10583:8345:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15596:8;;;11270:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11270:68:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11270:68:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8935:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8935:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8935:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12852:386;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12852:386:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12852:386:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14125:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14125:103:0;;;:::i;12255:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12255:98:0;;;:::i;:::-;;11432:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11432:30:0;;;:::i;16984:272::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16984:272:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16984:272:0;;;;;;;;;;;;;;;;;:::i;12118:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12118:69:0;;;:::i;:::-;;;;-1:-1:-1;;;;;12118:69:0;;;;;;;;;;;;;;11906:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11906:34:0;;;:::i;15393:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15393:150:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15393:150:0;-1:-1:-1;;;;;15393:150:0;;:::i;9787:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9787:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11054:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11054:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11054:41:0;-1:-1:-1;;;;;11054:41:0;;:::i;14283:739::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14283:739:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14283:739:0;;;;;;;;:::i;15666:457::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15666:457:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15666:457:0;;;;;;;:::i;11947:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11947:36:0;;;:::i;9937:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9937:25:0;;;:::i;11861:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11861:33:0;;;:::i;11219:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11219:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11219:44:0;-1:-1:-1;;;;;11219:44:0;;:::i;13939:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13939:119:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13939:119:0;-1:-1:-1;;;;;13939:119:0;;:::i;15030:166::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15030:166:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15030:166:0;;;;;;;;:::i;11686:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11686:41:0;;;:::i;16177:216::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16177:216:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16177:216:0;-1:-1:-1;;;;;16177:216:0;;:::i;11816:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11816:31:0;;;:::i;11619:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11619:48:0;;;:::i;9137:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9137:87:0;;;:::i;16561:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16561:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16561:134:0;;;;;;;;:::i;10248:258::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10248:258:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10248:258:0;-1:-1:-1;;;;;10248:258:0;;:::i;11480:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11480:33:0;;;:::i;11102:51::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11102:51:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11102:51:0;-1:-1:-1;;;;;11102:51:0;;:::i;15206:175::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15206:175:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15206:175:0;;;;;;;;:::i;12017:71::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12017:71:0;;;:::i;13573:146::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13573:146:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13573:146:0;;;;;;;;;;:::i;11550:50::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11550:50:0;;;:::i;11270:68::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;8935:83::-;9005:5;8998:12;;;;;;;;-1:-1:-1;;8998:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8972:13;;8998:12;;9005:5;;8998:12;;9005:5;8998:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8935:83;:::o;12852:386::-;12924:4;12955:10;12947:73;;;;-1:-1:-1;;;12947:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13039:21:0;;13031:68;;;;-1:-1:-1;;;13031:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13124:10;13112:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;13112:32:0;;;;;;;;;;;;:41;;;13169:37;;;;;;;13112:32;;13124:10;13169:37;;;;;;;;;;;-1:-1:-1;13226:4:0;12852:386;;;;;:::o;14125:103::-;14208:12;;14125:103;:::o;12255:98::-;10191:10;;-1:-1:-1;;;;;10191:10:0;10177;:24;10169:51;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;;;;12325:13;:20;;-1:-1:-1;;12325:20:0;12341:4;12325:20;;;12255:98::o;11432:30::-;;;;:::o;16984:272::-;-1:-1:-1;;;;;17108:17:0;;17069:4;17108:17;;;:11;:17;;;;;;;;17126:10;17108:29;;;;;;;;17180:16;17108:29;17190:5;17180:16;:9;:16;:::i;:::-;-1:-1:-1;;;;;17148:17:0;;;;;;:11;:17;;;;;;;;17166:10;17148:29;;;;;;;:48;17224:24;17160:4;17239:2;17242:5;17224:9;:24::i;:::-;17217:31;16984:272;-1:-1:-1;;;;;16984:272:0:o;12118:69::-;;;-1:-1:-1;;;;;12118:69:0;;:::o;11906:34::-;;;;:::o;15393:150::-;10191:10;;-1:-1:-1;;;;;10191:10:0;10177;:24;10169:51;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15471:17:0;15491:5;15471:17;;;:8;:17;;;;;;;;:25;;-1:-1:-1;;15471:25:0;;;15507:15;:24;;;;;:28;15393:150::o;9787:83::-;9853:9;;;;9787:83;:::o;11054:41::-;;;;;;;;;;;;;;;:::o;14283:739::-;-1:-1:-1;;;;;14362:21:0;;14354:65;;;;;-1:-1:-1;;;14354:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14447:10;14438:20;;;;:8;:20;;;;;;;;14430:40;;;;;-1:-1:-1;;;14430:40:0;;;;;;;;;;;;-1:-1:-1;;;14430:40:0;;;;;;;;;;;;;;;14505:10;14489:27;;;;:15;:27;;;;;;:35;-1:-1:-1;14489:35:0;14481:44;;;;;;14536:21;14560:33;14577:15;;14560:12;;:16;;:33;;;;:::i;:::-;14536:57;-1:-1:-1;14604:21:0;14628:25;14536:57;14646:6;14628:25;:17;:25;:::i;:::-;14604:49;;14690:10;;14673:13;:27;;14664:54;;;;;-1:-1:-1;;;14664:54:0;;;;;;;;;;;;-1:-1:-1;;;14664:54:0;;;;;;;;;;;;;;;14746:12;;:24;;14763:6;14746:24;:16;:24;:::i;:::-;14731:12;:39;-1:-1:-1;;;;;14802:18:0;;;;;;:9;:18;;;;;;:30;;14825:6;14802:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;14781:18:0;;;;;;:9;:18;;;;;;;;:51;;;;14889:10;14873:27;;:15;:27;;;;:39;;14905:6;14873:39;:31;:39;:::i;:::-;14859:10;14843:27;;;;:15;:27;;;;;;;;:69;;;;14928:33;;;;;;;-1:-1:-1;;;;;14928:33:0;;;;;;;;;;;;14977:37;;;;;;;;-1:-1:-1;;;;;14977:37:0;;;14994:1;;-1:-1:-1;;;;;;;;;;;14977:37:0;;;;;;;;14283:739;;;;:::o;15666:457::-;10191:10;;-1:-1:-1;;;;;10191:10:0;10177;:24;10169:51;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;;;;15813:9;11596:4;15790:32;;:68;;;;;11665:2;15826:9;:32;;15790:68;15782:97;;;;;-1:-1:-1;;;15782:97:0;;;;;;;;;;;;-1:-1:-1;;;15782:97:0;;;;;;;;;;;;;;;15921:11;11596:4;15898:34;;:72;;;;;11665:2;15936:11;:34;;15898:72;15890:103;;;;;-1:-1:-1;;;15890:103:0;;;;;;;;;;;;-1:-1:-1;;;15890:103:0;;;;;;;;;;;;;;;16006:9;:21;;;16038:11;:25;;;16081:34;;;;;;;;;;;;;;;;;;;;;;;;;15666:457;;:::o;11947:36::-;;;;:::o;9937:25::-;;;-1:-1:-1;;;;;9937:25:0;;:::o;11861:33::-;;;;:::o;11219:44::-;;;;;;;;;;;;;:::o;13939:119::-;-1:-1:-1;;;;;14034:16:0;14001:7;14034:16;;;:9;:16;;;;;;;13939:119::o;15030:166::-;10191:10;;-1:-1:-1;;;;;10191:10:0;10177;:24;10169:51;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15120:17:0;;;;;;;:8;:17;;;;;;;;:24;;-1:-1:-1;;15120:24:0;15140:4;15120:24;;;15155:15;:24;;;;;:33;15030:166::o;11686:41::-;11722:5;11686:41;:::o;16177:216::-;10191:10;;-1:-1:-1;;;;;10191:10:0;10177;:24;10169:51;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16277:26:0;;16269:35;;;;;;16317:11;:24;;-1:-1:-1;;;;;;16317:24:0;-1:-1:-1;;;;;16317:24:0;;;;;;;;;;;16359:26;;;16373:11;;;;16359:26;;;;;;;;;;;;;16177:216;:::o;11816:31::-;;;;:::o;11619:48::-;11665:2;11619:48;:::o;9137:87::-;9209:7;9202:14;;;;;;;-1:-1:-1;;9202:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9176:13;;9202:14;;9209:7;;9202:14;;9209:7;9202:14;;;;;;;;;;;;;;;;;;;;;;;;16561:134;16627:4;16657:30;16667:10;16678:2;16681:5;16657:9;:30::i;:::-;16650:37;16561:134;-1:-1:-1;;;16561:134:0:o;10248:258::-;10191:10;;-1:-1:-1;;;;;10191:10:0;10177;:24;10169:51;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10340:25:0;;10332:69;;;;;-1:-1:-1;;;10332:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10439:10;;;10417:46;;-1:-1:-1;;;;;10417:46:0;;;;10439:10;;;10417:46;;;10474:10;:24;;-1:-1:-1;;;;;;10474:24:0;-1:-1:-1;;;;;10474:24:0;;;;;;;;;;10248:258::o;11480:33::-;;;;;;:::o;11102:51::-;;;;;;;;;;;;;:::o;15206:175::-;10191:10;;-1:-1:-1;;;;;10191:10:0;10177;:24;10169:51;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;-1:-1:-1;;;10169:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15311:17:0;;;;;;:8;:17;;;;;;;;15303:26;;;;;;-1:-1:-1;;;;;15340:24:0;;;;;;;:15;:24;;;;;:33;15206:175::o;12017:71::-;;;-1:-1:-1;;;;;12017:71:0;;:::o;13573:146::-;-1:-1:-1;;;;;13684:18:0;;;13651:7;13684:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13573:146::o;11550:50::-;11596:4;11550:50;:::o;1315:136::-;1373:7;1400:43;1404:1;1407;1400:43;;;;;;;;;;;;;;;;;:3;:43::i;17532:1393::-;17662:13;;17616:4;;17662:13;;;:35;;-1:-1:-1;17687:10:0;;-1:-1:-1;;;;;17679:18:0;;;17687:10;;17679:18;17662:35;17654:63;;;;;-1:-1:-1;;;17654:63:0;;;;;;;;;;;;-1:-1:-1;;;17654:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17738:18:0;;17730:68;;;;-1:-1:-1;;;17730:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17817:16:0;;17809:64;;;;-1:-1:-1;;;17809:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17886:18;17907:5;17886:26;;17923:15;17941:37;11722:5;17942:20;17952:9;;17942:5;:9;;:20;;;;:::i;:::-;17941:26;:37;:26;:37;:::i;:::-;17923:55;-1:-1:-1;17993:11:0;;17989:348;;18077:9;;-1:-1:-1;;;;;18077:9:0;18067:20;;;;:9;:20;;;;;;:33;;18092:7;18067:33;:24;:33;:::i;:::-;18054:9;;-1:-1:-1;;;;;18054:9:0;18044:20;;;;:9;:20;;;;;:56;18130:12;;:25;;18147:7;18130:25;:16;:25;:::i;:::-;18115:12;:40;18183:23;:10;18198:7;18183:23;:14;:23;:::i;:::-;18241:15;;18170:36;;-1:-1:-1;18241:28:0;;18261:7;18241:28;:19;:28;:::i;:::-;18223:15;:46;18306:9;;18291:34;;;;;;;;-1:-1:-1;;;;;18306:9:0;;;;18291:34;;;-1:-1:-1;;;;;;;;;;;18291:34:0;;;;;;;;;17989:348;18349:17;18369:39;11722:5;18370:22;18380:11;;18370:5;:9;;:22;;;;:::i;18369:39::-;18349:59;-1:-1:-1;18423:13:0;;18419:314;;18512:11;;-1:-1:-1;;;;;18512:11:0;18502:22;;;;:9;:22;;;;;;:37;;18529:9;18502:37;:26;:37;:::i;:::-;18487:11;;-1:-1:-1;;;;;18487:11:0;18477:22;;;;:9;:22;;;;;:62;18567:25;:10;18582:9;18567:25;:14;:25;:::i;:::-;18629:17;;18554:38;;-1:-1:-1;18629:32:0;;18651:9;18629:32;:21;:32;:::i;:::-;18609:17;:52;18698:11;;18683:38;;;;;;;;-1:-1:-1;;;;;18698:11:0;;;;18683:38;;;-1:-1:-1;;;;;;;;;;;18683:38:0;;;;;;;;;18419:314;-1:-1:-1;;;;;18763:15:0;;;;;;:9;:15;;;;;;:26;;18783:5;18763:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;18745:15:0;;;;;;;:9;:15;;;;;;:44;;;;18816:13;;;;;;;:29;;18834:10;18816:29;:17;:29;:::i;:::-;-1:-1:-1;;;;;18800:13:0;;;;;;;:9;:13;;;;;;;;;:45;;;;18863:30;;;;;;;18800:13;;18863:30;;;;-1:-1:-1;;;;;;;;;;;18863:30:0;;;;;;;;-1:-1:-1;18913:4:0;;17532:1393;-1:-1:-1;;;;;;17532:1393:0:o;859:181::-;917:7;949:5;;;973:6;;;;965:46;;;;;-1:-1:-1;;;965:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1788:192;1874:7;1910:12;1902:6;;;;1894:29;;;;-1:-1:-1;;;1894:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1894:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1946:5:0;;;1788:192::o;2231:471::-;2289:7;2534:6;2530:47;;-1:-1:-1;2564:1:0;2557:8;;2530:47;2601:5;;;2605:1;2601;:5;:1;2625:5;;;;;:10;2617:56;;;;-1:-1:-1;;;2617:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3170:132;3228:7;3255:39;3259:1;3262;3255:39;;;;;;;;;;;;;;;;;3918:7;4020:12;4013:5;4005:28;;;;-1:-1:-1;;;4005:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4005:28:0;;4044:9;4060:1;4056;:5;;;;;;;3832:345;-1:-1:-1;;;;;3832:345:0:o
Swarm Source
bzzr://4b1e9b3b89fdd2baf82c128b8042964b573dff4f0b107dbceb14bc86de3d631f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.