ETH Price: $3,388.65 (-1.29%)

Contract

0xDaF88906aC1DE12bA2b1D2f7bfC94E9638Ac40c4
 
Transaction Hash
Method
Block
From
To
Approve211395482024-11-08 1:08:3519 days ago1731028115IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.0006219413.35387723
Transfer211193952024-11-05 5:35:3521 days ago1730784935IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000148583.17100931
Approve210714482024-10-29 12:59:5928 days ago1730206799IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000499120.54794963
Approve210110122024-10-21 2:37:4737 days ago1729478267IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000326797.01658677
Approve209381262024-10-10 22:13:1147 days ago1728598391IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.0005073910.976376
Approve209206412024-10-08 11:44:1149 days ago1728387851IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.00055211.92291563
Approve208853882024-10-03 13:48:3554 days ago1727963315IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000191737.89347625
Transfer208688012024-10-01 6:17:4756 days ago1727763467IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.0007805716.65041553
Transfer208352152024-09-26 13:53:3561 days ago1727358815IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000923631.03916752
Transfer205381792024-08-16 2:24:23103 days ago1723775063IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000131192.53910911
Transfer205331122024-08-15 9:23:35103 days ago1723713815IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000084072.82428963
Approve205328622024-08-15 8:33:23103 days ago1723710803IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000167023.58627548
Approve204878312024-08-09 1:43:35110 days ago1723167815IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000113122.43196531
Transfer204697472024-08-06 13:11:47112 days ago1722949907IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000238375.08611494
Transfer203361462024-07-18 21:38:47131 days ago1721338727IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000382338.15972412
Transfer201948622024-06-29 4:09:23151 days ago1719634163IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000098563.31229986
Transfer201653302024-06-25 1:10:59155 days ago1719277859IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000114233.83739789
Transfer200992042024-06-15 19:12:35164 days ago1718478755IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000159035.34691933
Transfer199983872024-06-01 17:12:59178 days ago1717261979IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.0007735815
Transfer199961622024-06-01 9:46:11178 days ago1717235171IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000363897.76624741
Approve199933572024-06-01 0:21:47179 days ago1717201307IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000295046.34304169
Transfer199834992024-05-30 15:17:23180 days ago1717082243IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.0009358731.45164362
Transfer197845992024-05-02 19:43:59208 days ago1714679039IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000330696.3988236
Transfer197703472024-04-30 19:55:35210 days ago1714506935IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.0006373113.60163479
Transfer197030362024-04-21 9:58:47219 days ago1713693527IN
EpiK Protocol: Old ERC20-EPK Token
0 ETH0.000237217.97829653
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EPK

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity ^0.5.0;

/**
 * @title Math
 * @dev Assorted math operations.
 */
library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Calculates the average of two numbers. Since these are integers,
     * averages of an even and odd number cannot be represented, and will be
     * rounded down.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow, so we distribute
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error.
 */
