ETH Price: $3,311.48 (-3.16%)
Gas: 17 Gwei

Token

Blubber (BLUB)
 

Overview

Max Total Supply

9,726,289.0687000000000085 BLUB

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,000 BLUB

Value
$0.00
0xb0266ee121dfdcd712657068497257f2b3523865
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:
BlubToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: BlubToken.sol
// SPDX-License-Identifier: MIT
pragma solidity >= 0.8.7;

import "./ERC20Burnable.sol";
import "./ERC20Capped.sol";
import "./Ownable.sol";

contract BlubToken is ERC20Burnable, ERC20Capped, Ownable {
    // admin contracts are allowed to mint
    mapping (address => bool) isAdmin;
    event SetAdmin(address indexed addr, bool value);

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection
     */
    constructor() 
        ERC20Capped(50000000 * 10**18)
        ERC20("Blubber", "BLUB")
    {}

    /*
     * @dev Override _mint because we're using both ERC20Burnable and ERC20Capped
     */
    function _mint(address account, uint256 amount) internal override(ERC20, ERC20Capped) {
        ERC20Capped._mint(account, amount);
    }

    /*
     * @dev Mint to wallet; callable by owner
     */
    function mintOwner(address account, uint256 amount) external onlyOwner {
        _mint(account, amount);
    }

    /*
     * @dev Mint to wallets; callable by owner
     */
    function mintOwnerArray(address[] calldata accounts, uint256[] calldata amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Bad array lengths");
        for (uint256 i = 0; i < accounts.length; i++) {
            _mint(accounts[i], amounts[i]);
        }
    }

    /*
     * @dev Mint to wallet; callable by admin address
     */
    function mintAdminContract(address account, uint256 amount) external {
        require(isAdmin[msg.sender], "Not authorized");
        _mint(account, amount);
    }

    /*
     * @dev Set admin value for address
     */
    function setAdmin(address addr, bool value) external onlyOwner {
        isAdmin[addr] = value;
        emit SetAdmin(addr, value);
    }
}

