ETH Price: $2,521.40 (-0.12%)

Token

Naughtius Maximus (MAXIMUS)
 

Overview

Max Total Supply

1,000,000,000 MAXIMUS

Holders

99

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: MAXIMUS 5
Balance
689,591,887.874291594359939062 MAXIMUS

Value
$0.00
0x9edd713935aa751b4e8467727c1b1b92357b4003
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:
Maximus

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-13
*/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
███╗░░██╗░█████╗░██╗░░░██╗░██████╗░██╗░░██╗████████╗██╗██╗░░░██╗░██████╗
████╗░██║██╔══██╗██║░░░██║██╔════╝░██║░░██║╚══██╔══╝██║██║░░░██║██╔════╝
██╔██╗██║███████║██║░░░██║██║░░██╗░███████║░░░██║░░░██║██║░░░██║╚█████╗░
██║╚████║██╔══██║██║░░░██║██║░░╚██╗██╔══██║░░░██║░░░██║██║░░░██║░╚═══██╗
██║░╚███║██║░░██║╚██████╔╝╚██████╔╝██║░░██║░░░██║░░░██║╚██████╔╝██████╔╝
╚═╝░░╚══╝╚═╝░░╚═╝░╚═════╝░░╚═════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░╚═════╝░╚═════╝░

███╗░░░███╗░█████╗░██╗░░██╗██╗███╗░░░███╗██╗░░░██╗░██████╗
████╗░████║██╔══██╗╚██╗██╔╝██║████╗░████║██║░░░██║██╔════╝
██╔████╔██║███████║░╚███╔╝░██║██╔████╔██║██║░░░██║╚█████╗░
██║╚██╔╝██║██╔══██║░██╔██╗░██║██║╚██╔╝██║██║░░░██║░╚═══██╗
██║░╚═╝░██║██║░░██║██╔╝╚██╗██║██║░╚═╝░██║╚██████╔╝██████╔╝
╚═╝░░░░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝╚═╝░░░░░╚═╝░╚═════╝░╚═════╝░                          ░                                                                                        //
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
 * https://t.me/NaughtiusMaximusElon
 * 
 */

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IUniswapV2Pair {
    function sync() external;
}

