ETH Price: $1,971.01 (-0.53%)

Token

Suki (SUKI)
 

Overview

Max Total Supply

177,676.946452470021702957 SUKI

Holders

32

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,703.946547687152488965 SUKI

Value
$0.00
0x0d2f2aa6d52fda8a2f921f814482bfa2a0d0c2ca
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Suki

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-07-25
*/

// File: @openzeppelin/contracts@4.3.0/utils/Context.sol



pragma solidity ^0.8.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 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.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts@4.3.0/token/ERC20/IERC20.sol



pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

// File: @openzeppelin/contracts@4.3.0/token/ERC20/extensions/IERC20Metadata.sol



pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts@4.3.0/token/ERC20/ERC20.sol



pragma solidity ^0.8.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 {ERC20PresetMinterPauser}.
 *
 * 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 Contracts guidelines: functions revert
 * instead 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, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override 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. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * 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 virtual override returns (uint8) {
        return 18;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override 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 virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override 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 virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        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 virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + 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 virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This 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 virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(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:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(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 virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This 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 virtual {
        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 Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// File: @openzeppelin/contracts@4.3.0/token/ERC20/extensions/ERC20Burnable.sol



pragma solidity ^0.8.0;



/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        unchecked {
            _approve(account, _msgSender(), currentAllowance - amount);
        }
        _burn(account, amount);
    }
}

// File: contracts/suki.sol


pragma solidity ^0.8.0;


contract Suki is ERC20, ERC20Burnable {
    constructor(uint256 initialSupply) ERC20("Suki","SUKI") {
    _mint(msg.sender, initialSupply);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"}],"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001fac38038062001fac8339818101604052810190620000379190620002a4565b6040518060400160405280600481526020017f53756b69000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f53554b49000000000000000000000000000000000000000000000000000000008152508160039081620000b4919062000546565b508060049081620000c6919062000546565b505050620000db3382620000e260201b60201c565b5062000748565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000154576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200014b906200068e565b60405180910390fd5b62000168600083836200025a60201b60201c565b80600260008282546200017c9190620006df565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001d39190620006df565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200023a91906200072b565b60405180910390a362000256600083836200025f60201b60201c565b5050565b505050565b505050565b600080fd5b6000819050919050565b6200027e8162000269565b81146200028a57600080fd5b50565b6000815190506200029e8162000273565b92915050565b600060208284031215620002bd57620002bc62000264565b5b6000620002cd848285016200028d565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200035857607f821691505b6020821081036200036e576200036d62000310565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000399565b620003e4868362000399565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000427620004216200041b8462000269565b620003fc565b62000269565b9050919050565b6000819050919050565b620004438362000406565b6200045b62000452826200042e565b848454620003a6565b825550505050565b600090565b6200047262000463565b6200047f81848462000438565b505050565b5b81811015620004a7576200049b60008262000468565b60018101905062000485565b5050565b601f821115620004f657620004c08162000374565b620004cb8462000389565b81016020851015620004db578190505b620004f3620004ea8562000389565b83018262000484565b50505b505050565b600082821c905092915050565b60006200051b60001984600802620004fb565b1980831691505092915050565b600062000536838362000508565b9150826002028217905092915050565b6200055182620002d6565b67ffffffffffffffff8111156200056d576200056c620002e1565b5b6200057982546200033f565b62000586828285620004ab565b600060209050601f831160018114620005be5760008415620005a9578287015190505b620005b5858262000528565b86555062000625565b601f198416620005ce8662000374565b60005b82811015620005f857848901518255600182019150602085019450602081019050620005d1565b8683101562000618578489015162000614601f89168262000508565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000676601f836200062d565b915062000683826200063e565b602082019050919050565b60006020820190508181036000830152620006a98162000667565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006ec8262000269565b9150620006f98362000269565b9250828201905080821115620007145762000713620006b0565b5b92915050565b620007258162000269565b82525050565b60006020820190506200074260008301846200071a565b92915050565b61185480620007586000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610226578063a457c2d714610244578063a9059cbb14610274578063dd62ed3e146102a4576100cf565b806342966c68146101be57806370a08231146101da57806379cc67901461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e99190610ef4565b60405180910390f35b61010c60048036038101906101079190610faf565b610366565b604051610119919061100a565b60405180910390f35b61012a610384565b6040516101379190611034565b60405180910390f35b61015a6004803603810190610155919061104f565b61038e565b604051610167919061100a565b60405180910390f35b610178610486565b60405161018591906110be565b60405180910390f35b6101a860048036038101906101a39190610faf565b61048f565b6040516101b5919061100a565b60405180910390f35b6101d860048036038101906101d391906110d9565b61053b565b005b6101f460048036038101906101ef9190611106565b61054f565b6040516102019190611034565b60405180910390f35b610224600480360381019061021f9190610faf565b610597565b005b61022e610612565b60405161023b9190610ef4565b60405180910390f35b61025e60048036038101906102599190610faf565b6106a4565b60405161026b919061100a565b60405180910390f35b61028e60048036038101906102899190610faf565b61078f565b60405161029b919061100a565b60405180910390f35b6102be60048036038101906102b99190611133565b6107ad565b6040516102cb9190611034565b60405180910390f35b6060600380546102e3906111a2565b80601f016020809104026020016040519081016040528092919081815260200182805461030f906111a2565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b600061037a610373610834565b848461083c565b6001905092915050565b6000600254905090565b600061039b848484610a05565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e6610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90611245565b60405180910390fd5b61047a85610472610834565b85840361083c565b60019150509392505050565b60006012905090565b600061053161049c610834565b8484600160006104aa610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461052c9190611294565b61083c565b6001905092915050565b61054c610546610834565b82610c84565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006105aa836105a5610834565b6107ad565b9050818110156105ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e69061133a565b60405180910390fd5b610603836105fb610834565b84840361083c565b61060d8383610c84565b505050565b606060048054610621906111a2565b80601f016020809104026020016040519081016040528092919081815260200182805461064d906111a2565b801561069a5780601f1061066f5761010080835404028352916020019161069a565b820191906000526020600020905b81548152906001019060200180831161067d57829003601f168201915b5050505050905090565b600080600160006106b3610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610767906113cc565b60405180910390fd5b61078461077b610834565b8585840361083c565b600191505092915050565b60006107a361079c610834565b8484610a05565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29061145e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361091a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610911906114f0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109f89190611034565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b90611582565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90611614565b60405180910390fd5b610aee838383610e5a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b906116a6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c079190611294565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c6b9190611034565b60405180910390a3610c7e848484610e5f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90611738565b60405180910390fd5b610cff82600083610e5a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c906117ca565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610ddc91906117ea565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e419190611034565b60405180910390a3610e5583600084610e5f565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e9e578082015181840152602081019050610e83565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ec682610e64565b610ed08185610e6f565b9350610ee0818560208601610e80565b610ee981610eaa565b840191505092915050565b60006020820190508181036000830152610f0e8184610ebb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f4682610f1b565b9050919050565b610f5681610f3b565b8114610f6157600080fd5b50565b600081359050610f7381610f4d565b92915050565b6000819050919050565b610f8c81610f79565b8114610f9757600080fd5b50565b600081359050610fa981610f83565b92915050565b60008060408385031215610fc657610fc5610f16565b5b6000610fd485828601610f64565b9250506020610fe585828601610f9a565b9150509250929050565b60008115159050919050565b61100481610fef565b82525050565b600060208201905061101f6000830184610ffb565b92915050565b61102e81610f79565b82525050565b60006020820190506110496000830184611025565b92915050565b60008060006060848603121561106857611067610f16565b5b600061107686828701610f64565b935050602061108786828701610f64565b925050604061109886828701610f9a565b9150509250925092565b600060ff82169050919050565b6110b8816110a2565b82525050565b60006020820190506110d360008301846110af565b92915050565b6000602082840312156110ef576110ee610f16565b5b60006110fd84828501610f9a565b91505092915050565b60006020828403121561111c5761111b610f16565b5b600061112a84828501610f64565b91505092915050565b6000806040838503121561114a57611149610f16565b5b600061115885828601610f64565b925050602061116985828601610f64565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ba57607f821691505b6020821081036111cd576111cc611173565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061122f602883610e6f565b915061123a826111d3565b604082019050919050565b6000602082019050818103600083015261125e81611222565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061129f82610f79565b91506112aa83610f79565b92508282019050808211156112c2576112c1611265565b5b92915050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000611324602483610e6f565b915061132f826112c8565b604082019050919050565b6000602082019050818103600083015261135381611317565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006113b6602583610e6f565b91506113c18261135a565b604082019050919050565b600060208201905081810360008301526113e5816113a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611448602483610e6f565b9150611453826113ec565b604082019050919050565b600060208201905081810360008301526114778161143b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006114da602283610e6f565b91506114e58261147e565b604082019050919050565b60006020820190508181036000830152611509816114cd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061156c602583610e6f565b915061157782611510565b604082019050919050565b6000602082019050818103600083015261159b8161155f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115fe602383610e6f565b9150611609826115a2565b604082019050919050565b6000602082019050818103600083015261162d816115f1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611690602683610e6f565b915061169b82611634565b604082019050919050565b600060208201905081810360008301526116bf81611683565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611722602183610e6f565b915061172d826116c6565b604082019050919050565b6000602082019050818103600083015261175181611715565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006117b4602283610e6f565b91506117bf82611758565b604082019050919050565b600060208201905081810360008301526117e3816117a7565b9050919050565b60006117f582610f79565b915061180083610f79565b925082820390508181111561181857611817611265565b5b9291505056fea264697066735822122081c49b628506cc8b3550277ec35adf847221691236840bec6b5a9685689547cb64736f6c6343000812003300000000000000000000000000000000000000000000d3c21bcecceda1000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610226578063a457c2d714610244578063a9059cbb14610274578063dd62ed3e146102a4576100cf565b806342966c68146101be57806370a08231146101da57806379cc67901461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e99190610ef4565b60405180910390f35b61010c60048036038101906101079190610faf565b610366565b604051610119919061100a565b60405180910390f35b61012a610384565b6040516101379190611034565b60405180910390f35b61015a6004803603810190610155919061104f565b61038e565b604051610167919061100a565b60405180910390f35b610178610486565b60405161018591906110be565b60405180910390f35b6101a860048036038101906101a39190610faf565b61048f565b6040516101b5919061100a565b60405180910390f35b6101d860048036038101906101d391906110d9565b61053b565b005b6101f460048036038101906101ef9190611106565b61054f565b6040516102019190611034565b60405180910390f35b610224600480360381019061021f9190610faf565b610597565b005b61022e610612565b60405161023b9190610ef4565b60405180910390f35b61025e60048036038101906102599190610faf565b6106a4565b60405161026b919061100a565b60405180910390f35b61028e60048036038101906102899190610faf565b61078f565b60405161029b919061100a565b60405180910390f35b6102be60048036038101906102b99190611133565b6107ad565b6040516102cb9190611034565b60405180910390f35b6060600380546102e3906111a2565b80601f016020809104026020016040519081016040528092919081815260200182805461030f906111a2565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b600061037a610373610834565b848461083c565b6001905092915050565b6000600254905090565b600061039b848484610a05565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e6610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90611245565b60405180910390fd5b61047a85610472610834565b85840361083c565b60019150509392505050565b60006012905090565b600061053161049c610834565b8484600160006104aa610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461052c9190611294565b61083c565b6001905092915050565b61054c610546610834565b82610c84565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006105aa836105a5610834565b6107ad565b9050818110156105ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e69061133a565b60405180910390fd5b610603836105fb610834565b84840361083c565b61060d8383610c84565b505050565b606060048054610621906111a2565b80601f016020809104026020016040519081016040528092919081815260200182805461064d906111a2565b801561069a5780601f1061066f5761010080835404028352916020019161069a565b820191906000526020600020905b81548152906001019060200180831161067d57829003601f168201915b5050505050905090565b600080600160006106b3610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610767906113cc565b60405180910390fd5b61078461077b610834565b8585840361083c565b600191505092915050565b60006107a361079c610834565b8484610a05565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29061145e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361091a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610911906114f0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109f89190611034565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b90611582565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90611614565b60405180910390fd5b610aee838383610e5a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b906116a6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c079190611294565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c6b9190611034565b60405180910390a3610c7e848484610e5f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90611738565b60405180910390fd5b610cff82600083610e5a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c906117ca565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610ddc91906117ea565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e419190611034565b60405180910390a3610e5583600084610e5f565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e9e578082015181840152602081019050610e83565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ec682610e64565b610ed08185610e6f565b9350610ee0818560208601610e80565b610ee981610eaa565b840191505092915050565b60006020820190508181036000830152610f0e8184610ebb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f4682610f1b565b9050919050565b610f5681610f3b565b8114610f6157600080fd5b50565b600081359050610f7381610f4d565b92915050565b6000819050919050565b610f8c81610f79565b8114610f9757600080fd5b50565b600081359050610fa981610f83565b92915050565b60008060408385031215610fc657610fc5610f16565b5b6000610fd485828601610f64565b9250506020610fe585828601610f9a565b9150509250929050565b60008115159050919050565b61100481610fef565b82525050565b600060208201905061101f6000830184610ffb565b92915050565b61102e81610f79565b82525050565b60006020820190506110496000830184611025565b92915050565b60008060006060848603121561106857611067610f16565b5b600061107686828701610f64565b935050602061108786828701610f64565b925050604061109886828701610f9a565b9150509250925092565b600060ff82169050919050565b6110b8816110a2565b82525050565b60006020820190506110d360008301846110af565b92915050565b6000602082840312156110ef576110ee610f16565b5b60006110fd84828501610f9a565b91505092915050565b60006020828403121561111c5761111b610f16565b5b600061112a84828501610f64565b91505092915050565b6000806040838503121561114a57611149610f16565b5b600061115885828601610f64565b925050602061116985828601610f64565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ba57607f821691505b6020821081036111cd576111cc611173565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061122f602883610e6f565b915061123a826111d3565b604082019050919050565b6000602082019050818103600083015261125e81611222565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061129f82610f79565b91506112aa83610f79565b92508282019050808211156112c2576112c1611265565b5b92915050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000611324602483610e6f565b915061132f826112c8565b604082019050919050565b6000602082019050818103600083015261135381611317565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006113b6602583610e6f565b91506113c18261135a565b604082019050919050565b600060208201905081810360008301526113e5816113a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611448602483610e6f565b9150611453826113ec565b604082019050919050565b600060208201905081810360008301526114778161143b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006114da602283610e6f565b91506114e58261147e565b604082019050919050565b60006020820190508181036000830152611509816114cd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061156c602583610e6f565b915061157782611510565b604082019050919050565b6000602082019050818103600083015261159b8161155f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115fe602383610e6f565b9150611609826115a2565b604082019050919050565b6000602082019050818103600083015261162d816115f1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611690602683610e6f565b915061169b82611634565b604082019050919050565b600060208201905081810360008301526116bf81611683565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611722602183610e6f565b915061172d826116c6565b604082019050919050565b6000602082019050818103600083015261175181611715565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006117b4602283610e6f565b91506117bf82611758565b604082019050919050565b600060208201905081810360008301526117e3816117a7565b9050919050565b60006117f582610f79565b915061180083610f79565b925082820390508181111561181857611817611265565b5b9291505056fea264697066735822122081c49b628506cc8b3550277ec35adf847221691236840bec6b5a9685689547cb64736f6c63430008120033

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

00000000000000000000000000000000000000000000d3c21bcecceda1000000

-----Decoded View---------------
Arg [0] : initialSupply (uint256): 1000000000000000000000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000d3c21bcecceda1000000


Deployed Bytecode Sourcemap

17735:151:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8597:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7550:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9248:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7392:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10149:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16888:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7721:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17298:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6649:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10867:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8061:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8299:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6430:100;6484:13;6517:5;6510:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:100;:::o;8597:169::-;8680:4;8697:39;8706:12;:10;:12::i;:::-;8720:7;8729:6;8697:8;:39::i;:::-;8754:4;8747:11;;8597:169;;;;:::o;7550:108::-;7611:7;7638:12;;7631:19;;7550:108;:::o;9248:492::-;9388:4;9405:36;9415:6;9423:9;9434:6;9405:9;:36::i;:::-;9454:24;9481:11;:19;9493:6;9481:19;;;;;;;;;;;;;;;:33;9501:12;:10;:12::i;:::-;9481:33;;;;;;;;;;;;;;;;9454:60;;9553:6;9533:16;:26;;9525:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9640:57;9649:6;9657:12;:10;:12::i;:::-;9690:6;9671:16;:25;9640:8;:57::i;:::-;9728:4;9721:11;;;9248:492;;;;;:::o;7392:93::-;7450:5;7475:2;7468:9;;7392:93;:::o;10149:215::-;10237:4;10254:80;10263:12;:10;:12::i;:::-;10277:7;10323:10;10286:11;:25;10298:12;:10;:12::i;:::-;10286:25;;;;;;;;;;;;;;;:34;10312:7;10286:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10254:8;:80::i;:::-;10352:4;10345:11;;10149:215;;;;:::o;16888:91::-;16944:27;16950:12;:10;:12::i;:::-;16964:6;16944:5;:27::i;:::-;16888:91;:::o;7721:127::-;7795:7;7822:9;:18;7832:7;7822:18;;;;;;;;;;;;;;;;7815:25;;7721:127;;;:::o;17298:368::-;17375:24;17402:32;17412:7;17421:12;:10;:12::i;:::-;17402:9;:32::i;:::-;17375:59;;17473:6;17453:16;:26;;17445:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17556:58;17565:7;17574:12;:10;:12::i;:::-;17607:6;17588:16;:25;17556:8;:58::i;:::-;17636:22;17642:7;17651:6;17636:5;:22::i;:::-;17364:302;17298:368;;:::o;6649:104::-;6705:13;6738:7;6731:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6649:104;:::o;10867:413::-;10960:4;10977:24;11004:11;:25;11016:12;:10;:12::i;:::-;11004:25;;;;;;;;;;;;;;;:34;11030:7;11004:34;;;;;;;;;;;;;;;;10977:61;;11077:15;11057:16;:35;;11049:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11170:67;11179:12;:10;:12::i;:::-;11193:7;11221:15;11202:16;:34;11170:8;:67::i;:::-;11268:4;11261:11;;;10867:413;;;;:::o;8061:175::-;8147:4;8164:42;8174:12;:10;:12::i;:::-;8188:9;8199:6;8164:9;:42::i;:::-;8224:4;8217:11;;8061:175;;;;:::o;8299:151::-;8388:7;8415:11;:18;8427:5;8415:18;;;;;;;;;;;;;;;:27;8434:7;8415:27;;;;;;;;;;;;;;;;8408:34;;8299:151;;;;:::o;631:98::-;684:7;711:10;704:17;;631:98;:::o;14551:380::-;14704:1;14687:19;;:5;:19;;;14679:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14785:1;14766:21;;:7;:21;;;14758:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14869:6;14839:11;:18;14851:5;14839:18;;;;;;;;;;;;;;;:27;14858:7;14839:27;;;;;;;;;;;;;;;:36;;;;14907:7;14891:32;;14900:5;14891:32;;;14916:6;14891:32;;;;;;:::i;:::-;;;;;;;;14551:380;;;:::o;11770:733::-;11928:1;11910:20;;:6;:20;;;11902:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12012:1;11991:23;;:9;:23;;;11983:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12067:47;12088:6;12096:9;12107:6;12067:20;:47::i;:::-;12127:21;12151:9;:17;12161:6;12151:17;;;;;;;;;;;;;;;;12127:41;;12204:6;12187:13;:23;;12179:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12325:6;12309:13;:22;12289:9;:17;12299:6;12289:17;;;;;;;;;;;;;;;:42;;;;12377:6;12353:9;:20;12363:9;12353:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12418:9;12401:35;;12410:6;12401:35;;;12429:6;12401:35;;;;;;:::i;:::-;;;;;;;;12449:46;12469:6;12477:9;12488:6;12449:19;:46::i;:::-;11891:612;11770:733;;;:::o;13522:591::-;13625:1;13606:21;;:7;:21;;;13598:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13678:49;13699:7;13716:1;13720:6;13678:20;:49::i;:::-;13740:22;13765:9;:18;13775:7;13765:18;;;;;;;;;;;;;;;;13740:43;;13820:6;13802:14;:24;;13794:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13939:6;13922:14;:23;13901:9;:18;13911:7;13901:18;;;;;;;;;;;;;;;:44;;;;13983:6;13967:12;;:22;;;;;;;:::i;:::-;;;;;;;;14033:1;14007:37;;14016:7;14007:37;;;14037:6;14007:37;;;;;;:::i;:::-;;;;;;;;14057:48;14077:7;14094:1;14098:6;14057:19;:48::i;:::-;13587:526;13522:591;;:::o;15531:125::-;;;;:::o;16260:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:474::-;5591:6;5599;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5901:2;5927:53;5972:7;5963:6;5952:9;5948:22;5927:53;:::i;:::-;5917:63;;5872:118;5523:474;;;;;:::o;6003:180::-;6051:77;6048:1;6041:88;6148:4;6145:1;6138:15;6172:4;6169:1;6162:15;6189:320;6233:6;6270:1;6264:4;6260:12;6250:22;;6317:1;6311:4;6307:12;6338:18;6328:81;;6394:4;6386:6;6382:17;6372:27;;6328:81;6456:2;6448:6;6445:14;6425:18;6422:38;6419:84;;6475:18;;:::i;:::-;6419:84;6240:269;6189:320;;;:::o;6515:227::-;6655:34;6651:1;6643:6;6639:14;6632:58;6724:10;6719:2;6711:6;6707:15;6700:35;6515:227;:::o;6748:366::-;6890:3;6911:67;6975:2;6970:3;6911:67;:::i;:::-;6904:74;;6987:93;7076:3;6987:93;:::i;:::-;7105:2;7100:3;7096:12;7089:19;;6748:366;;;:::o;7120:419::-;7286:4;7324:2;7313:9;7309:18;7301:26;;7373:9;7367:4;7363:20;7359:1;7348:9;7344:17;7337:47;7401:131;7527:4;7401:131;:::i;:::-;7393:139;;7120:419;;;:::o;7545:180::-;7593:77;7590:1;7583:88;7690:4;7687:1;7680:15;7714:4;7711:1;7704:15;7731:191;7771:3;7790:20;7808:1;7790:20;:::i;:::-;7785:25;;7824:20;7842:1;7824:20;:::i;:::-;7819:25;;7867:1;7864;7860:9;7853:16;;7888:3;7885:1;7882:10;7879:36;;;7895:18;;:::i;:::-;7879:36;7731:191;;;;:::o;7928:223::-;8068:34;8064:1;8056:6;8052:14;8045:58;8137:6;8132:2;8124:6;8120:15;8113:31;7928:223;:::o;8157:366::-;8299:3;8320:67;8384:2;8379:3;8320:67;:::i;:::-;8313:74;;8396:93;8485:3;8396:93;:::i;:::-;8514:2;8509:3;8505:12;8498:19;;8157:366;;;:::o;8529:419::-;8695:4;8733:2;8722:9;8718:18;8710:26;;8782:9;8776:4;8772:20;8768:1;8757:9;8753:17;8746:47;8810:131;8936:4;8810:131;:::i;:::-;8802:139;;8529:419;;;:::o;8954:224::-;9094:34;9090:1;9082:6;9078:14;9071:58;9163:7;9158:2;9150:6;9146:15;9139:32;8954:224;:::o;9184:366::-;9326:3;9347:67;9411:2;9406:3;9347:67;:::i;:::-;9340:74;;9423:93;9512:3;9423:93;:::i;:::-;9541:2;9536:3;9532:12;9525:19;;9184:366;;;:::o;9556:419::-;9722:4;9760:2;9749:9;9745:18;9737:26;;9809:9;9803:4;9799:20;9795:1;9784:9;9780:17;9773:47;9837:131;9963:4;9837:131;:::i;:::-;9829:139;;9556:419;;;:::o;9981:223::-;10121:34;10117:1;10109:6;10105:14;10098:58;10190:6;10185:2;10177:6;10173:15;10166:31;9981:223;:::o;10210:366::-;10352:3;10373:67;10437:2;10432:3;10373:67;:::i;:::-;10366:74;;10449:93;10538:3;10449:93;:::i;:::-;10567:2;10562:3;10558:12;10551:19;;10210:366;;;:::o;10582:419::-;10748:4;10786:2;10775:9;10771:18;10763:26;;10835:9;10829:4;10825:20;10821:1;10810:9;10806:17;10799:47;10863:131;10989:4;10863:131;:::i;:::-;10855:139;;10582:419;;;:::o;11007:221::-;11147:34;11143:1;11135:6;11131:14;11124:58;11216:4;11211:2;11203:6;11199:15;11192:29;11007:221;:::o;11234:366::-;11376:3;11397:67;11461:2;11456:3;11397:67;:::i;:::-;11390:74;;11473:93;11562:3;11473:93;:::i;:::-;11591:2;11586:3;11582:12;11575:19;;11234:366;;;:::o;11606:419::-;11772:4;11810:2;11799:9;11795:18;11787:26;;11859:9;11853:4;11849:20;11845:1;11834:9;11830:17;11823:47;11887:131;12013:4;11887:131;:::i;:::-;11879:139;;11606:419;;;:::o;12031:224::-;12171:34;12167:1;12159:6;12155:14;12148:58;12240:7;12235:2;12227:6;12223:15;12216:32;12031:224;:::o;12261:366::-;12403:3;12424:67;12488:2;12483:3;12424:67;:::i;:::-;12417:74;;12500:93;12589:3;12500:93;:::i;:::-;12618:2;12613:3;12609:12;12602:19;;12261:366;;;:::o;12633:419::-;12799:4;12837:2;12826:9;12822:18;12814:26;;12886:9;12880:4;12876:20;12872:1;12861:9;12857:17;12850:47;12914:131;13040:4;12914:131;:::i;:::-;12906:139;;12633:419;;;:::o;13058:222::-;13198:34;13194:1;13186:6;13182:14;13175:58;13267:5;13262:2;13254:6;13250:15;13243:30;13058:222;:::o;13286:366::-;13428:3;13449:67;13513:2;13508:3;13449:67;:::i;:::-;13442:74;;13525:93;13614:3;13525:93;:::i;:::-;13643:2;13638:3;13634:12;13627:19;;13286:366;;;:::o;13658:419::-;13824:4;13862:2;13851:9;13847:18;13839:26;;13911:9;13905:4;13901:20;13897:1;13886:9;13882:17;13875:47;13939:131;14065:4;13939:131;:::i;:::-;13931:139;;13658:419;;;:::o;14083:225::-;14223:34;14219:1;14211:6;14207:14;14200:58;14292:8;14287:2;14279:6;14275:15;14268:33;14083:225;:::o;14314:366::-;14456:3;14477:67;14541:2;14536:3;14477:67;:::i;:::-;14470:74;;14553:93;14642:3;14553:93;:::i;:::-;14671:2;14666:3;14662:12;14655:19;;14314:366;;;:::o;14686:419::-;14852:4;14890:2;14879:9;14875:18;14867:26;;14939:9;14933:4;14929:20;14925:1;14914:9;14910:17;14903:47;14967:131;15093:4;14967:131;:::i;:::-;14959:139;;14686:419;;;:::o;15111:220::-;15251:34;15247:1;15239:6;15235:14;15228:58;15320:3;15315:2;15307:6;15303:15;15296:28;15111:220;:::o;15337:366::-;15479:3;15500:67;15564:2;15559:3;15500:67;:::i;:::-;15493:74;;15576:93;15665:3;15576:93;:::i;:::-;15694:2;15689:3;15685:12;15678:19;;15337:366;;;:::o;15709:419::-;15875:4;15913:2;15902:9;15898:18;15890:26;;15962:9;15956:4;15952:20;15948:1;15937:9;15933:17;15926:47;15990:131;16116:4;15990:131;:::i;:::-;15982:139;;15709:419;;;:::o;16134:221::-;16274:34;16270:1;16262:6;16258:14;16251:58;16343:4;16338:2;16330:6;16326:15;16319:29;16134:221;:::o;16361:366::-;16503:3;16524:67;16588:2;16583:3;16524:67;:::i;:::-;16517:74;;16600:93;16689:3;16600:93;:::i;:::-;16718:2;16713:3;16709:12;16702:19;;16361:366;;;:::o;16733:419::-;16899:4;16937:2;16926:9;16922:18;16914:26;;16986:9;16980:4;16976:20;16972:1;16961:9;16957:17;16950:47;17014:131;17140:4;17014:131;:::i;:::-;17006:139;;16733:419;;;:::o;17158:194::-;17198:4;17218:20;17236:1;17218:20;:::i;:::-;17213:25;;17252:20;17270:1;17252:20;:::i;:::-;17247:25;;17296:1;17293;17289:9;17281:17;;17320:1;17314:4;17311:11;17308:37;;;17325:18;;:::i;:::-;17308:37;17158:194;;;;:::o

Swarm Source

ipfs://81c49b628506cc8b3550277ec35adf847221691236840bec6b5a9685689547cb
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.