library SafeMath {
    /**
     * @dev Multiplies two unsigned integers, 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, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        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 unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Adds two unsigned integers, reverts on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Divides two unsigned integers 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, "SafeMath: modulo by zero");
        return a % b;
    }
}

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

contract MinterRole {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    constructor () internal {
        _addMinter(msg.sender);
    }

    modifier onlyMinter() {
        require(isMinter(msg.sender), "MinterRole: caller does not have the Minter role");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return _minters.has(account);
    }

    function addMinter(address account) public onlyMinter {
        _addMinter(account);
    }

    function renounceMinter() public {
        _removeMinter(msg.sender);
    }

    function _addMinter(address account) internal {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function _removeMinter(address account) internal {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}

/**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-20
 */
interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://eips.ethereum.org/EIPS/eip-20
 * Originally based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 *
 * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for
 * all accounts just by listening to said events. Note that this isn't required by the specification, and other
 * compliant implementations may not do it.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    /**
     * @dev Total number of tokens in existence.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev Gets the balance of the specified address.
     * @param owner The address to query the balance of.
     * @return A uint256 representing the amount owned by the passed address.
     */
    function balanceOf(address owner) public view returns (uint256) {
        return _balances[owner];
    }

    /**
     * @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) {
        return _allowances[owner][spender];
    }

    /**
     * @dev Transfer token to a specified address.
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, 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) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another.
     * Note that while this function emits an Approval event, this is not required as per the specification,
     * and other compliant implementations may not emit the event.
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _transfer(from, to, value);
        _approve(from, msg.sender, _allowances[from][msg.sender].sub(value));
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowances[msg.sender][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
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowances[msg.sender][spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Transfer token for a specified addresses.
     * @param from The address to transfer from.
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0), "ERC20: transfer to the zero address");

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    /**
     * @dev Internal function that mints an amount of the token and assigns it to
     * an account. This encapsulates the modification of balances such that the
     * proper events are emitted.
     * @param account The account that will receive the created tokens.
     * @param value The amount that will be created.
     */
    function _mint(address account, uint256 value) internal {
        require(account != address(0), "ERC20: mint to the zero address");

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

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account.
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");

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

    /**
     * @dev Approve an address to spend another addresses' tokens.
     * @param owner The address that owns the tokens.
     * @param spender The address that will spend the tokens.
     * @param value The number of tokens that can be spent.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account, deducting from the sender's allowance for said account. Uses the
     * internal burn function.
     * Emits an Approval event (reflecting the reduced allowance).
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burnFrom(address account, uint256 value) internal {
        _burn(account, value);
        _approve(account, msg.sender, _allowances[account][msg.sender].sub(value));
    }
}

/**
 * @title ERC20Mintable
 * @dev ERC20 minting logic.
 */
contract ERC20Mintable is ERC20, MinterRole {
    /**
     * @dev Function to mint tokens
     * @param to The address that will receive the minted tokens.
     * @param value The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address to, uint256 value) public onlyMinter returns (bool) {
        _mint(to, value);
        return true;
    }
}

/**
 * @title ERC20Detailed token
 * @dev The decimals are only for visualization purposes.
 * All the operations are done using the smallest and indivisible token unit,
 * just as on Ethereum all the operations are done in wei.
 */
contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

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

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

/**
 * @title Capped token
 * @dev Mintable token with a token cap.
 */
contract ERC20Capped is ERC20Mintable {
    uint256 private _cap;

    constructor (uint256 cap) public {
        require(cap > 0, "ERC20Capped: cap is 0");
        _cap = cap;
    }

    /**
     * @return the cap for the token minting.
     */
    function cap() public view returns (uint256) {
        return _cap;
    }

    function _mint(address account, uint256 value) internal {
        require(totalSupply().add(value) <= _cap, "ERC20Capped: cap exceeded");
        super._mint(account, value);
    }
}

contract EPK is ERC20Capped, ERC20Detailed {

    constructor(uint256 cap, string memory name, string memory symbol, uint8 decimals)
    ERC20Capped(cap) ERC20Detailed(name, symbol, decimals) public {}

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"cap","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"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":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterRemoved","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":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"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":[{"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001d4938038062001d49833981810160405260808110156200003757600080fd5b8101908080519060200190929190805160405193929190846401000000008211156200006257600080fd5b838201915060208201858111156200007957600080fd5b82518660018202830111640100000000821117156200009757600080fd5b8083526020830192505050908051906020019080838360005b83811015620000cd578082015181840152602081019050620000b0565b50505050905090810190601f168015620000fb5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011f57600080fd5b838201915060208201858111156200013657600080fd5b82518660018202830111640100000000821117156200015457600080fd5b8083526020830192505050908051906020019080838360005b838110156200018a5780820151818401526020810190506200016d565b50505050905090810190601f168015620001b85780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919050505082828286620001e133620002ba60201b60201c565b6000811162000258576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f45524332304361707065643a206361702069732030000000000000000000000081525060200191505060405180910390fd5b8060048190555050826005908051906020019062000278929190620004df565b50816006908051906020019062000291929190620004df565b5080600760006101000a81548160ff021916908360ff160217905550505050505050506200058e565b620002d58160036200031b60201b620014e01790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6200032d8282620003ff60201b60201c565b15620003a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062001d276022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200052257805160ff191683800117855562000553565b8280016001018555821562000553579182015b828111156200055257825182559160200191906001019062000535565b5b50905062000562919062000566565b5090565b6200058b91905b80821115620005875760008160009055506001016200056d565b5090565b90565b611789806200059e6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146104c9578063a9059cbb1461052f578063aa271e1a14610595578063dd62ed3e146105f157610100565b806370a08231146103a057806395d89b41146103f8578063983b2d561461047b57806398650275146104bf57610100565b8063313ce567116100d3578063313ce56714610292578063355274ea146102b657806339509351146102d457806340c10f191461033a57610100565b806306fdde0314610105578063095ea7b31461018857806318160ddd146101ee57806323b872dd1461020c575b600080fd5b61010d610669565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014d578082015181840152602081019050610132565b50505050905090810190601f16801561017a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d46004803603604081101561019e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061070b565b604051808215151515815260200191505060405180910390f35b6101f6610722565b6040518082815260200191505060405180910390f35b6102786004803603606081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061072c565b604051808215151515815260200191505060405180910390f35b61029a6107dd565b604051808260ff1660ff16815260200191505060405180910390f35b6102be6107f4565b6040518082815260200191505060405180910390f35b610320600480360360408110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107fe565b604051808215151515815260200191505060405180910390f35b6103866004803603604081101561035057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a3565b604051808215151515815260200191505060405180910390f35b6103e2600480360360208110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610917565b6040518082815260200191505060405180910390f35b61040061095f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610440578082015181840152602081019050610425565b50505050905090810190601f16801561046d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104bd6004803603602081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a01565b005b6104c7610a6b565b005b610515600480360360408110156104df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a76565b604051808215151515815260200191505060405180910390f35b61057b6004803603604081101561054557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b1b565b604051808215151515815260200191505060405180910390f35b6105d7600480360360208110156105ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b32565b604051808215151515815260200191505060405180910390f35b6106536004803603604081101561060757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b4f565b6040518082815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b6000610718338484610bd6565b6001905092915050565b6000600254905090565b6000610739848484610dcd565b6107d284336107cd85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe390919063ffffffff16565b610bd6565b600190509392505050565b6000600760009054906101000a900460ff16905090565b6000600454905090565b6000610899338461089485600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b610bd6565b6001905092915050565b60006108ae33610b32565b610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806116be6030913960400191505060405180910390fd5b61090d83836110f4565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109f75780601f106109cc576101008083540402835291602001916109f7565b820191906000526020600020905b8154815290600101906020018083116109da57829003601f168201915b5050505050905090565b610a0a33610b32565b610a5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806116be6030913960400191505060405180910390fd5b610a6881611193565b50565b610a74336111ed565b565b6000610b113384610b0c85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe390919063ffffffff16565b610bd6565b6001905092915050565b6000610b28338484610dcd565b6001905092915050565b6000610b4882600361124790919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117316024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061169c6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116796023913960400191505060405180910390fd5b610ea4816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f37816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561105b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b6000808284019050838110156110ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60045461111182611103610722565b61106c90919063ffffffff16565b1115611185576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b61118f8282611325565b5050565b6111a78160036114e090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6112018160036115bb90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061170f6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6113dd8160025461106c90919063ffffffff16565b600281905550611434816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6114ea8282611247565b1561155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6115c58282611247565b61161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116ee6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723158204afb11230b2740ffcd199fc2b22157b49939b0506a5f5c7697c349e3a253571164736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f20616464726573730000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000d4570694b2050726f746f636f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000945524332302d45504b0000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146104c9578063a9059cbb1461052f578063aa271e1a14610595578063dd62ed3e146105f157610100565b806370a08231146103a057806395d89b41146103f8578063983b2d561461047b57806398650275146104bf57610100565b8063313ce567116100d3578063313ce56714610292578063355274ea146102b657806339509351146102d457806340c10f191461033a57610100565b806306fdde0314610105578063095ea7b31461018857806318160ddd146101ee57806323b872dd1461020c575b600080fd5b61010d610669565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014d578082015181840152602081019050610132565b50505050905090810190601f16801561017a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d46004803603604081101561019e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061070b565b604051808215151515815260200191505060405180910390f35b6101f6610722565b6040518082815260200191505060405180910390f35b6102786004803603606081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061072c565b604051808215151515815260200191505060405180910390f35b61029a6107dd565b604051808260ff1660ff16815260200191505060405180910390f35b6102be6107f4565b6040518082815260200191505060405180910390f35b610320600480360360408110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107fe565b604051808215151515815260200191505060405180910390f35b6103866004803603604081101561035057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a3565b604051808215151515815260200191505060405180910390f35b6103e2600480360360208110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610917565b6040518082815260200191505060405180910390f35b61040061095f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610440578082015181840152602081019050610425565b50505050905090810190601f16801561046d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104bd6004803603602081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a01565b005b6104c7610a6b565b005b610515600480360360408110156104df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a76565b604051808215151515815260200191505060405180910390f35b61057b6004803603604081101561054557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b1b565b604051808215151515815260200191505060405180910390f35b6105d7600480360360208110156105ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b32565b604051808215151515815260200191505060405180910390f35b6106536004803603604081101561060757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b4f565b6040518082815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b6000610718338484610bd6565b6001905092915050565b6000600254905090565b6000610739848484610dcd565b6107d284336107cd85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe390919063ffffffff16565b610bd6565b600190509392505050565b6000600760009054906101000a900460ff16905090565b6000600454905090565b6000610899338461089485600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b610bd6565b6001905092915050565b60006108ae33610b32565b610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806116be6030913960400191505060405180910390fd5b61090d83836110f4565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109f75780601f106109cc576101008083540402835291602001916109f7565b820191906000526020600020905b8154815290600101906020018083116109da57829003601f168201915b5050505050905090565b610a0a33610b32565b610a5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806116be6030913960400191505060405180910390fd5b610a6881611193565b50565b610a74336111ed565b565b6000610b113384610b0c85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe390919063ffffffff16565b610bd6565b6001905092915050565b6000610b28338484610dcd565b6001905092915050565b6000610b4882600361124790919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117316024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061169c6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116796023913960400191505060405180910390fd5b610ea4816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f37816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561105b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b6000808284019050838110156110ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60045461111182611103610722565b61106c90919063ffffffff16565b1115611185576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b61118f8282611325565b5050565b6111a78160036114e090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6112018160036115bb90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061170f6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6113dd8160025461106c90919063ffffffff16565b600281905550611434816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6114ea8282611247565b1561155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6115c58282611247565b61161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116ee6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723158204afb11230b2740ffcd199fc2b22157b49939b0506a5f5c7697c349e3a253571164736f6c63430005110032

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

0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000d4570694b2050726f746f636f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000945524332302d45504b0000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : cap (uint256): 1000000000000000000000000000
Arg [1] : name (string): EpiK Protocol
Arg [2] : symbol (string): ERC20-EPK
Arg [3] : decimals (uint8): 18

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [5] : 4570694b2050726f746f636f6c00000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [7] : 45524332302d45504b0000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

15754:209:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15754:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14738:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14738:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8377:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8377:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6526:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8998:231;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8998:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15054:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15481:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9758:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9758:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14001:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14001:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6836:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6836:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14888:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14888:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4457:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4457:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4557:77;;;:::i;:::-;;10498:216;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10498:216:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7590:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7590:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4340:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4340:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7281:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7281:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14738:83;14775:13;14808:5;14801:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14738:83;:::o;8377:148::-;8442:4;8459:36;8468:10;8480:7;8489:5;8459:8;:36::i;:::-;8513:4;8506:11;;8377:148;;;;:::o;6526:91::-;6570:7;6597:12;;6590:19;;6526:91;:::o;8998:231::-;9077:4;9094:26;9104:4;9110:2;9114:5;9094:9;:26::i;:::-;9131:68;9140:4;9146:10;9158:40;9192:5;9158:11;:17;9170:4;9158:17;;;;;;;;;;;;;;;:29;9176:10;9158:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;9131:8;:68::i;:::-;9217:4;9210:11;;8998:231;;;;;:::o;15054:83::-;15095:5;15120:9;;;;;;;;;;;15113:16;;15054:83;:::o;15481:75::-;15517:7;15544:4;;15537:11;;15481:75;:::o;9758:206::-;9838:4;9855:79;9864:10;9876:7;9885:48;9922:10;9885:11;:23;9897:10;9885:23;;;;;;;;;;;;;;;:32;9909:7;9885:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;9855:8;:79::i;:::-;9952:4;9945:11;;9758:206;;;;:::o;14001:131::-;14069:4;4239:20;4248:10;4239:8;:20::i;:::-;4231:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14086:16;14092:2;14096:5;14086;:16::i;:::-;14120:4;14113:11;;14001:131;;;;:::o;6836:106::-;6891:7;6918:9;:16;6928:5;6918:16;;;;;;;;;;;;;;;;6911:23;;6836:106;;;:::o;14888:87::-;14927:13;14960:7;14953:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14888:87;:::o;4457:92::-;4239:20;4248:10;4239:8;:20::i;:::-;4231:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4522:19;4533:7;4522:10;:19::i;:::-;4457:92;:::o;4557:77::-;4601:25;4615:10;4601:13;:25::i;:::-;4557:77::o;10498:216::-;10583:4;10600:84;10609:10;10621:7;10630:53;10667:15;10630:11;:23;10642:10;10630:23;;;;;;;;;;;;;;;:32;10654:7;10630:32;;;;;;;;;;;;;;;;:36;;:53;;;;:::i;:::-;10600:8;:84::i;:::-;10702:4;10695:11;;10498:216;;;;:::o;7590:140::-;7651:4;7668:32;7678:10;7690:2;7694:5;7668:9;:32::i;:::-;7718:4;7711:11;;7590:140;;;;:::o;4340:109::-;4396:4;4420:21;4433:7;4420:8;:12;;:21;;;;:::i;:::-;4413:28;;4340:109;;;:::o;7281:134::-;7353:7;7380:11;:18;7392:5;7380:18;;;;;;;;;;;;;;;:27;7399:7;7380:27;;;;;;;;;;;;;;;;7373:34;;7281:134;;;;:::o;12712:335::-;12822:1;12805:19;;:5;:19;;;;12797:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12903:1;12884:21;;:7;:21;;;;12876:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12987:5;12957:11;:18;12969:5;12957:18;;;;;;;;;;;;;;;:27;12976:7;12957:27;;;;;;;;;;;;;;;:35;;;;13024:7;13008:31;;13017:5;13008:31;;;13033:5;13008:31;;;;;;;;;;;;;;;;;;12712:335;;;:::o;10942:301::-;11044:1;11030:16;;:2;:16;;;;11022:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11117:26;11137:5;11117:9;:15;11127:4;11117:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;11099:9;:15;11109:4;11099:15;;;;;;;;;;;;;;;:44;;;;11170:24;11188:5;11170:9;:13;11180:2;11170:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;11154:9;:13;11164:2;11154:13;;;;;;;;;;;;;;;:40;;;;11225:2;11210:25;;11219:4;11210:25;;;11229:5;11210:25;;;;;;;;;;;;;;;;;;10942:301;;;:::o;2159:184::-;2217:7;2250:1;2245;:6;;2237:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2297:9;2313:1;2309;:5;2297:17;;2334:1;2327:8;;;2159:184;;;;:::o;2431:181::-;2489:7;2509:9;2525:1;2521;:5;2509:17;;2550:1;2545;:6;;2537:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:1;2596:8;;;2431:181;;;;:::o;15564:183::-;15667:4;;15639:24;15657:5;15639:13;:11;:13::i;:::-;:17;;:24;;;;:::i;:::-;:32;;15631:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15712:27;15724:7;15733:5;15712:11;:27::i;:::-;15564:183;;:::o;4642:122::-;4699:21;4712:7;4699:8;:12;;:21;;;;:::i;:::-;4748:7;4736:20;;;;;;;;;;;;4642:122;:::o;4772:130::-;4832:24;4848:7;4832:8;:15;;:24;;;;:::i;:::-;4886:7;4872:22;;;;;;;;;;;;4772:130;:::o;3715:203::-;3787:4;3831:1;3812:21;;:7;:21;;;;3804:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3890:4;:11;;:20;3902:7;3890:20;;;;;;;;;;;;;;;;;;;;;;;;;3883:27;;3715:203;;;;:::o;11595:304::-;11689:1;11670:21;;:7;:21;;;;11662:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11755:23;11772:5;11755:12;;:16;;:23;;;;:::i;:::-;11740:12;:38;;;;11810:29;11833:5;11810:9;:18;11820:7;11810:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;11789:9;:18;11799:7;11789:18;;;;;;;;;;;;;;;:50;;;;11876:7;11855:36;;11872:1;11855:36;;;11885:5;11855:36;;;;;;;;;;;;;;;;;;11595:304;;:::o;3179:178::-;3257:18;3261:4;3267:7;3257:3;:18::i;:::-;3256:19;3248:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3345:4;3322;:11;;:20;3334:7;3322:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3179:178;;:::o;3437:183::-;3517:18;3521:4;3527:7;3517:3;:18::i;:::-;3509:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3607:5;3584:4;:11;;:20;3596:7;3584:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3437:183;;:::o

Swarm Source

bzzr://4afb11230b2740ffcd199fc2b22157b49939b0506a5f5c7697c349e3a2535711

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

The project aims to build a knowledge vault by applying blockchain technology and crowdsourcing efforts - in the form of decentralized storage, decentralized autonomous organization, and tokenization, to construct a global collaborative decentralized knowledge graph and broadening AI’s horizons.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.