/**
 * @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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @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 Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

contract Maximus is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    uint256 public percentForLPBurn = 20; // 20 = .20%
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public constant buyMarketingFee = 0;
    uint256 public constant buyLiquidityFee = 3;
    uint256 public constant buyDevFee = 0;

    uint256 public sellTotalFees;
    uint256 public constant sellMarketingFee = 3;
    uint256 public constant sellLiquidityFee = 0;
    uint256 public constant sellDevFee = 3;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    /******************/

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event AutoNukeLP();

    event ManualNukeLP();

    event BoughtEarly(address indexed sniper);

    constructor() ERC20("Naughtius Maximus", "MAXIMUS") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1_000_000_000 * 1e18; // 1 billion total supply

        maxTransactionAmount = 15_000_000 * 1e18; // 1.5% from total supply maxTransactionAmountTxn
        maxWallet = 30_000_000 * 1e18; // 3% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 3) / 10000; // 0.03% swap wallet

        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        marketingWallet = address(0x9402f9A9135cFDBF094F5A66a14Ca01A755093Bd); // set as marketing wallet
        devWallet = address(0x925851854198a096E19eA4d2Ea250e459C8e1cA2); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function startTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLiquidityPairTokens(uint256 percent)
        external
        onlyOwner
        returns (bool)
    {
        require(
            block.timestamp > lastManualLpBurnTime + manualBurnFrequency,
            "Must wait for cooldown to finish"
        );
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526014600c556001600d60006101000a81548160ff021916908315150217905550610e10600e556107086010556001601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff0219169083151502179055506001601460006101000a81548160ff021916908315150217905550348015620000a957600080fd5b506040518060400160405280601181526020017f4e6175676874697573204d6178696d75730000000000000000000000000000008152506040518060400160405280600781526020017f4d4158494d55530000000000000000000000000000000000000000000000000081525081600390805190602001906200012e92919062000b45565b5080600490805190602001906200014792919062000b45565b5050506200016a6200015e6200060560201b60201c565b6200060d60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000196816001620006d360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021457600080fd5b505afa15801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f919062000c0c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b257600080fd5b505afa158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed919062000c0c565b6040518363ffffffff1660e01b81526004016200030c92919062000cb9565b602060405180830381600087803b1580156200032757600080fd5b505af11580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000362919062000c0c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003d7600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006d360201b60201c565b6200040c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007bd60201b60201c565b60006b033b2e3c9fd0803ce800000090506a0c685fa11e01ec6f0000006009819055506a18d0bf423c03d8de000000600b8190555061271060038262000453919062000e0a565b6200045f919062000dd2565b600a8190555060006003600062000477919062000d75565b62000483919062000d75565b6015819055506003600060036200049b919062000d75565b620004a7919062000d75565b601681905550739402f9a9135cfdbf094f5a66a14ca01a755093bd600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073925851854198a096e19ea4d2ea250e459c8e1ca2600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005796200056b6200085e60201b60201c565b60016200088860201b60201c565b6200058c3060016200088860201b60201c565b620005a161dead60016200088860201b60201c565b620005c3620005b56200085e60201b60201c565b6001620006d360201b60201c565b620005d6306001620006d360201b60201c565b620005eb61dead6001620006d360201b60201c565b620005fd3382620009c260201b60201c565b505062000fe4565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006e36200060560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007096200085e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000762576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007599062000d03565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008986200060560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008be6200085e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000917576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090e9062000d03565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009b6919062000ce6565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a2c9062000d25565b60405180910390fd5b62000a496000838362000b3b60201b60201c565b806002600082825462000a5d919062000d75565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000ab4919062000d75565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b1b919062000d47565b60405180910390a362000b376000838362000b4060201b60201c565b5050565b505050565b505050565b82805462000b539062000eb5565b90600052602060002090601f01602090048101928262000b77576000855562000bc3565b82601f1062000b9257805160ff191683800117855562000bc3565b8280016001018555821562000bc3579182015b8281111562000bc257825182559160200191906001019062000ba5565b5b50905062000bd2919062000bd6565b5090565b5b8082111562000bf157600081600090555060010162000bd7565b5090565b60008151905062000c068162000fca565b92915050565b60006020828403121562000c1f57600080fd5b600062000c2f8482850162000bf5565b91505092915050565b62000c438162000e6b565b82525050565b62000c548162000e7f565b82525050565b600062000c6960208362000d64565b915062000c768262000f78565b602082019050919050565b600062000c90601f8362000d64565b915062000c9d8262000fa1565b602082019050919050565b62000cb38162000eab565b82525050565b600060408201905062000cd0600083018562000c38565b62000cdf602083018462000c38565b9392505050565b600060208201905062000cfd600083018462000c49565b92915050565b6000602082019050818103600083015262000d1e8162000c5a565b9050919050565b6000602082019050818103600083015262000d408162000c81565b9050919050565b600060208201905062000d5e600083018462000ca8565b92915050565b600082825260208201905092915050565b600062000d828262000eab565b915062000d8f8362000eab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dc75762000dc662000eeb565b5b828201905092915050565b600062000ddf8262000eab565b915062000dec8362000eab565b92508262000dff5762000dfe62000f1a565b5b828204905092915050565b600062000e178262000eab565b915062000e248362000eab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e605762000e5f62000eeb565b5b828202905092915050565b600062000e788262000e8b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000ece57607f821691505b6020821081141562000ee55762000ee462000f49565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b62000fd58162000e6b565b811462000fe157600080fd5b50565b60805160601c6158876200102d60003960008181610f2901528181612bc501528181613fda015281816140f001528181614117015281816141b301526141da01526158876000f3fe60806040526004361061039b5760003560e01c80638da5cb5b116101dc578063bbc0c74211610102578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610d9b578063f637434214610dc4578063f8b45b0514610def578063fe72b27a14610e1a576103a2565b8063dd62ed3e14610cdd578063e2f4560514610d1a578063e884f26014610d45578063f11a24d314610d70576103a2565b8063c876d0b9116100dc578063c876d0b914610c1f578063c8c8ebe414610c4a578063d257b34f14610c75578063d85ba06314610cb2576103a2565b8063bbc0c74214610ba2578063c024666814610bcd578063c18bc19514610bf6576103a2565b80639ec22c0e1161017a578063a4c82a0011610149578063a4c82a0014610ad4578063a9059cbb14610aff578063aacebbe314610b3c578063b62496f514610b65576103a2565b80639ec22c0e14610a165780639fccce3214610a41578063a0d82dc514610a6c578063a457c2d714610a97576103a2565b8063924de9b7116101b6578063924de9b71461096e57806395d89b41146109975780639a7a23d6146109c25780639c3b4fdc146109eb576103a2565b80638da5cb5b146108ed5780638ea5220f146109185780639213691314610943576103a2565b80632e82f1a0116102c15780636ddd17131161025f578063751039fc1161022e578063751039fc146108435780637571336a1461086e57806375f0a874146108975780637bce5a04146108c2576103a2565b80636ddd17131461079b57806370a08231146107c6578063715018a614610803578063730c18881461081a576103a2565b806349bd5a5e1161029b57806349bd5a5e146106dd5780634a62bb65146107085780634fbee193146107335780636a486a8e14610770576103a2565b80632e82f1a01461064a578063313ce5671461067557806339509351146106a0576103a2565b8063199ffc721161033957806323b872dd1161030857806323b872dd146105a057806327c8f835146105dd578063293230b8146106085780632c3e486c1461061f576103a2565b8063199ffc72146104f65780631a8145bb146105215780631f3fed8f1461054c578063203e727e14610577576103a2565b80631694505e116103755780631694505e1461044c57806318160ddd146104775780631816467f146104a2578063184c16c5146104cb576103a2565b806306fdde03146103a7578063095ea7b3146103d257806310d5de531461040f576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e57565b6040516103c99190614a96565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061441a565b610ee9565b6040516104069190614a60565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190614301565b610f07565b6040516104439190614a60565b60405180910390f35b34801561045857600080fd5b50610461610f27565b60405161046e9190614a7b565b60405180910390f35b34801561048357600080fd5b5061048c610f4b565b6040516104999190614d98565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190614301565b610f55565b005b3480156104d757600080fd5b506104e0611091565b6040516104ed9190614d98565b60405180910390f35b34801561050257600080fd5b5061050b611097565b6040516105189190614d98565b60405180910390f35b34801561052d57600080fd5b5061053661109d565b6040516105439190614d98565b60405180910390f35b34801561055857600080fd5b506105616110a3565b60405161056e9190614d98565b60405180910390f35b34801561058357600080fd5b5061059e6004803603810190610599919061447f565b6110a9565b005b3480156105ac57600080fd5b506105c760048036038101906105c2919061438f565b6111b8565b6040516105d49190614a60565b60405180910390f35b3480156105e957600080fd5b506105f26112b0565b6040516105ff91906149e4565b60405180910390f35b34801561061457600080fd5b5061061d6112b6565b005b34801561062b57600080fd5b50610634611371565b6040516106419190614d98565b60405180910390f35b34801561065657600080fd5b5061065f611377565b60405161066c9190614a60565b60405180910390f35b34801561068157600080fd5b5061068a61138a565b6040516106979190614e44565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c2919061441a565b611393565b6040516106d49190614a60565b60405180910390f35b3480156106e957600080fd5b506106f261143f565b6040516106ff91906149e4565b60405180910390f35b34801561071457600080fd5b5061071d611465565b60405161072a9190614a60565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190614301565b611478565b6040516107679190614a60565b60405180910390f35b34801561077c57600080fd5b506107856114ce565b6040516107929190614d98565b60405180910390f35b3480156107a757600080fd5b506107b06114d4565b6040516107bd9190614a60565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614301565b6114e7565b6040516107fa9190614d98565b60405180910390f35b34801561080f57600080fd5b5061081861152f565b005b34801561082657600080fd5b50610841600480360381019061083c91906144d1565b6115b7565b005b34801561084f57600080fd5b506108586116f7565b6040516108659190614a60565b60405180910390f35b34801561087a57600080fd5b50610895600480360381019061089091906143de565b611797565b005b3480156108a357600080fd5b506108ac61186e565b6040516108b991906149e4565b60405180910390f35b3480156108ce57600080fd5b506108d7611894565b6040516108e49190614d98565b60405180910390f35b3480156108f957600080fd5b50610902611899565b60405161090f91906149e4565b60405180910390f35b34801561092457600080fd5b5061092d6118c3565b60405161093a91906149e4565b60405180910390f35b34801561094f57600080fd5b506109586118e9565b6040516109659190614d98565b60405180910390f35b34801561097a57600080fd5b5061099560048036038101906109909190614456565b6118ee565b005b3480156109a357600080fd5b506109ac611987565b6040516109b99190614a96565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e491906143de565b611a19565b005b3480156109f757600080fd5b50610a00611b34565b604051610a0d9190614d98565b60405180910390f35b348015610a2257600080fd5b50610a2b611b39565b604051610a389190614d98565b60405180910390f35b348015610a4d57600080fd5b50610a56611b3f565b604051610a639190614d98565b60405180910390f35b348015610a7857600080fd5b50610a81611b45565b604051610a8e9190614d98565b60405180910390f35b348015610aa357600080fd5b50610abe6004803603810190610ab9919061441a565b611b4a565b604051610acb9190614a60565b60405180910390f35b348015610ae057600080fd5b50610ae9611c35565b604051610af69190614d98565b60405180910390f35b348015610b0b57600080fd5b50610b266004803603810190610b21919061441a565b611c3b565b604051610b339190614a60565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e9190614301565b611c59565b005b348015610b7157600080fd5b50610b8c6004803603810190610b879190614301565b611d95565b604051610b999190614a60565b60405180910390f35b348015610bae57600080fd5b50610bb7611db5565b604051610bc49190614a60565b60405180910390f35b348015610bd957600080fd5b50610bf46004803603810190610bef91906143de565b611dc8565b005b348015610c0257600080fd5b50610c1d6004803603810190610c18919061447f565b611eed565b005b348015610c2b57600080fd5b50610c34611ffc565b604051610c419190614a60565b60405180910390f35b348015610c5657600080fd5b50610c5f61200f565b604051610c6c9190614d98565b60405180910390f35b348015610c8157600080fd5b50610c9c6004803603810190610c97919061447f565b612015565b604051610ca99190614a60565b60405180910390f35b348015610cbe57600080fd5b50610cc761216a565b604051610cd49190614d98565b60405180910390f35b348015610ce957600080fd5b50610d046004803603810190610cff9190614353565b612170565b604051610d119190614d98565b60405180910390f35b348015610d2657600080fd5b50610d2f6121f7565b604051610d3c9190614d98565b60405180910390f35b348015610d5157600080fd5b50610d5a6121fd565b604051610d679190614a60565b60405180910390f35b348015610d7c57600080fd5b50610d8561229d565b604051610d929190614d98565b60405180910390f35b348015610da757600080fd5b50610dc26004803603810190610dbd9190614301565b6122a2565b005b348015610dd057600080fd5b50610dd961239a565b604051610de69190614d98565b60405180910390f35b348015610dfb57600080fd5b50610e0461239f565b604051610e119190614d98565b60405180910390f35b348015610e2657600080fd5b50610e416004803603810190610e3c919061447f565b6123a5565b604051610e4e9190614a60565b60405180910390f35b606060038054610e6690615092565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9290615092565b8015610edf5780601f10610eb457610100808354040283529160200191610edf565b820191906000526020600020905b815481529060010190602001808311610ec257829003601f168201915b5050505050905090565b6000610efd610ef6612692565b848461269a565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610f5d612692565b73ffffffffffffffffffffffffffffffffffffffff16610f7b611899565b73ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890614c98565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600c5481565b60185481565b60175481565b6110b1612692565b73ffffffffffffffffffffffffffffffffffffffff166110cf611899565b73ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90614c98565b60405180910390fd5b670de0b6b3a76400006103e8600161113b610f4b565b6111459190614f46565b61114f9190614f15565b6111599190614f15565b81101561119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290614d78565b60405180910390fd5b670de0b6b3a7640000816111af9190614f46565b60098190555050565b60006111c5848484612865565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611210612692565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790614c78565b60405180910390fd5b6112a48561129c612692565b85840361269a565b60019150509392505050565b61dead81565b6112be612692565b73ffffffffffffffffffffffffffffffffffffffff166112dc611899565b73ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990614c98565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff02191690831515021790555042600f81905550565b600e5481565b600d60009054906101000a900460ff1681565b60006012905090565b60006114356113a0612692565b8484600160006113ae612692565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114309190614ebf565b61269a565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b601260029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611537612692565b73ffffffffffffffffffffffffffffffffffffffff16611555611899565b73ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290614c98565b60405180910390fd5b6115b560006135f9565b565b6115bf612692565b73ffffffffffffffffffffffffffffffffffffffff166115dd611899565b73ffffffffffffffffffffffffffffffffffffffff1614611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a90614c98565b60405180910390fd5b610258831015611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90614b38565b60405180910390fd5b6103e8821115801561168b575060008210155b6116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c190614bd8565b60405180910390fd5b82600e8190555081600c8190555080600d60006101000a81548160ff021916908315150217905550505050565b6000611701612692565b73ffffffffffffffffffffffffffffffffffffffff1661171f611899565b73ffffffffffffffffffffffffffffffffffffffff1614611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90614c98565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055506001905090565b61179f612692565b73ffffffffffffffffffffffffffffffffffffffff166117bd611899565b73ffffffffffffffffffffffffffffffffffffffff1614611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90614c98565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600381565b6118f6612692565b73ffffffffffffffffffffffffffffffffffffffff16611914611899565b73ffffffffffffffffffffffffffffffffffffffff161461196a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196190614c98565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b60606004805461199690615092565b80601f01602080910402602001604051908101604052809291908181526020018280546119c290615092565b8015611a0f5780601f106119e457610100808354040283529160200191611a0f565b820191906000526020600020905b8154815290600101906020018083116119f257829003601f168201915b5050505050905090565b611a21612692565b73ffffffffffffffffffffffffffffffffffffffff16611a3f611899565b73ffffffffffffffffffffffffffffffffffffffff1614611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c90614c98565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d90614b78565b60405180910390fd5b611b3082826136bf565b5050565b600081565b60115481565b60195481565b600381565b60008060016000611b59612692565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0d90614d58565b60405180910390fd5b611c2a611c21612692565b8585840361269a565b600191505092915050565b600f5481565b6000611c4f611c48612692565b8484612865565b6001905092915050565b611c61612692565b73ffffffffffffffffffffffffffffffffffffffff16611c7f611899565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614c98565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b601260019054906101000a900460ff1681565b611dd0612692565b73ffffffffffffffffffffffffffffffffffffffff16611dee611899565b73ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b90614c98565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ee19190614a60565b60405180910390a25050565b611ef5612692565b73ffffffffffffffffffffffffffffffffffffffff16611f13611899565b73ffffffffffffffffffffffffffffffffffffffff1614611f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6090614c98565b60405180910390fd5b670de0b6b3a76400006103e86005611f7f610f4b565b611f899190614f46565b611f939190614f15565b611f9d9190614f15565b811015611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690614b58565b60405180910390fd5b670de0b6b3a764000081611ff39190614f46565b600b8190555050565b601460009054906101000a900460ff1681565b60095481565b600061201f612692565b73ffffffffffffffffffffffffffffffffffffffff1661203d611899565b73ffffffffffffffffffffffffffffffffffffffff1614612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90614c98565b60405180910390fd5b620186a060016120a1610f4b565b6120ab9190614f46565b6120b59190614f15565b8210156120f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ee90614bf8565b60405180910390fd5b6103e86005612104610f4b565b61210e9190614f46565b6121189190614f15565b82111561215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215190614c18565b60405180910390fd5b81600a8190555060019050919050565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6000612207612692565b73ffffffffffffffffffffffffffffffffffffffff16612225611899565b73ffffffffffffffffffffffffffffffffffffffff161461227b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227290614c98565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b600381565b6122aa612692565b73ffffffffffffffffffffffffffffffffffffffff166122c8611899565b73ffffffffffffffffffffffffffffffffffffffff161461231e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231590614c98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561238e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238590614af8565b60405180910390fd5b612397816135f9565b50565b600081565b600b5481565b60006123af612692565b73ffffffffffffffffffffffffffffffffffffffff166123cd611899565b73ffffffffffffffffffffffffffffffffffffffff1614612423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241a90614c98565b60405180910390fd5b6010546011546124339190614ebf565b4211612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b90614cf8565b60405180910390fd5b6103e88211156124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b090614cb8565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161251d91906149e4565b60206040518083038186803b15801561253557600080fd5b505afa158015612549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256d91906144a8565b9050600061259861271061258a868561376090919063ffffffff16565b61377690919063ffffffff16565b905060008111156125d3576125d2600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead8361378c565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561270a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270190614d18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561277a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277190614b18565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128589190614d98565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cc90614cd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293c90614ab8565b60405180910390fd5b600081141561295f5761295a8383600061378c565b6135f4565b601260009054906101000a900460ff16156130245761297c611899565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ea57506129ba611899565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a235750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a5d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a765750600660149054906101000a900460ff16155b1561302357601260019054906101000a900460ff16612b7057601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b305750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6690614ad8565b60405180910390fd5b5b601460009054906101000a900460ff1615612d3a57612b8d611899565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c1457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c6e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d395743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ceb90614c58565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ddd5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e8457600954811115612e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1e90614c38565b60405180910390fd5b600b54612e33836114e7565b82612e3e9190614ebf565b1115612e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7690614d38565b60405180910390fd5b613022565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f275750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7657600954811115612f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6890614bb8565b60405180910390fd5b613021565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302057600b54612fd3836114e7565b82612fde9190614ebf565b111561301f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301690614d38565b60405180910390fd5b5b5b5b5b5b600061302f306114e7565b90506000600a5482101590508080156130545750601260029054906101000a900460ff165b801561306d5750600660149054906101000a900460ff16155b80156130c35750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131195750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561316f5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131b3576001600660146101000a81548160ff021916908315150217905550613197613a0d565b6000600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156132195750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156132315750600d60009054906101000a900460ff165b801561324c5750600e54600f546132489190614ebf565b4210155b80156132a25750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132b1576132af613cf4565b505b6000600660149054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133675750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337157600090505b600081156135e457601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133d457506000601654115b1561349e5761340160646133f36016548861376090919063ffffffff16565b61377690919063ffffffff16565b90506016546000826134139190614f46565b61341d9190614f15565b6018600082825461342e9190614ebf565b925050819055506016546003826134459190614f46565b61344f9190614f15565b601960008282546134609190614ebf565b925050819055506016546003826134779190614f46565b6134819190614f15565b601760008282546134929190614ebf565b925050819055506135c0565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134f957506000601554115b156135bf5761352660646135186015548861376090919063ffffffff16565b61377690919063ffffffff16565b90506015546003826135389190614f46565b6135429190614f15565b601860008282546135539190614ebf565b9250508190555060155460008261356a9190614f46565b6135749190614f15565b601960008282546135859190614ebf565b9250508190555060155460008261359c9190614f46565b6135a69190614f15565b601760008282546135b79190614ebf565b925050819055505b5b60008111156135d5576135d487308361378c565b5b80856135e19190614fa0565b94505b6135ef87878761378c565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000818361376e9190614f46565b905092915050565b600081836137849190614f15565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f390614cd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561386c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386390614ab8565b60405180910390fd5b613877838383613ecf565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156138fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f490614b98565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139909190614ebf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139f49190614d98565b60405180910390a3613a07848484613ed4565b50505050565b6000613a18306114e7565b90506000601954601754601854613a2f9190614ebf565b613a399190614ebf565b9050600080831480613a4b5750600082145b15613a5857505050613cf2565b6014600a54613a679190614f46565b831115613a80576014600a54613a7d9190614f46565b92505b600060028360185486613a939190614f46565b613a9d9190614f15565b613aa79190614f15565b90506000613abe8286613ed990919063ffffffff16565b90506000479050613ace82613eef565b6000613ae38247613ed990919063ffffffff16565b90506000613b0e87613b006017548561376090919063ffffffff16565b61377690919063ffffffff16565b90506000613b3988613b2b6019548661376090919063ffffffff16565b61377690919063ffffffff16565b90506000818385613b4a9190614fa0565b613b549190614fa0565b9050600060188190555060006017819055506000601981905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613bb4906149cf565b60006040518083038185875af1925050503d8060008114613bf1576040519150601f19603f3d011682016040523d82523d6000602084013e613bf6565b606091505b505080985050600087118015613c0c5750600081115b15613c5957613c1b87826141ad565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613c5093929190614e0d565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c9f906149cf565b60006040518083038185875af1925050503d8060008114613cdc576040519150601f19603f3d011682016040523d82523d6000602084013e613ce1565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613d5a91906149e4565b60206040518083038186803b158015613d7257600080fd5b505afa158015613d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613daa91906144a8565b90506000613dd7612710613dc9600c548561376090919063ffffffff16565b61377690919063ffffffff16565b90506000811115613e1257613e11600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead8361378c565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e8157600080fd5b505af1158015613e95573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b60008183613ee79190614fa0565b905092915050565b6000600267ffffffffffffffff811115613f32577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613f605781602001602082028036833780820191505090505b5090503081600081518110613f9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561403e57600080fd5b505afa158015614052573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614076919061432a565b816001815181106140b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614115307f00000000000000000000000000000000000000000000000000000000000000008461269a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614177959493929190614db3565b600060405180830381600087803b15801561419157600080fd5b505af11580156141a5573d6000803e3d6000fd5b505050505050565b6141d8307f00000000000000000000000000000000000000000000000000000000000000008461269a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161423f969594939291906149ff565b6060604051808303818588803b15801561425857600080fd5b505af115801561426c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906142919190614520565b5050505050565b6000813590506142a78161580c565b92915050565b6000815190506142bc8161580c565b92915050565b6000813590506142d181615823565b92915050565b6000813590506142e68161583a565b92915050565b6000815190506142fb8161583a565b92915050565b60006020828403121561431357600080fd5b600061432184828501614298565b91505092915050565b60006020828403121561433c57600080fd5b600061434a848285016142ad565b91505092915050565b6000806040838503121561436657600080fd5b600061437485828601614298565b925050602061438585828601614298565b9150509250929050565b6000806000606084860312156143a457600080fd5b60006143b286828701614298565b93505060206143c386828701614298565b92505060406143d4868287016142d7565b9150509250925092565b600080604083850312156143f157600080fd5b60006143ff85828601614298565b9250506020614410858286016142c2565b9150509250929050565b6000806040838503121561442d57600080fd5b600061443b85828601614298565b925050602061444c858286016142d7565b9150509250929050565b60006020828403121561446857600080fd5b6000614476848285016142c2565b91505092915050565b60006020828403121561449157600080fd5b600061449f848285016142d7565b91505092915050565b6000602082840312156144ba57600080fd5b60006144c8848285016142ec565b91505092915050565b6000806000606084860312156144e657600080fd5b60006144f4868287016142d7565b9350506020614505868287016142d7565b9250506040614516868287016142c2565b9150509250925092565b60008060006060848603121561453557600080fd5b6000614543868287016142ec565b9350506020614554868287016142ec565b9250506040614565868287016142ec565b9150509250925092565b600061457b8383614587565b60208301905092915050565b61459081614fd4565b82525050565b61459f81614fd4565b82525050565b60006145b082614e6f565b6145ba8185614e92565b93506145c583614e5f565b8060005b838110156145f65781516145dd888261456f565b97506145e883614e85565b9250506001810190506145c9565b5085935050505092915050565b61460c81614fe6565b82525050565b61461b81615029565b82525050565b61462a8161504d565b82525050565b600061463b82614e7a565b6146458185614eae565b935061465581856020860161505f565b61465e81615151565b840191505092915050565b6000614676602383614eae565b915061468182615162565b604082019050919050565b6000614699601683614eae565b91506146a4826151b1565b602082019050919050565b60006146bc602683614eae565b91506146c7826151da565b604082019050919050565b60006146df602283614eae565b91506146ea82615229565b604082019050919050565b6000614702603383614eae565b915061470d82615278565b604082019050919050565b6000614725602483614eae565b9150614730826152c7565b604082019050919050565b6000614748603983614eae565b915061475382615316565b604082019050919050565b600061476b602683614eae565b915061477682615365565b604082019050919050565b600061478e603683614eae565b9150614799826153b4565b604082019050919050565b60006147b1603083614eae565b91506147bc82615403565b604082019050919050565b60006147d4603583614eae565b91506147df82615452565b604082019050919050565b60006147f7603483614eae565b9150614802826154a1565b604082019050919050565b600061481a603583614eae565b9150614825826154f0565b604082019050919050565b600061483d604983614eae565b91506148488261553f565b606082019050919050565b6000614860602883614eae565b915061486b826155b4565b604082019050919050565b6000614883602083614eae565b915061488e82615603565b602082019050919050565b60006148a6602a83614eae565b91506148b18261562c565b604082019050919050565b60006148c9602583614eae565b91506148d48261567b565b604082019050919050565b60006148ec602083614eae565b91506148f7826156ca565b602082019050919050565b600061490f600083614ea3565b915061491a826156f3565b600082019050919050565b6000614932602483614eae565b915061493d826156f6565b604082019050919050565b6000614955601383614eae565b915061496082615745565b602082019050919050565b6000614978602583614eae565b91506149838261576e565b604082019050919050565b600061499b602f83614eae565b91506149a6826157bd565b604082019050919050565b6149ba81615012565b82525050565b6149c98161501c565b82525050565b60006149da82614902565b9150819050919050565b60006020820190506149f96000830184614596565b92915050565b600060c082019050614a146000830189614596565b614a2160208301886149b1565b614a2e6040830187614621565b614a3b6060830186614621565b614a486080830185614596565b614a5560a08301846149b1565b979650505050505050565b6000602082019050614a756000830184614603565b92915050565b6000602082019050614a906000830184614612565b92915050565b60006020820190508181036000830152614ab08184614630565b905092915050565b60006020820190508181036000830152614ad181614669565b9050919050565b60006020820190508181036000830152614af18161468c565b9050919050565b60006020820190508181036000830152614b11816146af565b9050919050565b60006020820190508181036000830152614b31816146d2565b9050919050565b60006020820190508181036000830152614b51816146f5565b9050919050565b60006020820190508181036000830152614b7181614718565b9050919050565b60006020820190508181036000830152614b918161473b565b9050919050565b60006020820190508181036000830152614bb18161475e565b9050919050565b60006020820190508181036000830152614bd181614781565b9050919050565b60006020820190508181036000830152614bf1816147a4565b9050919050565b60006020820190508181036000830152614c11816147c7565b9050919050565b60006020820190508181036000830152614c31816147ea565b9050919050565b60006020820190508181036000830152614c518161480d565b9050919050565b60006020820190508181036000830152614c7181614830565b9050919050565b60006020820190508181036000830152614c9181614853565b9050919050565b60006020820190508181036000830152614cb181614876565b9050919050565b60006020820190508181036000830152614cd181614899565b9050919050565b60006020820190508181036000830152614cf1816148bc565b9050919050565b60006020820190508181036000830152614d11816148df565b9050919050565b60006020820190508181036000830152614d3181614925565b9050919050565b60006020820190508181036000830152614d5181614948565b9050919050565b60006020820190508181036000830152614d718161496b565b9050919050565b60006020820190508181036000830152614d918161498e565b9050919050565b6000602082019050614dad60008301846149b1565b92915050565b600060a082019050614dc860008301886149b1565b614dd56020830187614621565b8181036040830152614de781866145a5565b9050614df66060830185614596565b614e0360808301846149b1565b9695505050505050565b6000606082019050614e2260008301866149b1565b614e2f60208301856149b1565b614e3c60408301846149b1565b949350505050565b6000602082019050614e5960008301846149c0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614eca82615012565b9150614ed583615012565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f0a57614f096150c4565b5b828201905092915050565b6000614f2082615012565b9150614f2b83615012565b925082614f3b57614f3a6150f3565b5b828204905092915050565b6000614f5182615012565b9150614f5c83615012565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f9557614f946150c4565b5b828202905092915050565b6000614fab82615012565b9150614fb683615012565b925082821015614fc957614fc86150c4565b5b828203905092915050565b6000614fdf82614ff2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150348261503b565b9050919050565b600061504682614ff2565b9050919050565b600061505882615012565b9050919050565b60005b8381101561507d578082015181840152602081019050615062565b8381111561508c576000848401525b50505050565b600060028204905060018216806150aa57607f821691505b602082108114156150be576150bd615122565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b61581581614fd4565b811461582057600080fd5b50565b61582c81614fe6565b811461583757600080fd5b50565b61584381615012565b811461584e57600080fd5b5056fea26469706673582212203d4ec04d5a0fe75007bd5fdaf27d38254eca6b769aa0eb7420268010bf9cd7aa64736f6c63430008040033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c80638da5cb5b116101dc578063bbc0c74211610102578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610d9b578063f637434214610dc4578063f8b45b0514610def578063fe72b27a14610e1a576103a2565b8063dd62ed3e14610cdd578063e2f4560514610d1a578063e884f26014610d45578063f11a24d314610d70576103a2565b8063c876d0b9116100dc578063c876d0b914610c1f578063c8c8ebe414610c4a578063d257b34f14610c75578063d85ba06314610cb2576103a2565b8063bbc0c74214610ba2578063c024666814610bcd578063c18bc19514610bf6576103a2565b80639ec22c0e1161017a578063a4c82a0011610149578063a4c82a0014610ad4578063a9059cbb14610aff578063aacebbe314610b3c578063b62496f514610b65576103a2565b80639ec22c0e14610a165780639fccce3214610a41578063a0d82dc514610a6c578063a457c2d714610a97576103a2565b8063924de9b7116101b6578063924de9b71461096e57806395d89b41146109975780639a7a23d6146109c25780639c3b4fdc146109eb576103a2565b80638da5cb5b146108ed5780638ea5220f146109185780639213691314610943576103a2565b80632e82f1a0116102c15780636ddd17131161025f578063751039fc1161022e578063751039fc146108435780637571336a1461086e57806375f0a874146108975780637bce5a04146108c2576103a2565b80636ddd17131461079b57806370a08231146107c6578063715018a614610803578063730c18881461081a576103a2565b806349bd5a5e1161029b57806349bd5a5e146106dd5780634a62bb65146107085780634fbee193146107335780636a486a8e14610770576103a2565b80632e82f1a01461064a578063313ce5671461067557806339509351146106a0576103a2565b8063199ffc721161033957806323b872dd1161030857806323b872dd146105a057806327c8f835146105dd578063293230b8146106085780632c3e486c1461061f576103a2565b8063199ffc72146104f65780631a8145bb146105215780631f3fed8f1461054c578063203e727e14610577576103a2565b80631694505e116103755780631694505e1461044c57806318160ddd146104775780631816467f146104a2578063184c16c5146104cb576103a2565b806306fdde03146103a7578063095ea7b3146103d257806310d5de531461040f576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e57565b6040516103c99190614a96565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061441a565b610ee9565b6040516104069190614a60565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190614301565b610f07565b6040516104439190614a60565b60405180910390f35b34801561045857600080fd5b50610461610f27565b60405161046e9190614a7b565b60405180910390f35b34801561048357600080fd5b5061048c610f4b565b6040516104999190614d98565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190614301565b610f55565b005b3480156104d757600080fd5b506104e0611091565b6040516104ed9190614d98565b60405180910390f35b34801561050257600080fd5b5061050b611097565b6040516105189190614d98565b60405180910390f35b34801561052d57600080fd5b5061053661109d565b6040516105439190614d98565b60405180910390f35b34801561055857600080fd5b506105616110a3565b60405161056e9190614d98565b60405180910390f35b34801561058357600080fd5b5061059e6004803603810190610599919061447f565b6110a9565b005b3480156105ac57600080fd5b506105c760048036038101906105c2919061438f565b6111b8565b6040516105d49190614a60565b60405180910390f35b3480156105e957600080fd5b506105f26112b0565b6040516105ff91906149e4565b60405180910390f35b34801561061457600080fd5b5061061d6112b6565b005b34801561062b57600080fd5b50610634611371565b6040516106419190614d98565b60405180910390f35b34801561065657600080fd5b5061065f611377565b60405161066c9190614a60565b60405180910390f35b34801561068157600080fd5b5061068a61138a565b6040516106979190614e44565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c2919061441a565b611393565b6040516106d49190614a60565b60405180910390f35b3480156106e957600080fd5b506106f261143f565b6040516106ff91906149e4565b60405180910390f35b34801561071457600080fd5b5061071d611465565b60405161072a9190614a60565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190614301565b611478565b6040516107679190614a60565b60405180910390f35b34801561077c57600080fd5b506107856114ce565b6040516107929190614d98565b60405180910390f35b3480156107a757600080fd5b506107b06114d4565b6040516107bd9190614a60565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614301565b6114e7565b6040516107fa9190614d98565b60405180910390f35b34801561080f57600080fd5b5061081861152f565b005b34801561082657600080fd5b50610841600480360381019061083c91906144d1565b6115b7565b005b34801561084f57600080fd5b506108586116f7565b6040516108659190614a60565b60405180910390f35b34801561087a57600080fd5b50610895600480360381019061089091906143de565b611797565b005b3480156108a357600080fd5b506108ac61186e565b6040516108b991906149e4565b60405180910390f35b3480156108ce57600080fd5b506108d7611894565b6040516108e49190614d98565b60405180910390f35b3480156108f957600080fd5b50610902611899565b60405161090f91906149e4565b60405180910390f35b34801561092457600080fd5b5061092d6118c3565b60405161093a91906149e4565b60405180910390f35b34801561094f57600080fd5b506109586118e9565b6040516109659190614d98565b60405180910390f35b34801561097a57600080fd5b5061099560048036038101906109909190614456565b6118ee565b005b3480156109a357600080fd5b506109ac611987565b6040516109b99190614a96565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e491906143de565b611a19565b005b3480156109f757600080fd5b50610a00611b34565b604051610a0d9190614d98565b60405180910390f35b348015610a2257600080fd5b50610a2b611b39565b604051610a389190614d98565b60405180910390f35b348015610a4d57600080fd5b50610a56611b3f565b604051610a639190614d98565b60405180910390f35b348015610a7857600080fd5b50610a81611b45565b604051610a8e9190614d98565b60405180910390f35b348015610aa357600080fd5b50610abe6004803603810190610ab9919061441a565b611b4a565b604051610acb9190614a60565b60405180910390f35b348015610ae057600080fd5b50610ae9611c35565b604051610af69190614d98565b60405180910390f35b348015610b0b57600080fd5b50610b266004803603810190610b21919061441a565b611c3b565b604051610b339190614a60565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e9190614301565b611c59565b005b348015610b7157600080fd5b50610b8c6004803603810190610b879190614301565b611d95565b604051610b999190614a60565b60405180910390f35b348015610bae57600080fd5b50610bb7611db5565b604051610bc49190614a60565b60405180910390f35b348015610bd957600080fd5b50610bf46004803603810190610bef91906143de565b611dc8565b005b348015610c0257600080fd5b50610c1d6004803603810190610c18919061447f565b611eed565b005b348015610c2b57600080fd5b50610c34611ffc565b604051610c419190614a60565b60405180910390f35b348015610c5657600080fd5b50610c5f61200f565b604051610c6c9190614d98565b60405180910390f35b348015610c8157600080fd5b50610c9c6004803603810190610c97919061447f565b612015565b604051610ca99190614a60565b60405180910390f35b348015610cbe57600080fd5b50610cc761216a565b604051610cd49190614d98565b60405180910390f35b348015610ce957600080fd5b50610d046004803603810190610cff9190614353565b612170565b604051610d119190614d98565b60405180910390f35b348015610d2657600080fd5b50610d2f6121f7565b604051610d3c9190614d98565b60405180910390f35b348015610d5157600080fd5b50610d5a6121fd565b604051610d679190614a60565b60405180910390f35b348015610d7c57600080fd5b50610d8561229d565b604051610d929190614d98565b60405180910390f35b348015610da757600080fd5b50610dc26004803603810190610dbd9190614301565b6122a2565b005b348015610dd057600080fd5b50610dd961239a565b604051610de69190614d98565b60405180910390f35b348015610dfb57600080fd5b50610e0461239f565b604051610e119190614d98565b60405180910390f35b348015610e2657600080fd5b50610e416004803603810190610e3c919061447f565b6123a5565b604051610e4e9190614a60565b60405180910390f35b606060038054610e6690615092565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9290615092565b8015610edf5780601f10610eb457610100808354040283529160200191610edf565b820191906000526020600020905b815481529060010190602001808311610ec257829003601f168201915b5050505050905090565b6000610efd610ef6612692565b848461269a565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610f5d612692565b73ffffffffffffffffffffffffffffffffffffffff16610f7b611899565b73ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890614c98565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600c5481565b60185481565b60175481565b6110b1612692565b73ffffffffffffffffffffffffffffffffffffffff166110cf611899565b73ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90614c98565b60405180910390fd5b670de0b6b3a76400006103e8600161113b610f4b565b6111459190614f46565b61114f9190614f15565b6111599190614f15565b81101561119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290614d78565b60405180910390fd5b670de0b6b3a7640000816111af9190614f46565b60098190555050565b60006111c5848484612865565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611210612692565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790614c78565b60405180910390fd5b6112a48561129c612692565b85840361269a565b60019150509392505050565b61dead81565b6112be612692565b73ffffffffffffffffffffffffffffffffffffffff166112dc611899565b73ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990614c98565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff02191690831515021790555042600f81905550565b600e5481565b600d60009054906101000a900460ff1681565b60006012905090565b60006114356113a0612692565b8484600160006113ae612692565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114309190614ebf565b61269a565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b601260029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611537612692565b73ffffffffffffffffffffffffffffffffffffffff16611555611899565b73ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290614c98565b60405180910390fd5b6115b560006135f9565b565b6115bf612692565b73ffffffffffffffffffffffffffffffffffffffff166115dd611899565b73ffffffffffffffffffffffffffffffffffffffff1614611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a90614c98565b60405180910390fd5b610258831015611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90614b38565b60405180910390fd5b6103e8821115801561168b575060008210155b6116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c190614bd8565b60405180910390fd5b82600e8190555081600c8190555080600d60006101000a81548160ff021916908315150217905550505050565b6000611701612692565b73ffffffffffffffffffffffffffffffffffffffff1661171f611899565b73ffffffffffffffffffffffffffffffffffffffff1614611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90614c98565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055506001905090565b61179f612692565b73ffffffffffffffffffffffffffffffffffffffff166117bd611899565b73ffffffffffffffffffffffffffffffffffffffff1614611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90614c98565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600381565b6118f6612692565b73ffffffffffffffffffffffffffffffffffffffff16611914611899565b73ffffffffffffffffffffffffffffffffffffffff161461196a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196190614c98565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b60606004805461199690615092565b80601f01602080910402602001604051908101604052809291908181526020018280546119c290615092565b8015611a0f5780601f106119e457610100808354040283529160200191611a0f565b820191906000526020600020905b8154815290600101906020018083116119f257829003601f168201915b5050505050905090565b611a21612692565b73ffffffffffffffffffffffffffffffffffffffff16611a3f611899565b73ffffffffffffffffffffffffffffffffffffffff1614611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c90614c98565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d90614b78565b60405180910390fd5b611b3082826136bf565b5050565b600081565b60115481565b60195481565b600381565b60008060016000611b59612692565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0d90614d58565b60405180910390fd5b611c2a611c21612692565b8585840361269a565b600191505092915050565b600f5481565b6000611c4f611c48612692565b8484612865565b6001905092915050565b611c61612692565b73ffffffffffffffffffffffffffffffffffffffff16611c7f611899565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614c98565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b601260019054906101000a900460ff1681565b611dd0612692565b73ffffffffffffffffffffffffffffffffffffffff16611dee611899565b73ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b90614c98565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ee19190614a60565b60405180910390a25050565b611ef5612692565b73ffffffffffffffffffffffffffffffffffffffff16611f13611899565b73ffffffffffffffffffffffffffffffffffffffff1614611f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6090614c98565b60405180910390fd5b670de0b6b3a76400006103e86005611f7f610f4b565b611f899190614f46565b611f939190614f15565b611f9d9190614f15565b811015611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690614b58565b60405180910390fd5b670de0b6b3a764000081611ff39190614f46565b600b8190555050565b601460009054906101000a900460ff1681565b60095481565b600061201f612692565b73ffffffffffffffffffffffffffffffffffffffff1661203d611899565b73ffffffffffffffffffffffffffffffffffffffff1614612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90614c98565b60405180910390fd5b620186a060016120a1610f4b565b6120ab9190614f46565b6120b59190614f15565b8210156120f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ee90614bf8565b60405180910390fd5b6103e86005612104610f4b565b61210e9190614f46565b6121189190614f15565b82111561215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215190614c18565b60405180910390fd5b81600a8190555060019050919050565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6000612207612692565b73ffffffffffffffffffffffffffffffffffffffff16612225611899565b73ffffffffffffffffffffffffffffffffffffffff161461227b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227290614c98565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b600381565b6122aa612692565b73ffffffffffffffffffffffffffffffffffffffff166122c8611899565b73ffffffffffffffffffffffffffffffffffffffff161461231e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231590614c98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561238e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238590614af8565b60405180910390fd5b612397816135f9565b50565b600081565b600b5481565b60006123af612692565b73ffffffffffffffffffffffffffffffffffffffff166123cd611899565b73ffffffffffffffffffffffffffffffffffffffff1614612423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241a90614c98565b60405180910390fd5b6010546011546124339190614ebf565b4211612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b90614cf8565b60405180910390fd5b6103e88211156124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b090614cb8565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161251d91906149e4565b60206040518083038186803b15801561253557600080fd5b505afa158015612549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256d91906144a8565b9050600061259861271061258a868561376090919063ffffffff16565b61377690919063ffffffff16565b905060008111156125d3576125d2600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead8361378c565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561270a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270190614d18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561277a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277190614b18565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128589190614d98565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cc90614cd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293c90614ab8565b60405180910390fd5b600081141561295f5761295a8383600061378c565b6135f4565b601260009054906101000a900460ff16156130245761297c611899565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ea57506129ba611899565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a235750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a5d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a765750600660149054906101000a900460ff16155b1561302357601260019054906101000a900460ff16612b7057601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b305750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6690614ad8565b60405180910390fd5b5b601460009054906101000a900460ff1615612d3a57612b8d611899565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c1457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c6e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d395743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ceb90614c58565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ddd5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e8457600954811115612e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1e90614c38565b60405180910390fd5b600b54612e33836114e7565b82612e3e9190614ebf565b1115612e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7690614d38565b60405180910390fd5b613022565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f275750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7657600954811115612f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6890614bb8565b60405180910390fd5b613021565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302057600b54612fd3836114e7565b82612fde9190614ebf565b111561301f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301690614d38565b60405180910390fd5b5b5b5b5b5b600061302f306114e7565b90506000600a5482101590508080156130545750601260029054906101000a900460ff165b801561306d5750600660149054906101000a900460ff16155b80156130c35750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131195750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561316f5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131b3576001600660146101000a81548160ff021916908315150217905550613197613a0d565b6000600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156132195750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156132315750600d60009054906101000a900460ff165b801561324c5750600e54600f546132489190614ebf565b4210155b80156132a25750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132b1576132af613cf4565b505b6000600660149054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133675750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337157600090505b600081156135e457601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133d457506000601654115b1561349e5761340160646133f36016548861376090919063ffffffff16565b61377690919063ffffffff16565b90506016546000826134139190614f46565b61341d9190614f15565b6018600082825461342e9190614ebf565b925050819055506016546003826134459190614f46565b61344f9190614f15565b601960008282546134609190614ebf565b925050819055506016546003826134779190614f46565b6134819190614f15565b601760008282546134929190614ebf565b925050819055506135c0565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134f957506000601554115b156135bf5761352660646135186015548861376090919063ffffffff16565b61377690919063ffffffff16565b90506015546003826135389190614f46565b6135429190614f15565b601860008282546135539190614ebf565b9250508190555060155460008261356a9190614f46565b6135749190614f15565b601960008282546135859190614ebf565b9250508190555060155460008261359c9190614f46565b6135a69190614f15565b601760008282546135b79190614ebf565b925050819055505b5b60008111156135d5576135d487308361378c565b5b80856135e19190614fa0565b94505b6135ef87878761378c565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000818361376e9190614f46565b905092915050565b600081836137849190614f15565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f390614cd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561386c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386390614ab8565b60405180910390fd5b613877838383613ecf565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156138fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f490614b98565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139909190614ebf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139f49190614d98565b60405180910390a3613a07848484613ed4565b50505050565b6000613a18306114e7565b90506000601954601754601854613a2f9190614ebf565b613a399190614ebf565b9050600080831480613a4b5750600082145b15613a5857505050613cf2565b6014600a54613a679190614f46565b831115613a80576014600a54613a7d9190614f46565b92505b600060028360185486613a939190614f46565b613a9d9190614f15565b613aa79190614f15565b90506000613abe8286613ed990919063ffffffff16565b90506000479050613ace82613eef565b6000613ae38247613ed990919063ffffffff16565b90506000613b0e87613b006017548561376090919063ffffffff16565b61377690919063ffffffff16565b90506000613b3988613b2b6019548661376090919063ffffffff16565b61377690919063ffffffff16565b90506000818385613b4a9190614fa0565b613b549190614fa0565b9050600060188190555060006017819055506000601981905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613bb4906149cf565b60006040518083038185875af1925050503d8060008114613bf1576040519150601f19603f3d011682016040523d82523d6000602084013e613bf6565b606091505b505080985050600087118015613c0c5750600081115b15613c5957613c1b87826141ad565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613c5093929190614e0d565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c9f906149cf565b60006040518083038185875af1925050503d8060008114613cdc576040519150601f19603f3d011682016040523d82523d6000602084013e613ce1565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613d5a91906149e4565b60206040518083038186803b158015613d7257600080fd5b505afa158015613d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613daa91906144a8565b90506000613dd7612710613dc9600c548561376090919063ffffffff16565b61377690919063ffffffff16565b90506000811115613e1257613e11600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead8361378c565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e8157600080fd5b505af1158015613e95573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b60008183613ee79190614fa0565b905092915050565b6000600267ffffffffffffffff811115613f32577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613f605781602001602082028036833780820191505090505b5090503081600081518110613f9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561403e57600080fd5b505afa158015614052573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614076919061432a565b816001815181106140b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614115307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461269a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614177959493929190614db3565b600060405180830381600087803b15801561419157600080fd5b505af11580156141a5573d6000803e3d6000fd5b505050505050565b6141d8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461269a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161423f969594939291906149ff565b6060604051808303818588803b15801561425857600080fd5b505af115801561426c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906142919190614520565b5050505050565b6000813590506142a78161580c565b92915050565b6000815190506142bc8161580c565b92915050565b6000813590506142d181615823565b92915050565b6000813590506142e68161583a565b92915050565b6000815190506142fb8161583a565b92915050565b60006020828403121561431357600080fd5b600061432184828501614298565b91505092915050565b60006020828403121561433c57600080fd5b600061434a848285016142ad565b91505092915050565b6000806040838503121561436657600080fd5b600061437485828601614298565b925050602061438585828601614298565b9150509250929050565b6000806000606084860312156143a457600080fd5b60006143b286828701614298565b93505060206143c386828701614298565b92505060406143d4868287016142d7565b9150509250925092565b600080604083850312156143f157600080fd5b60006143ff85828601614298565b9250506020614410858286016142c2565b9150509250929050565b6000806040838503121561442d57600080fd5b600061443b85828601614298565b925050602061444c858286016142d7565b9150509250929050565b60006020828403121561446857600080fd5b6000614476848285016142c2565b91505092915050565b60006020828403121561449157600080fd5b600061449f848285016142d7565b91505092915050565b6000602082840312156144ba57600080fd5b60006144c8848285016142ec565b91505092915050565b6000806000606084860312156144e657600080fd5b60006144f4868287016142d7565b9350506020614505868287016142d7565b9250506040614516868287016142c2565b9150509250925092565b60008060006060848603121561453557600080fd5b6000614543868287016142ec565b9350506020614554868287016142ec565b9250506040614565868287016142ec565b9150509250925092565b600061457b8383614587565b60208301905092915050565b61459081614fd4565b82525050565b61459f81614fd4565b82525050565b60006145b082614e6f565b6145ba8185614e92565b93506145c583614e5f565b8060005b838110156145f65781516145dd888261456f565b97506145e883614e85565b9250506001810190506145c9565b5085935050505092915050565b61460c81614fe6565b82525050565b61461b81615029565b82525050565b61462a8161504d565b82525050565b600061463b82614e7a565b6146458185614eae565b935061465581856020860161505f565b61465e81615151565b840191505092915050565b6000614676602383614eae565b915061468182615162565b604082019050919050565b6000614699601683614eae565b91506146a4826151b1565b602082019050919050565b60006146bc602683614eae565b91506146c7826151da565b604082019050919050565b60006146df602283614eae565b91506146ea82615229565b604082019050919050565b6000614702603383614eae565b915061470d82615278565b604082019050919050565b6000614725602483614eae565b9150614730826152c7565b604082019050919050565b6000614748603983614eae565b915061475382615316565b604082019050919050565b600061476b602683614eae565b915061477682615365565b604082019050919050565b600061478e603683614eae565b9150614799826153b4565b604082019050919050565b60006147b1603083614eae565b91506147bc82615403565b604082019050919050565b60006147d4603583614eae565b91506147df82615452565b604082019050919050565b60006147f7603483614eae565b9150614802826154a1565b604082019050919050565b600061481a603583614eae565b9150614825826154f0565b604082019050919050565b600061483d604983614eae565b91506148488261553f565b606082019050919050565b6000614860602883614eae565b915061486b826155b4565b604082019050919050565b6000614883602083614eae565b915061488e82615603565b602082019050919050565b60006148a6602a83614eae565b91506148b18261562c565b604082019050919050565b60006148c9602583614eae565b91506148d48261567b565b604082019050919050565b60006148ec602083614eae565b91506148f7826156ca565b602082019050919050565b600061490f600083614ea3565b915061491a826156f3565b600082019050919050565b6000614932602483614eae565b915061493d826156f6565b604082019050919050565b6000614955601383614eae565b915061496082615745565b602082019050919050565b6000614978602583614eae565b91506149838261576e565b604082019050919050565b600061499b602f83614eae565b91506149a6826157bd565b604082019050919050565b6149ba81615012565b82525050565b6149c98161501c565b82525050565b60006149da82614902565b9150819050919050565b60006020820190506149f96000830184614596565b92915050565b600060c082019050614a146000830189614596565b614a2160208301886149b1565b614a2e6040830187614621565b614a3b6060830186614621565b614a486080830185614596565b614a5560a08301846149b1565b979650505050505050565b6000602082019050614a756000830184614603565b92915050565b6000602082019050614a906000830184614612565b92915050565b60006020820190508181036000830152614ab08184614630565b905092915050565b60006020820190508181036000830152614ad181614669565b9050919050565b60006020820190508181036000830152614af18161468c565b9050919050565b60006020820190508181036000830152614b11816146af565b9050919050565b60006020820190508181036000830152614b31816146d2565b9050919050565b60006020820190508181036000830152614b51816146f5565b9050919050565b60006020820190508181036000830152614b7181614718565b9050919050565b60006020820190508181036000830152614b918161473b565b9050919050565b60006020820190508181036000830152614bb18161475e565b9050919050565b60006020820190508181036000830152614bd181614781565b9050919050565b60006020820190508181036000830152614bf1816147a4565b9050919050565b60006020820190508181036000830152614c11816147c7565b9050919050565b60006020820190508181036000830152614c31816147ea565b9050919050565b60006020820190508181036000830152614c518161480d565b9050919050565b60006020820190508181036000830152614c7181614830565b9050919050565b60006020820190508181036000830152614c9181614853565b9050919050565b60006020820190508181036000830152614cb181614876565b9050919050565b60006020820190508181036000830152614cd181614899565b9050919050565b60006020820190508181036000830152614cf1816148bc565b9050919050565b60006020820190508181036000830152614d11816148df565b9050919050565b60006020820190508181036000830152614d3181614925565b9050919050565b60006020820190508181036000830152614d5181614948565b9050919050565b60006020820190508181036000830152614d718161496b565b9050919050565b60006020820190508181036000830152614d918161498e565b9050919050565b6000602082019050614dad60008301846149b1565b92915050565b600060a082019050614dc860008301886149b1565b614dd56020830187614621565b8181036040830152614de781866145a5565b9050614df66060830185614596565b614e0360808301846149b1565b9695505050505050565b6000606082019050614e2260008301866149b1565b614e2f60208301856149b1565b614e3c60408301846149b1565b949350505050565b6000602082019050614e5960008301846149c0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614eca82615012565b9150614ed583615012565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f0a57614f096150c4565b5b828201905092915050565b6000614f2082615012565b9150614f2b83615012565b925082614f3b57614f3a6150f3565b5b828204905092915050565b6000614f5182615012565b9150614f5c83615012565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f9557614f946150c4565b5b828202905092915050565b6000614fab82615012565b9150614fb683615012565b925082821015614fc957614fc86150c4565b5b828203905092915050565b6000614fdf82614ff2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150348261503b565b9050919050565b600061504682614ff2565b9050919050565b600061505882615012565b9050919050565b60005b8381101561507d578082015181840152602081019050615062565b8381111561508c576000848401525b50505050565b600060028204905060018216806150aa57607f821691505b602082108114156150be576150bd615122565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b61581581614fd4565b811461582057600080fd5b50565b61582c81614fe6565b811461583757600080fd5b50565b61584381615012565b811461584e57600080fd5b5056fea26469706673582212203d4ec04d5a0fe75007bd5fdaf27d38254eca6b769aa0eb7420268010bf9cd7aa64736f6c63430008040033

Deployed Bytecode Sourcemap

29830:18235:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12426:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14734:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31526:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29907:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13546:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37443:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30462:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30277:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31310:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31270;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35588:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15426:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30000:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34490:154;;;;;;;;;;;;;:::i;:::-;;30372:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30333:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13388:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16364:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29965:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30560:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37608:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31086:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30640:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13717:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6222:103;;;;;;;;;;;;;:::i;:::-;;45647:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34696:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36135:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30092:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30940:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5571:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30129:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31121:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36398:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12645:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36696:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31040:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30516:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31350:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31223:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17164:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30424:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14107:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37204:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31747:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30600:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36506:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35871:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30858:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30162:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35083:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30906:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14386:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30204:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34878:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30990:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6480:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31172:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30244:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47006:1056;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12426:100;12480:13;12513:5;12506:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12426:100;:::o;14734:210::-;14853:4;14875:39;14884:12;:10;:12::i;:::-;14898:7;14907:6;14875:8;:39::i;:::-;14932:4;14925:11;;14734:210;;;;:::o;31526:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;29907:51::-;;;:::o;13546:108::-;13607:7;13634:12;;13627:19;;13546:108;:::o;37443:157::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37550:9:::1;;;;;;;;;;;37522:38;;37539:9;37522:38;;;;;;;;;;;;37583:9;37571;;:21;;;;;;;;;;;;;;;;;;37443:157:::0;:::o;30462:47::-;;;;:::o;30277:36::-;;;;:::o;31310:33::-;;;;:::o;31270:::-;;;;:::o;35588:275::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35725:4:::1;35717;35712:1;35696:13;:11;:13::i;:::-;:17;;;;:::i;:::-;35695:26;;;;:::i;:::-;35694:35;;;;:::i;:::-;35684:6;:45;;35662:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;35848:6;35838;:17;;;;:::i;:::-;35815:20;:40;;;;35588:275:::0;:::o;15426:529::-;15566:4;15583:36;15593:6;15601:9;15612:6;15583:9;:36::i;:::-;15632:24;15659:11;:19;15671:6;15659:19;;;;;;;;;;;;;;;:33;15679:12;:10;:12::i;:::-;15659:33;;;;;;;;;;;;;;;;15632:60;;15745:6;15725:16;:26;;15703:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;15855:57;15864:6;15872:12;:10;:12::i;:::-;15905:6;15886:16;:25;15855:8;:57::i;:::-;15943:4;15936:11;;;15426:529;;;;;:::o;30000:53::-;30046:6;30000:53;:::o;34490:154::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34560:4:::1;34544:13;;:20;;;;;;;;;;;;;;;;;;34589:4;34575:11;;:18;;;;;;;;;;;;;;;;;;34621:15;34604:14;:32;;;;34490:154::o:0;30372:45::-;;;;:::o;30333:32::-;;;;;;;;;;;;;:::o;13388:93::-;13446:5;13471:2;13464:9;;13388:93;:::o;16364:297::-;16479:4;16501:130;16524:12;:10;:12::i;:::-;16551:7;16610:10;16573:11;:25;16585:12;:10;:12::i;:::-;16573:25;;;;;;;;;;;;;;;:34;16599:7;16573:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;16501:8;:130::i;:::-;16649:4;16642:11;;16364:297;;;;:::o;29965:28::-;;;;;;;;;;;;;:::o;30560:33::-;;;;;;;;;;;;;:::o;37608:126::-;37674:4;37698:19;:28;37718:7;37698:28;;;;;;;;;;;;;;;;;;;;;;;;;37691:35;;37608:126;;;:::o;31086:28::-;;;;:::o;30640:31::-;;;;;;;;;;;;;:::o;13717:177::-;13836:7;13868:9;:18;13878:7;13868:18;;;;;;;;;;;;;;;;13861:25;;13717:177;;;:::o;6222:103::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6287:30:::1;6314:1;6287:18;:30::i;:::-;6222:103::o:0;45647:555::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45849:3:::1;45826:19;:26;;45804:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;45976:4;45964:8;:16;;:33;;;;;45996:1;45984:8;:13;;45964:33;45942:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;46102:19;46084:15;:37;;;;46151:8;46132:16;:27;;;;46186:8;46170:13;;:24;;;;;;;;;;;;;;;;;;45647:555:::0;;;:::o;34696:121::-;34748:4;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34782:5:::1;34765:14;;:22;;;;;;;;;;;;;;;;;;34805:4;34798:11;;34696:121:::0;:::o;36135:167::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36290:4:::1;36248:31;:39;36280:6;36248:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36135:167:::0;;:::o;30092:30::-;;;;;;;;;;;;;:::o;30940:43::-;30982:1;30940:43;:::o;5571:87::-;5617:7;5644:6;;;;;;;;;;;5637:13;;5571:87;:::o;30129:24::-;;;;;;;;;;;;;:::o;31121:44::-;31164:1;31121:44;:::o;36398:100::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36483:7:::1;36469:11;;:21;;;;;;;;;;;;;;;;;;36398:100:::0;:::o;12645:104::-;12701:13;12734:7;12727:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12645:104;:::o;36696:304::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36840:13:::1;;;;;;;;;;;36832:21;;:4;:21;;;;36810:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;36951:41;36980:4;36986:5;36951:28;:41::i;:::-;36696:304:::0;;:::o;31040:37::-;31076:1;31040:37;:::o;30516:35::-;;;;:::o;31350:27::-;;;;:::o;31223:38::-;31260:1;31223:38;:::o;17164:482::-;17284:4;17306:24;17333:11;:25;17345:12;:10;:12::i;:::-;17333:25;;;;;;;;;;;;;;;:34;17359:7;17333:34;;;;;;;;;;;;;;;;17306:61;;17420:15;17400:16;:35;;17378:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;17536:67;17545:12;:10;:12::i;:::-;17559:7;17587:15;17568:16;:34;17536:8;:67::i;:::-;17634:4;17627:11;;;17164:482;;;;:::o;30424:29::-;;;;:::o;14107:216::-;14229:4;14251:42;14261:12;:10;:12::i;:::-;14275:9;14286:6;14251:9;:42::i;:::-;14311:4;14304:11;;14107:216;;;;:::o;37204:231::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37364:15:::1;;;;;;;;;;;37321:59;;37344:18;37321:59;;;;;;;;;;;;37409:18;37391:15;;:36;;;;;;;;;;;;;;;;;;37204:231:::0;:::o;31747:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;30600:33::-;;;;;;;;;;;;;:::o;36506:182::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36622:8:::1;36591:19;:28;36611:7;36591:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36662:7;36646:34;;;36671:8;36646:34;;;;;;:::i;:::-;;;;;;;;36506:182:::0;;:::o;35871:256::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36011:4:::1;36003;35998:1;35982:13;:11;:13::i;:::-;:17;;;;:::i;:::-;35981:26;;;;:::i;:::-;35980:35;;;;:::i;:::-;35970:6;:45;;35948:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;36112:6;36102;:17;;;;:::i;:::-;36090:9;:29;;;;35871:256:::0;:::o;30858:39::-;;;;;;;;;;;;;:::o;30162:35::-;;;;:::o;35083:497::-;35191:4;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35270:6:::1;35265:1;35249:13;:11;:13::i;:::-;:17;;;;:::i;:::-;35248:28;;;;:::i;:::-;35235:9;:41;;35213:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;35425:4;35420:1;35404:13;:11;:13::i;:::-;:17;;;;:::i;:::-;35403:26;;;;:::i;:::-;35390:9;:39;;35368:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;35541:9;35520:18;:30;;;;35568:4;35561:11;;35083:497:::0;;;:::o;30906:27::-;;;;:::o;14386:201::-;14520:7;14552:11;:18;14564:5;14552:18;;;;;;;;;;;;;;;:27;14571:7;14552:27;;;;;;;;;;;;;;;;14545:34;;14386:201;;;;:::o;30204:33::-;;;;:::o;34878:135::-;34938:4;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34978:5:::1;34955:20;;:28;;;;;;;;;;;;;;;;;;35001:4;34994:11;;34878:135:::0;:::o;30990:43::-;31032:1;30990:43;:::o;6480:238::-;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6603:1:::1;6583:22;;:8;:22;;;;6561:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;6682:28;6701:8;6682:18;:28::i;:::-;6480:238:::0;:::o;31172:44::-;31215:1;31172:44;:::o;30244:24::-;;;;:::o;47006:1056::-;47117:4;5802:12;:10;:12::i;:::-;5791:23;;:7;:5;:7::i;:::-;:23;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47202:19:::1;;47179:20;;:42;;;;:::i;:::-;47161:15;:60;47139:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;47311:4;47300:7;:15;;47292:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;47396:15;47373:20;:38;;;;47466:28;47497:4;:14;;;47512:13;;;;;;;;;;;47497:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47466:60;;47576:20;47599:44;47637:5;47599:33;47624:7;47599:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;47576:67;;47763:1;47748:12;:16;47744:110;;;47781:61;47797:13;;;;;;;;;;;47820:6;47829:12;47781:15;:61::i;:::-;47744:110;47929:19;47966:13;;;;;;;;;;;47929:51;;47991:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;48018:14;;;;;;;;;;48050:4;48043:11;;;;;47006:1056:::0;;;:::o;4413:98::-;4466:7;4493:10;4486:17;;4413:98;:::o;20954:380::-;21107:1;21090:19;;:5;:19;;;;21082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21188:1;21169:21;;:7;:21;;;;21161:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21272:6;21242:11;:18;21254:5;21242:18;;;;;;;;;;;;;;;:27;21261:7;21242:27;;;;;;;;;;;;;;;:36;;;;21310:7;21294:32;;21303:5;21294:32;;;21319:6;21294:32;;;;;;:::i;:::-;;;;;;;;20954:380;;;:::o;37742:5011::-;37890:1;37874:18;;:4;:18;;;;37866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37967:1;37953:16;;:2;:16;;;;37945:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38036:1;38026:6;:11;38022:93;;;38054:28;38070:4;38076:2;38080:1;38054:15;:28::i;:::-;38097:7;;38022:93;38131:14;;;;;;;;;;;38127:2487;;;38192:7;:5;:7::i;:::-;38184:15;;:4;:15;;;;:49;;;;;38226:7;:5;:7::i;:::-;38220:13;;:2;:13;;;;38184:49;:86;;;;;38268:1;38254:16;;:2;:16;;;;38184:86;:128;;;;;38305:6;38291:21;;:2;:21;;;;38184:128;:158;;;;;38334:8;;;;;;;;;;;38333:9;38184:158;38162:2441;;;38382:13;;;;;;;;;;;38377:223;;38454:19;:25;38474:4;38454:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38483:19;:23;38503:2;38483:23;;;;;;;;;;;;;;;;;;;;;;;;;38454:52;38420:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;38377:223;38756:20;;;;;;;;;;;38752:641;;;38837:7;:5;:7::i;:::-;38831:13;;:2;:13;;;;:72;;;;;38887:15;38873:30;;:2;:30;;;;38831:72;:129;;;;;38946:13;;;;;;;;;;;38932:28;;:2;:28;;;;38831:129;38801:573;;;39124:12;39049:28;:39;39078:9;39049:39;;;;;;;;;;;;;;;;:87;39011:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;39338:12;39296:28;:39;39325:9;39296:39;;;;;;;;;;;;;;;:54;;;;38801:573;38752:641;39467:25;:31;39493:4;39467:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;39524:31;:35;39556:2;39524:35;;;;;;;;;;;;;;;;;;;;;;;;;39523:36;39467:92;39441:1147;;;39646:20;;39636:6;:30;;39602:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;39854:9;;39837:13;39847:2;39837:9;:13::i;:::-;39828:6;:22;;;;:::i;:::-;:35;;39794:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39441:1147;;;40032:25;:29;40058:2;40032:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;40087:31;:37;40119:4;40087:37;;;;;;;;;;;;;;;;;;;;;;;;;40086:38;40032:92;40006:582;;;40211:20;;40201:6;:30;;40167:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;40006:582;;;40368:31;:35;40400:2;40368:35;;;;;;;;;;;;;;;;;;;;;;;;;40363:225;;40488:9;;40471:13;40481:2;40471:9;:13::i;:::-;40462:6;:22;;;;:::i;:::-;:35;;40428:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;40363:225;40006:582;39441:1147;38162:2441;38127:2487;40626:28;40657:24;40675:4;40657:9;:24::i;:::-;40626:55;;40694:12;40733:18;;40709:20;:42;;40694:57;;40782:7;:35;;;;;40806:11;;;;;;;;;;;40782:35;:61;;;;;40835:8;;;;;;;;;;;40834:9;40782:61;:110;;;;;40861:25;:31;40887:4;40861:31;;;;;;;;;;;;;;;;;;;;;;;;;40860:32;40782:110;:153;;;;;40910:19;:25;40930:4;40910:25;;;;;;;;;;;;;;;;;;;;;;;;;40909:26;40782:153;:194;;;;;40953:19;:23;40973:2;40953:23;;;;;;;;;;;;;;;;;;;;;;;;;40952:24;40782:194;40764:326;;;41014:4;41003:8;;:15;;;;;;;;;;;;;;;;;;41035:10;:8;:10::i;:::-;41073:5;41062:8;;:16;;;;;;;;;;;;;;;;;;40764:326;41121:8;;;;;;;;;;;41120:9;:55;;;;;41146:25;:29;41172:2;41146:29;;;;;;;;;;;;;;;;;;;;;;;;;41120:55;:85;;;;;41192:13;;;;;;;;;;;41120:85;:153;;;;;41258:15;;41241:14;;:32;;;;:::i;:::-;41222:15;:51;;41120:153;:196;;;;;41291:19;:25;41311:4;41291:25;;;;;;;;;;;;;;;;;;;;;;;;;41290:26;41120:196;41102:282;;;41343:29;:27;:29::i;:::-;;41102:282;41396:12;41412:8;;;;;;;;;;;41411:9;41396:24;;41522:19;:25;41542:4;41522:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41551:19;:23;41571:2;41551:23;;;;;;;;;;;;;;;;;;;;;;;;;41522:52;41518:100;;;41601:5;41591:15;;41518:100;41630:12;41735:7;41731:969;;;41787:25;:29;41813:2;41787:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41836:1;41820:13;;:17;41787:50;41783:768;;;41865:34;41895:3;41865:25;41876:13;;41865:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41858:41;;41968:13;;31215:1;41941:4;:23;;;;:::i;:::-;41940:41;;;;:::i;:::-;41918:18;;:63;;;;;;;:::i;:::-;;;;;;;;42038:13;;31260:1;42017:4;:17;;;;:::i;:::-;42016:35;;;;:::i;:::-;42000:12;;:51;;;;;;;:::i;:::-;;;;;;;;42120:13;;31164:1;42093:4;:23;;;;:::i;:::-;42092:41;;;;:::i;:::-;42070:18;;:63;;;;;;;:::i;:::-;;;;;;;;41783:768;;;42195:25;:31;42221:4;42195:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;42245:1;42230:12;;:16;42195:51;42191:360;;;42274:33;42303:3;42274:24;42285:12;;42274:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;42267:40;;42375:12;;31032:1;42349:4;:22;;;;:::i;:::-;42348:39;;;;:::i;:::-;42326:18;;:61;;;;;;;:::i;:::-;;;;;;;;42443:12;;31076:1;42423:4;:16;;;;:::i;:::-;42422:33;;;;:::i;:::-;42406:12;;:49;;;;;;;:::i;:::-;;;;;;;;42523:12;;30982:1;42497:4;:22;;;;:::i;:::-;42496:39;;;;:::i;:::-;42474:18;;:61;;;;;;;:::i;:::-;;;;;;;;42191:360;41783:768;42578:1;42571:4;:8;42567:91;;;42600:42;42616:4;42630;42637;42600:15;:42::i;:::-;42567:91;42684:4;42674:14;;;;;:::i;:::-;;;41731:969;42712:33;42728:4;42734:2;42738:6;42712:15;:33::i;:::-;37742:5011;;;;;;;;:::o;6878:191::-;6952:16;6971:6;;;;;;;;;;;6952:25;;6997:8;6988:6;;:17;;;;;;;;;;;;;;;;;;7052:8;7021:40;;7042:8;7021:40;;;;;;;;;;;;6878:191;;:::o;37008:188::-;37125:5;37091:25;:31;37117:4;37091:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37182:5;37148:40;;37176:4;37148:40;;;;;;;;;;;;37008:188;;:::o;26403:98::-;26461:7;26492:1;26488;:5;;;;:::i;:::-;26481:12;;26403:98;;;;:::o;26802:::-;26860:7;26891:1;26887;:5;;;;:::i;:::-;26880:12;;26802:98;;;;:::o;18136:770::-;18294:1;18276:20;;:6;:20;;;;18268:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18378:1;18357:23;;:9;:23;;;;18349:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18433:47;18454:6;18462:9;18473:6;18433:20;:47::i;:::-;18493:21;18517:9;:17;18527:6;18517:17;;;;;;;;;;;;;;;;18493:41;;18584:6;18567:13;:23;;18545:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;18728:6;18712:13;:22;18692:9;:17;18702:6;18692:17;;;;;;;;;;;;;;;:42;;;;18780:6;18756:9;:20;18766:9;18756:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;18821:9;18804:35;;18813:6;18804:35;;;18832:6;18804:35;;;;;;:::i;:::-;;;;;;;;18852:46;18872:6;18880:9;18891:6;18852:19;:46::i;:::-;18136:770;;;;:::o;43883:1756::-;43922:23;43948:24;43966:4;43948:9;:24::i;:::-;43922:50;;43983:25;44079:12;;44045:18;;44011;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;43983:108;;44102:12;44150:1;44131:15;:20;:46;;;;44176:1;44155:17;:22;44131:46;44127:85;;;44194:7;;;;;44127:85;44267:2;44246:18;;:23;;;;:::i;:::-;44228:15;:41;44224:115;;;44325:2;44304:18;;:23;;;;:::i;:::-;44286:41;;44224:115;44400:23;44513:1;44480:17;44445:18;;44427:15;:36;;;;:::i;:::-;44426:71;;;;:::i;:::-;:88;;;;:::i;:::-;44400:114;;44525:26;44554:36;44574:15;44554;:19;;:36;;;;:::i;:::-;44525:65;;44603:25;44631:21;44603:49;;44665:36;44682:18;44665:16;:36::i;:::-;44714:18;44735:44;44761:17;44735:21;:25;;:44;;;;:::i;:::-;44714:65;;44792:23;44818:81;44871:17;44818:34;44833:18;;44818:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;44792:107;;44910:17;44930:51;44963:17;44930:28;44945:12;;44930:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;44910:71;;44994:23;45051:9;45033:15;45020:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;44994:66;;45094:1;45073:18;:22;;;;45127:1;45106:18;:22;;;;45154:1;45139:12;:16;;;;45190:9;;;;;;;;;;;45182:23;;45213:9;45182:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45168:59;;;;;45262:1;45244:15;:19;:42;;;;;45285:1;45267:15;:19;45244:42;45240:278;;;45303:46;45316:15;45333;45303:12;:46::i;:::-;45369:137;45402:18;45439:15;45473:18;;45369:137;;;;;;;;:::i;:::-;;;;;;;;45240:278;45552:15;;;;;;;;;;;45544:29;;45595:21;45544:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45530:101;;;;;43883:1756;;;;;;;;;;;:::o;46210:788::-;46267:4;46301:15;46284:14;:32;;;;46371:28;46402:4;:14;;;46417:13;;;;;;;;;;;46402:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46371:60;;46481:20;46504:77;46565:5;46504:42;46529:16;;46504:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;46481:100;;46701:1;46686:12;:16;46682:110;;;46719:61;46735:13;;;;;;;;;;;46758:6;46767:12;46719:15;:61::i;:::-;46682:110;46867:19;46904:13;;;;;;;;;;;46867:51;;46929:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46956:12;;;;;;;;;;46986:4;46979:11;;;;;46210:788;:::o;21934:125::-;;;;:::o;22663:124::-;;;;:::o;26046:98::-;26104:7;26135:1;26131;:5;;;;:::i;:::-;26124:12;;26046:98;;;;:::o;42761:589::-;42887:21;42925:1;42911:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42887:40;;42956:4;42938;42943:1;42938:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;42982:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42972:4;42977:1;42972:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;43017:62;43034:4;43049:15;43067:11;43017:8;:62::i;:::-;43118:15;:66;;;43199:11;43225:1;43269:4;43296;43316:15;43118:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42761:589;;:::o;43358:517::-;43506:62;43523:4;43538:15;43556:11;43506:8;:62::i;:::-;43611:15;:31;;;43650:9;43683:4;43703:11;43729:1;43772;30046:6;43841:15;43611:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43358:517;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:284::-;3683:6;3732:2;3720:9;3711:7;3707:23;3703:32;3700:2;;;3748:1;3745;3738:12;3700:2;3791:1;3816:64;3872:7;3863:6;3852:9;3848:22;3816:64;:::i;:::-;3806:74;;3762:128;3690:207;;;;:::o;3903:546::-;3977:6;3985;3993;4042:2;4030:9;4021:7;4017:23;4013:32;4010:2;;;4058:1;4055;4048:12;4010:2;4101:1;4126:53;4171:7;4162:6;4151:9;4147:22;4126:53;:::i;:::-;4116:63;;4072:117;4228:2;4254:53;4299:7;4290:6;4279:9;4275:22;4254:53;:::i;:::-;4244:63;;4199:118;4356:2;4382:50;4424:7;4415:6;4404:9;4400:22;4382:50;:::i;:::-;4372:60;;4327:115;4000:449;;;;;:::o;4455:596::-;4543:6;4551;4559;4608:2;4596:9;4587:7;4583:23;4579:32;4576:2;;;4624:1;4621;4614:12;4576:2;4667:1;4692:64;4748:7;4739:6;4728:9;4724:22;4692:64;:::i;:::-;4682:74;;4638:128;4805:2;4831:64;4887:7;4878:6;4867:9;4863:22;4831:64;:::i;:::-;4821:74;;4776:129;4944:2;4970:64;5026:7;5017:6;5006:9;5002:22;4970:64;:::i;:::-;4960:74;;4915:129;4566:485;;;;;:::o;5057:179::-;5126:10;5147:46;5189:3;5181:6;5147:46;:::i;:::-;5225:4;5220:3;5216:14;5202:28;;5137:99;;;;:::o;5242:108::-;5319:24;5337:5;5319:24;:::i;:::-;5314:3;5307:37;5297:53;;:::o;5356:118::-;5443:24;5461:5;5443:24;:::i;:::-;5438:3;5431:37;5421:53;;:::o;5510:732::-;5629:3;5658:54;5706:5;5658:54;:::i;:::-;5728:86;5807:6;5802:3;5728:86;:::i;:::-;5721:93;;5838:56;5888:5;5838:56;:::i;:::-;5917:7;5948:1;5933:284;5958:6;5955:1;5952:13;5933:284;;;6034:6;6028:13;6061:63;6120:3;6105:13;6061:63;:::i;:::-;6054:70;;6147:60;6200:6;6147:60;:::i;:::-;6137:70;;5993:224;5980:1;5977;5973:9;5968:14;;5933:284;;;5937:14;6233:3;6226:10;;5634:608;;;;;;;:::o;6248:109::-;6329:21;6344:5;6329:21;:::i;:::-;6324:3;6317:34;6307:50;;:::o;6363:181::-;6475:62;6531:5;6475:62;:::i;:::-;6470:3;6463:75;6453:91;;:::o;6550:147::-;6645:45;6684:5;6645:45;:::i;:::-;6640:3;6633:58;6623:74;;:::o;6703:364::-;6791:3;6819:39;6852:5;6819:39;:::i;:::-;6874:71;6938:6;6933:3;6874:71;:::i;:::-;6867:78;;6954:52;6999:6;6994:3;6987:4;6980:5;6976:16;6954:52;:::i;:::-;7031:29;7053:6;7031:29;:::i;:::-;7026:3;7022:39;7015:46;;6795:272;;;;;:::o;7073:366::-;7215:3;7236:67;7300:2;7295:3;7236:67;:::i;:::-;7229:74;;7312:93;7401:3;7312:93;:::i;:::-;7430:2;7425:3;7421:12;7414:19;;7219:220;;;:::o;7445:366::-;7587:3;7608:67;7672:2;7667:3;7608:67;:::i;:::-;7601:74;;7684:93;7773:3;7684:93;:::i;:::-;7802:2;7797:3;7793:12;7786:19;;7591:220;;;:::o;7817:366::-;7959:3;7980:67;8044:2;8039:3;7980:67;:::i;:::-;7973:74;;8056:93;8145:3;8056:93;:::i;:::-;8174:2;8169:3;8165:12;8158:19;;7963:220;;;:::o;8189:366::-;8331:3;8352:67;8416:2;8411:3;8352:67;:::i;:::-;8345:74;;8428:93;8517:3;8428:93;:::i;:::-;8546:2;8541:3;8537:12;8530:19;;8335:220;;;:::o;8561:366::-;8703:3;8724:67;8788:2;8783:3;8724:67;:::i;:::-;8717:74;;8800:93;8889:3;8800:93;:::i;:::-;8918:2;8913:3;8909:12;8902:19;;8707:220;;;:::o;8933:366::-;9075:3;9096:67;9160:2;9155:3;9096:67;:::i;:::-;9089:74;;9172:93;9261:3;9172:93;:::i;:::-;9290:2;9285:3;9281:12;9274:19;;9079:220;;;:::o;9305:366::-;9447:3;9468:67;9532:2;9527:3;9468:67;:::i;:::-;9461:74;;9544:93;9633:3;9544:93;:::i;:::-;9662:2;9657:3;9653:12;9646:19;;9451:220;;;:::o;9677:366::-;9819:3;9840:67;9904:2;9899:3;9840:67;:::i;:::-;9833:74;;9916:93;10005:3;9916:93;:::i;:::-;10034:2;10029:3;10025:12;10018:19;;9823:220;;;:::o;10049:366::-;10191:3;10212:67;10276:2;10271:3;10212:67;:::i;:::-;10205:74;;10288:93;10377:3;10288:93;:::i;:::-;10406:2;10401:3;10397:12;10390:19;;10195:220;;;:::o;10421:366::-;10563:3;10584:67;10648:2;10643:3;10584:67;:::i;:::-;10577:74;;10660:93;10749:3;10660:93;:::i;:::-;10778:2;10773:3;10769:12;10762:19;;10567:220;;;:::o;10793:366::-;10935:3;10956:67;11020:2;11015:3;10956:67;:::i;:::-;10949:74;;11032:93;11121:3;11032:93;:::i;:::-;11150:2;11145:3;11141:12;11134:19;;10939:220;;;:::o;11165:366::-;11307:3;11328:67;11392:2;11387:3;11328:67;:::i;:::-;11321:74;;11404:93;11493:3;11404:93;:::i;:::-;11522:2;11517:3;11513:12;11506:19;;11311:220;;;:::o;11537:366::-;11679:3;11700:67;11764:2;11759:3;11700:67;:::i;:::-;11693:74;;11776:93;11865:3;11776:93;:::i;:::-;11894:2;11889:3;11885:12;11878:19;;11683:220;;;:::o;11909:366::-;12051:3;12072:67;12136:2;12131:3;12072:67;:::i;:::-;12065:74;;12148:93;12237:3;12148:93;:::i;:::-;12266:2;12261:3;12257:12;12250:19;;12055:220;;;:::o;12281:366::-;12423:3;12444:67;12508:2;12503:3;12444:67;:::i;:::-;12437:74;;12520:93;12609:3;12520:93;:::i;:::-;12638:2;12633:3;12629:12;12622:19;;12427:220;;;:::o;12653:366::-;12795:3;12816:67;12880:2;12875:3;12816:67;:::i;:::-;12809:74;;12892:93;12981:3;12892:93;:::i;:::-;13010:2;13005:3;13001:12;12994:19;;12799:220;;;:::o;13025:366::-;13167:3;13188:67;13252:2;13247:3;13188:67;:::i;:::-;13181:74;;13264:93;13353:3;13264:93;:::i;:::-;13382:2;13377:3;13373:12;13366:19;;13171:220;;;:::o;13397:366::-;13539:3;13560:67;13624:2;13619:3;13560:67;:::i;:::-;13553:74;;13636:93;13725:3;13636:93;:::i;:::-;13754:2;13749:3;13745:12;13738:19;;13543:220;;;:::o;13769:366::-;13911:3;13932:67;13996:2;13991:3;13932:67;:::i;:::-;13925:74;;14008:93;14097:3;14008:93;:::i;:::-;14126:2;14121:3;14117:12;14110:19;;13915:220;;;:::o;14141:398::-;14300:3;14321:83;14402:1;14397:3;14321:83;:::i;:::-;14314:90;;14413:93;14502:3;14413:93;:::i;:::-;14531:1;14526:3;14522:11;14515:18;;14304:235;;;:::o;14545:366::-;14687:3;14708:67;14772:2;14767:3;14708:67;:::i;:::-;14701:74;;14784:93;14873:3;14784:93;:::i;:::-;14902:2;14897:3;14893:12;14886:19;;14691:220;;;:::o;14917:366::-;15059:3;15080:67;15144:2;15139:3;15080:67;:::i;:::-;15073:74;;15156:93;15245:3;15156:93;:::i;:::-;15274:2;15269:3;15265:12;15258:19;;15063:220;;;:::o;15289:366::-;15431:3;15452:67;15516:2;15511:3;15452:67;:::i;:::-;15445:74;;15528:93;15617:3;15528:93;:::i;:::-;15646:2;15641:3;15637:12;15630:19;;15435:220;;;:::o;15661:366::-;15803:3;15824:67;15888:2;15883:3;15824:67;:::i;:::-;15817:74;;15900:93;15989:3;15900:93;:::i;:::-;16018:2;16013:3;16009:12;16002:19;;15807:220;;;:::o;16033:118::-;16120:24;16138:5;16120:24;:::i;:::-;16115:3;16108:37;16098:53;;:::o;16157:112::-;16240:22;16256:5;16240:22;:::i;:::-;16235:3;16228:35;16218:51;;:::o;16275:379::-;16459:3;16481:147;16624:3;16481:147;:::i;:::-;16474:154;;16645:3;16638:10;;16463:191;;;:::o;16660:222::-;16753:4;16791:2;16780:9;16776:18;16768:26;;16804:71;16872:1;16861:9;16857:17;16848:6;16804:71;:::i;:::-;16758:124;;;;:::o;16888:807::-;17137:4;17175:3;17164:9;17160:19;17152:27;;17189:71;17257:1;17246:9;17242:17;17233:6;17189:71;:::i;:::-;17270:72;17338:2;17327:9;17323:18;17314:6;17270:72;:::i;:::-;17352:80;17428:2;17417:9;17413:18;17404:6;17352:80;:::i;:::-;17442;17518:2;17507:9;17503:18;17494:6;17442:80;:::i;:::-;17532:73;17600:3;17589:9;17585:19;17576:6;17532:73;:::i;:::-;17615;17683:3;17672:9;17668:19;17659:6;17615:73;:::i;:::-;17142:553;;;;;;;;;:::o;17701:210::-;17788:4;17826:2;17815:9;17811:18;17803:26;;17839:65;17901:1;17890:9;17886:17;17877:6;17839:65;:::i;:::-;17793:118;;;;:::o;17917:272::-;18035:4;18073:2;18062:9;18058:18;18050:26;;18086:96;18179:1;18168:9;18164:17;18155:6;18086:96;:::i;:::-;18040:149;;;;:::o;18195:313::-;18308:4;18346:2;18335:9;18331:18;18323:26;;18395:9;18389:4;18385:20;18381:1;18370:9;18366:17;18359:47;18423:78;18496:4;18487:6;18423:78;:::i;:::-;18415:86;;18313:195;;;;:::o;18514:419::-;18680:4;18718:2;18707:9;18703:18;18695:26;;18767:9;18761:4;18757:20;18753:1;18742:9;18738:17;18731:47;18795:131;18921:4;18795:131;:::i;:::-;18787:139;;18685:248;;;:::o;18939:419::-;19105:4;19143:2;19132:9;19128:18;19120:26;;19192:9;19186:4;19182:20;19178:1;19167:9;19163:17;19156:47;19220:131;19346:4;19220:131;:::i;:::-;19212:139;;19110:248;;;:::o;19364:419::-;19530:4;19568:2;19557:9;19553:18;19545:26;;19617:9;19611:4;19607:20;19603:1;19592:9;19588:17;19581:47;19645:131;19771:4;19645:131;:::i;:::-;19637:139;;19535:248;;;:::o;19789:419::-;19955:4;19993:2;19982:9;19978:18;19970:26;;20042:9;20036:4;20032:20;20028:1;20017:9;20013:17;20006:47;20070:131;20196:4;20070:131;:::i;:::-;20062:139;;19960:248;;;:::o;20214:419::-;20380:4;20418:2;20407:9;20403:18;20395:26;;20467:9;20461:4;20457:20;20453:1;20442:9;20438:17;20431:47;20495:131;20621:4;20495:131;:::i;:::-;20487:139;;20385:248;;;:::o;20639:419::-;20805:4;20843:2;20832:9;20828:18;20820:26;;20892:9;20886:4;20882:20;20878:1;20867:9;20863:17;20856:47;20920:131;21046:4;20920:131;:::i;:::-;20912:139;;20810:248;;;:::o;21064:419::-;21230:4;21268:2;21257:9;21253:18;21245:26;;21317:9;21311:4;21307:20;21303:1;21292:9;21288:17;21281:47;21345:131;21471:4;21345:131;:::i;:::-;21337:139;;21235:248;;;:::o;21489:419::-;21655:4;21693:2;21682:9;21678:18;21670:26;;21742:9;21736:4;21732:20;21728:1;21717:9;21713:17;21706:47;21770:131;21896:4;21770:131;:::i;:::-;21762:139;;21660:248;;;:::o;21914:419::-;22080:4;22118:2;22107:9;22103:18;22095:26;;22167:9;22161:4;22157:20;22153:1;22142:9;22138:17;22131:47;22195:131;22321:4;22195:131;:::i;:::-;22187:139;;22085:248;;;:::o;22339:419::-;22505:4;22543:2;22532:9;22528:18;22520:26;;22592:9;22586:4;22582:20;22578:1;22567:9;22563:17;22556:47;22620:131;22746:4;22620:131;:::i;:::-;22612:139;;22510:248;;;:::o;22764:419::-;22930:4;22968:2;22957:9;22953:18;22945:26;;23017:9;23011:4;23007:20;23003:1;22992:9;22988:17;22981:47;23045:131;23171:4;23045:131;:::i;:::-;23037:139;;22935:248;;;:::o;23189:419::-;23355:4;23393:2;23382:9;23378:18;23370:26;;23442:9;23436:4;23432:20;23428:1;23417:9;23413:17;23406:47;23470:131;23596:4;23470:131;:::i;:::-;23462:139;;23360:248;;;:::o;23614:419::-;23780:4;23818:2;23807:9;23803:18;23795:26;;23867:9;23861:4;23857:20;23853:1;23842:9;23838:17;23831:47;23895:131;24021:4;23895:131;:::i;:::-;23887:139;;23785:248;;;:::o;24039:419::-;24205:4;24243:2;24232:9;24228:18;24220:26;;24292:9;24286:4;24282:20;24278:1;24267:9;24263:17;24256:47;24320:131;24446:4;24320:131;:::i;:::-;24312:139;;24210:248;;;:::o;24464:419::-;24630:4;24668:2;24657:9;24653:18;24645:26;;24717:9;24711:4;24707:20;24703:1;24692:9;24688:17;24681:47;24745:131;24871:4;24745:131;:::i;:::-;24737:139;;24635:248;;;:::o;24889:419::-;25055:4;25093:2;25082:9;25078:18;25070:26;;25142:9;25136:4;25132:20;25128:1;25117:9;25113:17;25106:47;25170:131;25296:4;25170:131;:::i;:::-;25162:139;;25060:248;;;:::o;25314:419::-;25480:4;25518:2;25507:9;25503:18;25495:26;;25567:9;25561:4;25557:20;25553:1;25542:9;25538:17;25531:47;25595:131;25721:4;25595:131;:::i;:::-;25587:139;;25485:248;;;:::o;25739:419::-;25905:4;25943:2;25932:9;25928:18;25920:26;;25992:9;25986:4;25982:20;25978:1;25967:9;25963:17;25956:47;26020:131;26146:4;26020:131;:::i;:::-;26012:139;;25910:248;;;:::o;26164:419::-;26330:4;26368:2;26357:9;26353:18;26345:26;;26417:9;26411:4;26407:20;26403:1;26392:9;26388:17;26381:47;26445:131;26571:4;26445:131;:::i;:::-;26437:139;;26335:248;;;:::o;26589:419::-;26755:4;26793:2;26782:9;26778:18;26770:26;;26842:9;26836:4;26832:20;26828:1;26817:9;26813:17;26806:47;26870:131;26996:4;26870:131;:::i;:::-;26862:139;;26760:248;;;:::o;27014:419::-;27180:4;27218:2;27207:9;27203:18;27195:26;;27267:9;27261:4;27257:20;27253:1;27242:9;27238:17;27231:47;27295:131;27421:4;27295:131;:::i;:::-;27287:139;;27185:248;;;:::o;27439:419::-;27605:4;27643:2;27632:9;27628:18;27620:26;;27692:9;27686:4;27682:20;27678:1;27667:9;27663:17;27656:47;27720:131;27846:4;27720:131;:::i;:::-;27712:139;;27610:248;;;:::o;27864:419::-;28030:4;28068:2;28057:9;28053:18;28045:26;;28117:9;28111:4;28107:20;28103:1;28092:9;28088:17;28081:47;28145:131;28271:4;28145:131;:::i;:::-;28137:139;;28035:248;;;:::o;28289:222::-;28382:4;28420:2;28409:9;28405:18;28397:26;;28433:71;28501:1;28490:9;28486:17;28477:6;28433:71;:::i;:::-;28387:124;;;;:::o;28517:831::-;28780:4;28818:3;28807:9;28803:19;28795:27;;28832:71;28900:1;28889:9;28885:17;28876:6;28832:71;:::i;:::-;28913:80;28989:2;28978:9;28974:18;28965:6;28913:80;:::i;:::-;29040:9;29034:4;29030:20;29025:2;29014:9;29010:18;29003:48;29068:108;29171:4;29162:6;29068:108;:::i;:::-;29060:116;;29186:72;29254:2;29243:9;29239:18;29230:6;29186:72;:::i;:::-;29268:73;29336:3;29325:9;29321:19;29312:6;29268:73;:::i;:::-;28785:563;;;;;;;;:::o;29354:442::-;29503:4;29541:2;29530:9;29526:18;29518:26;;29554:71;29622:1;29611:9;29607:17;29598:6;29554:71;:::i;:::-;29635:72;29703:2;29692:9;29688:18;29679:6;29635:72;:::i;:::-;29717;29785:2;29774:9;29770:18;29761:6;29717:72;:::i;:::-;29508:288;;;;;;:::o;29802:214::-;29891:4;29929:2;29918:9;29914:18;29906:26;;29942:67;30006:1;29995:9;29991:17;29982:6;29942:67;:::i;:::-;29896:120;;;;:::o;30022:132::-;30089:4;30112:3;30104:11;;30142:4;30137:3;30133:14;30125:22;;30094:60;;;:::o;30160:114::-;30227:6;30261:5;30255:12;30245:22;;30234:40;;;:::o;30280:99::-;30332:6;30366:5;30360:12;30350:22;;30339:40;;;:::o;30385:113::-;30455:4;30487;30482:3;30478:14;30470:22;;30460:38;;;:::o;30504:184::-;30603:11;30637:6;30632:3;30625:19;30677:4;30672:3;30668:14;30653:29;;30615:73;;;;:::o;30694:147::-;30795:11;30832:3;30817:18;;30807:34;;;;:::o;30847:169::-;30931:11;30965:6;30960:3;30953:19;31005:4;31000:3;30996:14;30981:29;;30943:73;;;;:::o;31022:305::-;31062:3;31081:20;31099:1;31081:20;:::i;:::-;31076:25;;31115:20;31133:1;31115:20;:::i;:::-;31110:25;;31269:1;31201:66;31197:74;31194:1;31191:81;31188:2;;;31275:18;;:::i;:::-;31188:2;31319:1;31316;31312:9;31305:16;;31066:261;;;;:::o;31333:185::-;31373:1;31390:20;31408:1;31390:20;:::i;:::-;31385:25;;31424:20;31442:1;31424:20;:::i;:::-;31419:25;;31463:1;31453:2;;31468:18;;:::i;:::-;31453:2;31510:1;31507;31503:9;31498:14;;31375:143;;;;:::o;31524:348::-;31564:7;31587:20;31605:1;31587:20;:::i;:::-;31582:25;;31621:20;31639:1;31621:20;:::i;:::-;31616:25;;31809:1;31741:66;31737:74;31734:1;31731:81;31726:1;31719:9;31712:17;31708:105;31705:2;;;31816:18;;:::i;:::-;31705:2;31864:1;31861;31857:9;31846:20;;31572:300;;;;:::o;31878:191::-;31918:4;31938:20;31956:1;31938:20;:::i;:::-;31933:25;;31972:20;31990:1;31972:20;:::i;:::-;31967:25;;32011:1;32008;32005:8;32002:2;;;32016:18;;:::i;:::-;32002:2;32061:1;32058;32054:9;32046:17;;31923:146;;;;:::o;32075:96::-;32112:7;32141:24;32159:5;32141:24;:::i;:::-;32130:35;;32120:51;;;:::o;32177:90::-;32211:7;32254:5;32247:13;32240:21;32229:32;;32219:48;;;:::o;32273:126::-;32310:7;32350:42;32343:5;32339:54;32328:65;;32318:81;;;:::o;32405:77::-;32442:7;32471:5;32460:16;;32450:32;;;:::o;32488:86::-;32523:7;32563:4;32556:5;32552:16;32541:27;;32531:43;;;:::o;32580:176::-;32655:9;32688:62;32744:5;32688:62;:::i;:::-;32675:75;;32665:91;;;:::o;32762:138::-;32837:9;32870:24;32888:5;32870:24;:::i;:::-;32857:37;;32847:53;;;:::o;32906:121::-;32964:9;32997:24;33015:5;32997:24;:::i;:::-;32984:37;;32974:53;;;:::o;33033:307::-;33101:1;33111:113;33125:6;33122:1;33119:13;33111:113;;;33210:1;33205:3;33201:11;33195:18;33191:1;33186:3;33182:11;33175:39;33147:2;33144:1;33140:10;33135:15;;33111:113;;;33242:6;33239:1;33236:13;33233:2;;;33322:1;33313:6;33308:3;33304:16;33297:27;33233:2;33082:258;;;;:::o;33346:320::-;33390:6;33427:1;33421:4;33417:12;33407:22;;33474:1;33468:4;33464:12;33495:18;33485:2;;33551:4;33543:6;33539:17;33529:27;;33485:2;33613;33605:6;33602:14;33582:18;33579:38;33576:2;;;33632:18;;:::i;:::-;33576:2;33397:269;;;;:::o;33672:180::-;33720:77;33717:1;33710:88;33817:4;33814:1;33807:15;33841:4;33838:1;33831:15;33858:180;33906:77;33903:1;33896:88;34003:4;34000:1;33993:15;34027:4;34024:1;34017:15;34044:180;34092:77;34089:1;34082:88;34189:4;34186:1;34179:15;34213:4;34210:1;34203:15;34230:102;34271:6;34322:2;34318:7;34313:2;34306:5;34302:14;34298:28;34288:38;;34278:54;;;:::o;34338:222::-;34478:34;34474:1;34466:6;34462:14;34455:58;34547:5;34542:2;34534:6;34530:15;34523:30;34444:116;:::o;34566:172::-;34706:24;34702:1;34694:6;34690:14;34683:48;34672:66;:::o;34744:225::-;34884:34;34880:1;34872:6;34868:14;34861:58;34953:8;34948:2;34940:6;34936:15;34929:33;34850:119;:::o;34975:221::-;35115:34;35111:1;35103:6;35099:14;35092:58;35184:4;35179:2;35171:6;35167:15;35160:29;35081:115;:::o;35202:238::-;35342:34;35338:1;35330:6;35326:14;35319:58;35411:21;35406:2;35398:6;35394:15;35387:46;35308:132;:::o;35446:223::-;35586:34;35582:1;35574:6;35570:14;35563:58;35655:6;35650:2;35642:6;35638:15;35631:31;35552:117;:::o;35675:244::-;35815:34;35811:1;35803:6;35799:14;35792:58;35884:27;35879:2;35871:6;35867:15;35860:52;35781:138;:::o;35925:225::-;36065:34;36061:1;36053:6;36049:14;36042:58;36134:8;36129:2;36121:6;36117:15;36110:33;36031:119;:::o;36156:241::-;36296:34;36292:1;36284:6;36280:14;36273:58;36365:24;36360:2;36352:6;36348:15;36341:49;36262:135;:::o;36403:235::-;36543:34;36539:1;36531:6;36527:14;36520:58;36612:18;36607:2;36599:6;36595:15;36588:43;36509:129;:::o;36644:240::-;36784:34;36780:1;36772:6;36768:14;36761:58;36853:23;36848:2;36840:6;36836:15;36829:48;36750:134;:::o;36890:239::-;37030:34;37026:1;37018:6;37014:14;37007:58;37099:22;37094:2;37086:6;37082:15;37075:47;36996:133;:::o;37135:240::-;37275:34;37271:1;37263:6;37259:14;37252:58;37344:23;37339:2;37331:6;37327:15;37320:48;37241:134;:::o;37381:297::-;37521:34;37517:1;37509:6;37505:14;37498:58;37590:34;37585:2;37577:6;37573:15;37566:59;37659:11;37654:2;37646:6;37642:15;37635:36;37487:191;:::o;37684:227::-;37824:34;37820:1;37812:6;37808:14;37801:58;37893:10;37888:2;37880:6;37876:15;37869:35;37790:121;:::o;37917:182::-;38057:34;38053:1;38045:6;38041:14;38034:58;38023:76;:::o;38105:229::-;38245:34;38241:1;38233:6;38229:14;38222:58;38314:12;38309:2;38301:6;38297:15;38290:37;38211:123;:::o;38340:224::-;38480:34;38476:1;38468:6;38464:14;38457:58;38549:7;38544:2;38536:6;38532:15;38525:32;38446:118;:::o;38570:182::-;38710:34;38706:1;38698:6;38694:14;38687:58;38676:76;:::o;38758:114::-;38864:8;:::o;38878:223::-;39018:34;39014:1;39006:6;39002:14;38995:58;39087:6;39082:2;39074:6;39070:15;39063:31;38984:117;:::o;39107:169::-;39247:21;39243:1;39235:6;39231:14;39224:45;39213:63;:::o;39282:224::-;39422:34;39418:1;39410:6;39406:14;39399:58;39491:7;39486:2;39478:6;39474:15;39467:32;39388:118;:::o;39512:234::-;39652:34;39648:1;39640:6;39636:14;39629:58;39721:17;39716:2;39708:6;39704:15;39697:42;39618:128;:::o;39752:122::-;39825:24;39843:5;39825:24;:::i;:::-;39818:5;39815:35;39805:2;;39864:1;39861;39854:12;39805:2;39795:79;:::o;39880:116::-;39950:21;39965:5;39950:21;:::i;:::-;39943:5;39940:32;39930:2;;39986:1;39983;39976:12;39930:2;39920:76;:::o;40002:122::-;40075:24;40093:5;40075:24;:::i;:::-;40068:5;40065:35;40055:2;;40114:1;40111;40104:12;40055:2;40045:79;:::o

Swarm Source

ipfs://3d4ec04d5a0fe75007bd5fdaf27d38254eca6b769aa0eb7420268010bf9cd7aa
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.