ETH Price: $3,605.99 (+0.67%)
 

Overview

Max Total Supply

4,200,000,000,000,000,000,000,004,000 S0ME

Holders

8

Total Transfers

-

Market

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
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TokenMint

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 6 of 6: TokenMint.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "./ERC20.sol";
import "./ERC20Burnable.sol";

contract TokenMint is ERC20, ERC20Burnable {
    event updateClaimable(uint _claimable);

    address owner;

    constructor() ERC20("S0meToken", "S0ME") {
        owner = msg.sender;
    }

    struct Holder {
        uint _claimable;
    }

    mapping(address => Holder) Holders;

    modifier onlyOwner() {
        require(msg.sender == owner, "Not the owner");
        _;
    }

    function updateOneClaimable(
        address _holderAddress,
        uint _claimable
    ) external onlyOwner {
        require(
            _claimable >= 0,
            "Increment value should be equal or greater than zero"
        );
        Holders[_holderAddress]._claimable = _claimable;
        emit updateClaimable(_claimable);
    }

    function updateMultipleClaimable(
        address[] calldata _holderAddresses,
        uint[] calldata _claimables
    ) external onlyOwner {
        require(
            _holderAddresses.length == _claimables.length,
            "There should be as many holder addresses as claimables"
        );
        for (uint i = 0; i < _holderAddresses.length; i++) {
            if (_claimables[i] < 0) {
                continue;
            }
            Holders[_holderAddresses[i]]._claimable = _claimables[i];
            emit updateClaimable(_claimables[i]);
        }
    }

    function incrementOneClaimable(
        address _holderAddress,
        uint _increment
    ) external onlyOwner {
        require(_increment > 0, "Increment value should be greater than zero");
        Holders[_holderAddress]._claimable += _increment;
        emit updateClaimable(_increment);
    }

    function incrementMultipleClaimable(
        address[] calldata _holderAddresses,
        uint[] calldata _increments
    ) external onlyOwner {
        require(
            _holderAddresses.length == _increments.length,
            "There should be as many holder addresses as claimables"
        );
        for (uint i = 0; i < _holderAddresses.length; i++) {
            if (_increments[i] < 0) {
                continue;
            }
            Holders[_holderAddresses[i]]._claimable += _increments[i];
            emit updateClaimable(_increments[i]);
        }
    }

    function getClaimableBalanceOf(
        address _holderAddress
    ) external view returns (uint) {
        return Holders[_holderAddress]._claimable;
    }

    function mint() public returns (uint) {
        uint claimable = Holders[msg.sender]._claimable;
        require(claimable > 0, "Claimable should be more than zero to claim.");

        _mint(msg.sender, claimable * 10 ** 18);
        Holders[msg.sender]._claimable = 0;

        return claimable;
    }
}

