ETH Price: $2,604.31 (-2.75%)
Gas: 1 Gwei

Token

Grano Protocol (GRANO)
 

Overview

Max Total Supply

112,993.839763982169787086 GRANO

Holders

117

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
autismo.eth
Balance
0.1 GRANO

Value
$0.00
0x70f1033420e6a50dcb9894cb76afa5443d749d4c
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Grano Protocol is digital money built for everyone as a unique reserve asset.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Grano

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-19
*/

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/GSN/Context.sol

pragma solidity ^0.5.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/token/ERC20/ERC20Detailed.sol

pragma solidity ^0.5.0;


/**
 * @dev Optional functions from the ERC20 standard.
 */
contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of
     * these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/token/ERC20/ERC20.sol

pragma solidity ^0.5.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20Mintable}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
    }
}

// File: contracts/Grano.sol

pragma solidity ^0.5.0;

/**
 * @title Grano Protocol ERC20 Token Contract
 * @dev Implementation of the Grano Protocol.
 */

contract Grano is ERC20, ERC20Detailed, Ownable {
    
    mapping (address => bool) private faucetAddress;
    uint256 private faucetAmount;
    uint32 private faucetTotalAddresses;
    
    struct Record {
		uint256 tokens_amount; 
		uint256 burn_date;   
		uint256 lock_period; 
		bool minted; 
	}
	
	mapping (address => Record[]) private user;
	
	event Burn(address indexed _user, uint256 indexed _record, uint256 tokens_amount, uint256 burn_date, uint256 lock_period);
	event Mint(address indexed _user, uint256 indexed _record, uint256 tokens_amount, uint256 mint_date);
	event Faucet(address indexed _user, uint256 tokens_amount, uint256 faucet_date);
	
	constructor (string memory _name, string memory _symbol, uint8 _decimals, uint32 _initial_supply) public ERC20Detailed(_name, _symbol, _decimals) {
	    faucetAmount = (_initial_supply/_initial_supply) * (10 ** 17);
        _mint(_msgSender(), _initial_supply * (10 ** uint256(decimals())));
    }

    function burn(uint256 _amount, uint256 _period) external  returns (bool) {
        require(_amount > 0, "The amount should be greater than zero.");
        require(_period > 0, "The period should not be less than 1 day.");
        require(balanceOf(_msgSender()) >= _amount, "Your balance does not have enough tokens.");
        user[_msgSender()].push(Record(_amount,now,_period,false));
        _burn(_msgSender(), _amount);
        emit Burn(_msgSender(), user[_msgSender()].length.sub(1), _amount, now, _period);
    }
    
    function mint(uint256 _record) external returns (bool) {
        require(_record  >= 0  && _record < user[_msgSender()].length, "Record does not exist.");
        require(!user[_msgSender()][_record].minted, "Record already minted.");
        require((user[_msgSender()][_record].burn_date.add(user[_msgSender()][_record].lock_period.mul(86400))) <= now, "Record cannot be minted before the lock period ends.");
        user[_msgSender()][_record].minted = true;
        uint256 period = user[_msgSender()][_record].lock_period ** 2;
        uint256 multiplier = period.div(10000);
        uint256 compensation = multiplier.mul(user[_msgSender()][_record].tokens_amount);
        uint256 amount = compensation.add(user[_msgSender()][_record].tokens_amount);
        _mint(_msgSender(), amount);
        emit Mint(_msgSender(), _record, amount, now);
    }
    
    function getRecordsCount(address _user) public view returns (uint256) {
        return user[_user].length;
    }
    
    function getRecord(address _user, uint256 _record) public view returns (uint256, uint256, uint256, bool) {
        Record memory r = user[_user][_record];
        return (r.tokens_amount, r.burn_date, r.lock_period, r.minted);
    }
    
    function faucet() external returns (bool) {
        require(!faucetAddress[_msgSender()], "Limit exceeded.");
        if (faucetTotalAddresses == 100000) {
            faucetAmount = faucetAmount.div(2);
            faucetTotalAddresses = 0;
        }
        faucetAddress[_msgSender()] = true;
        faucetTotalAddresses++;
        _mint(_msgSender(), faucetAmount);
        emit Faucet(_msgSender(), faucetAmount, now);
    }
    
    function getFaucetAddress(address _user) public view returns (bool) {
        return faucetAddress[_user];
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint32","name":"_initial_supply","type":"uint32"}],"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":"_user","type":"address"},{"indexed":true,"internalType":"uint256","name":"_record","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn_date","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lock_period","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"faucet_date","type":"uint256"}],"name":"Faucet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"uint256","name":"_record","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mint_date","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"faucet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getFaucetAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_record","type":"uint256"}],"name":"getRecord","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getRecordsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_record","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001f5738038062001f57833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040908152602082810151929091015186519294509250859185918591620001c8916003919086019062000444565b508151620001de90600490602085019062000444565b506005805460ff191660ff92909216919091179055506000905062000202620002d3565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35063ffffffff811680806200026857fe5b0463ffffffff1667016345785d8a0000026001600160401b0316600781905550620002c96200029c620002d360201b60201c565b620002af6001600160e01b03620002d816565b60ff16600a0a8363ffffffff1602620002e160201b60201c565b50505050620004e6565b335b90565b60055460ff1690565b6001600160a01b0382166200033d576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200035981600254620003e260201b6200138f1790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200038c9183906200138f620003e2821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000828201838110156200043d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200048757805160ff1916838001178555620004b7565b82800160010185558215620004b7579182015b82811115620004b75782518255916020019190600101906200049a565b50620004c5929150620004c9565b5090565b620002d591905b80821115620004c55760008155600101620004d0565b611a6180620004f66000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638f32d59b116100b8578063a9059cbb1161007c578063a9059cbb1461038c578063b390c0ab146103b8578063cdb8acf0146103db578063dd62ed3e1461042f578063de5f72fd1461045d578063f2fde38b1461046557610137565b80638f32d59b1461030d578063918252ad1461031557806395d89b411461033b578063a0712d6814610343578063a457c2d71461036057610137565b806339509351116100ff578063395093511461026757806361d316191461029357806370a08231146102b9578063715018a6146102df5780638da5cb5b146102e957610137565b806306fdde031461013c578063095ea7b3146101b957806318160ddd146101f957806323b872dd14610213578063313ce56714610249575b600080fd5b61014461048b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b038135169060200135610521565b604080519115158252519081900360200190f35b61020161053f565b60408051918252519081900360200190f35b6101e56004803603606081101561022957600080fd5b506001600160a01b03813581169160208101359091169060400135610545565b6102516105d2565b6040805160ff9092168252519081900360200190f35b6101e56004803603604081101561027d57600080fd5b506001600160a01b0381351690602001356105db565b610201600480360360208110156102a957600080fd5b50356001600160a01b031661062f565b610201600480360360208110156102cf57600080fd5b50356001600160a01b031661064a565b6102e7610665565b005b6102f161070e565b604080516001600160a01b039092168252519081900360200190f35b6101e5610722565b6101e56004803603602081101561032b57600080fd5b50356001600160a01b031661074d565b61014461076b565b6101e56004803603602081101561035957600080fd5b50356107cc565b6101e56004803603604081101561037657600080fd5b506001600160a01b038135169060200135610bb4565b6101e5600480360360408110156103a257600080fd5b506001600160a01b038135169060200135610c22565b6101e5600480360360408110156103ce57600080fd5b5080359060200135610c36565b610407600480360360408110156103f157600080fd5b506001600160a01b038135169060200135610e2d565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102016004803603604081101561044557600080fd5b506001600160a01b0381358116916020013516610eba565b6101e5610ee5565b6102e76004803603602081101561047b57600080fd5b50356001600160a01b0316611047565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b600061053561052e6110ac565b84846110b0565b5060015b92915050565b60025490565b600061055284848461119c565b6105c88461055e6110ac565b6105c38560405180606001604052806028815260200161194f602891396001600160a01b038a1660009081526001602052604081209061059c6110ac565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6112f816565b6110b0565b5060019392505050565b60055460ff1690565b60006105356105e86110ac565b846105c385600160006105f96110ac565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61138f16565b6001600160a01b031660009081526009602052604090205490565b6001600160a01b031660009081526020819052604090205490565b61066d610722565b6106be576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b031661073e6110ac565b6001600160a01b031614905090565b6001600160a01b031660009081526006602052604090205460ff1690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105175780601f106104ec57610100808354040283529160200191610517565b6000600960006107da6110ac565b6001600160a01b031681526020810191909152604001600020548210610840576040805162461bcd60e51b81526020600482015260166024820152752932b1b7b932103237b2b9903737ba1032bc34b9ba1760511b604482015290519081900360640190fd5b6009600061084c6110ac565b6001600160a01b03166001600160a01b03168152602001908152602001600020828154811061087757fe5b600091825260209091206003600490920201015460ff16156108d9576040805162461bcd60e51b81526020600482015260166024820152752932b1b7b9321030b63932b0b23c9036b4b73a32b21760511b604482015290519081900360640190fd5b4261099261093b62015180600960006108f06110ac565b6001600160a01b03166001600160a01b03168152602001908152602001600020868154811061091b57fe5b9060005260206000209060040201600201546113f090919063ffffffff16565b600960006109476110ac565b6001600160a01b03166001600160a01b03168152602001908152602001600020858154811061097257fe5b90600052602060002090600402016001015461138f90919063ffffffff16565b11156109cf5760405162461bcd60e51b81526004018080602001828103825260348152602001806117f56034913960400191505060405180910390fd5b6001600960006109dd6110ac565b6001600160a01b03166001600160a01b031681526020019081526020016000208381548110610a0857fe5b60009182526020822060049190910201600301805460ff1916921515929092179091556002600982610a386110ac565b6001600160a01b03166001600160a01b031681526020019081526020016000208481548110610a6357fe5b9060005260206000209060040201600201540a90506000610a8f6127108361144990919063ffffffff16565b90506000610aeb60096000610aa26110ac565b6001600160a01b03166001600160a01b031681526020019081526020016000208681548110610acd57fe5b6000918252602090912060049091020154839063ffffffff6113f016565b90506000610b4760096000610afe6110ac565b6001600160a01b03166001600160a01b031681526020019081526020016000208781548110610b2957fe5b6000918252602090912060049091020154839063ffffffff61138f16565b9050610b5a610b546110ac565b8261148b565b85610b636110ac565b6001600160a01b03167fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb8342604051808381526020018281526020019250505060405180910390a350505050919050565b6000610535610bc16110ac565b846105c385604051806060016040528060258152602001611a086025913960016000610beb6110ac565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6112f816565b6000610535610c2f6110ac565b848461119c565b6000808311610c765760405162461bcd60e51b81526004018080602001828103825260278152602001806119986027913960400191505060405180910390fd5b60008211610cb55760405162461bcd60e51b81526004018080602001828103825260298152602001806118b66029913960400191505060405180910390fd5b82610cc6610cc16110ac565b61064a565b1015610d035760405162461bcd60e51b81526004018080602001828103825260298152602001806119056029913960400191505060405180910390fd5b60096000610d0f6110ac565b6001600160a01b031681526020808201929092526040908101600090812082516080810184528781524281860190815293810187815260608201848152835460018082018655948652969094209151600490960290910194855592519084015590516002830155516003909101805460ff1916911515919091179055610d9c610d966110ac565b8461157b565b610dd3600160096000610dad6110ac565b6001600160a01b031681526020810191909152604001600020549063ffffffff61167716565b610ddb6110ac565b6040805186815242602082015280820186905290516001600160a01b0392909216917f4d667732637549615f3cd28023b13380094dd975c0ac7c1b26916a8b1363b7ec9181900360600190a392915050565b600080600080610e3b6117ca565b6001600160a01b0387166000908152600960205260409020805487908110610e5f57fe5b60009182526020918290206040805160808101825260049390930290910180548084526001820154948401859052600282015492840183905260039091015460ff16151560609093018390529a929950975095509350505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600060066000610ef36110ac565b6001600160a01b0316815260208101919091526040016000205460ff1615610f54576040805162461bcd60e51b815260206004820152600f60248201526e2634b6b4ba1032bc31b2b2b232b21760891b604482015290519081900360640190fd5b60085463ffffffff16620186a01415610f8c57600754610f7b90600263ffffffff61144916565b6007556008805463ffffffff191690555b600160066000610f9a6110ac565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556008805463ffffffff19811663ffffffff918216600101909116179055610ff2610fea6110ac565b60075461148b565b610ffa6110ac565b6001600160a01b03167f214e597359607d253d273b990ec10788316369f1c0a60fd7d46d8ad75beb7f8e60075442604051808381526020018281526020019250505060405180910390a290565b61104f610722565b6110a0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6110a9816116b9565b50565b3390565b6001600160a01b0383166110f55760405162461bcd60e51b81526004018080602001828103825260248152602001806119e46024913960400191505060405180910390fd5b6001600160a01b03821661113a5760405162461bcd60e51b81526004018080602001828103825260228152602001806118946022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166111e15760405162461bcd60e51b81526004018080602001828103825260258152602001806119bf6025913960400191505060405180910390fd5b6001600160a01b0382166112265760405162461bcd60e51b81526004018080602001828103825260238152602001806118296023913960400191505060405180910390fd5b611269816040518060600160405280602681526020016118df602691396001600160a01b038616600090815260208190526040902054919063ffffffff6112f816565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461129e908263ffffffff61138f16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156113875760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561134c578181015183820152602001611334565b50505050905090810190601f1680156113795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156113e9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000826113ff57506000610539565b8282028284828161140c57fe5b04146113e95760405162461bcd60e51b815260040180806020018281038252602181526020018061192e6021913960400191505060405180910390fd5b60006113e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611765565b6001600160a01b0382166114e6576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546114f9908263ffffffff61138f16565b6002556001600160a01b038216600090815260208190526040902054611525908263ffffffff61138f16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166115c05760405162461bcd60e51b81526004018080602001828103825260218152602001806119776021913960400191505060405180910390fd5b6116038160405180606001604052806022815260200161184c602291396001600160a01b038516600090815260208190526040902054919063ffffffff6112f816565b6001600160a01b03831660009081526020819052604090205560025461162f908263ffffffff61167716565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006113e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112f8565b6001600160a01b0381166116fe5760405162461bcd60e51b815260040180806020018281038252602681526020018061186e6026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081836117b45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561134c578181015183820152602001611334565b5060008385816117c057fe5b0495945050505050565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe5265636f72642063616e6e6f74206265206d696e746564206265666f726520746865206c6f636b20706572696f6420656e64732e45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737354686520706572696f642073686f756c64206e6f74206265206c657373207468616e2031206461792e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365596f75722062616c616e636520646f6573206e6f74206861766520656e6f75676820746f6b656e732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737354686520616d6f756e742073686f756c642062652067726561746572207468616e207a65726f2e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820f294ce8f2954bf98a8e131599896326a7787b5295d605e37950c6f859415906d64736f6c63430005110032000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000000e4772616e6f2050726f746f636f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054752414e4f000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638f32d59b116100b8578063a9059cbb1161007c578063a9059cbb1461038c578063b390c0ab146103b8578063cdb8acf0146103db578063dd62ed3e1461042f578063de5f72fd1461045d578063f2fde38b1461046557610137565b80638f32d59b1461030d578063918252ad1461031557806395d89b411461033b578063a0712d6814610343578063a457c2d71461036057610137565b806339509351116100ff578063395093511461026757806361d316191461029357806370a08231146102b9578063715018a6146102df5780638da5cb5b146102e957610137565b806306fdde031461013c578063095ea7b3146101b957806318160ddd146101f957806323b872dd14610213578063313ce56714610249575b600080fd5b61014461048b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b038135169060200135610521565b604080519115158252519081900360200190f35b61020161053f565b60408051918252519081900360200190f35b6101e56004803603606081101561022957600080fd5b506001600160a01b03813581169160208101359091169060400135610545565b6102516105d2565b6040805160ff9092168252519081900360200190f35b6101e56004803603604081101561027d57600080fd5b506001600160a01b0381351690602001356105db565b610201600480360360208110156102a957600080fd5b50356001600160a01b031661062f565b610201600480360360208110156102cf57600080fd5b50356001600160a01b031661064a565b6102e7610665565b005b6102f161070e565b604080516001600160a01b039092168252519081900360200190f35b6101e5610722565b6101e56004803603602081101561032b57600080fd5b50356001600160a01b031661074d565b61014461076b565b6101e56004803603602081101561035957600080fd5b50356107cc565b6101e56004803603604081101561037657600080fd5b506001600160a01b038135169060200135610bb4565b6101e5600480360360408110156103a257600080fd5b506001600160a01b038135169060200135610c22565b6101e5600480360360408110156103ce57600080fd5b5080359060200135610c36565b610407600480360360408110156103f157600080fd5b506001600160a01b038135169060200135610e2d565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102016004803603604081101561044557600080fd5b506001600160a01b0381358116916020013516610eba565b6101e5610ee5565b6102e76004803603602081101561047b57600080fd5b50356001600160a01b0316611047565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b600061053561052e6110ac565b84846110b0565b5060015b92915050565b60025490565b600061055284848461119c565b6105c88461055e6110ac565b6105c38560405180606001604052806028815260200161194f602891396001600160a01b038a1660009081526001602052604081209061059c6110ac565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6112f816565b6110b0565b5060019392505050565b60055460ff1690565b60006105356105e86110ac565b846105c385600160006105f96110ac565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61138f16565b6001600160a01b031660009081526009602052604090205490565b6001600160a01b031660009081526020819052604090205490565b61066d610722565b6106be576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b031661073e6110ac565b6001600160a01b031614905090565b6001600160a01b031660009081526006602052604090205460ff1690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105175780601f106104ec57610100808354040283529160200191610517565b6000600960006107da6110ac565b6001600160a01b031681526020810191909152604001600020548210610840576040805162461bcd60e51b81526020600482015260166024820152752932b1b7b932103237b2b9903737ba1032bc34b9ba1760511b604482015290519081900360640190fd5b6009600061084c6110ac565b6001600160a01b03166001600160a01b03168152602001908152602001600020828154811061087757fe5b600091825260209091206003600490920201015460ff16156108d9576040805162461bcd60e51b81526020600482015260166024820152752932b1b7b9321030b63932b0b23c9036b4b73a32b21760511b604482015290519081900360640190fd5b4261099261093b62015180600960006108f06110ac565b6001600160a01b03166001600160a01b03168152602001908152602001600020868154811061091b57fe5b9060005260206000209060040201600201546113f090919063ffffffff16565b600960006109476110ac565b6001600160a01b03166001600160a01b03168152602001908152602001600020858154811061097257fe5b90600052602060002090600402016001015461138f90919063ffffffff16565b11156109cf5760405162461bcd60e51b81526004018080602001828103825260348152602001806117f56034913960400191505060405180910390fd5b6001600960006109dd6110ac565b6001600160a01b03166001600160a01b031681526020019081526020016000208381548110610a0857fe5b60009182526020822060049190910201600301805460ff1916921515929092179091556002600982610a386110ac565b6001600160a01b03166001600160a01b031681526020019081526020016000208481548110610a6357fe5b9060005260206000209060040201600201540a90506000610a8f6127108361144990919063ffffffff16565b90506000610aeb60096000610aa26110ac565b6001600160a01b03166001600160a01b031681526020019081526020016000208681548110610acd57fe5b6000918252602090912060049091020154839063ffffffff6113f016565b90506000610b4760096000610afe6110ac565b6001600160a01b03166001600160a01b031681526020019081526020016000208781548110610b2957fe5b6000918252602090912060049091020154839063ffffffff61138f16565b9050610b5a610b546110ac565b8261148b565b85610b636110ac565b6001600160a01b03167fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb8342604051808381526020018281526020019250505060405180910390a350505050919050565b6000610535610bc16110ac565b846105c385604051806060016040528060258152602001611a086025913960016000610beb6110ac565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6112f816565b6000610535610c2f6110ac565b848461119c565b6000808311610c765760405162461bcd60e51b81526004018080602001828103825260278152602001806119986027913960400191505060405180910390fd5b60008211610cb55760405162461bcd60e51b81526004018080602001828103825260298152602001806118b66029913960400191505060405180910390fd5b82610cc6610cc16110ac565b61064a565b1015610d035760405162461bcd60e51b81526004018080602001828103825260298152602001806119056029913960400191505060405180910390fd5b60096000610d0f6110ac565b6001600160a01b031681526020808201929092526040908101600090812082516080810184528781524281860190815293810187815260608201848152835460018082018655948652969094209151600490960290910194855592519084015590516002830155516003909101805460ff1916911515919091179055610d9c610d966110ac565b8461157b565b610dd3600160096000610dad6110ac565b6001600160a01b031681526020810191909152604001600020549063ffffffff61167716565b610ddb6110ac565b6040805186815242602082015280820186905290516001600160a01b0392909216917f4d667732637549615f3cd28023b13380094dd975c0ac7c1b26916a8b1363b7ec9181900360600190a392915050565b600080600080610e3b6117ca565b6001600160a01b0387166000908152600960205260409020805487908110610e5f57fe5b60009182526020918290206040805160808101825260049390930290910180548084526001820154948401859052600282015492840183905260039091015460ff16151560609093018390529a929950975095509350505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600060066000610ef36110ac565b6001600160a01b0316815260208101919091526040016000205460ff1615610f54576040805162461bcd60e51b815260206004820152600f60248201526e2634b6b4ba1032bc31b2b2b232b21760891b604482015290519081900360640190fd5b60085463ffffffff16620186a01415610f8c57600754610f7b90600263ffffffff61144916565b6007556008805463ffffffff191690555b600160066000610f9a6110ac565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556008805463ffffffff19811663ffffffff918216600101909116179055610ff2610fea6110ac565b60075461148b565b610ffa6110ac565b6001600160a01b03167f214e597359607d253d273b990ec10788316369f1c0a60fd7d46d8ad75beb7f8e60075442604051808381526020018281526020019250505060405180910390a290565b61104f610722565b6110a0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6110a9816116b9565b50565b3390565b6001600160a01b0383166110f55760405162461bcd60e51b81526004018080602001828103825260248152602001806119e46024913960400191505060405180910390fd5b6001600160a01b03821661113a5760405162461bcd60e51b81526004018080602001828103825260228152602001806118946022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166111e15760405162461bcd60e51b81526004018080602001828103825260258152602001806119bf6025913960400191505060405180910390fd5b6001600160a01b0382166112265760405162461bcd60e51b81526004018080602001828103825260238152602001806118296023913960400191505060405180910390fd5b611269816040518060600160405280602681526020016118df602691396001600160a01b038616600090815260208190526040902054919063ffffffff6112f816565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461129e908263ffffffff61138f16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156113875760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561134c578181015183820152602001611334565b50505050905090810190601f1680156113795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156113e9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000826113ff57506000610539565b8282028284828161140c57fe5b04146113e95760405162461bcd60e51b815260040180806020018281038252602181526020018061192e6021913960400191505060405180910390fd5b60006113e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611765565b6001600160a01b0382166114e6576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546114f9908263ffffffff61138f16565b6002556001600160a01b038216600090815260208190526040902054611525908263ffffffff61138f16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166115c05760405162461bcd60e51b81526004018080602001828103825260218152602001806119776021913960400191505060405180910390fd5b6116038160405180606001604052806022815260200161184c602291396001600160a01b038516600090815260208190526040902054919063ffffffff6112f816565b6001600160a01b03831660009081526020819052604090205560025461162f908263ffffffff61167716565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006113e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112f8565b6001600160a01b0381166116fe5760405162461bcd60e51b815260040180806020018281038252602681526020018061186e6026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081836117b45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561134c578181015183820152602001611334565b5060008385816117c057fe5b0495945050505050565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe5265636f72642063616e6e6f74206265206d696e746564206265666f726520746865206c6f636b20706572696f6420656e64732e45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737354686520706572696f642073686f756c64206e6f74206265206c657373207468616e2031206461792e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365596f75722062616c616e636520646f6573206e6f74206861766520656e6f75676820746f6b656e732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737354686520616d6f756e742073686f756c642062652067726561746572207468616e207a65726f2e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820f294ce8f2954bf98a8e131599896326a7787b5295d605e37950c6f859415906d64736f6c63430005110032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000000e4772616e6f2050726f746f636f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054752414e4f000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Grano Protocol
Arg [1] : _symbol (string): GRANO
Arg [2] : _decimals (uint8): 18
Arg [3] : _initial_supply (uint32): 1000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 00000000000000000000000000000000000000000000000000000000000f4240
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [5] : 4772616e6f2050726f746f636f6c000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 4752414e4f000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