File 2 of 8: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (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 3 of 8: ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (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.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

File 4 of 8: ERC20Burnable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (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 both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

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

File 5 of 8: ERC20Capped.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (token/ERC20/extensions/ERC20Capped.sol)

pragma solidity ^0.8.0;

import "./ERC20.sol";

/**
 * @dev Extension of {ERC20} that adds a cap to the supply of tokens.
 */
abstract contract ERC20Capped is ERC20 {
    uint256 private immutable _cap;

    /**
     * @dev Sets the value of the `cap`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor(uint256 cap_) {
        require(cap_ > 0, "ERC20Capped: cap is 0");
        _cap = cap_;
    }

    /**
     * @dev Returns the cap on the token's total supply.
     */
    function cap() public view virtual returns (uint256) {
        return _cap;
    }

    /**
     * @dev See {ERC20-_mint}.
     */
    function _mint(address account, uint256 amount) internal virtual override {
        require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded");
        super._mint(account, amount);
    }
}

File 6 of 8: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

File 7 of 8: IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (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);
}

File 8 of 8: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "./Context.sol";

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAdmin","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":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintAdminContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"mintOwnerArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b506a295be96e640669720000006040518060400160405280600781526020017f426c7562626572000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f424c5542000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000a292919062000201565b508060049080519060200190620000bb92919062000201565b5050506000811162000104576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000fb90620002d8565b60405180910390fd5b8060808181525050506200012d620001216200013360201b60201c565b6200013b60201b60201c565b62000399565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200020f906200030b565b90600052602060002090601f0160209004810192826200023357600085556200027f565b82601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b6000620002c0601583620002fa565b9150620002cd8262000370565b602082019050919050565b60006020820190508181036000830152620002f381620002b1565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200032457607f821691505b602082108114156200033b576200033a62000341565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332304361707065643a2063617020697320300000000000000000000000600082015250565b6080516126ab620003b560003960006105cd01526126ab6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80634b0bddd2116100b857806395d89b411161007c57806395d89b4114610328578063a457c2d714610346578063a9059cbb14610376578063d58c2c55146103a6578063dd62ed3e146103c2578063f2fde38b146103f257610137565b80634b0bddd21461029857806370a08231146102b4578063715018a6146102e457806379cc6790146102ee5780638da5cb5b1461030a57610137565b8063355274ea116100ff578063355274ea146101f65780633950935114610214578063408cbf941461024457806342966c681461026057806345a986d41461027c57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a57806323b872dd146101a8578063313ce567146101d8575b600080fd5b61014461040e565b6040516101519190611d46565b60405180910390f35b610174600480360381019061016f919061197d565b6104a0565b6040516101819190611d2b565b60405180910390f35b6101926104be565b60405161019f9190611f68565b60405180910390f35b6101c260048036038101906101bd91906118ea565b6104c8565b6040516101cf9190611d2b565b60405180910390f35b6101e06105c0565b6040516101ed9190611f83565b60405180910390f35b6101fe6105c9565b60405161020b9190611f68565b60405180910390f35b61022e6004803603810190610229919061197d565b6105f1565b60405161023b9190611d2b565b60405180910390f35b61025e6004803603810190610259919061197d565b61069d565b005b61027a60048036038101906102759190611a3e565b610727565b005b610296600480360381019061029191906119bd565b61073b565b005b6102b260048036038101906102ad919061193d565b610871565b005b6102ce60048036038101906102c9919061187d565b610996565b6040516102db9190611f68565b60405180910390f35b6102ec6109de565b005b6103086004803603810190610303919061197d565b610a66565b005b610312610ae1565b60405161031f9190611d10565b60405180910390f35b610330610b0b565b60405161033d9190611d46565b60405180910390f35b610360600480360381019061035b919061197d565b610b9d565b60405161036d9190611d2b565b60405180910390f35b610390600480360381019061038b919061197d565b610c88565b60405161039d9190611d2b565b60405180910390f35b6103c060048036038101906103bb919061197d565b610ca6565b005b6103dc60048036038101906103d791906118aa565b610d40565b6040516103e99190611f68565b60405180910390f35b61040c6004803603810190610407919061187d565b610dc7565b005b60606003805461041d906120cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610449906120cc565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b5050505050905090565b60006104b46104ad610ebf565b8484610ec7565b6001905092915050565b6000600254905090565b60006104d5848484611092565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610520610ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059790611e28565b60405180910390fd5b6105b4856105ac610ebf565b858403610ec7565b60019150509392505050565b60006012905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60006106936105fe610ebf565b84846001600061060c610ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461068e9190611fba565b610ec7565b6001905092915050565b6106a5610ebf565b73ffffffffffffffffffffffffffffffffffffffff166106c3610ae1565b73ffffffffffffffffffffffffffffffffffffffff1614610719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071090611e48565b60405180910390fd5b6107238282611313565b5050565b610738610732610ebf565b82611321565b50565b610743610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610761610ae1565b73ffffffffffffffffffffffffffffffffffffffff16146107b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae90611e48565b60405180910390fd5b8181905084849050146107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f690611d88565b60405180910390fd5b60005b8484905081101561086a57610857858583818110610823576108226121a5565b5b9050602002016020810190610838919061187d565b84848481811061084b5761084a6121a5565b5b90506020020135611313565b8080610862906120fe565b915050610802565b5050505050565b610879610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610897610ae1565b73ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490611e48565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f55a5194bc0174fcaf12b2978bef43911466bf63b34db8d1dd1a0d5dcd5c41bea8260405161098a9190611d2b565b60405180910390a25050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109e6610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610a04610ae1565b73ffffffffffffffffffffffffffffffffffffffff1614610a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5190611e48565b60405180910390fd5b610a6460006114f8565b565b6000610a7983610a74610ebf565b610d40565b905081811015610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab590611e68565b60405180910390fd5b610ad283610aca610ebf565b848403610ec7565b610adc8383611321565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b1a906120cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610b46906120cc565b8015610b935780601f10610b6857610100808354040283529160200191610b93565b820191906000526020600020905b815481529060010190602001808311610b7657829003601f168201915b5050505050905090565b60008060016000610bac610ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6090611f08565b60405180910390fd5b610c7d610c74610ebf565b85858403610ec7565b600191505092915050565b6000610c9c610c95610ebf565b8484611092565b6001905092915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990611f28565b60405180910390fd5b610d3c8282611313565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dcf610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610ded610ae1565b73ffffffffffffffffffffffffffffffffffffffff1614610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a90611e48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90611dc8565b60405180910390fd5b610ebc816114f8565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90611ee8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e90611de8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110859190611f68565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f990611ea8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116990611d68565b60405180910390fd5b61117d8383836115be565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa90611e08565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112969190611fba565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112fa9190611f68565b60405180910390a361130d8484846115c3565b50505050565b61131d82826115c8565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890611e88565b60405180910390fd5b61139d826000836115be565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90611da8565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461147a9190612010565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114df9190611f68565b60405180910390a36114f3836000846115c3565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6115d06105c9565b816115d96104be565b6115e39190611fba565b1115611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90611ec8565b60405180910390fd5b61162e8282611632565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169990611f48565b60405180910390fd5b6116ae600083836115be565b80600260008282546116c09190611fba565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117159190611fba565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161177a9190611f68565b60405180910390a361178e600083836115c3565b5050565b6000813590506117a181612630565b92915050565b60008083601f8401126117bd576117bc6121d9565b5b8235905067ffffffffffffffff8111156117da576117d96121d4565b5b6020830191508360208202830111156117f6576117f56121de565b5b9250929050565b60008083601f840112611813576118126121d9565b5b8235905067ffffffffffffffff8111156118305761182f6121d4565b5b60208301915083602082028301111561184c5761184b6121de565b5b9250929050565b60008135905061186281612647565b92915050565b6000813590506118778161265e565b92915050565b600060208284031215611893576118926121e8565b5b60006118a184828501611792565b91505092915050565b600080604083850312156118c1576118c06121e8565b5b60006118cf85828601611792565b92505060206118e085828601611792565b9150509250929050565b600080600060608486031215611903576119026121e8565b5b600061191186828701611792565b935050602061192286828701611792565b925050604061193386828701611868565b9150509250925092565b60008060408385031215611954576119536121e8565b5b600061196285828601611792565b925050602061197385828601611853565b9150509250929050565b60008060408385031215611994576119936121e8565b5b60006119a285828601611792565b92505060206119b385828601611868565b9150509250929050565b600080600080604085870312156119d7576119d66121e8565b5b600085013567ffffffffffffffff8111156119f5576119f46121e3565b5b611a01878288016117a7565b9450945050602085013567ffffffffffffffff811115611a2457611a236121e3565b5b611a30878288016117fd565b925092505092959194509250565b600060208284031215611a5457611a536121e8565b5b6000611a6284828501611868565b91505092915050565b611a7481612044565b82525050565b611a8381612056565b82525050565b6000611a9482611f9e565b611a9e8185611fa9565b9350611aae818560208601612099565b611ab7816121ed565b840191505092915050565b6000611acf602383611fa9565b9150611ada826121fe565b604082019050919050565b6000611af2601183611fa9565b9150611afd8261224d565b602082019050919050565b6000611b15602283611fa9565b9150611b2082612276565b604082019050919050565b6000611b38602683611fa9565b9150611b43826122c5565b604082019050919050565b6000611b5b602283611fa9565b9150611b6682612314565b604082019050919050565b6000611b7e602683611fa9565b9150611b8982612363565b604082019050919050565b6000611ba1602883611fa9565b9150611bac826123b2565b604082019050919050565b6000611bc4602083611fa9565b9150611bcf82612401565b602082019050919050565b6000611be7602483611fa9565b9150611bf28261242a565b604082019050919050565b6000611c0a602183611fa9565b9150611c1582612479565b604082019050919050565b6000611c2d602583611fa9565b9150611c38826124c8565b604082019050919050565b6000611c50601983611fa9565b9150611c5b82612517565b602082019050919050565b6000611c73602483611fa9565b9150611c7e82612540565b604082019050919050565b6000611c96602583611fa9565b9150611ca18261258f565b604082019050919050565b6000611cb9600e83611fa9565b9150611cc4826125de565b602082019050919050565b6000611cdc601f83611fa9565b9150611ce782612607565b602082019050919050565b611cfb81612082565b82525050565b611d0a8161208c565b82525050565b6000602082019050611d256000830184611a6b565b92915050565b6000602082019050611d406000830184611a7a565b92915050565b60006020820190508181036000830152611d608184611a89565b905092915050565b60006020820190508181036000830152611d8181611ac2565b9050919050565b60006020820190508181036000830152611da181611ae5565b9050919050565b60006020820190508181036000830152611dc181611b08565b9050919050565b60006020820190508181036000830152611de181611b2b565b9050919050565b60006020820190508181036000830152611e0181611b4e565b9050919050565b60006020820190508181036000830152611e2181611b71565b9050919050565b60006020820190508181036000830152611e4181611b94565b9050919050565b60006020820190508181036000830152611e6181611bb7565b9050919050565b60006020820190508181036000830152611e8181611bda565b9050919050565b60006020820190508181036000830152611ea181611bfd565b9050919050565b60006020820190508181036000830152611ec181611c20565b9050919050565b60006020820190508181036000830152611ee181611c43565b9050919050565b60006020820190508181036000830152611f0181611c66565b9050919050565b60006020820190508181036000830152611f2181611c89565b9050919050565b60006020820190508181036000830152611f4181611cac565b9050919050565b60006020820190508181036000830152611f6181611ccf565b9050919050565b6000602082019050611f7d6000830184611cf2565b92915050565b6000602082019050611f986000830184611d01565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611fc582612082565b9150611fd083612082565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561200557612004612147565b5b828201905092915050565b600061201b82612082565b915061202683612082565b92508282101561203957612038612147565b5b828203905092915050565b600061204f82612062565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156120b757808201518184015260208101905061209c565b838111156120c6576000848401525b50505050565b600060028204905060018216806120e457607f821691505b602082108114156120f8576120f7612176565b5b50919050565b600061210982612082565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561213c5761213b612147565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f426164206172726179206c656e67746873000000000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61263981612044565b811461264457600080fd5b50565b61265081612056565b811461265b57600080fd5b50565b61266781612082565b811461267257600080fd5b5056fea264697066735822122061aeccfef445dd7f2ab2e35262a03ce128dcb3f79205325ba2171471c1012c0d64736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c80634b0bddd2116100b857806395d89b411161007c57806395d89b4114610328578063a457c2d714610346578063a9059cbb14610376578063d58c2c55146103a6578063dd62ed3e146103c2578063f2fde38b146103f257610137565b80634b0bddd21461029857806370a08231146102b4578063715018a6146102e457806379cc6790146102ee5780638da5cb5b1461030a57610137565b8063355274ea116100ff578063355274ea146101f65780633950935114610214578063408cbf941461024457806342966c681461026057806345a986d41461027c57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a57806323b872dd146101a8578063313ce567146101d8575b600080fd5b61014461040e565b6040516101519190611d46565b60405180910390f35b610174600480360381019061016f919061197d565b6104a0565b6040516101819190611d2b565b60405180910390f35b6101926104be565b60405161019f9190611f68565b60405180910390f35b6101c260048036038101906101bd91906118ea565b6104c8565b6040516101cf9190611d2b565b60405180910390f35b6101e06105c0565b6040516101ed9190611f83565b60405180910390f35b6101fe6105c9565b60405161020b9190611f68565b60405180910390f35b61022e6004803603810190610229919061197d565b6105f1565b60405161023b9190611d2b565b60405180910390f35b61025e6004803603810190610259919061197d565b61069d565b005b61027a60048036038101906102759190611a3e565b610727565b005b610296600480360381019061029191906119bd565b61073b565b005b6102b260048036038101906102ad919061193d565b610871565b005b6102ce60048036038101906102c9919061187d565b610996565b6040516102db9190611f68565b60405180910390f35b6102ec6109de565b005b6103086004803603810190610303919061197d565b610a66565b005b610312610ae1565b60405161031f9190611d10565b60405180910390f35b610330610b0b565b60405161033d9190611d46565b60405180910390f35b610360600480360381019061035b919061197d565b610b9d565b60405161036d9190611d2b565b60405180910390f35b610390600480360381019061038b919061197d565b610c88565b60405161039d9190611d2b565b60405180910390f35b6103c060048036038101906103bb919061197d565b610ca6565b005b6103dc60048036038101906103d791906118aa565b610d40565b6040516103e99190611f68565b60405180910390f35b61040c6004803603810190610407919061187d565b610dc7565b005b60606003805461041d906120cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610449906120cc565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b5050505050905090565b60006104b46104ad610ebf565b8484610ec7565b6001905092915050565b6000600254905090565b60006104d5848484611092565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610520610ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059790611e28565b60405180910390fd5b6105b4856105ac610ebf565b858403610ec7565b60019150509392505050565b60006012905090565b60007f000000000000000000000000000000000000000000295be96e64066972000000905090565b60006106936105fe610ebf565b84846001600061060c610ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461068e9190611fba565b610ec7565b6001905092915050565b6106a5610ebf565b73ffffffffffffffffffffffffffffffffffffffff166106c3610ae1565b73ffffffffffffffffffffffffffffffffffffffff1614610719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071090611e48565b60405180910390fd5b6107238282611313565b5050565b610738610732610ebf565b82611321565b50565b610743610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610761610ae1565b73ffffffffffffffffffffffffffffffffffffffff16146107b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae90611e48565b60405180910390fd5b8181905084849050146107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f690611d88565b60405180910390fd5b60005b8484905081101561086a57610857858583818110610823576108226121a5565b5b9050602002016020810190610838919061187d565b84848481811061084b5761084a6121a5565b5b90506020020135611313565b8080610862906120fe565b915050610802565b5050505050565b610879610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610897610ae1565b73ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490611e48565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f55a5194bc0174fcaf12b2978bef43911466bf63b34db8d1dd1a0d5dcd5c41bea8260405161098a9190611d2b565b60405180910390a25050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109e6610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610a04610ae1565b73ffffffffffffffffffffffffffffffffffffffff1614610a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5190611e48565b60405180910390fd5b610a6460006114f8565b565b6000610a7983610a74610ebf565b610d40565b905081811015610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab590611e68565b60405180910390fd5b610ad283610aca610ebf565b848403610ec7565b610adc8383611321565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b1a906120cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610b46906120cc565b8015610b935780601f10610b6857610100808354040283529160200191610b93565b820191906000526020600020905b815481529060010190602001808311610b7657829003601f168201915b5050505050905090565b60008060016000610bac610ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6090611f08565b60405180910390fd5b610c7d610c74610ebf565b85858403610ec7565b600191505092915050565b6000610c9c610c95610ebf565b8484611092565b6001905092915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990611f28565b60405180910390fd5b610d3c8282611313565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dcf610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610ded610ae1565b73ffffffffffffffffffffffffffffffffffffffff1614610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a90611e48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90611dc8565b60405180910390fd5b610ebc816114f8565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90611ee8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e90611de8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110859190611f68565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f990611ea8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116990611d68565b60405180910390fd5b61117d8383836115be565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa90611e08565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112969190611fba565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112fa9190611f68565b60405180910390a361130d8484846115c3565b50505050565b61131d82826115c8565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890611e88565b60405180910390fd5b61139d826000836115be565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90611da8565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461147a9190612010565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114df9190611f68565b60405180910390a36114f3836000846115c3565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6115d06105c9565b816115d96104be565b6115e39190611fba565b1115611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90611ec8565b60405180910390fd5b61162e8282611632565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169990611f48565b60405180910390fd5b6116ae600083836115be565b80600260008282546116c09190611fba565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117159190611fba565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161177a9190611f68565b60405180910390a361178e600083836115c3565b5050565b6000813590506117a181612630565b92915050565b60008083601f8401126117bd576117bc6121d9565b5b8235905067ffffffffffffffff8111156117da576117d96121d4565b5b6020830191508360208202830111156117f6576117f56121de565b5b9250929050565b60008083601f840112611813576118126121d9565b5b8235905067ffffffffffffffff8111156118305761182f6121d4565b5b60208301915083602082028301111561184c5761184b6121de565b5b9250929050565b60008135905061186281612647565b92915050565b6000813590506118778161265e565b92915050565b600060208284031215611893576118926121e8565b5b60006118a184828501611792565b91505092915050565b600080604083850312156118c1576118c06121e8565b5b60006118cf85828601611792565b92505060206118e085828601611792565b9150509250929050565b600080600060608486031215611903576119026121e8565b5b600061191186828701611792565b935050602061192286828701611792565b925050604061193386828701611868565b9150509250925092565b60008060408385031215611954576119536121e8565b5b600061196285828601611792565b925050602061197385828601611853565b9150509250929050565b60008060408385031215611994576119936121e8565b5b60006119a285828601611792565b92505060206119b385828601611868565b9150509250929050565b600080600080604085870312156119d7576119d66121e8565b5b600085013567ffffffffffffffff8111156119f5576119f46121e3565b5b611a01878288016117a7565b9450945050602085013567ffffffffffffffff811115611a2457611a236121e3565b5b611a30878288016117fd565b925092505092959194509250565b600060208284031215611a5457611a536121e8565b5b6000611a6284828501611868565b91505092915050565b611a7481612044565b82525050565b611a8381612056565b82525050565b6000611a9482611f9e565b611a9e8185611fa9565b9350611aae818560208601612099565b611ab7816121ed565b840191505092915050565b6000611acf602383611fa9565b9150611ada826121fe565b604082019050919050565b6000611af2601183611fa9565b9150611afd8261224d565b602082019050919050565b6000611b15602283611fa9565b9150611b2082612276565b604082019050919050565b6000611b38602683611fa9565b9150611b43826122c5565b604082019050919050565b6000611b5b602283611fa9565b9150611b6682612314565b604082019050919050565b6000611b7e602683611fa9565b9150611b8982612363565b604082019050919050565b6000611ba1602883611fa9565b9150611bac826123b2565b604082019050919050565b6000611bc4602083611fa9565b9150611bcf82612401565b602082019050919050565b6000611be7602483611fa9565b9150611bf28261242a565b604082019050919050565b6000611c0a602183611fa9565b9150611c1582612479565b604082019050919050565b6000611c2d602583611fa9565b9150611c38826124c8565b604082019050919050565b6000611c50601983611fa9565b9150611c5b82612517565b602082019050919050565b6000611c73602483611fa9565b9150611c7e82612540565b604082019050919050565b6000611c96602583611fa9565b9150611ca18261258f565b604082019050919050565b6000611cb9600e83611fa9565b9150611cc4826125de565b602082019050919050565b6000611cdc601f83611fa9565b9150611ce782612607565b602082019050919050565b611cfb81612082565b82525050565b611d0a8161208c565b82525050565b6000602082019050611d256000830184611a6b565b92915050565b6000602082019050611d406000830184611a7a565b92915050565b60006020820190508181036000830152611d608184611a89565b905092915050565b60006020820190508181036000830152611d8181611ac2565b9050919050565b60006020820190508181036000830152611da181611ae5565b9050919050565b60006020820190508181036000830152611dc181611b08565b9050919050565b60006020820190508181036000830152611de181611b2b565b9050919050565b60006020820190508181036000830152611e0181611b4e565b9050919050565b60006020820190508181036000830152611e2181611b71565b9050919050565b60006020820190508181036000830152611e4181611b94565b9050919050565b60006020820190508181036000830152611e6181611bb7565b9050919050565b60006020820190508181036000830152611e8181611bda565b9050919050565b60006020820190508181036000830152611ea181611bfd565b9050919050565b60006020820190508181036000830152611ec181611c20565b9050919050565b60006020820190508181036000830152611ee181611c43565b9050919050565b60006020820190508181036000830152611f0181611c66565b9050919050565b60006020820190508181036000830152611f2181611c89565b9050919050565b60006020820190508181036000830152611f4181611cac565b9050919050565b60006020820190508181036000830152611f6181611ccf565b9050919050565b6000602082019050611f7d6000830184611cf2565b92915050565b6000602082019050611f986000830184611d01565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611fc582612082565b9150611fd083612082565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561200557612004612147565b5b828201905092915050565b600061201b82612082565b915061202683612082565b92508282101561203957612038612147565b5b828203905092915050565b600061204f82612062565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156120b757808201518184015260208101905061209c565b838111156120c6576000848401525b50505050565b600060028204905060018216806120e457607f821691505b602082108114156120f8576120f7612176565b5b50919050565b600061210982612082565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561213c5761213b612147565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f426164206172726179206c656e67746873000000000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61263981612044565b811461264457600080fd5b50565b61265081612056565b811461265b57600080fd5b50565b61266781612082565b811461267257600080fd5b5056fea264697066735822122061aeccfef445dd7f2ab2e35262a03ce128dcb3f79205325ba2171471c1012c0d64736f6c63430008070033

Deployed Bytecode Sourcemap

149:1672:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:100:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4348:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3301:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4999:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3143:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;659:83:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5900:215:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;885:112:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;568:91:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1070:295:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1678:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3472:127:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1714:103:7;;;:::i;:::-;;978:368:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1063:87:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2400:104:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6618:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3812:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1445:167:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4050:151:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1972:201:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2181:100:2;2235:13;2268:5;2261:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:100;:::o;4348:169::-;4431:4;4448:39;4457:12;:10;:12::i;:::-;4471:7;4480:6;4448:8;:39::i;:::-;4505:4;4498:11;;4348:169;;;;:::o;3301:108::-;3362:7;3389:12;;3382:19;;3301:108;:::o;4999:492::-;5139:4;5156:36;5166:6;5174:9;5185:6;5156:9;:36::i;:::-;5205:24;5232:11;:19;5244:6;5232:19;;;;;;;;;;;;;;;:33;5252:12;:10;:12::i;:::-;5232:33;;;;;;;;;;;;;;;;5205:60;;5304:6;5284:16;:26;;5276:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5391:57;5400:6;5408:12;:10;:12::i;:::-;5441:6;5422:16;:25;5391:8;:57::i;:::-;5479:4;5472:11;;;4999:492;;;;;:::o;3143:93::-;3201:5;3226:2;3219:9;;3143:93;:::o;659:83:4:-;703:7;730:4;723:11;;659:83;:::o;5900:215:2:-;5988:4;6005:80;6014:12;:10;:12::i;:::-;6028:7;6074:10;6037:11;:25;6049:12;:10;:12::i;:::-;6037:25;;;;;;;;;;;;;;;:34;6063:7;6037:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6005:8;:80::i;:::-;6103:4;6096:11;;5900:215;;;;:::o;885:112:0:-;1294:12:7;:10;:12::i;:::-;1283:23;;:7;:5;:7::i;:::-;:23;;;1275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;967:22:0::1;973:7;982:6;967:5;:22::i;:::-;885:112:::0;;:::o;568:91:3:-;624:27;630:12;:10;:12::i;:::-;644:6;624:5;:27::i;:::-;568:91;:::o;1070:295:0:-;1294:12:7;:10;:12::i;:::-;1283:23;;:7;:5;:7::i;:::-;:23;;;1275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1208:7:0::1;;:14;;1189:8;;:15;;:33;1181:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1260:9;1255:103;1279:8;;:15;;1275:1;:19;1255:103;;;1316:30;1322:8;;1331:1;1322:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1335:7;;1343:1;1335:10;;;;;;;:::i;:::-;;;;;;;;1316:5;:30::i;:::-;1296:3;;;;;:::i;:::-;;;;1255:103;;;;1070:295:::0;;;;:::o;1678:140::-;1294:12:7;:10;:12::i;:::-;1283:23;;:7;:5;:7::i;:::-;:23;;;1275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1768:5:0::1;1752:7;:13;1760:4;1752:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1798:4;1789:21;;;1804:5;1789:21;;;;;;:::i;:::-;;;;;;;;1678:140:::0;;:::o;3472:127:2:-;3546:7;3573:9;:18;3583:7;3573:18;;;;;;;;;;;;;;;;3566:25;;3472:127;;;:::o;1714:103:7:-;1294:12;:10;:12::i;:::-;1283:23;;:7;:5;:7::i;:::-;:23;;;1275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1779:30:::1;1806:1;1779:18;:30::i;:::-;1714:103::o:0;978:368:3:-;1055:24;1082:32;1092:7;1101:12;:10;:12::i;:::-;1082:9;:32::i;:::-;1055:59;;1153:6;1133:16;:26;;1125:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;1236:58;1245:7;1254:12;:10;:12::i;:::-;1287:6;1268:16;:25;1236:8;:58::i;:::-;1316:22;1322:7;1331:6;1316:5;:22::i;:::-;1044:302;978:368;;:::o;1063:87:7:-;1109:7;1136:6;;;;;;;;;;;1129:13;;1063:87;:::o;2400:104:2:-;2456:13;2489:7;2482:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:104;:::o;6618:413::-;6711:4;6728:24;6755:11;:25;6767:12;:10;:12::i;:::-;6755:25;;;;;;;;;;;;;;;:34;6781:7;6755:34;;;;;;;;;;;;;;;;6728:61;;6828:15;6808:16;:35;;6800:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6921:67;6930:12;:10;:12::i;:::-;6944:7;6972:15;6953:16;:34;6921:8;:67::i;:::-;7019:4;7012:11;;;6618:413;;;;:::o;3812:175::-;3898:4;3915:42;3925:12;:10;:12::i;:::-;3939:9;3950:6;3915:9;:42::i;:::-;3975:4;3968:11;;3812:175;;;;:::o;1445:167:0:-;1533:7;:19;1541:10;1533:19;;;;;;;;;;;;;;;;;;;;;;;;;1525:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1582:22;1588:7;1597:6;1582:5;:22::i;:::-;1445:167;;:::o;4050:151:2:-;4139:7;4166:11;:18;4178:5;4166:18;;;;;;;;;;;;;;;:27;4185:7;4166:27;;;;;;;;;;;;;;;;4159:34;;4050:151;;;;:::o;1972:201:7:-;1294:12;:10;:12::i;:::-;1283:23;;:7;:5;:7::i;:::-;:23;;;1275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2081:1:::1;2061:22;;:8;:22;;;;2053:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2137:28;2156:8;2137:18;:28::i;:::-;1972:201:::0;:::o;656:98:1:-;709:7;736:10;729:17;;656:98;:::o;10302:380:2:-;10455:1;10438:19;;:5;:19;;;;10430:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10536:1;10517:21;;:7;:21;;;;10509:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10620:6;10590:11;:18;10602:5;10590:18;;;;;;;;;;;;;;;:27;10609:7;10590:27;;;;;;;;;;;;;;;:36;;;;10658:7;10642:32;;10651:5;10642:32;;;10667:6;10642:32;;;;;;:::i;:::-;;;;;;;;10302:380;;;:::o;7521:733::-;7679:1;7661:20;;:6;:20;;;;7653:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7763:1;7742:23;;:9;:23;;;;7734:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7818:47;7839:6;7847:9;7858:6;7818:20;:47::i;:::-;7878:21;7902:9;:17;7912:6;7902:17;;;;;;;;;;;;;;;;7878:41;;7955:6;7938:13;:23;;7930:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8076:6;8060:13;:22;8040:9;:17;8050:6;8040:17;;;;;;;;;;;;;;;:42;;;;8128:6;8104:9;:20;8114:9;8104:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8169:9;8152:35;;8161:6;8152:35;;;8180:6;8152:35;;;;;;:::i;:::-;;;;;;;;8200:46;8220:6;8228:9;8239:6;8200:19;:46::i;:::-;7642:612;7521:733;;;:::o;674:139:0:-;771:34;789:7;798:6;771:17;:34::i;:::-;674:139;;:::o;9273:591:2:-;9376:1;9357:21;;:7;:21;;;;9349:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9429:49;9450:7;9467:1;9471:6;9429:20;:49::i;:::-;9491:22;9516:9;:18;9526:7;9516:18;;;;;;;;;;;;;;;;9491:43;;9571:6;9553:14;:24;;9545:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9690:6;9673:14;:23;9652:9;:18;9662:7;9652:18;;;;;;;;;;;;;;;:44;;;;9734:6;9718:12;;:22;;;;;;;:::i;:::-;;;;;;;;9784:1;9758:37;;9767:7;9758:37;;;9788:6;9758:37;;;;;;:::i;:::-;;;;;;;;9808:48;9828:7;9845:1;9849:6;9808:19;:48::i;:::-;9338:526;9273:591;;:::o;2333:191:7:-;2407:16;2426:6;;;;;;;;;;;2407:25;;2452:8;2443:6;;:17;;;;;;;;;;;;;;;;;;2507:8;2476:40;;2497:8;2476:40;;;;;;;;;;;;2396:128;2333:191;:::o;11282:125:2:-;;;;:::o;12011:124::-;;;;:::o;800:207:4:-;925:5;:3;:5::i;:::-;915:6;893:19;:17;:19::i;:::-;:28;;;;:::i;:::-;:37;;885:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;971:28;983:7;992:6;971:11;:28::i;:::-;800:207;;:::o;8541:399:2:-;8644:1;8625:21;;:7;:21;;;;8617:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8695:49;8724:1;8728:7;8737:6;8695:20;:49::i;:::-;8773:6;8757:12;;:22;;;;;;;:::i;:::-;;;;;;;;8812:6;8790:9;:18;8800:7;8790:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;8855:7;8834:37;;8851:1;8834:37;;;8864:6;8834:37;;;;;;:::i;:::-;;;;;;;;8884:48;8912:1;8916:7;8925:6;8884:19;:48::i;:::-;8541:399;;:::o;7:139:8:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;169:568::-;242:8;252:6;302:3;295:4;287:6;283:17;279:27;269:122;;310:79;;:::i;:::-;269:122;423:6;410:20;400:30;;453:18;445:6;442:30;439:117;;;475:79;;:::i;:::-;439:117;589:4;581:6;577:17;565:29;;643:3;635:4;627:6;623:17;613:8;609:32;606:41;603:128;;;650:79;;:::i;:::-;603:128;169:568;;;;;:::o;760:::-;833:8;843:6;893:3;886:4;878:6;874:17;870:27;860:122;;901:79;;:::i;:::-;860:122;1014:6;1001:20;991:30;;1044:18;1036:6;1033:30;1030:117;;;1066:79;;:::i;:::-;1030:117;1180:4;1172:6;1168:17;1156:29;;1234:3;1226:4;1218:6;1214:17;1204:8;1200:32;1197:41;1194:128;;;1241:79;;:::i;:::-;1194:128;760:568;;;;;:::o;1334:133::-;1377:5;1415:6;1402:20;1393:29;;1431:30;1455:5;1431:30;:::i;:::-;1334:133;;;;:::o;1473:139::-;1519:5;1557:6;1544:20;1535:29;;1573:33;1600:5;1573:33;:::i;:::-;1473:139;;;;:::o;1618:329::-;1677:6;1726:2;1714:9;1705:7;1701:23;1697:32;1694:119;;;1732:79;;:::i;:::-;1694:119;1852:1;1877:53;1922:7;1913:6;1902:9;1898:22;1877:53;:::i;:::-;1867:63;;1823:117;1618:329;;;;:::o;1953:474::-;2021:6;2029;2078:2;2066:9;2057:7;2053:23;2049:32;2046:119;;;2084:79;;:::i;:::-;2046:119;2204:1;2229:53;2274:7;2265:6;2254:9;2250:22;2229:53;:::i;:::-;2219:63;;2175:117;2331:2;2357:53;2402:7;2393:6;2382:9;2378:22;2357:53;:::i;:::-;2347:63;;2302:118;1953:474;;;;;:::o;2433:619::-;2510:6;2518;2526;2575:2;2563:9;2554:7;2550:23;2546:32;2543:119;;;2581:79;;:::i;:::-;2543:119;2701:1;2726:53;2771:7;2762:6;2751:9;2747:22;2726:53;:::i;:::-;2716:63;;2672:117;2828:2;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2799:118;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;2433:619;;;;;:::o;3058:468::-;3123:6;3131;3180:2;3168:9;3159:7;3155:23;3151:32;3148:119;;;3186:79;;:::i;:::-;3148:119;3306:1;3331:53;3376:7;3367:6;3356:9;3352:22;3331:53;:::i;:::-;3321:63;;3277:117;3433:2;3459:50;3501:7;3492:6;3481:9;3477:22;3459:50;:::i;:::-;3449:60;;3404:115;3058:468;;;;;:::o;3532:474::-;3600:6;3608;3657:2;3645:9;3636:7;3632:23;3628:32;3625:119;;;3663:79;;:::i;:::-;3625:119;3783:1;3808:53;3853:7;3844:6;3833:9;3829:22;3808:53;:::i;:::-;3798:63;;3754:117;3910:2;3936:53;3981:7;3972:6;3961:9;3957:22;3936:53;:::i;:::-;3926:63;;3881:118;3532:474;;;;;:::o;4012:934::-;4134:6;4142;4150;4158;4207:2;4195:9;4186:7;4182:23;4178:32;4175:119;;;4213:79;;:::i;:::-;4175:119;4361:1;4350:9;4346:17;4333:31;4391:18;4383:6;4380:30;4377:117;;;4413:79;;:::i;:::-;4377:117;4526:80;4598:7;4589:6;4578:9;4574:22;4526:80;:::i;:::-;4508:98;;;;4304:312;4683:2;4672:9;4668:18;4655:32;4714:18;4706:6;4703:30;4700:117;;;4736:79;;:::i;:::-;4700:117;4849:80;4921:7;4912:6;4901:9;4897:22;4849:80;:::i;:::-;4831:98;;;;4626:313;4012:934;;;;;;;:::o;4952:329::-;5011:6;5060:2;5048:9;5039:7;5035:23;5031:32;5028:119;;;5066:79;;:::i;:::-;5028:119;5186:1;5211:53;5256:7;5247:6;5236:9;5232:22;5211:53;:::i;:::-;5201:63;;5157:117;4952:329;;;;:::o;5287:118::-;5374:24;5392:5;5374:24;:::i;:::-;5369:3;5362:37;5287:118;;:::o;5411:109::-;5492:21;5507:5;5492:21;:::i;:::-;5487:3;5480:34;5411:109;;:::o;5526:364::-;5614:3;5642:39;5675:5;5642:39;:::i;:::-;5697:71;5761:6;5756:3;5697:71;:::i;:::-;5690:78;;5777:52;5822:6;5817:3;5810:4;5803:5;5799:16;5777:52;:::i;:::-;5854:29;5876:6;5854:29;:::i;:::-;5849:3;5845:39;5838:46;;5618:272;5526:364;;;;:::o;5896:366::-;6038:3;6059:67;6123:2;6118:3;6059:67;:::i;:::-;6052:74;;6135:93;6224:3;6135:93;:::i;:::-;6253:2;6248:3;6244:12;6237:19;;5896:366;;;:::o;6268:::-;6410:3;6431:67;6495:2;6490:3;6431:67;:::i;:::-;6424:74;;6507:93;6596:3;6507:93;:::i;:::-;6625:2;6620:3;6616:12;6609:19;;6268:366;;;:::o;6640:::-;6782:3;6803:67;6867:2;6862:3;6803:67;:::i;:::-;6796:74;;6879:93;6968:3;6879:93;:::i;:::-;6997:2;6992:3;6988:12;6981:19;;6640:366;;;:::o;7012:::-;7154:3;7175:67;7239:2;7234:3;7175:67;:::i;:::-;7168:74;;7251:93;7340:3;7251:93;:::i;:::-;7369:2;7364:3;7360:12;7353:19;;7012:366;;;:::o;7384:::-;7526:3;7547:67;7611:2;7606:3;7547:67;:::i;:::-;7540:74;;7623:93;7712:3;7623:93;:::i;:::-;7741:2;7736:3;7732:12;7725:19;;7384:366;;;:::o;7756:::-;7898:3;7919:67;7983:2;7978:3;7919:67;:::i;:::-;7912:74;;7995:93;8084:3;7995:93;:::i;:::-;8113:2;8108:3;8104:12;8097:19;;7756:366;;;:::o;8128:::-;8270:3;8291:67;8355:2;8350:3;8291:67;:::i;:::-;8284:74;;8367:93;8456:3;8367:93;:::i;:::-;8485:2;8480:3;8476:12;8469:19;;8128:366;;;:::o;8500:::-;8642:3;8663:67;8727:2;8722:3;8663:67;:::i;:::-;8656:74;;8739:93;8828:3;8739:93;:::i;:::-;8857:2;8852:3;8848:12;8841:19;;8500:366;;;:::o;8872:::-;9014:3;9035:67;9099:2;9094:3;9035:67;:::i;:::-;9028:74;;9111:93;9200:3;9111:93;:::i;:::-;9229:2;9224:3;9220:12;9213:19;;8872:366;;;:::o;9244:::-;9386:3;9407:67;9471:2;9466:3;9407:67;:::i;:::-;9400:74;;9483:93;9572:3;9483:93;:::i;:::-;9601:2;9596:3;9592:12;9585:19;;9244:366;;;:::o;9616:::-;9758:3;9779:67;9843:2;9838:3;9779:67;:::i;:::-;9772:74;;9855:93;9944:3;9855:93;:::i;:::-;9973:2;9968:3;9964:12;9957:19;;9616:366;;;:::o;9988:::-;10130:3;10151:67;10215:2;10210:3;10151:67;:::i;:::-;10144:74;;10227:93;10316:3;10227:93;:::i;:::-;10345:2;10340:3;10336:12;10329:19;;9988:366;;;:::o;10360:::-;10502:3;10523:67;10587:2;10582:3;10523:67;:::i;:::-;10516:74;;10599:93;10688:3;10599:93;:::i;:::-;10717:2;10712:3;10708:12;10701:19;;10360:366;;;:::o;10732:::-;10874:3;10895:67;10959:2;10954:3;10895:67;:::i;:::-;10888:74;;10971:93;11060:3;10971:93;:::i;:::-;11089:2;11084:3;11080:12;11073:19;;10732:366;;;:::o;11104:::-;11246:3;11267:67;11331:2;11326:3;11267:67;:::i;:::-;11260:74;;11343:93;11432:3;11343:93;:::i;:::-;11461:2;11456:3;11452:12;11445:19;;11104:366;;;:::o;11476:::-;11618:3;11639:67;11703:2;11698:3;11639:67;:::i;:::-;11632:74;;11715:93;11804:3;11715:93;:::i;:::-;11833:2;11828:3;11824:12;11817:19;;11476:366;;;:::o;11848:118::-;11935:24;11953:5;11935:24;:::i;:::-;11930:3;11923:37;11848:118;;:::o;11972:112::-;12055:22;12071:5;12055:22;:::i;:::-;12050:3;12043:35;11972:112;;:::o;12090:222::-;12183:4;12221:2;12210:9;12206:18;12198:26;;12234:71;12302:1;12291:9;12287:17;12278:6;12234:71;:::i;:::-;12090:222;;;;:::o;12318:210::-;12405:4;12443:2;12432:9;12428:18;12420:26;;12456:65;12518:1;12507:9;12503:17;12494:6;12456:65;:::i;:::-;12318:210;;;;:::o;12534:313::-;12647:4;12685:2;12674:9;12670:18;12662:26;;12734:9;12728:4;12724:20;12720:1;12709:9;12705:17;12698:47;12762:78;12835:4;12826:6;12762:78;:::i;:::-;12754:86;;12534:313;;;;:::o;12853:419::-;13019:4;13057:2;13046:9;13042:18;13034:26;;13106:9;13100:4;13096:20;13092:1;13081:9;13077:17;13070:47;13134:131;13260:4;13134:131;:::i;:::-;13126:139;;12853:419;;;:::o;13278:::-;13444:4;13482:2;13471:9;13467:18;13459:26;;13531:9;13525:4;13521:20;13517:1;13506:9;13502:17;13495:47;13559:131;13685:4;13559:131;:::i;:::-;13551:139;;13278:419;;;:::o;13703:::-;13869:4;13907:2;13896:9;13892:18;13884:26;;13956:9;13950:4;13946:20;13942:1;13931:9;13927:17;13920:47;13984:131;14110:4;13984:131;:::i;:::-;13976:139;;13703:419;;;:::o;14128:::-;14294:4;14332:2;14321:9;14317:18;14309:26;;14381:9;14375:4;14371:20;14367:1;14356:9;14352:17;14345:47;14409:131;14535:4;14409:131;:::i;:::-;14401:139;;14128:419;;;:::o;14553:::-;14719:4;14757:2;14746:9;14742:18;14734:26;;14806:9;14800:4;14796:20;14792:1;14781:9;14777:17;14770:47;14834:131;14960:4;14834:131;:::i;:::-;14826:139;;14553:419;;;:::o;14978:::-;15144:4;15182:2;15171:9;15167:18;15159:26;;15231:9;15225:4;15221:20;15217:1;15206:9;15202:17;15195:47;15259:131;15385:4;15259:131;:::i;:::-;15251:139;;14978:419;;;:::o;15403:::-;15569:4;15607:2;15596:9;15592:18;15584:26;;15656:9;15650:4;15646:20;15642:1;15631:9;15627:17;15620:47;15684:131;15810:4;15684:131;:::i;:::-;15676:139;;15403:419;;;:::o;15828:::-;15994:4;16032:2;16021:9;16017:18;16009:26;;16081:9;16075:4;16071:20;16067:1;16056:9;16052:17;16045:47;16109:131;16235:4;16109:131;:::i;:::-;16101:139;;15828:419;;;:::o;16253:::-;16419:4;16457:2;16446:9;16442:18;16434:26;;16506:9;16500:4;16496:20;16492:1;16481:9;16477:17;16470:47;16534:131;16660:4;16534:131;:::i;:::-;16526:139;;16253:419;;;:::o;16678:::-;16844:4;16882:2;16871:9;16867:18;16859:26;;16931:9;16925:4;16921:20;16917:1;16906:9;16902:17;16895:47;16959:131;17085:4;16959:131;:::i;:::-;16951:139;;16678:419;;;:::o;17103:::-;17269:4;17307:2;17296:9;17292:18;17284:26;;17356:9;17350:4;17346:20;17342:1;17331:9;17327:17;17320:47;17384:131;17510:4;17384:131;:::i;:::-;17376:139;;17103:419;;;:::o;17528:::-;17694:4;17732:2;17721:9;17717:18;17709:26;;17781:9;17775:4;17771:20;17767:1;17756:9;17752:17;17745:47;17809:131;17935:4;17809:131;:::i;:::-;17801:139;;17528:419;;;:::o;17953:::-;18119:4;18157:2;18146:9;18142:18;18134:26;;18206:9;18200:4;18196:20;18192:1;18181:9;18177:17;18170:47;18234:131;18360:4;18234:131;:::i;:::-;18226:139;;17953:419;;;:::o;18378:::-;18544:4;18582:2;18571:9;18567:18;18559:26;;18631:9;18625:4;18621:20;18617:1;18606:9;18602:17;18595:47;18659:131;18785:4;18659:131;:::i;:::-;18651:139;;18378:419;;;:::o;18803:::-;18969:4;19007:2;18996:9;18992:18;18984:26;;19056:9;19050:4;19046:20;19042:1;19031:9;19027:17;19020:47;19084:131;19210:4;19084:131;:::i;:::-;19076:139;;18803:419;;;:::o;19228:::-;19394:4;19432:2;19421:9;19417:18;19409:26;;19481:9;19475:4;19471:20;19467:1;19456:9;19452:17;19445:47;19509:131;19635:4;19509:131;:::i;:::-;19501:139;;19228:419;;;:::o;19653:222::-;19746:4;19784:2;19773:9;19769:18;19761:26;;19797:71;19865:1;19854:9;19850:17;19841:6;19797:71;:::i;:::-;19653:222;;;;:::o;19881:214::-;19970:4;20008:2;19997:9;19993:18;19985:26;;20021:67;20085:1;20074:9;20070:17;20061:6;20021:67;:::i;:::-;19881:214;;;;:::o;20182:99::-;20234:6;20268:5;20262:12;20252:22;;20182:99;;;:::o;20287:169::-;20371:11;20405:6;20400:3;20393:19;20445:4;20440:3;20436:14;20421:29;;20287:169;;;;:::o;20462:305::-;20502:3;20521:20;20539:1;20521:20;:::i;:::-;20516:25;;20555:20;20573:1;20555:20;:::i;:::-;20550:25;;20709:1;20641:66;20637:74;20634:1;20631:81;20628:107;;;20715:18;;:::i;:::-;20628:107;20759:1;20756;20752:9;20745:16;;20462:305;;;;:::o;20773:191::-;20813:4;20833:20;20851:1;20833:20;:::i;:::-;20828:25;;20867:20;20885:1;20867:20;:::i;:::-;20862:25;;20906:1;20903;20900:8;20897:34;;;20911:18;;:::i;:::-;20897:34;20956:1;20953;20949:9;20941:17;;20773:191;;;;:::o;20970:96::-;21007:7;21036:24;21054:5;21036:24;:::i;:::-;21025:35;;20970:96;;;:::o;21072:90::-;21106:7;21149:5;21142:13;21135:21;21124:32;;21072:90;;;:::o;21168:126::-;21205:7;21245:42;21238:5;21234:54;21223:65;;21168:126;;;:::o;21300:77::-;21337:7;21366:5;21355:16;;21300:77;;;:::o;21383:86::-;21418:7;21458:4;21451:5;21447:16;21436:27;;21383:86;;;:::o;21475:307::-;21543:1;21553:113;21567:6;21564:1;21561:13;21553:113;;;21652:1;21647:3;21643:11;21637:18;21633:1;21628:3;21624:11;21617:39;21589:2;21586:1;21582:10;21577:15;;21553:113;;;21684:6;21681:1;21678:13;21675:101;;;21764:1;21755:6;21750:3;21746:16;21739:27;21675:101;21524:258;21475:307;;;:::o;21788:320::-;21832:6;21869:1;21863:4;21859:12;21849:22;;21916:1;21910:4;21906:12;21937:18;21927:81;;21993:4;21985:6;21981:17;21971:27;;21927:81;22055:2;22047:6;22044:14;22024:18;22021:38;22018:84;;;22074:18;;:::i;:::-;22018:84;21839:269;21788:320;;;:::o;22114:233::-;22153:3;22176:24;22194:5;22176:24;:::i;:::-;22167:33;;22222:66;22215:5;22212:77;22209:103;;;22292:18;;:::i;:::-;22209:103;22339:1;22332:5;22328:13;22321:20;;22114:233;;;:::o;22353:180::-;22401:77;22398:1;22391:88;22498:4;22495:1;22488:15;22522:4;22519:1;22512:15;22539:180;22587:77;22584:1;22577:88;22684:4;22681:1;22674:15;22708:4;22705:1;22698:15;22725:180;22773:77;22770:1;22763:88;22870:4;22867:1;22860:15;22894:4;22891:1;22884:15;22911:117;23020:1;23017;23010:12;23034:117;23143:1;23140;23133:12;23157:117;23266:1;23263;23256:12;23280:117;23389:1;23386;23379:12;23403:117;23512:1;23509;23502:12;23526:102;23567:6;23618:2;23614:7;23609:2;23602:5;23598:14;23594:28;23584:38;;23526:102;;;:::o;23634:222::-;23774:34;23770:1;23762:6;23758:14;23751:58;23843:5;23838:2;23830:6;23826:15;23819:30;23634:222;:::o;23862:167::-;24002:19;23998:1;23990:6;23986:14;23979:43;23862:167;:::o;24035:221::-;24175:34;24171:1;24163:6;24159:14;24152:58;24244:4;24239:2;24231:6;24227:15;24220:29;24035:221;:::o;24262:225::-;24402:34;24398:1;24390:6;24386:14;24379:58;24471:8;24466:2;24458:6;24454:15;24447:33;24262:225;:::o;24493:221::-;24633:34;24629:1;24621:6;24617:14;24610:58;24702:4;24697:2;24689:6;24685:15;24678:29;24493:221;:::o;24720:225::-;24860:34;24856:1;24848:6;24844:14;24837:58;24929:8;24924:2;24916:6;24912:15;24905:33;24720:225;:::o;24951:227::-;25091:34;25087:1;25079:6;25075:14;25068:58;25160:10;25155:2;25147:6;25143:15;25136:35;24951:227;:::o;25184:182::-;25324:34;25320:1;25312:6;25308:14;25301:58;25184:182;:::o;25372:223::-;25512:34;25508:1;25500:6;25496:14;25489:58;25581:6;25576:2;25568:6;25564:15;25557:31;25372:223;:::o;25601:220::-;25741:34;25737:1;25729:6;25725:14;25718:58;25810:3;25805:2;25797:6;25793:15;25786:28;25601:220;:::o;25827:224::-;25967:34;25963:1;25955:6;25951:14;25944:58;26036:7;26031:2;26023:6;26019:15;26012:32;25827:224;:::o;26057:175::-;26197:27;26193:1;26185:6;26181:14;26174:51;26057:175;:::o;26238:223::-;26378:34;26374:1;26366:6;26362:14;26355:58;26447:6;26442:2;26434:6;26430:15;26423:31;26238:223;:::o;26467:224::-;26607:34;26603:1;26595:6;26591:14;26584:58;26676:7;26671:2;26663:6;26659:15;26652:32;26467:224;:::o;26697:164::-;26837:16;26833:1;26825:6;26821:14;26814:40;26697:164;:::o;26867:181::-;27007:33;27003:1;26995:6;26991:14;26984:57;26867:181;:::o;27054:122::-;27127:24;27145:5;27127:24;:::i;:::-;27120:5;27117:35;27107:63;;27166:1;27163;27156:12;27107:63;27054:122;:::o;27182:116::-;27252:21;27267:5;27252:21;:::i;:::-;27245:5;27242:32;27232:60;;27288:1;27285;27278:12;27232:60;27182:116;:::o;27304:122::-;27377:24;27395:5;27377:24;:::i;:::-;27370:5;27367:35;27357:63;;27416:1;27413;27406:12;27357:63;27304:122;:::o

Swarm Source

ipfs://61aeccfef445dd7f2ab2e35262a03ce128dcb3f79205325ba2171471c1012c0d
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.