APE Price: $1.23 (+3.60%)

Token

king Louie (LOUIE)

Overview

Max Total Supply

1,000,000,000 LOUIE

Holders

6

Total Transfers

-

Market

Price

$0.00 @ 0.000000 APE

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
kingLouie

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license
/**
 *Submitted for verification at apescan.io on 2024-10-21
*/

// SPDX-License-Identifier: Unlincese

/**
    King Louie is a fictional character introduced in Walt Disney's animated musical film The Jungle Book. 
    He is an orangutan who leads other jungle primates and wants to become more human-like by gaining knowledge of fire from Mowgli
    https://en.wikipedia.org/wiki/King_Louie
 */

pragma solidity ^0.8.17;

/**
 * @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;
    }
}


//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);
}

//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);
}

//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 {}
}


//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);
    }
}

//pragma solidity 0.8.17;

contract kingLouie is ERC20Burnable {
    constructor() ERC20("king Louie", "LOUIE") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f6b696e67204c6f756965000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4c4f55494500000000000000000000000000000000000000000000000000000081525081600390816200008f9190620004ef565b508060049081620000a19190620004ef565b505050620000e433620000b9620000ea60201b60201c565b600a620000c7919062000766565b633b9aca00620000d89190620007b7565b620000f360201b60201c565b620008ee565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000165576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015c9062000863565b60405180910390fd5b62000179600083836200026b60201b60201c565b80600260008282546200018d919062000885565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001e4919062000885565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200024b9190620008d1565b60405180910390a362000267600083836200027060201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002f757607f821691505b6020821081036200030d576200030c620002af565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000338565b62000383868362000338565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003d0620003ca620003c4846200039b565b620003a5565b6200039b565b9050919050565b6000819050919050565b620003ec83620003af565b62000404620003fb82620003d7565b84845462000345565b825550505050565b600090565b6200041b6200040c565b62000428818484620003e1565b505050565b5b8181101562000450576200044460008262000411565b6001810190506200042e565b5050565b601f8211156200049f57620004698162000313565b620004748462000328565b8101602085101562000484578190505b6200049c620004938562000328565b8301826200042d565b50505b505050565b600082821c905092915050565b6000620004c460001984600802620004a4565b1980831691505092915050565b6000620004df8383620004b1565b9150826002028217905092915050565b620004fa8262000275565b67ffffffffffffffff81111562000516576200051562000280565b5b620005228254620002de565b6200052f82828562000454565b600060209050601f83116001811462000567576000841562000552578287015190505b6200055e8582620004d1565b865550620005ce565b601f198416620005778662000313565b60005b82811015620005a1578489015182556001820191506020850194506020810190506200057a565b86831015620005c15784890151620005bd601f891682620004b1565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000664578086048111156200063c576200063b620005d6565b5b60018516156200064c5780820291505b80810290506200065c8562000605565b94506200061c565b94509492505050565b6000826200067f576001905062000752565b816200068f576000905062000752565b8160018114620006a85760028114620006b357620006e9565b600191505062000752565b60ff841115620006c857620006c7620005d6565b5b8360020a915084821115620006e257620006e1620005d6565b5b5062000752565b5060208310610133831016604e8410600b8410161715620007235782820a9050838111156200071d576200071c620005d6565b5b62000752565b62000732848484600162000612565b925090508184048111156200074c576200074b620005d6565b5b81810290505b9392505050565b600060ff82169050919050565b600062000773826200039b565b9150620007808362000759565b9250620007af7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200066d565b905092915050565b6000620007c4826200039b565b9150620007d1836200039b565b9250828202620007e1816200039b565b91508282048414831517620007fb57620007fa620005d6565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200084b601f8362000802565b9150620008588262000813565b602082019050919050565b600060208201905081810360008301526200087e816200083c565b9050919050565b600062000892826200039b565b91506200089f836200039b565b9250828201905080821115620008ba57620008b9620005d6565b5b92915050565b620008cb816200039b565b82525050565b6000602082019050620008e86000830184620008c0565b92915050565b61185480620008fe6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610226578063a457c2d714610244578063a9059cbb14610274578063dd62ed3e146102a4576100cf565b806342966c68146101be57806370a08231146101da57806379cc67901461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e99190610ef4565b60405180910390f35b61010c60048036038101906101079190610faf565b610366565b604051610119919061100a565b60405180910390f35b61012a610384565b6040516101379190611034565b60405180910390f35b61015a6004803603810190610155919061104f565b61038e565b604051610167919061100a565b60405180910390f35b610178610486565b60405161018591906110be565b60405180910390f35b6101a860048036038101906101a39190610faf565b61048f565b6040516101b5919061100a565b60405180910390f35b6101d860048036038101906101d391906110d9565b61053b565b005b6101f460048036038101906101ef9190611106565b61054f565b6040516102019190611034565b60405180910390f35b610224600480360381019061021f9190610faf565b610597565b005b61022e610612565b60405161023b9190610ef4565b60405180910390f35b61025e60048036038101906102599190610faf565b6106a4565b60405161026b919061100a565b60405180910390f35b61028e60048036038101906102899190610faf565b61078f565b60405161029b919061100a565b60405180910390f35b6102be60048036038101906102b99190611133565b6107ad565b6040516102cb9190611034565b60405180910390f35b6060600380546102e3906111a2565b80601f016020809104026020016040519081016040528092919081815260200182805461030f906111a2565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b600061037a610373610834565b848461083c565b6001905092915050565b6000600254905090565b600061039b848484610a05565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e6610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90611245565b60405180910390fd5b61047a85610472610834565b85840361083c565b60019150509392505050565b60006012905090565b600061053161049c610834565b8484600160006104aa610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461052c9190611294565b61083c565b6001905092915050565b61054c610546610834565b82610c84565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006105aa836105a5610834565b6107ad565b9050818110156105ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e69061133a565b60405180910390fd5b610603836105fb610834565b84840361083c565b61060d8383610c84565b505050565b606060048054610621906111a2565b80601f016020809104026020016040519081016040528092919081815260200182805461064d906111a2565b801561069a5780601f1061066f5761010080835404028352916020019161069a565b820191906000526020600020905b81548152906001019060200180831161067d57829003601f168201915b5050505050905090565b600080600160006106b3610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610767906113cc565b60405180910390fd5b61078461077b610834565b8585840361083c565b600191505092915050565b60006107a361079c610834565b8484610a05565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29061145e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361091a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610911906114f0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109f89190611034565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b90611582565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90611614565b60405180910390fd5b610aee838383610e5a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b906116a6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c079190611294565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c6b9190611034565b60405180910390a3610c7e848484610e5f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90611738565b60405180910390fd5b610cff82600083610e5a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c906117ca565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610ddc91906117ea565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e419190611034565b60405180910390a3610e5583600084610e5f565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e9e578082015181840152602081019050610e83565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ec682610e64565b610ed08185610e6f565b9350610ee0818560208601610e80565b610ee981610eaa565b840191505092915050565b60006020820190508181036000830152610f0e8184610ebb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f4682610f1b565b9050919050565b610f5681610f3b565b8114610f6157600080fd5b50565b600081359050610f7381610f4d565b92915050565b6000819050919050565b610f8c81610f79565b8114610f9757600080fd5b50565b600081359050610fa981610f83565b92915050565b60008060408385031215610fc657610fc5610f16565b5b6000610fd485828601610f64565b9250506020610fe585828601610f9a565b9150509250929050565b60008115159050919050565b61100481610fef565b82525050565b600060208201905061101f6000830184610ffb565b92915050565b61102e81610f79565b82525050565b60006020820190506110496000830184611025565b92915050565b60008060006060848603121561106857611067610f16565b5b600061107686828701610f64565b935050602061108786828701610f64565b925050604061109886828701610f9a565b9150509250925092565b600060ff82169050919050565b6110b8816110a2565b82525050565b60006020820190506110d360008301846110af565b92915050565b6000602082840312156110ef576110ee610f16565b5b60006110fd84828501610f9a565b91505092915050565b60006020828403121561111c5761111b610f16565b5b600061112a84828501610f64565b91505092915050565b6000806040838503121561114a57611149610f16565b5b600061115885828601610f64565b925050602061116985828601610f64565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ba57607f821691505b6020821081036111cd576111cc611173565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061122f602883610e6f565b915061123a826111d3565b604082019050919050565b6000602082019050818103600083015261125e81611222565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061129f82610f79565b91506112aa83610f79565b92508282019050808211156112c2576112c1611265565b5b92915050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000611324602483610e6f565b915061132f826112c8565b604082019050919050565b6000602082019050818103600083015261135381611317565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006113b6602583610e6f565b91506113c18261135a565b604082019050919050565b600060208201905081810360008301526113e5816113a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611448602483610e6f565b9150611453826113ec565b604082019050919050565b600060208201905081810360008301526114778161143b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006114da602283610e6f565b91506114e58261147e565b604082019050919050565b60006020820190508181036000830152611509816114cd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061156c602583610e6f565b915061157782611510565b604082019050919050565b6000602082019050818103600083015261159b8161155f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115fe602383610e6f565b9150611609826115a2565b604082019050919050565b6000602082019050818103600083015261162d816115f1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611690602683610e6f565b915061169b82611634565b604082019050919050565b600060208201905081810360008301526116bf81611683565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611722602183610e6f565b915061172d826116c6565b604082019050919050565b6000602082019050818103600083015261175181611715565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006117b4602283610e6f565b91506117bf82611758565b604082019050919050565b600060208201905081810360008301526117e3816117a7565b9050919050565b60006117f582610f79565b915061180083610f79565b925082820390508181111561181857611817611265565b5b9291505056fea2646970667358221220bda0aad6dfa39def4ccc876a4c1970cf3ccd04c03edf59ff6a29a1c9caf3793364736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610226578063a457c2d714610244578063a9059cbb14610274578063dd62ed3e146102a4576100cf565b806342966c68146101be57806370a08231146101da57806379cc67901461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e99190610ef4565b60405180910390f35b61010c60048036038101906101079190610faf565b610366565b604051610119919061100a565b60405180910390f35b61012a610384565b6040516101379190611034565b60405180910390f35b61015a6004803603810190610155919061104f565b61038e565b604051610167919061100a565b60405180910390f35b610178610486565b60405161018591906110be565b60405180910390f35b6101a860048036038101906101a39190610faf565b61048f565b6040516101b5919061100a565b60405180910390f35b6101d860048036038101906101d391906110d9565b61053b565b005b6101f460048036038101906101ef9190611106565b61054f565b6040516102019190611034565b60405180910390f35b610224600480360381019061021f9190610faf565b610597565b005b61022e610612565b60405161023b9190610ef4565b60405180910390f35b61025e60048036038101906102599190610faf565b6106a4565b60405161026b919061100a565b60405180910390f35b61028e60048036038101906102899190610faf565b61078f565b60405161029b919061100a565b60405180910390f35b6102be60048036038101906102b99190611133565b6107ad565b6040516102cb9190611034565b60405180910390f35b6060600380546102e3906111a2565b80601f016020809104026020016040519081016040528092919081815260200182805461030f906111a2565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b600061037a610373610834565b848461083c565b6001905092915050565b6000600254905090565b600061039b848484610a05565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e6610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90611245565b60405180910390fd5b61047a85610472610834565b85840361083c565b60019150509392505050565b60006012905090565b600061053161049c610834565b8484600160006104aa610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461052c9190611294565b61083c565b6001905092915050565b61054c610546610834565b82610c84565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006105aa836105a5610834565b6107ad565b9050818110156105ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e69061133a565b60405180910390fd5b610603836105fb610834565b84840361083c565b61060d8383610c84565b505050565b606060048054610621906111a2565b80601f016020809104026020016040519081016040528092919081815260200182805461064d906111a2565b801561069a5780601f1061066f5761010080835404028352916020019161069a565b820191906000526020600020905b81548152906001019060200180831161067d57829003601f168201915b5050505050905090565b600080600160006106b3610834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610767906113cc565b60405180910390fd5b61078461077b610834565b8585840361083c565b600191505092915050565b60006107a361079c610834565b8484610a05565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29061145e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361091a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610911906114f0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109f89190611034565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b90611582565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90611614565b60405180910390fd5b610aee838383610e5a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b906116a6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c079190611294565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c6b9190611034565b60405180910390a3610c7e848484610e5f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90611738565b60405180910390fd5b610cff82600083610e5a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c906117ca565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610ddc91906117ea565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e419190611034565b60405180910390a3610e5583600084610e5f565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e9e578082015181840152602081019050610e83565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ec682610e64565b610ed08185610e6f565b9350610ee0818560208601610e80565b610ee981610eaa565b840191505092915050565b60006020820190508181036000830152610f0e8184610ebb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f4682610f1b565b9050919050565b610f5681610f3b565b8114610f6157600080fd5b50565b600081359050610f7381610f4d565b92915050565b6000819050919050565b610f8c81610f79565b8114610f9757600080fd5b50565b600081359050610fa981610f83565b92915050565b60008060408385031215610fc657610fc5610f16565b5b6000610fd485828601610f64565b9250506020610fe585828601610f9a565b9150509250929050565b60008115159050919050565b61100481610fef565b82525050565b600060208201905061101f6000830184610ffb565b92915050565b61102e81610f79565b82525050565b60006020820190506110496000830184611025565b92915050565b60008060006060848603121561106857611067610f16565b5b600061107686828701610f64565b935050602061108786828701610f64565b925050604061109886828701610f9a565b9150509250925092565b600060ff82169050919050565b6110b8816110a2565b82525050565b60006020820190506110d360008301846110af565b92915050565b6000602082840312156110ef576110ee610f16565b5b60006110fd84828501610f9a565b91505092915050565b60006020828403121561111c5761111b610f16565b5b600061112a84828501610f64565b91505092915050565b6000806040838503121561114a57611149610f16565b5b600061115885828601610f64565b925050602061116985828601610f64565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ba57607f821691505b6020821081036111cd576111cc611173565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061122f602883610e6f565b915061123a826111d3565b604082019050919050565b6000602082019050818103600083015261125e81611222565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061129f82610f79565b91506112aa83610f79565b92508282019050808211156112c2576112c1611265565b5b92915050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000611324602483610e6f565b915061132f826112c8565b604082019050919050565b6000602082019050818103600083015261135381611317565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006113b6602583610e6f565b91506113c18261135a565b604082019050919050565b600060208201905081810360008301526113e5816113a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611448602483610e6f565b9150611453826113ec565b604082019050919050565b600060208201905081810360008301526114778161143b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006114da602283610e6f565b91506114e58261147e565b604082019050919050565b60006020820190508181036000830152611509816114cd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061156c602583610e6f565b915061157782611510565b604082019050919050565b6000602082019050818103600083015261159b8161155f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115fe602383610e6f565b9150611609826115a2565b604082019050919050565b6000602082019050818103600083015261162d816115f1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611690602683610e6f565b915061169b82611634565b604082019050919050565b600060208201905081810360008301526116bf81611683565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611722602183610e6f565b915061172d826116c6565b604082019050919050565b6000602082019050818103600083015261175181611715565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006117b4602283610e6f565b91506117bf82611758565b604082019050919050565b600060208201905081810360008301526117e3816117a7565b9050919050565b60006117f582610f79565b915061180083610f79565b925082820390508181111561181857611817611265565b5b9291505056fea2646970667358221220bda0aad6dfa39def4ccc876a4c1970cf3ccd04c03edf59ff6a29a1c9caf3793364736f6c63430008110033

Deployed Bytecode Sourcemap

17668:156:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6483:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8650:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7603:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9301:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7445:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10202:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16854:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7774:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17264:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6702:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10920:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8114:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8352:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6483:100;6537:13;6570:5;6563:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6483:100;:::o;8650:169::-;8733:4;8750:39;8759:12;:10;:12::i;:::-;8773:7;8782:6;8750:8;:39::i;:::-;8807:4;8800:11;;8650:169;;;;:::o;7603:108::-;7664:7;7691:12;;7684:19;;7603:108;:::o;9301:492::-;9441:4;9458:36;9468:6;9476:9;9487:6;9458:9;:36::i;:::-;9507:24;9534:11;:19;9546:6;9534:19;;;;;;;;;;;;;;;:33;9554:12;:10;:12::i;:::-;9534:33;;;;;;;;;;;;;;;;9507:60;;9606:6;9586:16;:26;;9578:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9693:57;9702:6;9710:12;:10;:12::i;:::-;9743:6;9724:16;:25;9693:8;:57::i;:::-;9781:4;9774:11;;;9301:492;;;;;:::o;7445:93::-;7503:5;7528:2;7521:9;;7445:93;:::o;10202:215::-;10290:4;10307:80;10316:12;:10;:12::i;:::-;10330:7;10376:10;10339:11;:25;10351:12;:10;:12::i;:::-;10339:25;;;;;;;;;;;;;;;:34;10365:7;10339:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10307:8;:80::i;:::-;10405:4;10398:11;;10202:215;;;;:::o;16854:91::-;16910:27;16916:12;:10;:12::i;:::-;16930:6;16910:5;:27::i;:::-;16854:91;:::o;7774:127::-;7848:7;7875:9;:18;7885:7;7875:18;;;;;;;;;;;;;;;;7868:25;;7774:127;;;:::o;17264:368::-;17341:24;17368:32;17378:7;17387:12;:10;:12::i;:::-;17368:9;:32::i;:::-;17341:59;;17439:6;17419:16;:26;;17411:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17522:58;17531:7;17540:12;:10;:12::i;:::-;17573:6;17554:16;:25;17522:8;:58::i;:::-;17602:22;17608:7;17617:6;17602:5;:22::i;:::-;17330:302;17264:368;;:::o;6702:104::-;6758:13;6791:7;6784:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6702:104;:::o;10920:413::-;11013:4;11030:24;11057:11;:25;11069:12;:10;:12::i;:::-;11057:25;;;;;;;;;;;;;;;:34;11083:7;11057:34;;;;;;;;;;;;;;;;11030:61;;11130:15;11110:16;:35;;11102:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11223:67;11232:12;:10;:12::i;:::-;11246:7;11274:15;11255:16;:34;11223:8;:67::i;:::-;11321:4;11314:11;;;10920:413;;;;:::o;8114:175::-;8200:4;8217:42;8227:12;:10;:12::i;:::-;8241:9;8252:6;8217:9;:42::i;:::-;8277:4;8270:11;;8114:175;;;;:::o;8352:151::-;8441:7;8468:11;:18;8480:5;8468:18;;;;;;;;;;;;;;;:27;8487:7;8468:27;;;;;;;;;;;;;;;;8461:34;;8352:151;;;;:::o;909:98::-;962:7;989:10;982:17;;909:98;:::o;14604:380::-;14757:1;14740:19;;:5;:19;;;14732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14838:1;14819:21;;:7;:21;;;14811:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14922:6;14892:11;:18;14904:5;14892:18;;;;;;;;;;;;;;;:27;14911:7;14892:27;;;;;;;;;;;;;;;:36;;;;14960:7;14944:32;;14953:5;14944:32;;;14969:6;14944:32;;;;;;:::i;:::-;;;;;;;;14604:380;;;:::o;11823:733::-;11981:1;11963:20;;:6;:20;;;11955:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12065:1;12044:23;;:9;:23;;;12036:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12120:47;12141:6;12149:9;12160:6;12120:20;:47::i;:::-;12180:21;12204:9;:17;12214:6;12204:17;;;;;;;;;;;;;;;;12180:41;;12257:6;12240:13;:23;;12232:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12378:6;12362:13;:22;12342:9;:17;12352:6;12342:17;;;;;;;;;;;;;;;:42;;;;12430:6;12406:9;:20;12416:9;12406:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12471:9;12454:35;;12463:6;12454:35;;;12482:6;12454:35;;;;;;:::i;:::-;;;;;;;;12502:46;12522:6;12530:9;12541:6;12502:19;:46::i;:::-;11944:612;11823:733;;;:::o;13575:591::-;13678:1;13659:21;;:7;:21;;;13651:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13731:49;13752:7;13769:1;13773:6;13731:20;:49::i;:::-;13793:22;13818:9;:18;13828:7;13818:18;;;;;;;;;;;;;;;;13793:43;;13873:6;13855:14;:24;;13847:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13992:6;13975:14;:23;13954:9;:18;13964:7;13954:18;;;;;;;;;;;;;;;:44;;;;14036:6;14020:12;;:22;;;;;;;:::i;:::-;;;;;;;;14086:1;14060:37;;14069:7;14060:37;;;14090:6;14060:37;;;;;;:::i;:::-;;;;;;;;14110:48;14130:7;14147:1;14151:6;14110:19;:48::i;:::-;13640:526;13575:591;;:::o;15584:125::-;;;;:::o;16313: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://bda0aad6dfa39def4ccc876a4c1970cf3ccd04c03edf59ff6a29a1c9caf37933
[ 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.