ERC-20
Overview
Max Total Supply
69,535,654.1936000000015 RWRD
Holders
720
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:
RewardsToken
Compiler Version
v0.5.4+commit.9549d8ff
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-06-28 */ pragma solidity 0.5.4; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title SafeMath * @dev Math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two numbers, reverts on 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-solidity/pull/522 if (_a == 0) { return 0; } uint256 c = _a * _b; require(c / _a == _b); return c; } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. */ function div(uint256 _a, uint256 _b) internal pure returns (uint256) { require(_b > 0); // Solidity only automatically asserts when dividing by 0 uint256 c = _a / _b; // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 _a, uint256 _b) internal pure returns (uint256) { require(_b <= _a); uint256 c = _a - _b; return c; } /** * @dev Adds two numbers, reverts on overflow. */ function add(uint256 _a, uint256 _b) internal pure returns (uint256) { uint256 c = _a + _b; require(c >= _a); return c; } /** * @dev Divides two numbers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } /** * @title Contract for Rewards Token * Copyright 2018, Rewards Blockchain Systems (Rewards.com) */ contract RewardsToken is Ownable { using SafeMath for uint; string public constant symbol = 'RWRD'; string public constant name = 'Rewards Cash'; uint8 public constant decimals = 18; uint256 public constant hardCap = 5 * (10 ** (18 + 8)); //500MM tokens. Max amount of tokens which can be minte10 uint256 public totalSupply; bool public mintingFinished = false; bool public frozen = true; mapping(address => uint256) balances; mapping(address => mapping(address => uint256)) internal allowed; event NewToken(address indexed _token); event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); event Burned(address indexed _burner, uint _burnedAmount); event Revoke(address indexed _from, uint256 _value); event MintFinished(); event MintStarted(); event Freeze(); event Unfreeze(); modifier canMint() { require(!mintingFinished, "Minting was already finished"); _; } modifier canTransfer() { require(msg.sender == owner || !frozen, "Tokens could not be transferred"); _; } constructor () public { emit NewToken(address(this)); } /** * @dev Function to mint tokens * @param _to The address that will receive the minted tokens. * @param _amount The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint(address _to, uint256 _amount) public onlyOwner canMint returns (bool) { require(_to != address(0), "Address should not be zero"); require(totalSupply.add(_amount) <= hardCap); totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); emit Transfer(address(0), _to, _amount); return true; } /** * @dev Function to stop minting new tokens. * @return True if the operation was successful. */ function finishMinting() public onlyOwner returns (bool) { require(!mintingFinished); mintingFinished = true; emit MintFinished(); return true; } /** * @dev Function to start minging new tokens. * @return True if the operation was successful */ function startMinting() public onlyOwner returns (bool) { require(mintingFinished); mintingFinished = false; emit MintStarted(); return true; } /** * @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 canTransfer returns (bool) { require(_to != address(0), "Address should not be zero"); require(_value <= balances[msg.sender], "Insufficient balance"); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender] - _value; balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @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 canTransfer returns (bool) { require(_to != address(0), "Address should not be zero"); require(_value <= balances[_from], "Insufficient Balance"); require(_value <= allowed[_from][msg.sender], "Insufficient Allowance"); balances[_from] = balances[_from] - _value; balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender] - _value; emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * 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 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that 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 remaining) { return allowed[_owner][_spender]; } /** * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol */ function increaseApproval(address _spender, uint _addedValue) public returns (bool success) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool success) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @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 balance) { return balances[_owner]; } /** * @dev Burn tokens from an address * @param _burnAmount The amount of tokens to burn */ function burn(uint _burnAmount) public { require(_burnAmount <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_burnAmount); totalSupply = totalSupply.sub(_burnAmount); emit Burned(msg.sender, _burnAmount); } /** * @dev Revokes minted tokens * @param _from The address whose tokens are revoked * @param _value The amount of token to revoke */ function revoke(address _from, uint256 _value) public onlyOwner returns (bool) { require(_value <= balances[_from]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure balances[_from] = balances[_from].sub(_value); totalSupply = totalSupply.sub(_value); emit Revoke(_from, _value); emit Transfer(_from, address(0), _value); return true; } /** * @dev Freeze tokens */ function freeze() public onlyOwner { require(!frozen); frozen = true; emit Freeze(); } /** * @dev Unfreeze tokens */ function unfreeze() public onlyOwner { require(frozen); frozen = false; emit Unfreeze(); } } /** * @title Contract that will hold vested tokens; * @notice Tokens for vested contributors will be hold in this contract and token holders * will claim their tokens according to their own vesting timelines. * Copyright 2018, Rewards Blockchain Systems (Rewards.com) */ contract VestingVault is Ownable { using SafeMath for uint256; struct Grant { uint value; uint vestingStart; uint vestingCliff; uint vestingDuration; uint[] scheduleTimes; uint[] scheduleValues; uint level; // 1: frequency, 2: schedules uint transferred; } RewardsToken public token; mapping(address => Grant) public grants; uint public totalVestedTokens; // array of vested users addresses address[] public vestedAddresses; bool public locked; event NewGrant (address _to, uint _amount, uint _start, uint _duration, uint _cliff, uint[] _scheduleTimes, uint[] _scheduleAmounts, uint _level); event NewRelease(address _holder, uint _amount); event WithdrawAll(uint _amount); event BurnTokens(uint _amount); event LockedVault(); modifier isOpen() { require(locked == false, "Vault is already locked"); _; } constructor (RewardsToken _token) public { require(address(_token) != address(0), "Token address should not be zero"); token = _token; locked = false; } /** * @return address[] that represents vested addresses; */ function returnVestedAddresses() public view returns (address[] memory) { return vestedAddresses; } /** * @return grant that represents vested info for specific user; */ function returnGrantInfo(address _user) public view returns (uint, uint, uint, uint, uint[] memory, uint[] memory, uint, uint) { require(_user != address(0), "Address should not be zero"); Grant storage grant = grants[_user]; return (grant.value, grant.vestingStart, grant.vestingCliff, grant.vestingDuration, grant.scheduleTimes, grant.scheduleValues, grant.level, grant.transferred); } /** * @dev Add vested contributor information * @param _to Withdraw address that tokens will be sent * @param _value Amount to hold during vesting period * @param _start Unix epoch time that vesting starts from * @param _duration Seconds amount of vesting duration * @param _cliff Seconds amount of vesting cliffHi * @param _scheduleTimes Array of Unix epoch times for vesting schedules * @param _scheduleValues Array of Amount for vesting schedules * @param _level Indicator that will represent types of vesting * @return Int value that represents granted token amount */ function grant( address _to, uint _value, uint _start, uint _duration, uint _cliff, uint[] memory _scheduleTimes, uint[] memory _scheduleValues, uint _level) public onlyOwner isOpen returns (uint256) { require(_to != address(0), "Address should not be zero"); require(_level == 1 || _level == 2, "Invalid vesting level"); // make sure a single address can be granted tokens only once. require(grants[_to].value == 0, "Already added to vesting vault"); if (_level == 2) { require(_scheduleTimes.length == _scheduleValues.length, "Schedule Times and Values should be matched"); _value = 0; for (uint i = 0; i < _scheduleTimes.length; i++) { require(_scheduleTimes[i] > 0, "Seconds Amount of ScheduleTime should be greater than zero"); require(_scheduleValues[i] > 0, "Amount of ScheduleValue should be greater than zero"); if (i > 0) { require(_scheduleTimes[i] > _scheduleTimes[i - 1], "ScheduleTimes should be sorted by ASC"); } _value = _value.add(_scheduleValues[i]); } } require(_value > 0, "Vested amount should be greater than zero"); grants[_to] = Grant({ value : _value, vestingStart : _start, vestingDuration : _duration, vestingCliff : _cliff, scheduleTimes : _scheduleTimes, scheduleValues : _scheduleValues, level : _level, transferred : 0 }); vestedAddresses.push(_to); totalVestedTokens = totalVestedTokens.add(_value); emit NewGrant(_to, _value, _start, _duration, _cliff, _scheduleTimes, _scheduleValues, _level); return _value; } /** * @dev Get token amount for a token holder available to transfer at specific time * @param _holder Address that represents holder's withdraw address * @param _time Unix epoch time at the moment * @return Int value that represents token amount that is available to release at the moment */ function transferableTokens(address _holder, uint256 _time) public view returns (uint256) { Grant storage grantInfo = grants[_holder]; if (grantInfo.value == 0) { return 0; } return calculateTransferableTokens(grantInfo, _time); } /** * @dev Internal function to calculate available amount at specific time * @param _grant Grant that represents holder's vesting info * @param _time Unix epoch time at the moment * @return Int value that represents available vested token amount */ function calculateTransferableTokens(Grant memory _grant, uint256 _time) private pure returns (uint256) { uint totalVestedAmount = _grant.value; uint totalAvailableVestedAmount = 0; if (_grant.level == 1) { if (_time < _grant.vestingCliff.add(_grant.vestingStart)) { return 0; } else if (_time >= _grant.vestingStart.add(_grant.vestingDuration)) { return _grant.value; } else { totalAvailableVestedAmount = totalVestedAmount.mul(_time.sub(_grant.vestingStart)).div(_grant.vestingDuration); } } else { if (_time < _grant.scheduleTimes[0]) { return 0; } else if (_time >= _grant.scheduleTimes[_grant.scheduleTimes.length - 1]) { return _grant.value; } else { for (uint i = 0; i < _grant.scheduleTimes.length; i++) { if (_grant.scheduleTimes[i] <= _time) { totalAvailableVestedAmount = totalAvailableVestedAmount.add(_grant.scheduleValues[i]); } else { break; } } } } return totalAvailableVestedAmount; } /** * @dev Claim vested token * @notice this will be eligible after vesting start + cliff or schedule times */ function claim() public { address beneficiary = msg.sender; Grant storage grantInfo = grants[beneficiary]; require(grantInfo.value > 0, "Grant does not exist"); uint256 vested = calculateTransferableTokens(grantInfo, now); require(vested > 0, "There is no vested tokens"); uint256 transferable = vested.sub(grantInfo.transferred); require(transferable > 0, "There is no remaining balance for this address"); require(token.balanceOf(address(this)) >= transferable, "Contract Balance is insufficient"); grantInfo.transferred = grantInfo.transferred.add(transferable); totalVestedTokens = totalVestedTokens.sub(transferable); token.transfer(beneficiary, transferable); emit NewRelease(beneficiary, transferable); } /** * @dev Function to revoke tokens from an address */ function revokeTokens(address _from, uint _amount) public onlyOwner { // finally transfer all remaining tokens to owner Grant storage grantInfo = grants[_from]; require(grantInfo.value > 0, "Grant does not exist"); uint256 revocable = grantInfo.value.sub(grantInfo.transferred); require(revocable > 0, "There is no remaining balance for this address"); require(revocable >= _amount, "Revocable balance is insufficient"); require(token.balanceOf(address(this)) >= _amount, "Contract Balance is insufficient"); grantInfo.value = grantInfo.value.sub(_amount); totalVestedTokens = totalVestedTokens.sub(_amount); token.burn(_amount); emit BurnTokens(_amount); } /** * @dev Function to burn remaining tokens */ function burnRemainingTokens() public onlyOwner { // finally burn all remaining tokens to owner uint amount = token.balanceOf(address(this)); token.burn(amount); emit BurnTokens(amount); } /** * @dev Function to withdraw remaining tokens; */ function withdraw() public onlyOwner { // finally withdraw all remaining tokens to owner uint amount = token.balanceOf(address(this)); token.transfer(owner, amount); emit WithdrawAll(amount); } /** * @dev Function to lock vault not to be able to alloc more */ function lockVault() public onlyOwner { // finally lock vault require(!locked); locked = true; emit LockedVault(); } } /** * @title Contract for distribution of tokens * Copyright 2018, Rewards Blockchain Systems (Rewards.com) */ contract RewardsTokenDistribution is Ownable { using SafeMath for uint256; RewardsToken public token; VestingVault public vestingVault; bool public finished; event TokenMinted(address indexed _to, uint _value, string _id); event RevokeTokens(address indexed _from, uint _value); event MintingFinished(); modifier isAllowed() { require(finished == false, "Minting was already finished"); _; } /** * @dev Constructor * @param _token Contract address of RewardsToken * @param _vestingVault Contract address of VestingVault */ constructor ( RewardsToken _token, VestingVault _vestingVault ) public { require(address(_token) != address(0), "Address should not be zero"); require(address(_vestingVault) != address(0), "Address should not be zero"); token = _token; vestingVault = _vestingVault; finished = false; } /** * @dev Function to allocate tokens for normal contributor * @param _to Address of a contributor * @param _value Value that represents tokens amount allocated for a contributor */ function allocNormalUser(address _to, uint _value) public onlyOwner isAllowed { token.mint(_to, _value); emit TokenMinted(_to, _value, "Allocated Tokens To User"); } /** * @dev Function to allocate tokens for vested contributor * @param _to Withdraw address that tokens will be sent * @param _value Amount to hold during vesting period * @param _start Unix epoch time that vesting starts from * @param _duration Seconds amount of vesting duration * @param _cliff Seconds amount of vesting cliff * @param _scheduleTimes Array of Unix epoch times for vesting schedules * @param _scheduleValues Array of Amount for vesting schedules * @param _level Indicator that will represent types of vesting */ function allocVestedUser( address _to, uint _value, uint _start, uint _duration, uint _cliff, uint[] memory _scheduleTimes, uint[] memory _scheduleValues, uint _level) public onlyOwner isAllowed { _value = vestingVault.grant(_to, _value, _start, _duration, _cliff, _scheduleTimes, _scheduleValues, _level); token.mint(address(vestingVault), _value); emit TokenMinted(_to, _value, "Allocated Vested Tokens To User"); } /** * @dev Function to allocate tokens for normal contributors * @param _holders Address of a contributor * @param _amounts Value that represents tokens amount allocated for a contributor */ function allocNormalUsers(address[] memory _holders, uint[] memory _amounts) public onlyOwner isAllowed { require(_holders.length > 0, "Empty holder addresses"); require(_holders.length == _amounts.length, "Invalid arguments"); for (uint i = 0; i < _holders.length; i++) { token.mint(_holders[i], _amounts[i]); emit TokenMinted(_holders[i], _amounts[i], "Allocated Tokens To Users"); } } /** * @dev Function to revoke tokens from an address */ function revokeTokensFromVestedUser(address _from, uint _amount) public onlyOwner { vestingVault.revokeTokens(_from, _amount); emit RevokeTokens(_from, _amount); } /** * @dev Function to get back Ownership of RewardToken Contract after minting finished */ function transferBackTokenOwnership() public onlyOwner { token.transferOwnership(owner); } /** * @dev Function to get back Ownership of VestingVault Contract after minting finished */ function transferBackVestingVaultOwnership() public onlyOwner { vestingVault.transferOwnership(owner); } /** * @dev Function to finish token distribution */ function finalize() public onlyOwner { token.finishMinting(); finished = true; emit MintingFinished(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"frozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_burnAmount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"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":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"revoke","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"}],"name":"NewToken","type":"event"},{"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":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_burner","type":"address"},{"indexed":false,"name":"_burnedAmount","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[],"name":"MintStarted","type":"event"},{"anonymous":false,"inputs":[],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040526002805461ffff191661010017905534801561001f57600080fd5b5060008054600160a060020a0319163317815560405130917f0f53e2a811b6fd2d6cd965fd6c27b44fb924ca39f7a7f321115705c22366d62391a2611149806100696000396000f3fe608060405234801561001057600080fd5b506004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900480636a28f000116100e0578063a9059cbb11610099578063a9059cbb14610393578063d73dd623146103bf578063dd62ed3e146103eb578063eac449d914610419578063f2fde38b14610445578063fb86a4041461046b5761016a565b80636a28f0001461032957806370a08231146103315780637d64bcb4146103575780638da5cb5b1461035f57806395d89b41146103835780639a65ea261461038b5761016a565b806323b872dd1161013257806323b872dd14610256578063313ce5671461028c57806340c10f19146102aa57806342966c68146102d657806362a5af3b146102f557806366188463146102fd5761016a565b8063054f7d9c1461016f57806305d2035b1461018b57806306fdde0314610193578063095ea7b31461021057806318160ddd1461023c575b600080fd5b610177610473565b604080519115158252519081900360200190f35b610177610481565b61019b61048a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d55781810151838201526020016101bd565b50505050905090810190601f1680156102025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101776004803603604081101561022657600080fd5b50600160a060020a0381351690602001356104c1565b610244610527565b60408051918252519081900360200190f35b6101776004803603606081101561026c57600080fd5b50600160a060020a0381358116916020810135909116906040013561052d565b610294610791565b6040805160ff9092168252519081900360200190f35b610177600480360360408110156102c057600080fd5b50600160a060020a038135169060200135610796565b6102f3600480360360208110156102ec57600080fd5b503561091f565b005b6102f36109ba565b6101776004803603604081101561031357600080fd5b50600160a060020a038135169060200135610a20565b6102f3610b10565b6102446004803603602081101561034757600080fd5b5035600160a060020a0316610b73565b610177610b8e565b610367610bf2565b60408051600160a060020a039092168252519081900360200190f35b61019b610c01565b610177610c38565b610177600480360360408110156103a957600080fd5b50600160a060020a038135169060200135610c9a565b610177600480360360408110156103d557600080fd5b50600160a060020a038135169060200135610e5b565b6102446004803603604081101561040157600080fd5b50600160a060020a0381358116916020013516610ef4565b6101776004803603604081101561042f57600080fd5b50600160a060020a038135169060200135610f1f565b6102f36004803603602081101561045b57600080fd5b5035600160a060020a031661102b565b6102446110bf565b600254610100900460ff1681565b60025460ff1681565b60408051808201909152600c81527f5265776172647320436173680000000000000000000000000000000000000000602082015281565b336000818152600460209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015481565b60008054600160a060020a031633148061054f5750600254610100900460ff16155b15156105a5576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e7320636f756c64206e6f74206265207472616e7366657272656400604482015290519081900360640190fd5b600160a060020a0383161515610605576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b600160a060020a038416600090815260036020526040902054821115610675576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742042616c616e6365000000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526004602090815260408083203384529091529020548211156106f0576040805160e560020a62461bcd02815260206004820152601660248201527f496e73756666696369656e7420416c6c6f77616e636500000000000000000000604482015290519081900360640190fd5b600160a060020a038085166000908152600360205260408082208054869003905591851681522054610728908363ffffffff6110cf16565b600160a060020a03848116600081815260036020908152604080832095909555928816808252600484528482203383528452908490208054879003905583518681529351919390926000805160206110fe83398151915292918290030190a35060019392505050565b601281565b60008054600160a060020a031633146107ae57600080fd5b60025460ff1615610809576040805160e560020a62461bcd02815260206004820152601c60248201527f4d696e74696e672077617320616c72656164792066696e697368656400000000604482015290519081900360640190fd5b600160a060020a0383161515610869576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b6001546b019d971e4fe8401e740000009061088a908463ffffffff6110cf16565b111561089557600080fd5b6001546108a8908363ffffffff6110cf16565b600155600160a060020a0383166000908152600360205260409020546108d4908363ffffffff6110cf16565b600160a060020a03841660008181526003602090815260408083209490945583518681529351929391926000805160206110fe8339815191529281900390910190a350600192915050565b3360009081526003602052604090205481111561093b57600080fd5b3360009081526003602052604090205461095b908263ffffffff6110e816565b3360009081526003602052604090205560015461097e908263ffffffff6110e816565b60015560408051828152905133917f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df7919081900360200190a250565b600054600160a060020a031633146109d157600080fd5b600254610100900460ff16156109e657600080fd5b6002805461ff0019166101001790556040517f615acbaede366d76a8b8cb2a9ada6a71495f0786513d71aa97aaf0c3910b78de90600090a1565b336000908152600460209081526040808320600160a060020a038616845290915281205480831115610a7557336000908152600460209081526040808320600160a060020a0388168452909152812055610aaa565b610a85818463ffffffff6110e816565b336000908152600460209081526040808320600160a060020a03891684529091529020555b336000818152600460209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600054600160a060020a03163314610b2757600080fd5b600254610100900460ff161515610b3d57600080fd5b6002805461ff00191690556040517f2f05ba71d0df11bf5fa562a6569d70c4f80da84284badbe015ce1456063d0ded90600090a1565b600160a060020a031660009081526003602052604090205490565b60008054600160a060020a03163314610ba657600080fd5b60025460ff1615610bb657600080fd5b6002805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600054600160a060020a031681565b60408051808201909152600481527f5257524400000000000000000000000000000000000000000000000000000000602082015281565b60008054600160a060020a03163314610c5057600080fd5b60025460ff161515610c6157600080fd5b6002805460ff191690556040517f452a344f03203071e1daf66e007976c85cb2380deabf1c91f3c4fb1fca41204990600090a150600190565b60008054600160a060020a0316331480610cbc5750600254610100900460ff16155b1515610d12576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e7320636f756c64206e6f74206265207472616e7366657272656400604482015290519081900360640190fd5b600160a060020a0383161515610d72576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b33600090815260036020526040902054821115610dd9576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b3360009081526003602052604080822080548590039055600160a060020a0385168252902054610e0f908363ffffffff6110cf16565b600160a060020a0384166000818152600360209081526040918290209390935580518581529051919233926000805160206110fe8339815191529281900390910190a350600192915050565b336000908152600460209081526040808320600160a060020a0386168452909152812054610e8f908363ffffffff6110cf16565b336000818152600460209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b60008054600160a060020a03163314610f3757600080fd5b600160a060020a038316600090815260036020526040902054821115610f5c57600080fd5b600160a060020a038316600090815260036020526040902054610f85908363ffffffff6110e816565b600160a060020a038416600090815260036020526040902055600154610fb1908363ffffffff6110e816565b600155604080518381529051600160a060020a038516917fec9ab91322523c899ede7830ec9bfc992b5981cdcc27b91162fb23de5791117b919081900360200190a2604080518381529051600091600160a060020a038616916000805160206110fe8339815191529181900360200190a350600192915050565b600054600160a060020a0316331461104257600080fd5b600160a060020a038116151561105757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6b019d971e4fe8401e7400000081565b6000828201838110156110e157600080fd5b9392505050565b6000828211156110f757600080fd5b5090039056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058207c29754f565560b9c68a0b6d119f6a28aee7abb0dd9a340e697911355e778d7e0029
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900480636a28f000116100e0578063a9059cbb11610099578063a9059cbb14610393578063d73dd623146103bf578063dd62ed3e146103eb578063eac449d914610419578063f2fde38b14610445578063fb86a4041461046b5761016a565b80636a28f0001461032957806370a08231146103315780637d64bcb4146103575780638da5cb5b1461035f57806395d89b41146103835780639a65ea261461038b5761016a565b806323b872dd1161013257806323b872dd14610256578063313ce5671461028c57806340c10f19146102aa57806342966c68146102d657806362a5af3b146102f557806366188463146102fd5761016a565b8063054f7d9c1461016f57806305d2035b1461018b57806306fdde0314610193578063095ea7b31461021057806318160ddd1461023c575b600080fd5b610177610473565b604080519115158252519081900360200190f35b610177610481565b61019b61048a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d55781810151838201526020016101bd565b50505050905090810190601f1680156102025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101776004803603604081101561022657600080fd5b50600160a060020a0381351690602001356104c1565b610244610527565b60408051918252519081900360200190f35b6101776004803603606081101561026c57600080fd5b50600160a060020a0381358116916020810135909116906040013561052d565b610294610791565b6040805160ff9092168252519081900360200190f35b610177600480360360408110156102c057600080fd5b50600160a060020a038135169060200135610796565b6102f3600480360360208110156102ec57600080fd5b503561091f565b005b6102f36109ba565b6101776004803603604081101561031357600080fd5b50600160a060020a038135169060200135610a20565b6102f3610b10565b6102446004803603602081101561034757600080fd5b5035600160a060020a0316610b73565b610177610b8e565b610367610bf2565b60408051600160a060020a039092168252519081900360200190f35b61019b610c01565b610177610c38565b610177600480360360408110156103a957600080fd5b50600160a060020a038135169060200135610c9a565b610177600480360360408110156103d557600080fd5b50600160a060020a038135169060200135610e5b565b6102446004803603604081101561040157600080fd5b50600160a060020a0381358116916020013516610ef4565b6101776004803603604081101561042f57600080fd5b50600160a060020a038135169060200135610f1f565b6102f36004803603602081101561045b57600080fd5b5035600160a060020a031661102b565b6102446110bf565b600254610100900460ff1681565b60025460ff1681565b60408051808201909152600c81527f5265776172647320436173680000000000000000000000000000000000000000602082015281565b336000818152600460209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015481565b60008054600160a060020a031633148061054f5750600254610100900460ff16155b15156105a5576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e7320636f756c64206e6f74206265207472616e7366657272656400604482015290519081900360640190fd5b600160a060020a0383161515610605576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b600160a060020a038416600090815260036020526040902054821115610675576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742042616c616e6365000000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526004602090815260408083203384529091529020548211156106f0576040805160e560020a62461bcd02815260206004820152601660248201527f496e73756666696369656e7420416c6c6f77616e636500000000000000000000604482015290519081900360640190fd5b600160a060020a038085166000908152600360205260408082208054869003905591851681522054610728908363ffffffff6110cf16565b600160a060020a03848116600081815260036020908152604080832095909555928816808252600484528482203383528452908490208054879003905583518681529351919390926000805160206110fe83398151915292918290030190a35060019392505050565b601281565b60008054600160a060020a031633146107ae57600080fd5b60025460ff1615610809576040805160e560020a62461bcd02815260206004820152601c60248201527f4d696e74696e672077617320616c72656164792066696e697368656400000000604482015290519081900360640190fd5b600160a060020a0383161515610869576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b6001546b019d971e4fe8401e740000009061088a908463ffffffff6110cf16565b111561089557600080fd5b6001546108a8908363ffffffff6110cf16565b600155600160a060020a0383166000908152600360205260409020546108d4908363ffffffff6110cf16565b600160a060020a03841660008181526003602090815260408083209490945583518681529351929391926000805160206110fe8339815191529281900390910190a350600192915050565b3360009081526003602052604090205481111561093b57600080fd5b3360009081526003602052604090205461095b908263ffffffff6110e816565b3360009081526003602052604090205560015461097e908263ffffffff6110e816565b60015560408051828152905133917f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df7919081900360200190a250565b600054600160a060020a031633146109d157600080fd5b600254610100900460ff16156109e657600080fd5b6002805461ff0019166101001790556040517f615acbaede366d76a8b8cb2a9ada6a71495f0786513d71aa97aaf0c3910b78de90600090a1565b336000908152600460209081526040808320600160a060020a038616845290915281205480831115610a7557336000908152600460209081526040808320600160a060020a0388168452909152812055610aaa565b610a85818463ffffffff6110e816565b336000908152600460209081526040808320600160a060020a03891684529091529020555b336000818152600460209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600054600160a060020a03163314610b2757600080fd5b600254610100900460ff161515610b3d57600080fd5b6002805461ff00191690556040517f2f05ba71d0df11bf5fa562a6569d70c4f80da84284badbe015ce1456063d0ded90600090a1565b600160a060020a031660009081526003602052604090205490565b60008054600160a060020a03163314610ba657600080fd5b60025460ff1615610bb657600080fd5b6002805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600054600160a060020a031681565b60408051808201909152600481527f5257524400000000000000000000000000000000000000000000000000000000602082015281565b60008054600160a060020a03163314610c5057600080fd5b60025460ff161515610c6157600080fd5b6002805460ff191690556040517f452a344f03203071e1daf66e007976c85cb2380deabf1c91f3c4fb1fca41204990600090a150600190565b60008054600160a060020a0316331480610cbc5750600254610100900460ff16155b1515610d12576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e7320636f756c64206e6f74206265207472616e7366657272656400604482015290519081900360640190fd5b600160a060020a0383161515610d72576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b33600090815260036020526040902054821115610dd9576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b3360009081526003602052604080822080548590039055600160a060020a0385168252902054610e0f908363ffffffff6110cf16565b600160a060020a0384166000818152600360209081526040918290209390935580518581529051919233926000805160206110fe8339815191529281900390910190a350600192915050565b336000908152600460209081526040808320600160a060020a0386168452909152812054610e8f908363ffffffff6110cf16565b336000818152600460209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b60008054600160a060020a03163314610f3757600080fd5b600160a060020a038316600090815260036020526040902054821115610f5c57600080fd5b600160a060020a038316600090815260036020526040902054610f85908363ffffffff6110e816565b600160a060020a038416600090815260036020526040902055600154610fb1908363ffffffff6110e816565b600155604080518381529051600160a060020a038516917fec9ab91322523c899ede7830ec9bfc992b5981cdcc27b91162fb23de5791117b919081900360200190a2604080518381529051600091600160a060020a038616916000805160206110fe8339815191529181900360200190a350600192915050565b600054600160a060020a0316331461104257600080fd5b600160a060020a038116151561105757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6b019d971e4fe8401e7400000081565b6000828201838110156110e157600080fd5b9392505050565b6000828211156110f757600080fd5b5090039056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058207c29754f565560b9c68a0b6d119f6a28aee7abb0dd9a340e697911355e778d7e0029
Deployed Bytecode Sourcemap
2930:8722:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2930:8722:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;3296:35;;;:::i;3047:44::-;;;:::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;3047:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7707:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7707:206:0;;;;;;;;:::i;3261:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;6476:574;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6476:574:0;;;;;;;;;;;;;;;;;:::i;3098:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4500:390;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4500:390:0;;;;;;;;:::i;10323:275::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10323:275:0;;:::i;:::-;;11353:118;;;:::i;9401:458::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9401:458:0;;;;;;;;:::i;11527:122::-;;;:::i;10084:115::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10084:115:0;-1:-1:-1;;;;;10084:115:0;;:::i;5020:186::-;;;:::i;245:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;245:20:0;;;;;;;;;;;;;;3002:38;;;:::i;5336:184::-;;;:::i;5693:486::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5693:486:0;;;;;;;;:::i;8660:288::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8660:288:0;;;;;;;;:::i;8254:144::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8254:144:0;;;;;;;;;;:::i;10769:531::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10769:531:0;;;;;;;;:::i;903:192::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;903:192:0;-1:-1:-1;;;;;903:192:0;;:::i;3142:54::-;;;:::i;3338:25::-;;;;;;;;;:::o;3296:35::-;;;;;;:::o;3047:44::-;;;;;;;;;;;;;;;;;;;:::o;7707:206::-;7799:10;7774:4;7791:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7791:29:0;;;;;;;;;;;:38;;;7845;;;;;;;7774:4;;7791:29;;7799:10;;7845:38;;;;;;;;-1:-1:-1;7901:4:0;7707:206;;;;:::o;3261:26::-;;;;:::o;6476:574::-;6570:4;4093:5;;-1:-1:-1;;;;;4093:5:0;4079:10;:19;;:30;;-1:-1:-1;4103:6:0;;;;;;;4102:7;4079:30;4071:74;;;;;;;-1:-1:-1;;;;;4071:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6595:17:0;;;;6587:56;;;;;-1:-1:-1;;;;;6587:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6672:15:0;;;;;;:8;:15;;;;;;6662:25;;;6654:58;;;;;-1:-1:-1;;;;;6654:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6741:14:0;;;;;;:7;:14;;;;;;;;6756:10;6741:26;;;;;;;;6731:36;;;6723:71;;;;;-1:-1:-1;;;;;6723:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6825:15:0;;;;;;;:8;:15;;;;;;;;:24;;;6807:42;;6876:13;;;;;;;:25;;6843:6;6876:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;6860:13:0;;;;;;;:8;:13;;;;;;;;:41;;;;6941:14;;;;;;:7;:14;;;;;6956:10;6941:26;;;;;;;;;;:35;;;6912:64;;6992:28;;;;;;;6860:13;;6941:14;;-1:-1:-1;;;;;;;;;;;6992:28:0;;;;;;;;-1:-1:-1;7038:4:0;6476:574;;;;;:::o;3098:35::-;3131:2;3098:35;:::o;4500:390::-;4578:4;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;3961:15;;;;3960:16;3952:57;;;;;-1:-1:-1;;;;;3952:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4603:17:0;;;;4595:56;;;;;-1:-1:-1;;;;;4595:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4670:11;;3176:20;;4670:24;;4686:7;4670:24;:15;:24;:::i;:::-;:35;;4662:44;;;;;;4733:11;;:24;;4749:7;4733:24;:15;:24;:::i;:::-;4719:11;:38;-1:-1:-1;;;;;4784:13:0;;;;;;:8;:13;;;;;;:26;;4802:7;4784:26;:17;:26;:::i;:::-;-1:-1:-1;;;;;4768:13:0;;;;;;:8;:13;;;;;;;;:42;;;;4826:34;;;;;;;4768:13;;;;-1:-1:-1;;;;;;;;;;;4826:34:0;;;;;;;;;-1:-1:-1;4878:4:0;4500:390;;;;:::o;10323:275::-;10405:10;10396:20;;;;:8;:20;;;;;;10381:35;;;10373:44;;;;;;10462:10;10453:20;;;;:8;:20;;;;;;:37;;10478:11;10453:37;:24;:37;:::i;:::-;10439:10;10430:20;;;;:8;:20;;;;;:60;10515:11;;:28;;10531:11;10515:28;:15;:28;:::i;:::-;10501:11;:42;10559:31;;;;;;;;10566:10;;10559:31;;;;;;;;;;10323:275;:::o;11353:118::-;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;11408:6;;;;;;;11407:7;11399:16;;;;;;11426:6;:13;;-1:-1:-1;;11426:13:0;;;;;11455:8;;;;11426:13;;11455:8;11353:118::o;9401:458::-;9533:10;9484:12;9525:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9525:29:0;;;;;;;;;;9569:27;;;9565:188;;;9621:10;9645:1;9613:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9613:29:0;;;;;;;;;:33;9565:188;;;9711:30;:8;9724:16;9711:30;:12;:30;:::i;:::-;9687:10;9679:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9679:29:0;;;;;;;;;:62;9565:188;9777:10;9799:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9768:61:0;;9799:29;;;;;;;;;;;9768:61;;;;;;;;;9777:10;9768:61;;;;;;;;;;;-1:-1:-1;9847:4:0;;9401:458;-1:-1:-1;;;9401:458:0:o;11527:122::-;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;11583:6;;;;;;;11575:15;;;;;;;;11601:6;:14;;-1:-1:-1;;11601:14:0;;;11631:10;;;;11610:5;;11631:10;11527:122::o;10084:115::-;-1:-1:-1;;;;;10175:16:0;10140:15;10175:16;;;:8;:16;;;;;;;10084:115::o;5020:186::-;5071:4;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;5097:15;;;;5096:16;5088:25;;;;;;5124:15;:22;;-1:-1:-1;;5124:22:0;5142:4;5124:22;;;5162:14;;;;5124:15;;5162:14;-1:-1:-1;5194:4:0;5020:186;:::o;245:20::-;;;-1:-1:-1;;;;;245:20:0;;:::o;3002:38::-;;;;;;;;;;;;;;;;;;;:::o;5336:184::-;5386:4;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;5411:15;;;;5403:24;;;;;;;;5438:15;:23;;-1:-1:-1;;5438:23:0;;;5477:13;;;;5456:5;;5477:13;-1:-1:-1;5508:4:0;5336:184;:::o;5693:486::-;5768:4;4093:5;;-1:-1:-1;;;;;4093:5:0;4079:10;:19;;:30;;-1:-1:-1;4103:6:0;;;;;;;4102:7;4079:30;4071:74;;;;;;;-1:-1:-1;;;;;4071:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5793:17:0;;;;5785:56;;;;;-1:-1:-1;;;;;5785:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5879:10;5870:20;;;;:8;:20;;;;;;5860:30;;;5852:63;;;;;-1:-1:-1;;;;;5852:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6028:10;6019:20;;;;:8;:20;;;;;;;;:29;;;5996:52;;-1:-1:-1;;;;;6075:13:0;;;;;;;:25;;6042:6;6075:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;6059:13:0;;;;;;:8;:13;;;;;;;;;:41;;;;6116:33;;;;;;;6059:13;;6125:10;;-1:-1:-1;;;;;;;;;;;6116:33:0;;;;;;;;;-1:-1:-1;6167:4:0;5693:486;;;;:::o;8660:288::-;8803:10;8738:12;8795:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;8795:29:0;;;;;;;;;;:46;;8829:11;8795:46;:33;:46;:::i;:::-;8771:10;8763:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;8763:29:0;;;;;;;;;;;;:78;;;8857:61;;;;;;8763:29;;8857:61;;;;;;;;;;;-1:-1:-1;8936:4:0;8660:288;;;;:::o;8254:144::-;-1:-1:-1;;;;;8365:15:0;;;8328:17;8365:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;8254:144::o;10769:531::-;10842:4;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;-1:-1:-1;;;;;10877:15:0;;;;;;:8;:15;;;;;;10867:25;;;10859:34;;;;;;-1:-1:-1;;;;;11105:15:0;;;;;;:8;:15;;;;;;:27;;11125:6;11105:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;11087:15:0;;;;;;:8;:15;;;;;:45;11157:11;;:23;;11173:6;11157:23;:15;:23;:::i;:::-;11143:11;:37;11198:21;;;;;;;;-1:-1:-1;;;;;11198:21:0;;;;;;;;;;;;;11235:35;;;;;;;;11259:1;;-1:-1:-1;;;;;11235:35:0;;;-1:-1:-1;;;;;;;;;;;11235:35:0;;;;;;;;-1:-1:-1;11288:4:0;10769:531;;;;:::o;903:192::-;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;-1:-1:-1;;;;;984:22:0;;;;976:31;;;;;;1044:5;;;1023:37;;-1:-1:-1;;;;;1023:37:0;;;;1044:5;;;1023:37;;;1071:5;:16;;-1:-1:-1;;1071:16:0;-1:-1:-1;;;;;1071:16:0;;;;;;;;;;903:192::o;3142:54::-;3176:20;3142:54;:::o;2419:141::-;2479:7;2507;;;2529;;;;2521:16;;;;;;2553:1;2419:141;-1:-1:-1;;;2419:141:0:o;2209:142::-;2269:7;2293:8;;;;2285:17;;;;;;-1:-1:-1;2321:7:0;;;2209:142::o
Swarm Source
bzzr://7c29754f565560b9c68a0b6d119f6a28aee7abb0dd9a340e697911355e778d7e
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.