File 1 of 6: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (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 2 of 6: ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./Context.sol";

/**
 * @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.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * 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}.
     *
     * 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 default value returned by this function, unless
     * it's 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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - 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 3 of 6: ERC20Burnable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;

import "./ERC20.sol";
import "./Context.sol";

/**
 * @dev Extension of {ERC20} that allows token holders to destroy their own
 * tokens, 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);
    }
}

File 4 of 6: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}

File 5 of 6: IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";

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

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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_claimable","type":"uint256"}],"name":"updateClaimable","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":[],"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":"_holderAddress","type":"address"}],"name":"getClaimableBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address[]","name":"_holderAddresses","type":"address[]"},{"internalType":"uint256[]","name":"_increments","type":"uint256[]"}],"name":"incrementMultipleClaimable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holderAddress","type":"address"},{"internalType":"uint256","name":"_increment","type":"uint256"}],"name":"incrementOneClaimable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_holderAddresses","type":"address[]"},{"internalType":"uint256[]","name":"_claimables","type":"uint256[]"}],"name":"updateMultipleClaimable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holderAddress","type":"address"},{"internalType":"uint256","name":"_claimable","type":"uint256"}],"name":"updateOneClaimable","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600981526020017f53306d65546f6b656e00000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f53304d4500000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620000f9565b508060049080519060200190620000af929190620000f9565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200020e565b8280546200010790620001d8565b90600052602060002090601f0160209004810192826200012b576000855562000177565b82601f106200014657805160ff191683800117855562000177565b8280016001018555821562000177579182015b828111156200017657825182559160200191906001019062000159565b5b5090506200018691906200018a565b5090565b5b80821115620001a55760008160009055506001016200018b565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001f157607f821691505b60208210811415620002085762000207620001a9565b5b50919050565b612573806200021e6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806352e8d94e116100a2578063a457c2d711610071578063a457c2d7146102f5578063a9059cbb14610325578063ca6fd3b514610355578063d459175c14610371578063dd62ed3e1461038d57610116565b806352e8d94e1461025b57806370a08231146102775780639559acc2146102a757806395d89b41146102d757610116565b806318160ddd116100e957806318160ddd146101a357806323b872dd146101c1578063313ce567146101f1578063395093511461020f57806342966c681461023f57610116565b806306fdde031461011b578063077c23db14610139578063095ea7b3146101555780631249c58b14610185575b600080fd5b6101236103bd565b60405161013091906117a9565b60405180910390f35b610153600480360381019061014e9190611890565b61044f565b005b61016f600480360381019061016a91906119a5565b61064e565b60405161017c9190611a00565b60405180910390f35b61018d610671565b60405161019a9190611a2a565b60405180910390f35b6101ab610768565b6040516101b89190611a2a565b60405180910390f35b6101db60048036038101906101d69190611a45565b610772565b6040516101e89190611a00565b60405180910390f35b6101f96107a1565b6040516102069190611ab4565b60405180910390f35b610229600480360381019061022491906119a5565b6107aa565b6040516102369190611a00565b60405180910390f35b61025960048036038101906102549190611acf565b6107e1565b005b610275600480360381019061027091906119a5565b6107f5565b005b610291600480360381019061028c9190611afc565b61095c565b60405161029e9190611a2a565b60405180910390f35b6102c160048036038101906102bc9190611afc565b6109a4565b6040516102ce9190611a2a565b60405180910390f35b6102df6109f0565b6040516102ec91906117a9565b60405180910390f35b61030f600480360381019061030a91906119a5565b610a82565b60405161031c9190611a00565b60405180910390f35b61033f600480360381019061033a91906119a5565b610af9565b60405161034c9190611a00565b60405180910390f35b61036f600480360381019061036a9190611890565b610b1c565b005b61038b600480360381019061038691906119a5565b610d2d565b005b6103a760048036038101906103a29190611b29565b610e83565b6040516103b49190611a2a565b60405180910390f35b6060600380546103cc90611b98565b80601f01602080910402602001604051908101604052809291908181526020018280546103f890611b98565b80156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d690611c16565b60405180910390fd5b818190508484905014610527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051e90611ca8565b60405180910390fd5b60005b8484905081101561064757600083838381811061054a57610549611cc8565b5b90506020020135101561055c57610634565b82828281811061056f5761056e611cc8565b5b905060200201356006600087878581811061058d5761058c611cc8565b5b90506020020160208101906105a29190611afc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055507fd28e43555d96dad7bf346bf69371aac886e7d6fb08c1fa49822f887bf7c4ebd683838381811061061757610616611cc8565b5b9050602002013560405161062b9190611a2a565b60405180910390a15b808061063f90611d26565b91505061052a565b5050505050565b600080610659610f0a565b9050610666818585610f12565b600191505092915050565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600081116106fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f390611de1565b60405180910390fd5b61071933670de0b6b3a7640000836107149190611e01565b6110dd565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508091505090565b6000600254905090565b60008061077d610f0a565b905061078a858285611234565b6107958585856112c0565b60019150509392505050565b60006012905090565b6000806107b5610f0a565b90506107d68185856107c78589610e83565b6107d19190611e5b565b610f12565b600191505092915050565b6107f26107ec610f0a565b82611538565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087c90611c16565b60405180910390fd5b600081116108c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bf90611f23565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825461091a9190611e5b565b925050819055507fd28e43555d96dad7bf346bf69371aac886e7d6fb08c1fa49822f887bf7c4ebd6816040516109509190611a2a565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6060600480546109ff90611b98565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2b90611b98565b8015610a785780601f10610a4d57610100808354040283529160200191610a78565b820191906000526020600020905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b600080610a8d610f0a565b90506000610a9b8286610e83565b905083811015610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790611fb5565b60405180910390fd5b610aed8286868403610f12565b60019250505092915050565b600080610b04610f0a565b9050610b118185856112c0565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390611c16565b60405180910390fd5b818190508484905014610bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610beb90611ca8565b60405180910390fd5b60005b84849050811015610d26576000838383818110610c1757610c16611cc8565b5b905060200201351015610c2957610d13565b828282818110610c3c57610c3b611cc8565b5b9050602002013560066000878785818110610c5a57610c59611cc8565b5b9050602002016020810190610c6f9190611afc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254610cbb9190611e5b565b925050819055507fd28e43555d96dad7bf346bf69371aac886e7d6fb08c1fa49822f887bf7c4ebd6838383818110610cf657610cf5611cc8565b5b90506020020135604051610d0a9190611a2a565b60405180910390a15b8080610d1e90611d26565b915050610bf7565b5050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490611c16565b60405180910390fd5b6000811015610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df890612047565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055507fd28e43555d96dad7bf346bf69371aac886e7d6fb08c1fa49822f887bf7c4ebd681604051610e779190611a2a565b60405180910390a15050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f79906120d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe99061216b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d09190611a2a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561114d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611144906121d7565b60405180910390fd5b61115960008383611706565b806002600082825461116b9190611e5b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161121c9190611a2a565b60405180910390a36112306000838361170b565b5050565b60006112408484610e83565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112ba57818110156112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612243565b60405180910390fd5b6112b98484848403610f12565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611330576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611327906122d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612367565b60405180910390fd5b6113ab838383611706565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611428906123f9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161151f9190611a2a565b60405180910390a361153284848461170b565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f9061248b565b60405180910390fd5b6115b482600083611706565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561163a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116319061251d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ed9190611a2a565b60405180910390a36117018360008461170b565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561174a57808201518184015260208101905061172f565b83811115611759576000848401525b50505050565b6000601f19601f8301169050919050565b600061177b82611710565b611785818561171b565b935061179581856020860161172c565b61179e8161175f565b840191505092915050565b600060208201905081810360008301526117c38184611770565b905092915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117fa576117f96117d5565b5b8235905067ffffffffffffffff811115611817576118166117da565b5b602083019150836020820283011115611833576118326117df565b5b9250929050565b60008083601f8401126118505761184f6117d5565b5b8235905067ffffffffffffffff81111561186d5761186c6117da565b5b602083019150836020820283011115611889576118886117df565b5b9250929050565b600080600080604085870312156118aa576118a96117cb565b5b600085013567ffffffffffffffff8111156118c8576118c76117d0565b5b6118d4878288016117e4565b9450945050602085013567ffffffffffffffff8111156118f7576118f66117d0565b5b6119038782880161183a565b925092505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061193c82611911565b9050919050565b61194c81611931565b811461195757600080fd5b50565b60008135905061196981611943565b92915050565b6000819050919050565b6119828161196f565b811461198d57600080fd5b50565b60008135905061199f81611979565b92915050565b600080604083850312156119bc576119bb6117cb565b5b60006119ca8582860161195a565b92505060206119db85828601611990565b9150509250929050565b60008115159050919050565b6119fa816119e5565b82525050565b6000602082019050611a1560008301846119f1565b92915050565b611a248161196f565b82525050565b6000602082019050611a3f6000830184611a1b565b92915050565b600080600060608486031215611a5e57611a5d6117cb565b5b6000611a6c8682870161195a565b9350506020611a7d8682870161195a565b9250506040611a8e86828701611990565b9150509250925092565b600060ff82169050919050565b611aae81611a98565b82525050565b6000602082019050611ac96000830184611aa5565b92915050565b600060208284031215611ae557611ae46117cb565b5b6000611af384828501611990565b91505092915050565b600060208284031215611b1257611b116117cb565b5b6000611b208482850161195a565b91505092915050565b60008060408385031215611b4057611b3f6117cb565b5b6000611b4e8582860161195a565b9250506020611b5f8582860161195a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bb057607f821691505b60208210811415611bc457611bc3611b69565b5b50919050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000611c00600d8361171b565b9150611c0b82611bca565b602082019050919050565b60006020820190508181036000830152611c2f81611bf3565b9050919050565b7f54686572652073686f756c64206265206173206d616e7920686f6c646572206160008201527f646472657373657320617320636c61696d61626c657300000000000000000000602082015250565b6000611c9260368361171b565b9150611c9d82611c36565b604082019050919050565b60006020820190508181036000830152611cc181611c85565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d318261196f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611d6457611d63611cf7565b5b600182019050919050565b7f436c61696d61626c652073686f756c64206265206d6f7265207468616e207a6560008201527f726f20746f20636c61696d2e0000000000000000000000000000000000000000602082015250565b6000611dcb602c8361171b565b9150611dd682611d6f565b604082019050919050565b60006020820190508181036000830152611dfa81611dbe565b9050919050565b6000611e0c8261196f565b9150611e178361196f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e5057611e4f611cf7565b5b828202905092915050565b6000611e668261196f565b9150611e718361196f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ea657611ea5611cf7565b5b828201905092915050565b7f496e6372656d656e742076616c75652073686f756c642062652067726561746560008201527f72207468616e207a65726f000000000000000000000000000000000000000000602082015250565b6000611f0d602b8361171b565b9150611f1882611eb1565b604082019050919050565b60006020820190508181036000830152611f3c81611f00565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f9f60258361171b565b9150611faa82611f43565b604082019050919050565b60006020820190508181036000830152611fce81611f92565b9050919050565b7f496e6372656d656e742076616c75652073686f756c6420626520657175616c2060008201527f6f722067726561746572207468616e207a65726f000000000000000000000000602082015250565b600061203160348361171b565b915061203c82611fd5565b604082019050919050565b6000602082019050818103600083015261206081612024565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120c360248361171b565b91506120ce82612067565b604082019050919050565b600060208201905081810360008301526120f2816120b6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061215560228361171b565b9150612160826120f9565b604082019050919050565b6000602082019050818103600083015261218481612148565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006121c1601f8361171b565b91506121cc8261218b565b602082019050919050565b600060208201905081810360008301526121f0816121b4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061222d601d8361171b565b9150612238826121f7565b602082019050919050565b6000602082019050818103600083015261225c81612220565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006122bf60258361171b565b91506122ca82612263565b604082019050919050565b600060208201905081810360008301526122ee816122b2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061235160238361171b565b915061235c826122f5565b604082019050919050565b6000602082019050818103600083015261238081612344565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006123e360268361171b565b91506123ee82612387565b604082019050919050565b60006020820190508181036000830152612412816123d6565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061247560218361171b565b915061248082612419565b604082019050919050565b600060208201905081810360008301526124a481612468565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061250760228361171b565b9150612512826124ab565b604082019050919050565b60006020820190508181036000830152612536816124fa565b905091905056fea26469706673582212206276686a39537acc3eb4f3f012f4506601ca8c33346898eb2f6b108636bf01da64736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c806352e8d94e116100a2578063a457c2d711610071578063a457c2d7146102f5578063a9059cbb14610325578063ca6fd3b514610355578063d459175c14610371578063dd62ed3e1461038d57610116565b806352e8d94e1461025b57806370a08231146102775780639559acc2146102a757806395d89b41146102d757610116565b806318160ddd116100e957806318160ddd146101a357806323b872dd146101c1578063313ce567146101f1578063395093511461020f57806342966c681461023f57610116565b806306fdde031461011b578063077c23db14610139578063095ea7b3146101555780631249c58b14610185575b600080fd5b6101236103bd565b60405161013091906117a9565b60405180910390f35b610153600480360381019061014e9190611890565b61044f565b005b61016f600480360381019061016a91906119a5565b61064e565b60405161017c9190611a00565b60405180910390f35b61018d610671565b60405161019a9190611a2a565b60405180910390f35b6101ab610768565b6040516101b89190611a2a565b60405180910390f35b6101db60048036038101906101d69190611a45565b610772565b6040516101e89190611a00565b60405180910390f35b6101f96107a1565b6040516102069190611ab4565b60405180910390f35b610229600480360381019061022491906119a5565b6107aa565b6040516102369190611a00565b60405180910390f35b61025960048036038101906102549190611acf565b6107e1565b005b610275600480360381019061027091906119a5565b6107f5565b005b610291600480360381019061028c9190611afc565b61095c565b60405161029e9190611a2a565b60405180910390f35b6102c160048036038101906102bc9190611afc565b6109a4565b6040516102ce9190611a2a565b60405180910390f35b6102df6109f0565b6040516102ec91906117a9565b60405180910390f35b61030f600480360381019061030a91906119a5565b610a82565b60405161031c9190611a00565b60405180910390f35b61033f600480360381019061033a91906119a5565b610af9565b60405161034c9190611a00565b60405180910390f35b61036f600480360381019061036a9190611890565b610b1c565b005b61038b600480360381019061038691906119a5565b610d2d565b005b6103a760048036038101906103a29190611b29565b610e83565b6040516103b49190611a2a565b60405180910390f35b6060600380546103cc90611b98565b80601f01602080910402602001604051908101604052809291908181526020018280546103f890611b98565b80156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d690611c16565b60405180910390fd5b818190508484905014610527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051e90611ca8565b60405180910390fd5b60005b8484905081101561064757600083838381811061054a57610549611cc8565b5b90506020020135101561055c57610634565b82828281811061056f5761056e611cc8565b5b905060200201356006600087878581811061058d5761058c611cc8565b5b90506020020160208101906105a29190611afc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055507fd28e43555d96dad7bf346bf69371aac886e7d6fb08c1fa49822f887bf7c4ebd683838381811061061757610616611cc8565b5b9050602002013560405161062b9190611a2a565b60405180910390a15b808061063f90611d26565b91505061052a565b5050505050565b600080610659610f0a565b9050610666818585610f12565b600191505092915050565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600081116106fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f390611de1565b60405180910390fd5b61071933670de0b6b3a7640000836107149190611e01565b6110dd565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508091505090565b6000600254905090565b60008061077d610f0a565b905061078a858285611234565b6107958585856112c0565b60019150509392505050565b60006012905090565b6000806107b5610f0a565b90506107d68185856107c78589610e83565b6107d19190611e5b565b610f12565b600191505092915050565b6107f26107ec610f0a565b82611538565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087c90611c16565b60405180910390fd5b600081116108c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bf90611f23565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825461091a9190611e5b565b925050819055507fd28e43555d96dad7bf346bf69371aac886e7d6fb08c1fa49822f887bf7c4ebd6816040516109509190611a2a565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6060600480546109ff90611b98565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2b90611b98565b8015610a785780601f10610a4d57610100808354040283529160200191610a78565b820191906000526020600020905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b600080610a8d610f0a565b90506000610a9b8286610e83565b905083811015610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790611fb5565b60405180910390fd5b610aed8286868403610f12565b60019250505092915050565b600080610b04610f0a565b9050610b118185856112c0565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390611c16565b60405180910390fd5b818190508484905014610bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610beb90611ca8565b60405180910390fd5b60005b84849050811015610d26576000838383818110610c1757610c16611cc8565b5b905060200201351015610c2957610d13565b828282818110610c3c57610c3b611cc8565b5b9050602002013560066000878785818110610c5a57610c59611cc8565b5b9050602002016020810190610c6f9190611afc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254610cbb9190611e5b565b925050819055507fd28e43555d96dad7bf346bf69371aac886e7d6fb08c1fa49822f887bf7c4ebd6838383818110610cf657610cf5611cc8565b5b90506020020135604051610d0a9190611a2a565b60405180910390a15b8080610d1e90611d26565b915050610bf7565b5050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490611c16565b60405180910390fd5b6000811015610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df890612047565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055507fd28e43555d96dad7bf346bf69371aac886e7d6fb08c1fa49822f887bf7c4ebd681604051610e779190611a2a565b60405180910390a15050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f79906120d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe99061216b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d09190611a2a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561114d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611144906121d7565b60405180910390fd5b61115960008383611706565b806002600082825461116b9190611e5b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161121c9190611a2a565b60405180910390a36112306000838361170b565b5050565b60006112408484610e83565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112ba57818110156112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612243565b60405180910390fd5b6112b98484848403610f12565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611330576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611327906122d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612367565b60405180910390fd5b6113ab838383611706565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611428906123f9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161151f9190611a2a565b60405180910390a361153284848461170b565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f9061248b565b60405180910390fd5b6115b482600083611706565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561163a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116319061251d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ed9190611a2a565b60405180910390a36117018360008461170b565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561174a57808201518184015260208101905061172f565b83811115611759576000848401525b50505050565b6000601f19601f8301169050919050565b600061177b82611710565b611785818561171b565b935061179581856020860161172c565b61179e8161175f565b840191505092915050565b600060208201905081810360008301526117c38184611770565b905092915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117fa576117f96117d5565b5b8235905067ffffffffffffffff811115611817576118166117da565b5b602083019150836020820283011115611833576118326117df565b5b9250929050565b60008083601f8401126118505761184f6117d5565b5b8235905067ffffffffffffffff81111561186d5761186c6117da565b5b602083019150836020820283011115611889576118886117df565b5b9250929050565b600080600080604085870312156118aa576118a96117cb565b5b600085013567ffffffffffffffff8111156118c8576118c76117d0565b5b6118d4878288016117e4565b9450945050602085013567ffffffffffffffff8111156118f7576118f66117d0565b5b6119038782880161183a565b925092505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061193c82611911565b9050919050565b61194c81611931565b811461195757600080fd5b50565b60008135905061196981611943565b92915050565b6000819050919050565b6119828161196f565b811461198d57600080fd5b50565b60008135905061199f81611979565b92915050565b600080604083850312156119bc576119bb6117cb565b5b60006119ca8582860161195a565b92505060206119db85828601611990565b9150509250929050565b60008115159050919050565b6119fa816119e5565b82525050565b6000602082019050611a1560008301846119f1565b92915050565b611a248161196f565b82525050565b6000602082019050611a3f6000830184611a1b565b92915050565b600080600060608486031215611a5e57611a5d6117cb565b5b6000611a6c8682870161195a565b9350506020611a7d8682870161195a565b9250506040611a8e86828701611990565b9150509250925092565b600060ff82169050919050565b611aae81611a98565b82525050565b6000602082019050611ac96000830184611aa5565b92915050565b600060208284031215611ae557611ae46117cb565b5b6000611af384828501611990565b91505092915050565b600060208284031215611b1257611b116117cb565b5b6000611b208482850161195a565b91505092915050565b60008060408385031215611b4057611b3f6117cb565b5b6000611b4e8582860161195a565b9250506020611b5f8582860161195a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bb057607f821691505b60208210811415611bc457611bc3611b69565b5b50919050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000611c00600d8361171b565b9150611c0b82611bca565b602082019050919050565b60006020820190508181036000830152611c2f81611bf3565b9050919050565b7f54686572652073686f756c64206265206173206d616e7920686f6c646572206160008201527f646472657373657320617320636c61696d61626c657300000000000000000000602082015250565b6000611c9260368361171b565b9150611c9d82611c36565b604082019050919050565b60006020820190508181036000830152611cc181611c85565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d318261196f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611d6457611d63611cf7565b5b600182019050919050565b7f436c61696d61626c652073686f756c64206265206d6f7265207468616e207a6560008201527f726f20746f20636c61696d2e0000000000000000000000000000000000000000602082015250565b6000611dcb602c8361171b565b9150611dd682611d6f565b604082019050919050565b60006020820190508181036000830152611dfa81611dbe565b9050919050565b6000611e0c8261196f565b9150611e178361196f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e5057611e4f611cf7565b5b828202905092915050565b6000611e668261196f565b9150611e718361196f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ea657611ea5611cf7565b5b828201905092915050565b7f496e6372656d656e742076616c75652073686f756c642062652067726561746560008201527f72207468616e207a65726f000000000000000000000000000000000000000000602082015250565b6000611f0d602b8361171b565b9150611f1882611eb1565b604082019050919050565b60006020820190508181036000830152611f3c81611f00565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f9f60258361171b565b9150611faa82611f43565b604082019050919050565b60006020820190508181036000830152611fce81611f92565b9050919050565b7f496e6372656d656e742076616c75652073686f756c6420626520657175616c2060008201527f6f722067726561746572207468616e207a65726f000000000000000000000000602082015250565b600061203160348361171b565b915061203c82611fd5565b604082019050919050565b6000602082019050818103600083015261206081612024565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120c360248361171b565b91506120ce82612067565b604082019050919050565b600060208201905081810360008301526120f2816120b6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061215560228361171b565b9150612160826120f9565b604082019050919050565b6000602082019050818103600083015261218481612148565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006121c1601f8361171b565b91506121cc8261218b565b602082019050919050565b600060208201905081810360008301526121f0816121b4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061222d601d8361171b565b9150612238826121f7565b602082019050919050565b6000602082019050818103600083015261225c81612220565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006122bf60258361171b565b91506122ca82612263565b604082019050919050565b600060208201905081810360008301526122ee816122b2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061235160238361171b565b915061235c826122f5565b604082019050919050565b6000602082019050818103600083015261238081612344565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006123e360268361171b565b91506123ee82612387565b604082019050919050565b60006020820190508181036000830152612412816123d6565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061247560218361171b565b915061248082612419565b604082019050919050565b600060208201905081810360008301526124a481612468565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061250760228361171b565b9150612512826124ab565b604082019050919050565b60006020820190508181036000830152612536816124fa565b905091905056fea26469706673582212206276686a39537acc3eb4f3f012f4506601ca8c33346898eb2f6b108636bf01da64736f6c63430008090033

Deployed Bytecode Sourcemap

115:2758:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:100:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;882:587:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4558:201:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2559:311:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3327:108:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5339:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3169:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6009:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;532:91:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1477:307:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3498:127:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2391:160:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2417:104:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6750:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3831:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1792:591:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;524:350;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4087:151:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2198:100;2252:13;2285:5;2278:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:100;:::o;882:587:5:-;473:5;;;;;;;;;;;459:19;;:10;:19;;;451:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;1085:11:::1;;:18;;1058:16;;:23;;:45;1036:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;1201:6;1196:266;1217:16;;:23;;1213:1;:27;1196:266;;;1283:1;1266:11;;1278:1;1266:14;;;;;;;:::i;:::-;;;;;;;;:18;1262:67;;;1305:8;;1262:67;1385:11;;1397:1;1385:14;;;;;;;:::i;:::-;;;;;;;;1343:7;:28;1351:16;;1368:1;1351:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1343:28;;;;;;;;;;;;;;;:39;;:56;;;;1419:31;1435:11;;1447:1;1435:14;;;;;;;:::i;:::-;;;;;;;;1419:31;;;;;;:::i;:::-;;;;;;;;1196:266;1242:3;;;;;:::i;:::-;;;;1196:266;;;;882:587:::0;;;;:::o;4558:201:1:-;4641:4;4658:13;4674:12;:10;:12::i;:::-;4658:28;;4697:32;4706:5;4713:7;4722:6;4697:8;:32::i;:::-;4747:4;4740:11;;;4558:201;;;;:::o;2559:311:5:-;2591:4;2608:14;2625:7;:19;2633:10;2625:19;;;;;;;;;;;;;;;:30;;;2608:47;;2686:1;2674:9;:13;2666:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;2749:39;2755:10;2779:8;2767:9;:20;;;;:::i;:::-;2749:5;:39::i;:::-;2832:1;2799:7;:19;2807:10;2799:19;;;;;;;;;;;;;;;:30;;:34;;;;2853:9;2846:16;;;2559:311;:::o;3327:108:1:-;3388:7;3415:12;;3408:19;;3327:108;:::o;5339:261::-;5436:4;5453:15;5471:12;:10;:12::i;:::-;5453:30;;5494:38;5510:4;5516:7;5525:6;5494:15;:38::i;:::-;5543:27;5553:4;5559:2;5563:6;5543:9;:27::i;:::-;5588:4;5581:11;;;5339:261;;;;;:::o;3169:93::-;3227:5;3252:2;3245:9;;3169:93;:::o;6009:238::-;6097:4;6114:13;6130:12;:10;:12::i;:::-;6114:28;;6153:64;6162:5;6169:7;6206:10;6178:25;6188:5;6195:7;6178:9;:25::i;:::-;:38;;;;:::i;:::-;6153:8;:64::i;:::-;6235:4;6228:11;;;6009:238;;;;:::o;532:91:2:-;588:27;594:12;:10;:12::i;:::-;608:6;588:5;:27::i;:::-;532:91;:::o;1477:307:5:-;473:5;;;;;;;;;;;459:19;;:10;:19;;;451:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;1625:1:::1;1612:10;:14;1604:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;1723:10;1685:7;:23;1693:14;1685:23;;;;;;;;;;;;;;;:34;;;:48;;;;;;;:::i;:::-;;;;;;;;1749:27;1765:10;1749:27;;;;;;:::i;:::-;;;;;;;;1477:307:::0;;:::o;3498:127:1:-;3572:7;3599:9;:18;3609:7;3599:18;;;;;;;;;;;;;;;;3592:25;;3498:127;;;:::o;2391:160:5:-;2485:4;2509:7;:23;2517:14;2509:23;;;;;;;;;;;;;;;:34;;;2502:41;;2391:160;;;:::o;2417:104:1:-;2473:13;2506:7;2499:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:104;:::o;6750:436::-;6843:4;6860:13;6876:12;:10;:12::i;:::-;6860:28;;6899:24;6926:25;6936:5;6943:7;6926:9;:25::i;:::-;6899:52;;6990:15;6970:16;:35;;6962:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7083:60;7092:5;7099:7;7127:15;7108:16;:34;7083:8;:60::i;:::-;7174:4;7167:11;;;;6750:436;;;;:::o;3831:193::-;3910:4;3927:13;3943:12;:10;:12::i;:::-;3927:28;;3966;3976:5;3983:2;3987:6;3966:9;:28::i;:::-;4012:4;4005:11;;;3831:193;;;;:::o;1792:591:5:-;473:5;;;;;;;;;;;459:19;;:10;:19;;;451:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;1998:11:::1;;:18;;1971:16;;:23;;:45;1949:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;2114:6;2109:267;2130:16;;:23;;2126:1;:27;2109:267;;;2196:1;2179:11;;2191:1;2179:14;;;;;;;:::i;:::-;;;;;;;;:18;2175:67;;;2218:8;;2175:67;2299:11;;2311:1;2299:14;;;;;;;:::i;:::-;;;;;;;;2256:7;:28;2264:16;;2281:1;2264:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;2256:28;;;;;;;;;;;;;;;:39;;;:57;;;;;;;:::i;:::-;;;;;;;;2333:31;2349:11;;2361:1;2349:14;;;;;;;:::i;:::-;;;;;;;;2333:31;;;;;;:::i;:::-;;;;;;;;2109:267;2155:3;;;;;:::i;:::-;;;;2109:267;;;;1792:591:::0;;;;:::o;524:350::-;473:5;;;;;;;;;;;459:19;;:10;:19;;;451:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;684:1:::1;670:10;:15;;648:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;813:10;776:7;:23;784:14;776:23;;;;;;;;;;;;;;;:34;;:47;;;;839:27;855:10;839:27;;;;;;:::i;:::-;;;;;;;;524:350:::0;;:::o;4087:151:1:-;4176:7;4203:11;:18;4215:5;4203:18;;;;;;;;;;;;;;;:27;4222:7;4203:27;;;;;;;;;;;;;;;;4196:34;;4087:151;;;;:::o;656:98:0:-;709:7;736:10;729:17;;656:98;:::o;10743:346:1:-;10862:1;10845:19;;:5;:19;;;;10837:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10943:1;10924:21;;:7;:21;;;;10916:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11027:6;10997:11;:18;11009:5;10997:18;;;;;;;;;;;;;;;:27;11016:7;10997:27;;;;;;;;;;;;;;;:36;;;;11065:7;11049:32;;11058:5;11049:32;;;11074:6;11049:32;;;;;;:::i;:::-;;;;;;;;10743:346;;;:::o;8749:548::-;8852:1;8833:21;;:7;:21;;;;8825:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8903:49;8932:1;8936:7;8945:6;8903:20;:49::i;:::-;8981:6;8965:12;;:22;;;;;;;:::i;:::-;;;;;;;;9158:6;9136:9;:18;9146:7;9136:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;9212:7;9191:37;;9208:1;9191:37;;;9221:6;9191:37;;;;;;:::i;:::-;;;;;;;;9241:48;9269:1;9273:7;9282:6;9241:19;:48::i;:::-;8749:548;;:::o;11380:419::-;11481:24;11508:25;11518:5;11525:7;11508:9;:25::i;:::-;11481:52;;11568:17;11548:16;:37;11544:248;;11630:6;11610:16;:26;;11602:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11714:51;11723:5;11730:7;11758:6;11739:16;:25;11714:8;:51::i;:::-;11544:248;11470:329;11380:419;;;:::o;7656:806::-;7769:1;7753:18;;:4;:18;;;;7745:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7846:1;7832:16;;:2;:16;;;;7824:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7901:38;7922:4;7928:2;7932:6;7901:20;:38::i;:::-;7952:19;7974:9;:15;7984:4;7974:15;;;;;;;;;;;;;;;;7952:37;;8023:6;8008:11;:21;;8000:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8140:6;8126:11;:20;8108:9;:15;8118:4;8108:15;;;;;;;;;;;;;;;:38;;;;8343:6;8326:9;:13;8336:2;8326:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8393:2;8378:26;;8387:4;8378:26;;;8397:6;8378:26;;;;;;:::i;:::-;;;;;;;;8417:37;8437:4;8443:2;8447:6;8417:19;:37::i;:::-;7734:728;7656:806;;;:::o;9630:675::-;9733:1;9714:21;;:7;:21;;;;9706:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9786:49;9807:7;9824:1;9828:6;9786:20;:49::i;:::-;9848:22;9873:9;:18;9883:7;9873:18;;;;;;;;;;;;;;;;9848:43;;9928:6;9910:14;:24;;9902:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10047:6;10030:14;:23;10009:9;:18;10019:7;10009:18;;;;;;;;;;;;;;;:44;;;;10164:6;10148:12;;:22;;;;;;;;;;;10225:1;10199:37;;10208:7;10199:37;;;10229:6;10199:37;;;;;;:::i;:::-;;;;;;;;10249:48;10269:7;10286:1;10290:6;10249:19;:48::i;:::-;9695:610;9630:675;;:::o;12399:91::-;;;;:::o;13094:90::-;;;;:::o;7:99:6:-;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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:117;1833:1;1830;1823:12;1847:117;1956:1;1953;1946:12;1970:117;2079:1;2076;2069:12;2110:568;2183:8;2193:6;2243:3;2236:4;2228:6;2224:17;2220:27;2210:122;;2251:79;;:::i;:::-;2210:122;2364:6;2351:20;2341:30;;2394:18;2386:6;2383:30;2380:117;;;2416:79;;:::i;:::-;2380:117;2530:4;2522:6;2518:17;2506:29;;2584:3;2576:4;2568:6;2564:17;2554:8;2550:32;2547:41;2544:128;;;2591:79;;:::i;:::-;2544:128;2110:568;;;;;:::o;2701:::-;2774:8;2784:6;2834:3;2827:4;2819:6;2815:17;2811:27;2801:122;;2842:79;;:::i;:::-;2801:122;2955:6;2942:20;2932:30;;2985:18;2977:6;2974:30;2971:117;;;3007:79;;:::i;:::-;2971:117;3121:4;3113:6;3109:17;3097:29;;3175:3;3167:4;3159:6;3155:17;3145:8;3141:32;3138:41;3135:128;;;3182:79;;:::i;:::-;3135:128;2701:568;;;;;:::o;3275:934::-;3397:6;3405;3413;3421;3470:2;3458:9;3449:7;3445:23;3441:32;3438:119;;;3476:79;;:::i;:::-;3438:119;3624:1;3613:9;3609:17;3596:31;3654:18;3646:6;3643:30;3640:117;;;3676:79;;:::i;:::-;3640:117;3789:80;3861:7;3852:6;3841:9;3837:22;3789:80;:::i;:::-;3771:98;;;;3567:312;3946:2;3935:9;3931:18;3918:32;3977:18;3969:6;3966:30;3963:117;;;3999:79;;:::i;:::-;3963:117;4112:80;4184:7;4175:6;4164:9;4160:22;4112:80;:::i;:::-;4094:98;;;;3889:313;3275:934;;;;;;;:::o;4215:126::-;4252:7;4292:42;4285:5;4281:54;4270:65;;4215:126;;;:::o;4347:96::-;4384:7;4413:24;4431:5;4413:24;:::i;:::-;4402:35;;4347:96;;;:::o;4449:122::-;4522:24;4540:5;4522:24;:::i;:::-;4515:5;4512:35;4502:63;;4561:1;4558;4551:12;4502:63;4449:122;:::o;4577:139::-;4623:5;4661:6;4648:20;4639:29;;4677:33;4704:5;4677:33;:::i;:::-;4577:139;;;;:::o;4722:77::-;4759:7;4788:5;4777:16;;4722:77;;;:::o;4805:122::-;4878:24;4896:5;4878:24;:::i;:::-;4871:5;4868:35;4858:63;;4917:1;4914;4907:12;4858:63;4805:122;:::o;4933:139::-;4979:5;5017:6;5004:20;4995:29;;5033:33;5060:5;5033:33;:::i;:::-;4933:139;;;;:::o;5078:474::-;5146:6;5154;5203:2;5191:9;5182:7;5178:23;5174:32;5171:119;;;5209:79;;:::i;:::-;5171:119;5329:1;5354:53;5399:7;5390:6;5379:9;5375:22;5354:53;:::i;:::-;5344:63;;5300:117;5456:2;5482:53;5527:7;5518:6;5507:9;5503:22;5482:53;:::i;:::-;5472:63;;5427:118;5078:474;;;;;:::o;5558:90::-;5592:7;5635:5;5628:13;5621:21;5610:32;;5558:90;;;:::o;5654:109::-;5735:21;5750:5;5735:21;:::i;:::-;5730:3;5723:34;5654:109;;:::o;5769:210::-;5856:4;5894:2;5883:9;5879:18;5871:26;;5907:65;5969:1;5958:9;5954:17;5945:6;5907:65;:::i;:::-;5769:210;;;;:::o;5985:118::-;6072:24;6090:5;6072:24;:::i;:::-;6067:3;6060:37;5985:118;;:::o;6109:222::-;6202:4;6240:2;6229:9;6225:18;6217:26;;6253:71;6321:1;6310:9;6306:17;6297:6;6253:71;:::i;:::-;6109:222;;;;:::o;6337:619::-;6414:6;6422;6430;6479:2;6467:9;6458:7;6454:23;6450:32;6447:119;;;6485:79;;:::i;:::-;6447:119;6605:1;6630:53;6675:7;6666:6;6655:9;6651:22;6630:53;:::i;:::-;6620:63;;6576:117;6732:2;6758:53;6803:7;6794:6;6783:9;6779:22;6758:53;:::i;:::-;6748:63;;6703:118;6860:2;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6831:118;6337:619;;;;;:::o;6962:86::-;6997:7;7037:4;7030:5;7026:16;7015:27;;6962:86;;;:::o;7054:112::-;7137:22;7153:5;7137:22;:::i;:::-;7132:3;7125:35;7054:112;;:::o;7172:214::-;7261:4;7299:2;7288:9;7284:18;7276:26;;7312:67;7376:1;7365:9;7361:17;7352:6;7312:67;:::i;:::-;7172:214;;;;:::o;7392:329::-;7451:6;7500:2;7488:9;7479:7;7475:23;7471:32;7468:119;;;7506:79;;:::i;:::-;7468:119;7626:1;7651:53;7696:7;7687:6;7676:9;7672:22;7651:53;:::i;:::-;7641:63;;7597:117;7392:329;;;;:::o;7727:::-;7786:6;7835:2;7823:9;7814:7;7810:23;7806:32;7803:119;;;7841:79;;:::i;:::-;7803:119;7961:1;7986:53;8031:7;8022:6;8011:9;8007:22;7986:53;:::i;:::-;7976:63;;7932:117;7727:329;;;;:::o;8062:474::-;8130:6;8138;8187:2;8175:9;8166:7;8162:23;8158:32;8155:119;;;8193:79;;:::i;:::-;8155:119;8313:1;8338:53;8383:7;8374:6;8363:9;8359:22;8338:53;:::i;:::-;8328:63;;8284:117;8440:2;8466:53;8511:7;8502:6;8491:9;8487:22;8466:53;:::i;:::-;8456:63;;8411:118;8062:474;;;;;:::o;8542:180::-;8590:77;8587:1;8580:88;8687:4;8684:1;8677:15;8711:4;8708:1;8701:15;8728:320;8772:6;8809:1;8803:4;8799:12;8789:22;;8856:1;8850:4;8846:12;8877:18;8867:81;;8933:4;8925:6;8921:17;8911:27;;8867:81;8995:2;8987:6;8984:14;8964:18;8961:38;8958:84;;;9014:18;;:::i;:::-;8958:84;8779:269;8728:320;;;:::o;9054:163::-;9194:15;9190:1;9182:6;9178:14;9171:39;9054:163;:::o;9223:366::-;9365:3;9386:67;9450:2;9445:3;9386:67;:::i;:::-;9379:74;;9462:93;9551:3;9462:93;:::i;:::-;9580:2;9575:3;9571:12;9564:19;;9223:366;;;:::o;9595:419::-;9761:4;9799:2;9788:9;9784:18;9776:26;;9848:9;9842:4;9838:20;9834:1;9823:9;9819:17;9812:47;9876:131;10002:4;9876:131;:::i;:::-;9868:139;;9595:419;;;:::o;10020:241::-;10160:34;10156:1;10148:6;10144:14;10137:58;10229:24;10224:2;10216:6;10212:15;10205:49;10020:241;:::o;10267:366::-;10409:3;10430:67;10494:2;10489:3;10430:67;:::i;:::-;10423:74;;10506:93;10595:3;10506:93;:::i;:::-;10624:2;10619:3;10615:12;10608:19;;10267:366;;;:::o;10639:419::-;10805:4;10843:2;10832:9;10828:18;10820:26;;10892:9;10886:4;10882:20;10878:1;10867:9;10863:17;10856:47;10920:131;11046:4;10920:131;:::i;:::-;10912:139;;10639:419;;;:::o;11064:180::-;11112:77;11109:1;11102:88;11209:4;11206:1;11199:15;11233:4;11230:1;11223:15;11250:180;11298:77;11295:1;11288:88;11395:4;11392:1;11385:15;11419:4;11416:1;11409:15;11436:233;11475:3;11498:24;11516:5;11498:24;:::i;:::-;11489:33;;11544:66;11537:5;11534:77;11531:103;;;11614:18;;:::i;:::-;11531:103;11661:1;11654:5;11650:13;11643:20;;11436:233;;;:::o;11675:231::-;11815:34;11811:1;11803:6;11799:14;11792:58;11884:14;11879:2;11871:6;11867:15;11860:39;11675:231;:::o;11912:366::-;12054:3;12075:67;12139:2;12134:3;12075:67;:::i;:::-;12068:74;;12151:93;12240:3;12151:93;:::i;:::-;12269:2;12264:3;12260:12;12253:19;;11912:366;;;:::o;12284:419::-;12450:4;12488:2;12477:9;12473:18;12465:26;;12537:9;12531:4;12527:20;12523:1;12512:9;12508:17;12501:47;12565:131;12691:4;12565:131;:::i;:::-;12557:139;;12284:419;;;:::o;12709:348::-;12749:7;12772:20;12790:1;12772:20;:::i;:::-;12767:25;;12806:20;12824:1;12806:20;:::i;:::-;12801:25;;12994:1;12926:66;12922:74;12919:1;12916:81;12911:1;12904:9;12897:17;12893:105;12890:131;;;13001:18;;:::i;:::-;12890:131;13049:1;13046;13042:9;13031:20;;12709:348;;;;:::o;13063:305::-;13103:3;13122:20;13140:1;13122:20;:::i;:::-;13117:25;;13156:20;13174:1;13156:20;:::i;:::-;13151:25;;13310:1;13242:66;13238:74;13235:1;13232:81;13229:107;;;13316:18;;:::i;:::-;13229:107;13360:1;13357;13353:9;13346:16;;13063:305;;;;:::o;13374:230::-;13514:34;13510:1;13502:6;13498:14;13491:58;13583:13;13578:2;13570:6;13566:15;13559:38;13374:230;:::o;13610:366::-;13752:3;13773:67;13837:2;13832:3;13773:67;:::i;:::-;13766:74;;13849:93;13938:3;13849:93;:::i;:::-;13967:2;13962:3;13958:12;13951:19;;13610:366;;;:::o;13982:419::-;14148:4;14186:2;14175:9;14171:18;14163:26;;14235:9;14229:4;14225:20;14221:1;14210:9;14206:17;14199:47;14263:131;14389:4;14263:131;:::i;:::-;14255:139;;13982:419;;;:::o;14407:224::-;14547:34;14543:1;14535:6;14531:14;14524:58;14616:7;14611:2;14603:6;14599:15;14592:32;14407:224;:::o;14637:366::-;14779:3;14800:67;14864:2;14859:3;14800:67;:::i;:::-;14793:74;;14876:93;14965:3;14876:93;:::i;:::-;14994:2;14989:3;14985:12;14978:19;;14637:366;;;:::o;15009:419::-;15175:4;15213:2;15202:9;15198:18;15190:26;;15262:9;15256:4;15252:20;15248:1;15237:9;15233:17;15226:47;15290:131;15416:4;15290:131;:::i;:::-;15282:139;;15009:419;;;:::o;15434:239::-;15574:34;15570:1;15562:6;15558:14;15551:58;15643:22;15638:2;15630:6;15626:15;15619:47;15434:239;:::o;15679:366::-;15821:3;15842:67;15906:2;15901:3;15842:67;:::i;:::-;15835:74;;15918:93;16007:3;15918:93;:::i;:::-;16036:2;16031:3;16027:12;16020:19;;15679:366;;;:::o;16051:419::-;16217:4;16255:2;16244:9;16240:18;16232:26;;16304:9;16298:4;16294:20;16290:1;16279:9;16275:17;16268:47;16332:131;16458:4;16332:131;:::i;:::-;16324:139;;16051:419;;;:::o;16476:223::-;16616:34;16612:1;16604:6;16600:14;16593:58;16685:6;16680:2;16672:6;16668:15;16661:31;16476:223;:::o;16705:366::-;16847:3;16868:67;16932:2;16927:3;16868:67;:::i;:::-;16861:74;;16944:93;17033:3;16944:93;:::i;:::-;17062:2;17057:3;17053:12;17046:19;;16705:366;;;:::o;17077:419::-;17243:4;17281:2;17270:9;17266:18;17258:26;;17330:9;17324:4;17320:20;17316:1;17305:9;17301:17;17294:47;17358:131;17484:4;17358:131;:::i;:::-;17350:139;;17077:419;;;:::o;17502:221::-;17642:34;17638:1;17630:6;17626:14;17619:58;17711:4;17706:2;17698:6;17694:15;17687:29;17502:221;:::o;17729:366::-;17871:3;17892:67;17956:2;17951:3;17892:67;:::i;:::-;17885:74;;17968:93;18057:3;17968:93;:::i;:::-;18086:2;18081:3;18077:12;18070:19;;17729:366;;;:::o;18101:419::-;18267:4;18305:2;18294:9;18290:18;18282:26;;18354:9;18348:4;18344:20;18340:1;18329:9;18325:17;18318:47;18382:131;18508:4;18382:131;:::i;:::-;18374:139;;18101:419;;;:::o;18526:181::-;18666:33;18662:1;18654:6;18650:14;18643:57;18526:181;:::o;18713:366::-;18855:3;18876:67;18940:2;18935:3;18876:67;:::i;:::-;18869:74;;18952:93;19041:3;18952:93;:::i;:::-;19070:2;19065:3;19061:12;19054:19;;18713:366;;;:::o;19085:419::-;19251:4;19289:2;19278:9;19274:18;19266:26;;19338:9;19332:4;19328:20;19324:1;19313:9;19309:17;19302:47;19366:131;19492:4;19366:131;:::i;:::-;19358:139;;19085:419;;;:::o;19510:179::-;19650:31;19646:1;19638:6;19634:14;19627:55;19510:179;:::o;19695:366::-;19837:3;19858:67;19922:2;19917:3;19858:67;:::i;:::-;19851:74;;19934:93;20023:3;19934:93;:::i;:::-;20052:2;20047:3;20043:12;20036:19;;19695:366;;;:::o;20067:419::-;20233:4;20271:2;20260:9;20256:18;20248:26;;20320:9;20314:4;20310:20;20306:1;20295:9;20291:17;20284:47;20348:131;20474:4;20348:131;:::i;:::-;20340:139;;20067:419;;;:::o;20492:224::-;20632:34;20628:1;20620:6;20616:14;20609:58;20701:7;20696:2;20688:6;20684:15;20677:32;20492:224;:::o;20722:366::-;20864:3;20885:67;20949:2;20944:3;20885:67;:::i;:::-;20878:74;;20961:93;21050:3;20961:93;:::i;:::-;21079:2;21074:3;21070:12;21063:19;;20722:366;;;:::o;21094:419::-;21260:4;21298:2;21287:9;21283:18;21275:26;;21347:9;21341:4;21337:20;21333:1;21322:9;21318:17;21311:47;21375:131;21501:4;21375:131;:::i;:::-;21367:139;;21094:419;;;:::o;21519:222::-;21659:34;21655:1;21647:6;21643:14;21636:58;21728:5;21723:2;21715:6;21711:15;21704:30;21519:222;:::o;21747:366::-;21889:3;21910:67;21974:2;21969:3;21910:67;:::i;:::-;21903:74;;21986:93;22075:3;21986:93;:::i;:::-;22104:2;22099:3;22095:12;22088:19;;21747:366;;;:::o;22119:419::-;22285:4;22323:2;22312:9;22308:18;22300:26;;22372:9;22366:4;22362:20;22358:1;22347:9;22343:17;22336:47;22400:131;22526:4;22400:131;:::i;:::-;22392:139;;22119:419;;;:::o;22544:225::-;22684:34;22680:1;22672:6;22668:14;22661:58;22753:8;22748:2;22740:6;22736:15;22729:33;22544:225;:::o;22775:366::-;22917:3;22938:67;23002:2;22997:3;22938:67;:::i;:::-;22931:74;;23014:93;23103:3;23014:93;:::i;:::-;23132:2;23127:3;23123:12;23116:19;;22775:366;;;:::o;23147:419::-;23313:4;23351:2;23340:9;23336:18;23328:26;;23400:9;23394:4;23390:20;23386:1;23375:9;23371:17;23364:47;23428:131;23554:4;23428:131;:::i;:::-;23420:139;;23147:419;;;:::o;23572:220::-;23712:34;23708:1;23700:6;23696:14;23689:58;23781:3;23776:2;23768:6;23764:15;23757:28;23572:220;:::o;23798:366::-;23940:3;23961:67;24025:2;24020:3;23961:67;:::i;:::-;23954:74;;24037:93;24126:3;24037:93;:::i;:::-;24155:2;24150:3;24146:12;24139:19;;23798:366;;;:::o;24170:419::-;24336:4;24374:2;24363:9;24359:18;24351:26;;24423:9;24417:4;24413:20;24409:1;24398:9;24394:17;24387:47;24451:131;24577:4;24451:131;:::i;:::-;24443:139;;24170:419;;;:::o;24595:221::-;24735:34;24731:1;24723:6;24719:14;24712:58;24804:4;24799:2;24791:6;24787:15;24780:29;24595:221;:::o;24822:366::-;24964:3;24985:67;25049:2;25044:3;24985:67;:::i;:::-;24978:74;;25061:93;25150:3;25061:93;:::i;:::-;25179:2;25174:3;25170:12;25163:19;;24822:366;;;:::o;25194:419::-;25360:4;25398:2;25387:9;25383:18;25375:26;;25447:9;25441:4;25437:20;25433:1;25422:9;25418:17;25411:47;25475:131;25601:4;25475:131;:::i;:::-;25467:139;;25194:419;;;:::o

Swarm Source

ipfs://6276686a39537acc3eb4f3f012f4506601ca8c33346898eb2f6b108636bf01da
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.