22530:3352:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22530:3352:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7513:83;;;:::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;7513:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16621:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16621:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15642:91;;;:::i;:::-;;;;;;;;;;;;;;;;17245:304;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17245:304:0;;;;;;;;;;;;;;;;;:::i;8365:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17958:210;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17958:210:0;;;;;;;;:::i;24938:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24938:114:0;-1:-1:-1;;;;;24938:114:0;;:::i;15796:110::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15796:110:0;-1:-1:-1;;;;;15796:110:0;;:::i;6002:140::-;;;:::i;:::-;;5191:79;;;:::i;:::-;;;;-1:-1:-1;;;;;5191:79:0;;;;;;;;;;;;;;5557:94;;;:::i;25763:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25763:114:0;-1:-1:-1;;;;;25763:114:0;;:::i;7715:87::-;;;:::i;24060:866::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24060:866:0;;:::i;18671:261::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18671:261:0;;;;;;;;:::i;16119:158::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16119:158:0;;;;;;;;:::i;23519:529::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23519:529:0;;;;;;;:::i;25064:235::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25064:235:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16340:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16340:134:0;;;;;;;;;;:::i;25311:440::-;;;:::i;6297:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6297:109:0;-1:-1:-1;;;;;6297:109:0;;:::i;7513:83::-;7583:5;7576:12;;;;;;;;-1:-1:-1;;7576:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:13;;7576:12;;7583:5;;7576:12;;7583:5;7576:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7513:83;:::o;16621:152::-;16687:4;16704:39;16713:12;:10;:12::i;:::-;16727:7;16736:6;16704:8;:39::i;:::-;-1:-1:-1;16761:4:0;16621:152;;;;;:::o;15642:91::-;15713:12;;15642:91;:::o;17245:304::-;17334:4;17351:36;17361:6;17369:9;17380:6;17351:9;:36::i;:::-;17398:121;17407:6;17415:12;:10;:12::i;:::-;17429:89;17467:6;17429:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17429:19:0;;;;;;:11;:19;;;;;;17449:12;:10;:12::i;:::-;-1:-1:-1;;;;;17429:33:0;;;;;;;;;;;;-1:-1:-1;17429:33:0;;;:89;;:37;:89;:::i;:::-;17398:8;:121::i;:::-;-1:-1:-1;17537:4:0;17245:304;;;;;:::o;8365:83::-;8431:9;;;;8365:83;:::o;17958:210::-;18038:4;18055:83;18064:12;:10;:12::i;:::-;18078:7;18087:50;18126:10;18087:11;:25;18099:12;:10;:12::i;:::-;-1:-1:-1;;;;;18087:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18087:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;24938:114::-;-1:-1:-1;;;;;25026:11:0;24999:7;25026:11;;;:4;:11;;;;;:18;;24938:114::o;15796:110::-;-1:-1:-1;;;;;15880:18:0;15853:7;15880:18;;;;;;;;;;;;15796:110::o;6002:140::-;5403:9;:7;:9::i;:::-;5395:54;;;;;-1:-1:-1;;;5395:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6085:6;;6064:40;;6101:1;;6085:6;;;-1:-1:-1;;;;;6085:6:0;;6064:40;;6101:1;;6064:40;6115:6;:19;;-1:-1:-1;;;;;;6115:19:0;;;6002:140::o;5191:79::-;5256:6;;;;;-1:-1:-1;;;;;5256:6:0;;5191:79::o;5557:94::-;5637:6;;5597:4;;5637:6;;;-1:-1:-1;;;;;5637:6:0;5621:12;:10;:12::i;:::-;-1:-1:-1;;;;;5621:22:0;;5614:29;;5557:94;:::o;25763:114::-;-1:-1:-1;;;;;25849:20:0;25825:4;25849:20;;;:13;:20;;;;;;;;;25763:114::o;7715:87::-;7787:7;7780:14;;;;;;;;-1:-1:-1;;7780:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7754:13;;7780:14;;7787:7;;7780:14;;7787:7;7780:14;;;;;;;;;;;;;;;;;;;;;;;;24060:866;24109:4;24162;:18;24167:12;:10;:12::i;:::-;-1:-1:-1;;;;;24162:18:0;;;;;;;;;;;;-1:-1:-1;24162:18:0;:25;24152:35;;24126:88;;;;;-1:-1:-1;;;24126:88:0;;;;;;;;;;;;-1:-1:-1;;;24126:88:0;;;;;;;;;;;;;;;24234:4;:18;24239:12;:10;:12::i;:::-;-1:-1:-1;;;;;24234:18:0;-1:-1:-1;;;;;24234:18:0;;;;;;;;;;;;24253:7;24234:27;;;;;;;;;;;;;;;;:34;:27;;;;;:34;;;;24233:35;24225:70;;;;;-1:-1:-1;;;24225:70:0;;;;;;;;;;;;-1:-1:-1;;;24225:70:0;;;;;;;;;;;;;;;24413:3;24315:93;24357:50;24401:5;24357:4;:18;24362:12;:10;:12::i;:::-;-1:-1:-1;;;;;24357:18:0;-1:-1:-1;;;;;24357:18:0;;;;;;;;;;;;24376:7;24357:27;;;;;;;;;;;;;;;;;;:39;;;:43;;:50;;;;:::i;:::-;24315:4;:18;24320:12;:10;:12::i;:::-;-1:-1:-1;;;;;24315:18:0;-1:-1:-1;;;;;24315:18:0;;;;;;;;;;;;24334:7;24315:27;;;;;;;;;;;;;;;;;;:37;;;:41;;:93;;;;:::i;:::-;24314:102;;24306:167;;;;-1:-1:-1;;;24306:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24521:4;24484;:18;24489:12;:10;:12::i;:::-;-1:-1:-1;;;;;24484:18:0;-1:-1:-1;;;;;24484:18:0;;;;;;;;;;;;24503:7;24484:27;;;;;;;;;;;;;;;;;;;;;:34;;:41;;-1:-1:-1;;24484:41:0;;;;;;;;;;;24596:1;24553:4;24484:27;24558:12;:10;:12::i;:::-;-1:-1:-1;;;;;24553:18:0;-1:-1:-1;;;;;24553:18:0;;;;;;;;;;;;24572:7;24553:27;;;;;;;;;;;;;;;;;;:39;;;:44;24536:61;;24608:18;24629:17;24640:5;24629:6;:10;;:17;;;;:::i;:::-;24608:38;;24657:20;24680:57;24695:4;:18;24700:12;:10;:12::i;:::-;-1:-1:-1;;;;;24695:18:0;-1:-1:-1;;;;;24695:18:0;;;;;;;;;;;;24714:7;24695:27;;;;;;;;;;;;;;;;;;;;;:41;24680:10;;:57;:14;:57;:::i;:::-;24657:80;;24748:14;24765:59;24782:4;:18;24787:12;:10;:12::i;:::-;-1:-1:-1;;;;;24782:18:0;-1:-1:-1;;;;;24782:18:0;;;;;;;;;;;;24801:7;24782:27;;;;;;;;;;;;;;;;;;;;;:41;24765:12;;:59;:16;:59;:::i;:::-;24748:76;;24835:27;24841:12;:10;:12::i;:::-;24855:6;24835:5;:27::i;:::-;24897:7;24883:12;:10;:12::i;:::-;-1:-1:-1;;;;;24878:40:0;;24906:6;24914:3;24878:40;;;;;;;;;;;;;;;;;;;;;;;;24060:866;;;;;;;:::o;18671:261::-;18756:4;18773:129;18782:12;:10;:12::i;:::-;18796:7;18805:96;18844:15;18805:96;;;;;;;;;;;;;;;;;:11;:25;18817:12;:10;:12::i;:::-;-1:-1:-1;;;;;18805:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18805:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;16119:158::-;16188:4;16205:42;16215:12;:10;:12::i;:::-;16229:9;16240:6;16205:9;:42::i;23519:529::-;23586:4;23621:1;23611:7;:11;23603:63;;;;-1:-1:-1;;;23603:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23695:1;23685:7;:11;23677:65;;;;-1:-1:-1;;;23677:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23788:7;23761:23;23771:12;:10;:12::i;:::-;23761:9;:23::i;:::-;:34;;23753:88;;;;-1:-1:-1;;;23753:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23852:4;:18;23857:12;:10;:12::i;:::-;-1:-1:-1;;;;;23852:18:0;;;;;;;;;;;;;;;-1:-1:-1;23852:18:0;;;23876:33;;;;;;;;;;23891:3;23876:33;;;;;;;;;;;;;;;;;;27:10:-1;;23876:33:0;23:18:-1;;;45:23;;23852:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23852:58:0;;;;;;;;;;23921:28;23927:12;:10;:12::i;:::-;23941:7;23921:5;:28::i;:::-;23984:32;24014:1;23984:4;:18;23989:12;:10;:12::i;:::-;-1:-1:-1;;;;;23984:18:0;;;;;;;;;;;;-1:-1:-1;23984:18:0;:25;;:32;:29;:32;:::i;:::-;23970:12;:10;:12::i;:::-;23965:75;;;;;;24027:3;23965:75;;;;;;;;;;;;-1:-1:-1;;;;;23965:75:0;;;;;;;;;;;;;;23519:529;;;;:::o;25064:235::-;25136:7;25145;25154;25163:4;25180:15;;:::i;:::-;-1:-1:-1;;;;;25198:11:0;;;;;;:4;:11;;;;;:20;;25210:7;;25198:20;;;;;;;;;;;;;;;25180:38;;;;;;;;25198:20;;;;;;;;25180:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25180:38:0;-1:-1:-1;25180:38:0;-1:-1:-1;25064:235:0;-1:-1:-1;;;;25064:235:0:o;16340:134::-;-1:-1:-1;;;;;16439:18:0;;;16412:7;16439:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16340:134::o;25311:440::-;25347:4;25373:13;:27;25387:12;:10;:12::i;:::-;-1:-1:-1;;;;;25373:27:0;;;;;;;;;;;;-1:-1:-1;25373:27:0;;;;25372:28;25364:56;;;;;-1:-1:-1;;;25364:56:0;;;;;;;;;;;;-1:-1:-1;;;25364:56:0;;;;;;;;;;;;;;;25435:20;;;;25459:6;25435:30;25431:136;;;25497:12;;:19;;25514:1;25497:19;:16;:19;:::i;:::-;25482:12;:34;25531:20;:24;;-1:-1:-1;;25531:24:0;;;25431:136;25607:4;25577:13;:27;25591:12;:10;:12::i;:::-;-1:-1:-1;;;;;25577:27:0;;;;;;;;;;;;-1:-1:-1;25577:27:0;:34;;-1:-1:-1;;25577:34:0;;;;;;;;;;25622:20;:22;;-1:-1:-1;;25622:22:0;;;;;;-1:-1:-1;25622:22:0;;;;;;;25655:33;25661:12;:10;:12::i;:::-;25675;;25655:5;:33::i;:::-;25711:12;:10;:12::i;:::-;-1:-1:-1;;;;;25704:39:0;;25725:12;;25739:3;25704:39;;;;;;;;;;;;;;;;;;;;;;;;25311:440;:::o;6297:109::-;5403:9;:7;:9::i;:::-;5395:54;;;;;-1:-1:-1;;;5395:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6370:28;6389:8;6370:18;:28::i;:::-;6297:109;:::o;911:98::-;991:10;911:98;:::o;21602:338::-;-1:-1:-1;;;;;21696:19:0;;21688:68;;;;-1:-1:-1;;;21688:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21775:21:0;;21767:68;;;;-1:-1:-1;;;21767:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21848:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21900:32;;;;;;;;;;;;;;;;;21602:338;;;:::o;19422:471::-;-1:-1:-1;;;;;19520:20:0;;19512:70;;;;-1:-1:-1;;;19512:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19601:23:0;;19593:71;;;;-1:-1:-1;;;19593:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19697;19719:6;19697:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19697:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;19677:17:0;;;:9;:17;;;;;;;;;;;:91;;;;19802:20;;;;;;;:32;;19827:6;19802:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;19779:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;19850:35;;;;;;;19779:20;;19850:35;;;;;;;;;;;;;19422:471;;;:::o;10350:192::-;10436:7;10472:12;10464:6;;;;10456:29;;;;-1:-1:-1;;;10456: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;10456:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10508:5:0;;;10350:192::o;9421:181::-;9479:7;9511:5;;;9535:6;;;;9527:46;;;;;-1:-1:-1;;;9527:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9593:1;9421:181;-1:-1:-1;;;9421:181:0:o;10793:471::-;10851:7;11096:6;11092:47;;-1:-1:-1;11126:1:0;11119:8;;11092:47;11163:5;;;11167:1;11163;:5;:1;11187:5;;;;;:10;11179:56;;;;-1:-1:-1;;;11179:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11732:132;11790:7;11817:39;11821:1;11824;11817:39;;;;;;;;;;;;;;;;;:3;:39::i;20174:308::-;-1:-1:-1;;;;;20250:21:0;;20242:65;;;;;-1:-1:-1;;;20242:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20335:12;;:24;;20352:6;20335:24;:16;:24;:::i;:::-;20320:12;:39;-1:-1:-1;;;;;20391:18:0;;:9;:18;;;;;;;;;;;:30;;20414:6;20391:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;20370:18:0;;:9;:18;;;;;;;;;;;:51;;;;20437:37;;;;;;;20370:18;;:9;;20437:37;;;;;;;;;;20174:308;;:::o;20814:348::-;-1:-1:-1;;;;;20890:21:0;;20882:67;;;;-1:-1:-1;;;20882:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20983:68;21006:6;20983:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20983:18:0;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;20962:18:0;;:9;:18;;;;;;;;;;:89;21077:12;;:24;;21094:6;21077:24;:16;:24;:::i;:::-;21062:12;:39;21117:37;;;;;;;;21143:1;;-1:-1:-1;;;;;21117:37:0;;;;;;;;;;;;20814:348;;:::o;9877:136::-;9935:7;9962:43;9966:1;9969;9962:43;;;;;;;;;;;;;;;;;:3;:43::i;6512:229::-;-1:-1:-1;;;;;6586:22:0;;6578:73;;;;-1:-1:-1;;;6578:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6688:6;;6667:38;;-1:-1:-1;;;;;6667:38:0;;;;6688:6;;;;;6667:38;;;;;6716:6;:17;;-1:-1:-1;;;;;6716:17:0;;;;;-1:-1:-1;;;;;;6716:17:0;;;;;;;;;6512:229::o;12394:345::-;12480:7;12582:12;12575:5;12567:28;;;;-1:-1:-1;;;12567:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12567:28:0;;12606:9;12622:1;12618;:5;;;;;;;12394:345;-1:-1:-1;;;;;12394:345:0:o;22530:3352::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://f294ce8f2954bf98a8e131599896326a7787b5295d605e37950c6f859415906d
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.