ETH Price: $3,427.91 (-1.56%)
Gas: 6 Gwei

Token

Arena Token (ARENA)
 

Overview

Max Total Supply

10,000,000 ARENA

Holders

156

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000113638 ARENA

Value
$0.00
0x03f93e1d78a5ae4346bfa38bf9d0d399823e0642
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:
ARENA

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-03
*/

/**
 * SPDX-License-Identifier: MIT
 * https://arena.gg
 * https://t.me/ArenaGG_Portal
 * https://twitter.com/ArenaGG
 */
pragma solidity >=0.8.19;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

    IUniswapV2Router02 public immutable uniV2Routr;
    address public immutable mainUniV2Pair;

    bool private swappingBack;

    address public lpTokenReceiver;
    address public profitWallet;

    uint256 public maxTokensForSwapback;
    uint256 public minTokensForSwapback;

    uint256 public maxTxLimit;
    uint256 public maxWalletLimit;

    bool public limitsEnabled = true;
    bool public swapbackEnabled = false;

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

    uint256 public buyTotalFees;
    uint256 public buyProfitFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellProfitFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForProfit;
    uint256 public tokensForLiquidity;

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

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

    // 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 extraAMMPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

    constructor() ERC20("Arena Token", "ARENA") {
        IUniswapV2Router02 _uniV2Routr = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromAntiWhale(address(_uniV2Routr), true);
        uniV2Routr = _uniV2Routr;

        mainUniV2Pair = IUniswapV2Factory(_uniV2Routr.factory())
            .createPair(address(this), _uniV2Routr.WETH());
        excludeFromAntiWhale(address(mainUniV2Pair), true);
        _setAutomatedMarketMakerPair(address(mainUniV2Pair), true);

        uint256 _buyProfitFee = 25;
        uint256 _buyLiquidityFee = 25;

        uint256 _sellProfitFee = 25;
        uint256 _sellLiquidityFee = 25;

        uint256 totalSupply = 10000000 * 1e18;

        maxTxLimit = (totalSupply * 1) / 100; // 1% of total supply
        maxWalletLimit = (totalSupply * 1) / 100; // 1% of total supply

        minTokensForSwapback = (totalSupply * 2) / 1000; // 0.2% swapback trigger
        maxTokensForSwapback = (totalSupply * 6) / 1000; // 0.6% max swapback

        buyProfitFee = _buyProfitFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyProfitFee + buyLiquidityFee;

        sellProfitFee = _sellProfitFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellProfitFee + sellLiquidityFee;

        profitWallet = address(0x4cB31EF78a46B9292f92072F7FB3508CfD33B6e8); // Input Profit Wallet Address
        lpTokenReceiver = msg.sender;

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

        excludeFromAntiWhale(owner(), true);
        excludeFromAntiWhale(address(this), true);
        excludeFromAntiWhale(address(0xdead), true);
        excludeFromAntiWhale(profitWallet, 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 {}

    /// @dev Launches the token and enables tradin.
    function getInTheArena() external onlyOwner {
        require(!isTradingActive, "Trading has already been enabled");
        buyProfitFee = 100;
        buyLiquidityFee = 100;
        buyTotalFees = buyProfitFee + buyLiquidityFee;

        sellProfitFee = 150;
        sellLiquidityFee = 150;
        sellTotalFees = sellProfitFee + sellLiquidityFee;

        isTradingActive = true;
        swapbackEnabled = true;
    }

    /// @dev Removes the max wallet and max transaction limits and the early transfer delay
    function removeEarlyLimits() external onlyOwner returns (bool) {
        limitsEnabled = false;
        return true;
    }

    /// @dev Disables the Same wallet block transfer delay
    function disableEarlyTransferDelay() external onlyOwner returns (bool) {
        earlyTransferDelayEnabled = false;
        return true;
    }

    /// @dev Changes the minimum balance of tokens the contract must have before swappingBack tokens for ETH. Base 100000, so 0.5% = 500.
    function updateSwapbackParams(uint256 newMin, uint256 newMax)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newMin >= 1,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newMin <= 500,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        require(
            newMin <= newMax,
            "The higher boundary should be higher or equal to the lower one"
        );
        minTokensForSwapback = newMin * totalSupply()/ 100000;
        maxTokensForSwapback = newMax * totalSupply()/ 100000;
        return true;
    }

    /// @dev Changes the maximum amount of tokens that can be bought or sold in a single transaction
    /// @param newNum Base 1000, so 1% = 10
    function updateMaxTxLimit(uint256 newNum) external onlyOwner {
        require(
            newNum >= 1,
            "Cannot set maxTxLimit lower than 0.1%"
        );
        maxTxLimit = newNum * totalSupply()/ 1000;
    }

    /// @dev Changes the maximum amount of tokens a wallet can hold
    /// @param newNum Base 1000, so 1% = 10
    function updateMaxWalletLimit(uint256 newNum) external onlyOwner {
        require(
            newNum >= 5,
            "Cannot set maxWalletLimit lower than 0.5%"
        );
        maxWalletLimit = newNum * totalSupply()/1000;
    }


    /// @dev Sets if a wallet is excluded from the max wallet and tx limits
    /// @param updAds The wallet to update
    /// @param isEx If the wallet is excluded or not
    function excludeFromAntiWhale(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedFromAntiWhale[updAds] = isEx;
    }

    /// @dev Sets if the contract can sell tokens
    /// @param enabled set to false to disable selling
    function updateSwapbackEnabled(bool enabled) external onlyOwner {
        swapbackEnabled = enabled;
    }
    
    /// @dev Sets the fees for buys
    /// @param _profitFee The fee for the profit wallet
    /// @param _liquidityFee The fee for the liquidity pool
    function updateBuyFees(
        uint256 _profitFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyProfitFee = _profitFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyProfitFee + buyLiquidityFee;
        require(buyTotalFees <= 50, "Must keep fees at 5% or less");
    }

    /// @dev Sets the fees for sells
    /// @param _profitFee The fee for the profit wallet
    /// @param _liquidityFee The fee for the liquidity pool
    function updateSellFees(
        uint256 _profitFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellProfitFee = _profitFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellProfitFee + sellLiquidityFee;
        require(sellTotalFees <= 50, "Must keep fees at 5% or less");
    }

    /// @dev Sets if a wallet is excluded from fees
    /// @param account The wallet to update
    /// @param excluded If the wallet is excluded or not
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    /// @dev Sets an address as a new liquidity pair. You probably dont want to do this.
    /// @param pair The new pair
    function setAsExtraAMMPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != mainUniV2Pair,
            "The pair cannot be removed from extraAMMPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateProfitWallet(address newProfitWallet)
        external
        onlyOwner
    {
        emit profitWalletUpdated(newProfitWallet, profitWallet);
        profitWallet = newProfitWallet;
    }

    function updateLPTokenWallet(address newLPWallet)
        external
        onlyOwner
    {
        lpTokenReceiver = newLPWallet;
    }

    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 (limitsEnabled) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swappingBack
            ) {
                if (!isTradingActive) {
                    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 (earlyTransferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniV2Routr) &&
                        to != address(mainUniV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= minTokensForSwapback;

        if (
            canSwap &&
            swapbackEnabled &&
            !swappingBack &&
            !extraAMMPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swappingBack = true;

            swapBack();

            swappingBack = false;
        }

        bool takeFee = !swappingBack;

        // 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 (extraAMMPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(1000);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForProfit += (fees * sellProfitFee) / sellTotalFees;
            }
            // on buy
            else if (extraAMMPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(1000);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForProfit += (fees * buyProfitFee) / 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] = uniV2Routr.WETH();

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

        // make the swap
        uniV2Routr.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(uniV2Routr), tokenAmount);

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

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

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

        if (contractBalance > maxTokensForSwapback) {
            contractBalance = maxTokensForSwapback;
        }

        // 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 ethForProfit = ethBalance.mul(tokensForProfit).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForProfit;

        tokensForLiquidity = 0;
        tokensForProfit = 0;


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

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

    function startGame() public {}
    function endGame() public {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"profitWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromAntiWhale","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":"account","type":"address"}],"name":"balanceOf","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":"buyProfitFee","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":"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":"disableEarlyTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyTransferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromAntiWhale","outputs":[],"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":"","type":"address"}],"name":"extraAMMPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInTheArena","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":"isTradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTokenReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainUniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokensForSwapback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokensForSwapback","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":"profitWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeEarlyLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellProfitFee","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":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAsExtraAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapbackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2Routr","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_profitFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLPWallet","type":"address"}],"name":"updateLPTokenWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newProfitWallet","type":"address"}],"name":"updateProfitWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_profitFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapbackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMin","type":"uint256"},{"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"updateSwapbackParams","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600b81526020017f4172656e6120546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4152454e410000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000dbf565b5080600490816200010d919062000dbf565b50505062000130620001246200060660201b60201c565b6200060e60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c816001620006d460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062000f10565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000f10565b6040518363ffffffff1660e01b8152600401620002af92919062000f53565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000f10565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033d60a0516001620006d460201b60201c565b6200035260a0516001620007be60201b60201c565b60006019905060006019905060006019905060006019905060006a084595161401484a000000905060646001826200038b919062000faf565b62000397919062001029565b600a819055506064600182620003ae919062000faf565b620003ba919062001029565b600b819055506103e8600282620003d2919062000faf565b620003de919062001029565b6009819055506103e8600682620003f6919062000faf565b62000402919062001029565b600881905550846010819055508360118190555060115460105462000428919062001061565b600f8190555082601381905550816014819055506014546013546200044e919062001061565b601281905550734cb31ef78a46b9292f92072f7fb3508cfd33b6e8600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200050c620004fe6200085f60201b60201c565b60016200088960201b60201c565b6200051f3060016200088960201b60201c565b6200053461dead60016200088960201b60201c565b62000569600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200088960201b60201c565b6200058b6200057d6200085f60201b60201c565b6001620006d460201b60201c565b6200059e306001620006d460201b60201c565b620005b361dead6001620006d460201b60201c565b620005e8600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006d460201b60201c565b620005fa3382620009c360201b60201c565b505050505050620011f9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006e46200060660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200070a6200085f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200075a90620010fd565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008996200060660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008bf6200085f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000918576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090f90620010fd565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009b791906200113c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a2c90620011a9565b60405180910390fd5b62000a496000838362000b3b60201b60201c565b806002600082825462000a5d919062001061565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000ab4919062001061565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b1b9190620011dc565b60405180910390a362000b376000838362000b4060201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bc757607f821691505b60208210810362000bdd5762000bdc62000b7f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c08565b62000c53868362000c08565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ca062000c9a62000c948462000c6b565b62000c75565b62000c6b565b9050919050565b6000819050919050565b62000cbc8362000c7f565b62000cd462000ccb8262000ca7565b84845462000c15565b825550505050565b600090565b62000ceb62000cdc565b62000cf881848462000cb1565b505050565b5b8181101562000d205762000d1460008262000ce1565b60018101905062000cfe565b5050565b601f82111562000d6f5762000d398162000be3565b62000d448462000bf8565b8101602085101562000d54578190505b62000d6c62000d638562000bf8565b83018262000cfd565b50505b505050565b600082821c905092915050565b600062000d946000198460080262000d74565b1980831691505092915050565b600062000daf838362000d81565b9150826002028217905092915050565b62000dca8262000b45565b67ffffffffffffffff81111562000de65762000de562000b50565b5b62000df2825462000bae565b62000dff82828562000d24565b600060209050601f83116001811462000e37576000841562000e22578287015190505b62000e2e858262000da1565b86555062000e9e565b601f19841662000e478662000be3565b60005b8281101562000e715784890151825560018201915060208501945060208101905062000e4a565b8683101562000e91578489015162000e8d601f89168262000d81565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ed88262000eab565b9050919050565b62000eea8162000ecb565b811462000ef657600080fd5b50565b60008151905062000f0a8162000edf565b92915050565b60006020828403121562000f295762000f2862000ea6565b5b600062000f398482850162000ef9565b91505092915050565b62000f4d8162000ecb565b82525050565b600060408201905062000f6a600083018562000f42565b62000f79602083018462000f42565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fbc8262000c6b565b915062000fc98362000c6b565b925082820262000fd98162000c6b565b9150828204841483151762000ff35762000ff262000f80565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010368262000c6b565b9150620010438362000c6b565b92508262001056576200105562000ffa565b5b828204905092915050565b60006200106e8262000c6b565b91506200107b8362000c6b565b925082820190508082111562001096576200109562000f80565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010e56020836200109c565b9150620010f282620010ad565b602082019050919050565b600060208201905081810360008301526200111881620010d6565b9050919050565b60008115159050919050565b62001136816200111f565b82525050565b60006020820190506200115360008301846200112b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001191601f836200109c565b91506200119e8262001159565b602082019050919050565b60006020820190508181036000830152620011c48162001182565b9050919050565b620011d68162000c6b565b82525050565b6000602082019050620011f36000830184620011cb565b92915050565b60805160a051614f1a6200125760003960008181611057015281816112c401526127b40152600081816119190152818161275c015281816136f8015281816137d9015281816138000152818161389c01526138c30152614f1a6000f3fe60806040526004361061031e5760003560e01c80638036d590116101ab578063c2c327d1116100f7578063e0a2717411610095578063f2fde38b1161006f578063f2fde38b14610bb5578063f3f7338e14610bde578063f637434214610c09578063fdb6531f14610c3457610325565b8063e0a2717414610b36578063ea90fcc314610b61578063f11a24d314610b8a57610325565b8063ca6a14e1116100d1578063ca6a14e114610a8c578063d65ab5f214610ab7578063d85ba06314610ace578063dd62ed3e14610af957610325565b8063c2c327d114610a0d578063c53d4d5314610a36578063c77847b114610a6157610325565b8063a457c2d711610164578063a9059cbb1161013e578063a9059cbb14610955578063aaae545a14610992578063b34117ba146109bb578063c0246668146109e457610325565b8063a457c2d7146108d6578063a531721614610913578063a57afffa1461093e57610325565b80638036d590146107d657806389add02c146108015780638da5cb5b1461082c57806391d782ce1461085757806394516c7f1461088057806395d89b41146108ab57610325565b80634324deae1161026a57806366a88d96116102235780636cbc2ded116101fd5780636cbc2ded1461074057806370a0823114610757578063715018a61461079457806377c18352146107ab57610325565b806366a88d96146106c157806366ca9b83146106ec5780636a486a8e1461071557610325565b80634324deae1461059d57806349021b6e146105c65780634fbee193146105f15780635016c39f1461062e578063555b90751461066b57806359bdf1df1461069657610325565b80632301d775116102d75780632c505e90116102b15780632c505e90146104cd578063313ce5671461050a5780633582ad2314610535578063395093511461056057610325565b80632301d7751461043c57806323b872dd1461046757806327396701146104a457610325565b806302dbd8f81461032a57806306fdde0314610353578063095ea7b31461037e5780630ea0d3d2146103bb57806318160ddd146103e65780631a8145bb1461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b50610351600480360381019061034c91906139cd565b610c71565b005b34801561035f57600080fd5b50610368610d5b565b6040516103759190613a9d565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190613b1d565b610ded565b6040516103b29190613b78565b60405180910390f35b3480156103c757600080fd5b506103d0610e0b565b6040516103dd9190613b78565b60405180910390f35b3480156103f257600080fd5b506103fb610eab565b6040516104089190613ba2565b60405180910390f35b34801561041d57600080fd5b50610426610eb5565b6040516104339190613ba2565b60405180910390f35b34801561044857600080fd5b50610451610ebb565b60405161045e9190613bcc565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190613be7565b610ee1565b60405161049b9190613b78565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190613c66565b610fd9565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190613ca6565b6110f1565b6040516105019190613b78565b60405180910390f35b34801561051657600080fd5b5061051f611111565b60405161052c9190613cef565b60405180910390f35b34801561054157600080fd5b5061054a61111a565b6040516105579190613b78565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190613b1d565b61112d565b6040516105949190613b78565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190613d0a565b6111d9565b005b3480156105d257600080fd5b506105db6112c2565b6040516105e89190613bcc565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190613ca6565b6112e6565b6040516106259190613b78565b60405180910390f35b34801561063a57600080fd5b50610655600480360381019061065091906139cd565b61133c565b6040516106629190613b78565b60405180910390f35b34801561067757600080fd5b506106806114de565b60405161068d9190613ba2565b60405180910390f35b3480156106a257600080fd5b506106ab6114e4565b6040516106b89190613ba2565b60405180910390f35b3480156106cd57600080fd5b506106d66114ea565b6040516106e39190613ba2565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e91906139cd565b6114f0565b005b34801561072157600080fd5b5061072a6115da565b6040516107379190613ba2565b60405180910390f35b34801561074c57600080fd5b506107556115e0565b005b34801561076357600080fd5b5061077e60048036038101906107799190613ca6565b6115e2565b60405161078b9190613ba2565b60405180910390f35b3480156107a057600080fd5b506107a961162a565b005b3480156107b757600080fd5b506107c06116b2565b6040516107cd9190613ba2565b60405180910390f35b3480156107e257600080fd5b506107eb6116b8565b6040516107f89190613ba2565b60405180910390f35b34801561080d57600080fd5b506108166116be565b6040516108239190613b78565b60405180910390f35b34801561083857600080fd5b506108416116d1565b60405161084e9190613bcc565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190613d37565b6116fb565b005b34801561088c57600080fd5b50610895611794565b6040516108a29190613ba2565b60405180910390f35b3480156108b757600080fd5b506108c061179a565b6040516108cd9190613a9d565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190613b1d565b61182c565b60405161090a9190613b78565b60405180910390f35b34801561091f57600080fd5b50610928611917565b6040516109359190613dc3565b60405180910390f35b34801561094a57600080fd5b5061095361193b565b005b34801561096157600080fd5b5061097c60048036038101906109779190613b1d565b611a8b565b6040516109899190613b78565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b49190613ca6565b611aa9565b005b3480156109c757600080fd5b506109e260048036038101906109dd9190613c66565b611b69565b005b3480156109f057600080fd5b50610a0b6004803603810190610a069190613c66565b611c40565b005b348015610a1957600080fd5b50610a346004803603810190610a2f9190613d0a565b611d65565b005b348015610a4257600080fd5b50610a4b611e4e565b604051610a589190613b78565b60405180910390f35b348015610a6d57600080fd5b50610a76611e61565b604051610a839190613b78565b60405180910390f35b348015610a9857600080fd5b50610aa1611f01565b604051610aae9190613b78565b60405180910390f35b348015610ac357600080fd5b50610acc611f14565b005b348015610ada57600080fd5b50610ae3611f16565b604051610af09190613ba2565b60405180910390f35b348015610b0557600080fd5b50610b206004803603810190610b1b9190613dde565b611f1c565b604051610b2d9190613ba2565b60405180910390f35b348015610b4257600080fd5b50610b4b611fa3565b604051610b589190613ba2565b60405180910390f35b348015610b6d57600080fd5b50610b886004803603810190610b839190613ca6565b611fa9565b005b348015610b9657600080fd5b50610b9f6120e5565b604051610bac9190613ba2565b60405180910390f35b348015610bc157600080fd5b50610bdc6004803603810190610bd79190613ca6565b6120eb565b005b348015610bea57600080fd5b50610bf36121e2565b604051610c009190613bcc565b60405180910390f35b348015610c1557600080fd5b50610c1e612208565b604051610c2b9190613ba2565b60405180910390f35b348015610c4057600080fd5b50610c5b6004803603810190610c569190613ca6565b61220e565b604051610c689190613b78565b60405180910390f35b610c7961222e565b73ffffffffffffffffffffffffffffffffffffffff16610c976116d1565b73ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490613e6a565b60405180910390fd5b8160138190555080601481905550601454601354610d0b9190613eb9565b60128190555060326012541115610d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4e90613f39565b60405180910390fd5b5050565b606060038054610d6a90613f88565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9690613f88565b8015610de35780601f10610db857610100808354040283529160200191610de3565b820191906000526020600020905b815481529060010190602001808311610dc657829003601f168201915b5050505050905090565b6000610e01610dfa61222e565b8484612236565b6001905092915050565b6000610e1561222e565b73ffffffffffffffffffffffffffffffffffffffff16610e336116d1565b73ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090613e6a565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b6000600254905090565b60165481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610eee8484846123ff565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f3961222e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb09061402b565b60405180910390fd5b610fcd85610fc561222e565b858403612236565b60019150509392505050565b610fe161222e565b73ffffffffffffffffffffffffffffffffffffffff16610fff6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c90613e6a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906140bd565b60405180910390fd5b6110ed8282613032565b5050565b60186020528060005260406000206000915054906101000a900460ff1681565b60006012905090565b600c60009054906101000a900460ff1681565b60006111cf61113a61222e565b84846001600061114861222e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111ca9190613eb9565b612236565b6001905092915050565b6111e161222e565b73ffffffffffffffffffffffffffffffffffffffff166111ff6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90613e6a565b60405180910390fd5b6005811015611299576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112909061414f565b60405180910390fd5b6103e86112a4610eab565b826112af919061416f565b6112b991906141e0565b600b8190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061134661222e565b73ffffffffffffffffffffffffffffffffffffffff166113646116d1565b73ffffffffffffffffffffffffffffffffffffffff16146113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b190613e6a565b60405180910390fd5b60018310156113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590614283565b60405180910390fd5b6101f4831115611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90614315565b60405180910390fd5b81831115611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906143a7565b60405180910390fd5b620186a0611492610eab565b8461149d919061416f565b6114a791906141e0565b600981905550620186a06114b9610eab565b836114c4919061416f565b6114ce91906141e0565b6008819055506001905092915050565b60155481565b60095481565b600b5481565b6114f861222e565b73ffffffffffffffffffffffffffffffffffffffff166115166116d1565b73ffffffffffffffffffffffffffffffffffffffff161461156c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156390613e6a565b60405180910390fd5b816010819055508060118190555060115460105461158a9190613eb9565b600f819055506032600f5411156115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd90613f39565b60405180910390fd5b5050565b60125481565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61163261222e565b73ffffffffffffffffffffffffffffffffffffffff166116506116d1565b73ffffffffffffffffffffffffffffffffffffffff16146116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d90613e6a565b60405180910390fd5b6116b060006130d3565b565b60085481565b600a5481565b600c60019054906101000a900460ff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61170361222e565b73ffffffffffffffffffffffffffffffffffffffff166117216116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90613e6a565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b60135481565b6060600480546117a990613f88565b80601f01602080910402602001604051908101604052809291908181526020018280546117d590613f88565b80156118225780601f106117f757610100808354040283529160200191611822565b820191906000526020600020905b81548152906001019060200180831161180557829003601f168201915b5050505050905090565b6000806001600061183b61222e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90614439565b60405180910390fd5b61190c61190361222e565b85858403612236565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61194361222e565b73ffffffffffffffffffffffffffffffffffffffff166119616116d1565b73ffffffffffffffffffffffffffffffffffffffff16146119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae90613e6a565b60405180910390fd5b600c60029054906101000a900460ff1615611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe906144a5565b60405180910390fd5b60646010819055506064601181905550601154601054611a279190613eb9565b600f8190555060966013819055506096601481905550601454601354611a4d9190613eb9565b6012819055506001600c60026101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b6000611a9f611a9861222e565b84846123ff565b6001905092915050565b611ab161222e565b73ffffffffffffffffffffffffffffffffffffffff16611acf6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1c90613e6a565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b7161222e565b73ffffffffffffffffffffffffffffffffffffffff16611b8f6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc90613e6a565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c4861222e565b73ffffffffffffffffffffffffffffffffffffffff16611c666116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390613e6a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d599190613b78565b60405180910390a25050565b611d6d61222e565b73ffffffffffffffffffffffffffffffffffffffff16611d8b6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd890613e6a565b60405180910390fd5b6001811015611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c90614537565b60405180910390fd5b6103e8611e30610eab565b82611e3b919061416f565b611e4591906141e0565b600a8190555050565b600c60029054906101000a900460ff1681565b6000611e6b61222e565b73ffffffffffffffffffffffffffffffffffffffff16611e896116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed690613e6a565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b600e60009054906101000a900460ff1681565b565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b611fb161222e565b73ffffffffffffffffffffffffffffffffffffffff16611fcf6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c90613e6a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3b4d0fc34e8ba589fdc51f0660be78887c301d81544872990a389d4713f2e1be60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b6120f361222e565b73ffffffffffffffffffffffffffffffffffffffff166121116116d1565b73ffffffffffffffffffffffffffffffffffffffff1614612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215e90613e6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd906145c9565b60405180910390fd5b6121df816130d3565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60196020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c9061465b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b906146ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123f29190613ba2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361246e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124659061477f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490614811565b60405180910390fd5b600081036124f6576124f183836000613199565b61302d565b600c60009054906101000a900460ff1615612bb9576125136116d1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561258157506125516116d1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125ba5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125f4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561260d5750600560149054906101000a900460ff16155b15612bb857600c60029054906101000a900460ff1661270757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126c75750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd9061487d565b60405180910390fd5b5b600e60009054906101000a900460ff16156128cf576127246116d1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127ab57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561280357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128ce5743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090614935565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129725750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a1957600a548111156129bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b3906149c7565b60405180910390fd5b600b546129c8836115e2565b826129d39190613eb9565b1115612a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0b90614a33565b60405180910390fd5b612bb7565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612abc5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0b57600a54811115612b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afd90614ac5565b60405180910390fd5b612bb6565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bb557600b54612b68836115e2565b82612b739190613eb9565b1115612bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bab90614a33565b60405180910390fd5b5b5b5b5b5b6000612bc4306115e2565b905060006009548210159050808015612be95750600c60019054906101000a900460ff165b8015612c025750600560149054906101000a900460ff16155b8015612c585750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cae5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d045750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d48576001600560146101000a81548160ff021916908315150217905550612d2c613418565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dfe5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0857600090505b6000811561301d57601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6b57506000601254115b15612f0657612e996103e8612e8b6012548861360d90919063ffffffff16565b61362390919063ffffffff16565b905060125460145482612eac919061416f565b612eb691906141e0565b60166000828254612ec79190613eb9565b9250508190555060125460135482612edf919061416f565b612ee991906141e0565b60156000828254612efa9190613eb9565b92505081905550612ff9565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f6157506000600f54115b15612ff857612f8f6103e8612f81600f548861360d90919063ffffffff16565b61362390919063ffffffff16565b9050600f5460115482612fa2919061416f565b612fac91906141e0565b60166000828254612fbd9190613eb9565b92505081905550600f5460105482612fd5919061416f565b612fdf91906141e0565b60156000828254612ff09190613eb9565b925050819055505b5b600081111561300e5761300d873083613199565b5b808561301a9190614ae5565b94505b613028878787613199565b505050505b505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ff9061477f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326e90614811565b60405180910390fd5b613282838383613639565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ff90614b8b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461339b9190613eb9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133ff9190613ba2565b60405180910390a361341284848461363e565b50505050565b6000613423306115e2565b905060006015546016546134379190613eb9565b90506000808314806134495750600082145b156134565750505061360b565b6008548311156134665760085492505b600060028360165486613479919061416f565b61348391906141e0565b61348d91906141e0565b905060006134a4828661364390919063ffffffff16565b905060004790506134b482613659565b60006134c9824761364390919063ffffffff16565b905060006134f4876134e66015548561360d90919063ffffffff16565b61362390919063ffffffff16565b9050600081836135049190614ae5565b9050600060168190555060006015819055506000861180156135265750600081115b15613573576135358682613896565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161356a93929190614bab565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516135b990614c13565b60006040518083038185875af1925050503d80600081146135f6576040519150601f19603f3d011682016040523d82523d6000602084013e6135fb565b606091505b5050809750505050505050505050505b565b6000818361361b919061416f565b905092915050565b6000818361363191906141e0565b905092915050565b505050565b505050565b600081836136519190614ae5565b905092915050565b6000600267ffffffffffffffff81111561367657613675614c28565b5b6040519080825280602002602001820160405280156136a45781602001602082028036833780820191505090505b50905030816000815181106136bc576136bb614c57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137859190614c9b565b8160018151811061379957613798614c57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137fe307f000000000000000000000000000000000000000000000000000000000000000084612236565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613860959493929190614dc1565b600060405180830381600087803b15801561387a57600080fd5b505af115801561388e573d6000803e3d6000fd5b505050505050565b6138c1307f000000000000000000000000000000000000000000000000000000000000000084612236565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161394896959493929190614e1b565b60606040518083038185885af1158015613966573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061398b9190614e91565b5050505050565b600080fd5b6000819050919050565b6139aa81613997565b81146139b557600080fd5b50565b6000813590506139c7816139a1565b92915050565b600080604083850312156139e4576139e3613992565b5b60006139f2858286016139b8565b9250506020613a03858286016139b8565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a47578082015181840152602081019050613a2c565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a6f82613a0d565b613a798185613a18565b9350613a89818560208601613a29565b613a9281613a53565b840191505092915050565b60006020820190508181036000830152613ab78184613a64565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613aea82613abf565b9050919050565b613afa81613adf565b8114613b0557600080fd5b50565b600081359050613b1781613af1565b92915050565b60008060408385031215613b3457613b33613992565b5b6000613b4285828601613b08565b9250506020613b53858286016139b8565b9150509250929050565b60008115159050919050565b613b7281613b5d565b82525050565b6000602082019050613b8d6000830184613b69565b92915050565b613b9c81613997565b82525050565b6000602082019050613bb76000830184613b93565b92915050565b613bc681613adf565b82525050565b6000602082019050613be16000830184613bbd565b92915050565b600080600060608486031215613c0057613bff613992565b5b6000613c0e86828701613b08565b9350506020613c1f86828701613b08565b9250506040613c30868287016139b8565b9150509250925092565b613c4381613b5d565b8114613c4e57600080fd5b50565b600081359050613c6081613c3a565b92915050565b60008060408385031215613c7d57613c7c613992565b5b6000613c8b85828601613b08565b9250506020613c9c85828601613c51565b9150509250929050565b600060208284031215613cbc57613cbb613992565b5b6000613cca84828501613b08565b91505092915050565b600060ff82169050919050565b613ce981613cd3565b82525050565b6000602082019050613d046000830184613ce0565b92915050565b600060208284031215613d2057613d1f613992565b5b6000613d2e848285016139b8565b91505092915050565b600060208284031215613d4d57613d4c613992565b5b6000613d5b84828501613c51565b91505092915050565b6000819050919050565b6000613d89613d84613d7f84613abf565b613d64565b613abf565b9050919050565b6000613d9b82613d6e565b9050919050565b6000613dad82613d90565b9050919050565b613dbd81613da2565b82525050565b6000602082019050613dd86000830184613db4565b92915050565b60008060408385031215613df557613df4613992565b5b6000613e0385828601613b08565b9250506020613e1485828601613b08565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e54602083613a18565b9150613e5f82613e1e565b602082019050919050565b60006020820190508181036000830152613e8381613e47565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ec482613997565b9150613ecf83613997565b9250828201905080821115613ee757613ee6613e8a565b5b92915050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000613f23601c83613a18565b9150613f2e82613eed565b602082019050919050565b60006020820190508181036000830152613f5281613f16565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613fa057607f821691505b602082108103613fb357613fb2613f59565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614015602883613a18565b915061402082613fb9565b604082019050919050565b6000602082019050818103600083015261404481614008565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6578747261414d4d506169727300000000000000000000000000000000000000602082015250565b60006140a7602d83613a18565b91506140b28261404b565b604082019050919050565b600060208201905081810360008301526140d68161409a565b9050919050565b7f43616e6e6f7420736574206d617857616c6c65744c696d6974206c6f7765722060008201527f7468616e20302e35250000000000000000000000000000000000000000000000602082015250565b6000614139602983613a18565b9150614144826140dd565b604082019050919050565b600060208201905081810360008301526141688161412c565b9050919050565b600061417a82613997565b915061418583613997565b925082820261419381613997565b915082820484148315176141aa576141a9613e8a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141eb82613997565b91506141f683613997565b925082614206576142056141b1565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061426d603583613a18565b915061427882614211565b604082019050919050565b6000602082019050818103600083015261429c81614260565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006142ff603483613a18565b915061430a826142a3565b604082019050919050565b6000602082019050818103600083015261432e816142f2565b9050919050565b7f5468652068696768657220626f756e646172792073686f756c6420626520686960008201527f67686572206f7220657175616c20746f20746865206c6f776572206f6e650000602082015250565b6000614391603e83613a18565b915061439c82614335565b604082019050919050565b600060208201905081810360008301526143c081614384565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614423602583613a18565b915061442e826143c7565b604082019050919050565b6000602082019050818103600083015261445281614416565b9050919050565b7f54726164696e672068617320616c7265616479206265656e20656e61626c6564600082015250565b600061448f602083613a18565b915061449a82614459565b602082019050919050565b600060208201905081810360008301526144be81614482565b9050919050565b7f43616e6e6f7420736574206d617854784c696d6974206c6f776572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b6000614521602583613a18565b915061452c826144c5565b604082019050919050565b6000602082019050818103600083015261455081614514565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145b3602683613a18565b91506145be82614557565b604082019050919050565b600060208201905081810360008301526145e2816145a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614645602483613a18565b9150614650826145e9565b604082019050919050565b6000602082019050818103600083015261467481614638565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006146d7602283613a18565b91506146e28261467b565b604082019050919050565b60006020820190508181036000830152614706816146ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614769602583613a18565b91506147748261470d565b604082019050919050565b600060208201905081810360008301526147988161475c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147fb602383613a18565b91506148068261479f565b604082019050919050565b6000602082019050818103600083015261482a816147ee565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614867601683613a18565b915061487282614831565b602082019050919050565b600060208201905081810360008301526148968161485a565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061491f604983613a18565b915061492a8261489d565b606082019050919050565b6000602082019050818103600083015261494e81614912565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854784c696d69742e000000000000000000000000000000000000000000602082015250565b60006149b1602b83613a18565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a1d601383613a18565b9150614a28826149e7565b602082019050919050565b60006020820190508181036000830152614a4c81614a10565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854784c696d69742e0000000000000000000000000000000000000000602082015250565b6000614aaf602c83613a18565b9150614aba82614a53565b604082019050919050565b60006020820190508181036000830152614ade81614aa2565b9050919050565b6000614af082613997565b9150614afb83613997565b9250828203905081811115614b1357614b12613e8a565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b75602683613a18565b9150614b8082614b19565b604082019050919050565b60006020820190508181036000830152614ba481614b68565b9050919050565b6000606082019050614bc06000830186613b93565b614bcd6020830185613b93565b614bda6040830184613b93565b949350505050565b600081905092915050565b50565b6000614bfd600083614be2565b9150614c0882614bed565b600082019050919050565b6000614c1e82614bf0565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614c9581613af1565b92915050565b600060208284031215614cb157614cb0613992565b5b6000614cbf84828501614c86565b91505092915050565b6000819050919050565b6000614ced614ce8614ce384614cc8565b613d64565b613997565b9050919050565b614cfd81614cd2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d3881613adf565b82525050565b6000614d4a8383614d2f565b60208301905092915050565b6000602082019050919050565b6000614d6e82614d03565b614d788185614d0e565b9350614d8383614d1f565b8060005b83811015614db4578151614d9b8882614d3e565b9750614da683614d56565b925050600181019050614d87565b5085935050505092915050565b600060a082019050614dd66000830188613b93565b614de36020830187614cf4565b8181036040830152614df58186614d63565b9050614e046060830185613bbd565b614e116080830184613b93565b9695505050505050565b600060c082019050614e306000830189613bbd565b614e3d6020830188613b93565b614e4a6040830187614cf4565b614e576060830186614cf4565b614e646080830185613bbd565b614e7160a0830184613b93565b979650505050505050565b600081519050614e8b816139a1565b92915050565b600080600060608486031215614eaa57614ea9613992565b5b6000614eb886828701614e7c565b9350506020614ec986828701614e7c565b9250506040614eda86828701614e7c565b915050925092509256fea2646970667358221220e91364ea57a494995cecfd981676f66a062bc5a9f537c2bcc0d73c7ca02e414464736f6c63430008130033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80638036d590116101ab578063c2c327d1116100f7578063e0a2717411610095578063f2fde38b1161006f578063f2fde38b14610bb5578063f3f7338e14610bde578063f637434214610c09578063fdb6531f14610c3457610325565b8063e0a2717414610b36578063ea90fcc314610b61578063f11a24d314610b8a57610325565b8063ca6a14e1116100d1578063ca6a14e114610a8c578063d65ab5f214610ab7578063d85ba06314610ace578063dd62ed3e14610af957610325565b8063c2c327d114610a0d578063c53d4d5314610a36578063c77847b114610a6157610325565b8063a457c2d711610164578063a9059cbb1161013e578063a9059cbb14610955578063aaae545a14610992578063b34117ba146109bb578063c0246668146109e457610325565b8063a457c2d7146108d6578063a531721614610913578063a57afffa1461093e57610325565b80638036d590146107d657806389add02c146108015780638da5cb5b1461082c57806391d782ce1461085757806394516c7f1461088057806395d89b41146108ab57610325565b80634324deae1161026a57806366a88d96116102235780636cbc2ded116101fd5780636cbc2ded1461074057806370a0823114610757578063715018a61461079457806377c18352146107ab57610325565b806366a88d96146106c157806366ca9b83146106ec5780636a486a8e1461071557610325565b80634324deae1461059d57806349021b6e146105c65780634fbee193146105f15780635016c39f1461062e578063555b90751461066b57806359bdf1df1461069657610325565b80632301d775116102d75780632c505e90116102b15780632c505e90146104cd578063313ce5671461050a5780633582ad2314610535578063395093511461056057610325565b80632301d7751461043c57806323b872dd1461046757806327396701146104a457610325565b806302dbd8f81461032a57806306fdde0314610353578063095ea7b31461037e5780630ea0d3d2146103bb57806318160ddd146103e65780631a8145bb1461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b50610351600480360381019061034c91906139cd565b610c71565b005b34801561035f57600080fd5b50610368610d5b565b6040516103759190613a9d565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190613b1d565b610ded565b6040516103b29190613b78565b60405180910390f35b3480156103c757600080fd5b506103d0610e0b565b6040516103dd9190613b78565b60405180910390f35b3480156103f257600080fd5b506103fb610eab565b6040516104089190613ba2565b60405180910390f35b34801561041d57600080fd5b50610426610eb5565b6040516104339190613ba2565b60405180910390f35b34801561044857600080fd5b50610451610ebb565b60405161045e9190613bcc565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190613be7565b610ee1565b60405161049b9190613b78565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190613c66565b610fd9565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190613ca6565b6110f1565b6040516105019190613b78565b60405180910390f35b34801561051657600080fd5b5061051f611111565b60405161052c9190613cef565b60405180910390f35b34801561054157600080fd5b5061054a61111a565b6040516105579190613b78565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190613b1d565b61112d565b6040516105949190613b78565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190613d0a565b6111d9565b005b3480156105d257600080fd5b506105db6112c2565b6040516105e89190613bcc565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190613ca6565b6112e6565b6040516106259190613b78565b60405180910390f35b34801561063a57600080fd5b50610655600480360381019061065091906139cd565b61133c565b6040516106629190613b78565b60405180910390f35b34801561067757600080fd5b506106806114de565b60405161068d9190613ba2565b60405180910390f35b3480156106a257600080fd5b506106ab6114e4565b6040516106b89190613ba2565b60405180910390f35b3480156106cd57600080fd5b506106d66114ea565b6040516106e39190613ba2565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e91906139cd565b6114f0565b005b34801561072157600080fd5b5061072a6115da565b6040516107379190613ba2565b60405180910390f35b34801561074c57600080fd5b506107556115e0565b005b34801561076357600080fd5b5061077e60048036038101906107799190613ca6565b6115e2565b60405161078b9190613ba2565b60405180910390f35b3480156107a057600080fd5b506107a961162a565b005b3480156107b757600080fd5b506107c06116b2565b6040516107cd9190613ba2565b60405180910390f35b3480156107e257600080fd5b506107eb6116b8565b6040516107f89190613ba2565b60405180910390f35b34801561080d57600080fd5b506108166116be565b6040516108239190613b78565b60405180910390f35b34801561083857600080fd5b506108416116d1565b60405161084e9190613bcc565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190613d37565b6116fb565b005b34801561088c57600080fd5b50610895611794565b6040516108a29190613ba2565b60405180910390f35b3480156108b757600080fd5b506108c061179a565b6040516108cd9190613a9d565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190613b1d565b61182c565b60405161090a9190613b78565b60405180910390f35b34801561091f57600080fd5b50610928611917565b6040516109359190613dc3565b60405180910390f35b34801561094a57600080fd5b5061095361193b565b005b34801561096157600080fd5b5061097c60048036038101906109779190613b1d565b611a8b565b6040516109899190613b78565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b49190613ca6565b611aa9565b005b3480156109c757600080fd5b506109e260048036038101906109dd9190613c66565b611b69565b005b3480156109f057600080fd5b50610a0b6004803603810190610a069190613c66565b611c40565b005b348015610a1957600080fd5b50610a346004803603810190610a2f9190613d0a565b611d65565b005b348015610a4257600080fd5b50610a4b611e4e565b604051610a589190613b78565b60405180910390f35b348015610a6d57600080fd5b50610a76611e61565b604051610a839190613b78565b60405180910390f35b348015610a9857600080fd5b50610aa1611f01565b604051610aae9190613b78565b60405180910390f35b348015610ac357600080fd5b50610acc611f14565b005b348015610ada57600080fd5b50610ae3611f16565b604051610af09190613ba2565b60405180910390f35b348015610b0557600080fd5b50610b206004803603810190610b1b9190613dde565b611f1c565b604051610b2d9190613ba2565b60405180910390f35b348015610b4257600080fd5b50610b4b611fa3565b604051610b589190613ba2565b60405180910390f35b348015610b6d57600080fd5b50610b886004803603810190610b839190613ca6565b611fa9565b005b348015610b9657600080fd5b50610b9f6120e5565b604051610bac9190613ba2565b60405180910390f35b348015610bc157600080fd5b50610bdc6004803603810190610bd79190613ca6565b6120eb565b005b348015610bea57600080fd5b50610bf36121e2565b604051610c009190613bcc565b60405180910390f35b348015610c1557600080fd5b50610c1e612208565b604051610c2b9190613ba2565b60405180910390f35b348015610c4057600080fd5b50610c5b6004803603810190610c569190613ca6565b61220e565b604051610c689190613b78565b60405180910390f35b610c7961222e565b73ffffffffffffffffffffffffffffffffffffffff16610c976116d1565b73ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490613e6a565b60405180910390fd5b8160138190555080601481905550601454601354610d0b9190613eb9565b60128190555060326012541115610d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4e90613f39565b60405180910390fd5b5050565b606060038054610d6a90613f88565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9690613f88565b8015610de35780601f10610db857610100808354040283529160200191610de3565b820191906000526020600020905b815481529060010190602001808311610dc657829003601f168201915b5050505050905090565b6000610e01610dfa61222e565b8484612236565b6001905092915050565b6000610e1561222e565b73ffffffffffffffffffffffffffffffffffffffff16610e336116d1565b73ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090613e6a565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b6000600254905090565b60165481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610eee8484846123ff565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f3961222e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb09061402b565b60405180910390fd5b610fcd85610fc561222e565b858403612236565b60019150509392505050565b610fe161222e565b73ffffffffffffffffffffffffffffffffffffffff16610fff6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c90613e6a565b60405180910390fd5b7f000000000000000000000000cf70e06944ecdc61a6fa6193d6f5c71c27f5833073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906140bd565b60405180910390fd5b6110ed8282613032565b5050565b60186020528060005260406000206000915054906101000a900460ff1681565b60006012905090565b600c60009054906101000a900460ff1681565b60006111cf61113a61222e565b84846001600061114861222e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111ca9190613eb9565b612236565b6001905092915050565b6111e161222e565b73ffffffffffffffffffffffffffffffffffffffff166111ff6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90613e6a565b60405180910390fd5b6005811015611299576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112909061414f565b60405180910390fd5b6103e86112a4610eab565b826112af919061416f565b6112b991906141e0565b600b8190555050565b7f000000000000000000000000cf70e06944ecdc61a6fa6193d6f5c71c27f5833081565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061134661222e565b73ffffffffffffffffffffffffffffffffffffffff166113646116d1565b73ffffffffffffffffffffffffffffffffffffffff16146113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b190613e6a565b60405180910390fd5b60018310156113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590614283565b60405180910390fd5b6101f4831115611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90614315565b60405180910390fd5b81831115611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906143a7565b60405180910390fd5b620186a0611492610eab565b8461149d919061416f565b6114a791906141e0565b600981905550620186a06114b9610eab565b836114c4919061416f565b6114ce91906141e0565b6008819055506001905092915050565b60155481565b60095481565b600b5481565b6114f861222e565b73ffffffffffffffffffffffffffffffffffffffff166115166116d1565b73ffffffffffffffffffffffffffffffffffffffff161461156c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156390613e6a565b60405180910390fd5b816010819055508060118190555060115460105461158a9190613eb9565b600f819055506032600f5411156115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd90613f39565b60405180910390fd5b5050565b60125481565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61163261222e565b73ffffffffffffffffffffffffffffffffffffffff166116506116d1565b73ffffffffffffffffffffffffffffffffffffffff16146116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d90613e6a565b60405180910390fd5b6116b060006130d3565b565b60085481565b600a5481565b600c60019054906101000a900460ff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61170361222e565b73ffffffffffffffffffffffffffffffffffffffff166117216116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90613e6a565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b60135481565b6060600480546117a990613f88565b80601f01602080910402602001604051908101604052809291908181526020018280546117d590613f88565b80156118225780601f106117f757610100808354040283529160200191611822565b820191906000526020600020905b81548152906001019060200180831161180557829003601f168201915b5050505050905090565b6000806001600061183b61222e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90614439565b60405180910390fd5b61190c61190361222e565b85858403612236565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b61194361222e565b73ffffffffffffffffffffffffffffffffffffffff166119616116d1565b73ffffffffffffffffffffffffffffffffffffffff16146119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae90613e6a565b60405180910390fd5b600c60029054906101000a900460ff1615611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe906144a5565b60405180910390fd5b60646010819055506064601181905550601154601054611a279190613eb9565b600f8190555060966013819055506096601481905550601454601354611a4d9190613eb9565b6012819055506001600c60026101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b6000611a9f611a9861222e565b84846123ff565b6001905092915050565b611ab161222e565b73ffffffffffffffffffffffffffffffffffffffff16611acf6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1c90613e6a565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b7161222e565b73ffffffffffffffffffffffffffffffffffffffff16611b8f6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc90613e6a565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c4861222e565b73ffffffffffffffffffffffffffffffffffffffff16611c666116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390613e6a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d599190613b78565b60405180910390a25050565b611d6d61222e565b73ffffffffffffffffffffffffffffffffffffffff16611d8b6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd890613e6a565b60405180910390fd5b6001811015611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c90614537565b60405180910390fd5b6103e8611e30610eab565b82611e3b919061416f565b611e4591906141e0565b600a8190555050565b600c60029054906101000a900460ff1681565b6000611e6b61222e565b73ffffffffffffffffffffffffffffffffffffffff16611e896116d1565b73ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed690613e6a565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b600e60009054906101000a900460ff1681565b565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b611fb161222e565b73ffffffffffffffffffffffffffffffffffffffff16611fcf6116d1565b73ffffffffffffffffffffffffffffffffffffffff1614612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c90613e6a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3b4d0fc34e8ba589fdc51f0660be78887c301d81544872990a389d4713f2e1be60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b6120f361222e565b73ffffffffffffffffffffffffffffffffffffffff166121116116d1565b73ffffffffffffffffffffffffffffffffffffffff1614612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215e90613e6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd906145c9565b60405180910390fd5b6121df816130d3565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60196020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c9061465b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b906146ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123f29190613ba2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361246e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124659061477f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490614811565b60405180910390fd5b600081036124f6576124f183836000613199565b61302d565b600c60009054906101000a900460ff1615612bb9576125136116d1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561258157506125516116d1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125ba5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125f4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561260d5750600560149054906101000a900460ff16155b15612bb857600c60029054906101000a900460ff1661270757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126c75750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd9061487d565b60405180910390fd5b5b600e60009054906101000a900460ff16156128cf576127246116d1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127ab57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561280357507f000000000000000000000000cf70e06944ecdc61a6fa6193d6f5c71c27f5833073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128ce5743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090614935565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129725750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a1957600a548111156129bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b3906149c7565b60405180910390fd5b600b546129c8836115e2565b826129d39190613eb9565b1115612a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0b90614a33565b60405180910390fd5b612bb7565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612abc5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0b57600a54811115612b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afd90614ac5565b60405180910390fd5b612bb6565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bb557600b54612b68836115e2565b82612b739190613eb9565b1115612bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bab90614a33565b60405180910390fd5b5b5b5b5b5b6000612bc4306115e2565b905060006009548210159050808015612be95750600c60019054906101000a900460ff165b8015612c025750600560149054906101000a900460ff16155b8015612c585750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cae5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d045750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d48576001600560146101000a81548160ff021916908315150217905550612d2c613418565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dfe5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0857600090505b6000811561301d57601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6b57506000601254115b15612f0657612e996103e8612e8b6012548861360d90919063ffffffff16565b61362390919063ffffffff16565b905060125460145482612eac919061416f565b612eb691906141e0565b60166000828254612ec79190613eb9565b9250508190555060125460135482612edf919061416f565b612ee991906141e0565b60156000828254612efa9190613eb9565b92505081905550612ff9565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f6157506000600f54115b15612ff857612f8f6103e8612f81600f548861360d90919063ffffffff16565b61362390919063ffffffff16565b9050600f5460115482612fa2919061416f565b612fac91906141e0565b60166000828254612fbd9190613eb9565b92505081905550600f5460105482612fd5919061416f565b612fdf91906141e0565b60156000828254612ff09190613eb9565b925050819055505b5b600081111561300e5761300d873083613199565b5b808561301a9190614ae5565b94505b613028878787613199565b505050505b505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ff9061477f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326e90614811565b60405180910390fd5b613282838383613639565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ff90614b8b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461339b9190613eb9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133ff9190613ba2565b60405180910390a361341284848461363e565b50505050565b6000613423306115e2565b905060006015546016546134379190613eb9565b90506000808314806134495750600082145b156134565750505061360b565b6008548311156134665760085492505b600060028360165486613479919061416f565b61348391906141e0565b61348d91906141e0565b905060006134a4828661364390919063ffffffff16565b905060004790506134b482613659565b60006134c9824761364390919063ffffffff16565b905060006134f4876134e66015548561360d90919063ffffffff16565b61362390919063ffffffff16565b9050600081836135049190614ae5565b9050600060168190555060006015819055506000861180156135265750600081115b15613573576135358682613896565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161356a93929190614bab565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516135b990614c13565b60006040518083038185875af1925050503d80600081146135f6576040519150601f19603f3d011682016040523d82523d6000602084013e6135fb565b606091505b5050809750505050505050505050505b565b6000818361361b919061416f565b905092915050565b6000818361363191906141e0565b905092915050565b505050565b505050565b600081836136519190614ae5565b905092915050565b6000600267ffffffffffffffff81111561367657613675614c28565b5b6040519080825280602002602001820160405280156136a45781602001602082028036833780820191505090505b50905030816000815181106136bc576136bb614c57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137859190614c9b565b8160018151811061379957613798614c57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137fe307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612236565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613860959493929190614dc1565b600060405180830381600087803b15801561387a57600080fd5b505af115801561388e573d6000803e3d6000fd5b505050505050565b6138c1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612236565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161394896959493929190614e1b565b60606040518083038185885af1158015613966573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061398b9190614e91565b5050505050565b600080fd5b6000819050919050565b6139aa81613997565b81146139b557600080fd5b50565b6000813590506139c7816139a1565b92915050565b600080604083850312156139e4576139e3613992565b5b60006139f2858286016139b8565b9250506020613a03858286016139b8565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a47578082015181840152602081019050613a2c565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a6f82613a0d565b613a798185613a18565b9350613a89818560208601613a29565b613a9281613a53565b840191505092915050565b60006020820190508181036000830152613ab78184613a64565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613aea82613abf565b9050919050565b613afa81613adf565b8114613b0557600080fd5b50565b600081359050613b1781613af1565b92915050565b60008060408385031215613b3457613b33613992565b5b6000613b4285828601613b08565b9250506020613b53858286016139b8565b9150509250929050565b60008115159050919050565b613b7281613b5d565b82525050565b6000602082019050613b8d6000830184613b69565b92915050565b613b9c81613997565b82525050565b6000602082019050613bb76000830184613b93565b92915050565b613bc681613adf565b82525050565b6000602082019050613be16000830184613bbd565b92915050565b600080600060608486031215613c0057613bff613992565b5b6000613c0e86828701613b08565b9350506020613c1f86828701613b08565b9250506040613c30868287016139b8565b9150509250925092565b613c4381613b5d565b8114613c4e57600080fd5b50565b600081359050613c6081613c3a565b92915050565b60008060408385031215613c7d57613c7c613992565b5b6000613c8b85828601613b08565b9250506020613c9c85828601613c51565b9150509250929050565b600060208284031215613cbc57613cbb613992565b5b6000613cca84828501613b08565b91505092915050565b600060ff82169050919050565b613ce981613cd3565b82525050565b6000602082019050613d046000830184613ce0565b92915050565b600060208284031215613d2057613d1f613992565b5b6000613d2e848285016139b8565b91505092915050565b600060208284031215613d4d57613d4c613992565b5b6000613d5b84828501613c51565b91505092915050565b6000819050919050565b6000613d89613d84613d7f84613abf565b613d64565b613abf565b9050919050565b6000613d9b82613d6e565b9050919050565b6000613dad82613d90565b9050919050565b613dbd81613da2565b82525050565b6000602082019050613dd86000830184613db4565b92915050565b60008060408385031215613df557613df4613992565b5b6000613e0385828601613b08565b9250506020613e1485828601613b08565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e54602083613a18565b9150613e5f82613e1e565b602082019050919050565b60006020820190508181036000830152613e8381613e47565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ec482613997565b9150613ecf83613997565b9250828201905080821115613ee757613ee6613e8a565b5b92915050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000613f23601c83613a18565b9150613f2e82613eed565b602082019050919050565b60006020820190508181036000830152613f5281613f16565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613fa057607f821691505b602082108103613fb357613fb2613f59565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614015602883613a18565b915061402082613fb9565b604082019050919050565b6000602082019050818103600083015261404481614008565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6578747261414d4d506169727300000000000000000000000000000000000000602082015250565b60006140a7602d83613a18565b91506140b28261404b565b604082019050919050565b600060208201905081810360008301526140d68161409a565b9050919050565b7f43616e6e6f7420736574206d617857616c6c65744c696d6974206c6f7765722060008201527f7468616e20302e35250000000000000000000000000000000000000000000000602082015250565b6000614139602983613a18565b9150614144826140dd565b604082019050919050565b600060208201905081810360008301526141688161412c565b9050919050565b600061417a82613997565b915061418583613997565b925082820261419381613997565b915082820484148315176141aa576141a9613e8a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141eb82613997565b91506141f683613997565b925082614206576142056141b1565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061426d603583613a18565b915061427882614211565b604082019050919050565b6000602082019050818103600083015261429c81614260565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006142ff603483613a18565b915061430a826142a3565b604082019050919050565b6000602082019050818103600083015261432e816142f2565b9050919050565b7f5468652068696768657220626f756e646172792073686f756c6420626520686960008201527f67686572206f7220657175616c20746f20746865206c6f776572206f6e650000602082015250565b6000614391603e83613a18565b915061439c82614335565b604082019050919050565b600060208201905081810360008301526143c081614384565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614423602583613a18565b915061442e826143c7565b604082019050919050565b6000602082019050818103600083015261445281614416565b9050919050565b7f54726164696e672068617320616c7265616479206265656e20656e61626c6564600082015250565b600061448f602083613a18565b915061449a82614459565b602082019050919050565b600060208201905081810360008301526144be81614482565b9050919050565b7f43616e6e6f7420736574206d617854784c696d6974206c6f776572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b6000614521602583613a18565b915061452c826144c5565b604082019050919050565b6000602082019050818103600083015261455081614514565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145b3602683613a18565b91506145be82614557565b604082019050919050565b600060208201905081810360008301526145e2816145a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614645602483613a18565b9150614650826145e9565b604082019050919050565b6000602082019050818103600083015261467481614638565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006146d7602283613a18565b91506146e28261467b565b604082019050919050565b60006020820190508181036000830152614706816146ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614769602583613a18565b91506147748261470d565b604082019050919050565b600060208201905081810360008301526147988161475c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147fb602383613a18565b91506148068261479f565b604082019050919050565b6000602082019050818103600083015261482a816147ee565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614867601683613a18565b915061487282614831565b602082019050919050565b600060208201905081810360008301526148968161485a565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061491f604983613a18565b915061492a8261489d565b606082019050919050565b6000602082019050818103600083015261494e81614912565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854784c696d69742e000000000000000000000000000000000000000000602082015250565b60006149b1602b83613a18565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a1d601383613a18565b9150614a28826149e7565b602082019050919050565b60006020820190508181036000830152614a4c81614a10565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854784c696d69742e0000000000000000000000000000000000000000602082015250565b6000614aaf602c83613a18565b9150614aba82614a53565b604082019050919050565b60006020820190508181036000830152614ade81614aa2565b9050919050565b6000614af082613997565b9150614afb83613997565b9250828203905081811115614b1357614b12613e8a565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b75602683613a18565b9150614b8082614b19565b604082019050919050565b60006020820190508181036000830152614ba481614b68565b9050919050565b6000606082019050614bc06000830186613b93565b614bcd6020830185613b93565b614bda6040830184613b93565b949350505050565b600081905092915050565b50565b6000614bfd600083614be2565b9150614c0882614bed565b600082019050919050565b6000614c1e82614bf0565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614c9581613af1565b92915050565b600060208284031215614cb157614cb0613992565b5b6000614cbf84828501614c86565b91505092915050565b6000819050919050565b6000614ced614ce8614ce384614cc8565b613d64565b613997565b9050919050565b614cfd81614cd2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d3881613adf565b82525050565b6000614d4a8383614d2f565b60208301905092915050565b6000602082019050919050565b6000614d6e82614d03565b614d788185614d0e565b9350614d8383614d1f565b8060005b83811015614db4578151614d9b8882614d3e565b9750614da683614d56565b925050600181019050614d87565b5085935050505092915050565b600060a082019050614dd66000830188613b93565b614de36020830187614cf4565b8181036040830152614df58186614d63565b9050614e046060830185613bbd565b614e116080830184613b93565b9695505050505050565b600060c082019050614e306000830189613bbd565b614e3d6020830188613b93565b614e4a6040830187614cf4565b614e576060830186614cf4565b614e646080830185613bbd565b614e7160a0830184613b93565b979650505050505050565b600081519050614e8b816139a1565b92915050565b600080600060608486031215614eaa57614ea9613992565b5b6000614eb886828701614e7c565b9350506020614ec986828701614e7c565b9250506040614eda86828701614e7c565b915050925092509256fea2646970667358221220e91364ea57a494995cecfd981676f66a062bc5a9f537c2bcc0d73c7ca02e414464736f6c63430008130033

Deployed Bytecode Sourcemap

27894:16889:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35820:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6161:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8328:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32695:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7281:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28942:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28140:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8979:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36627:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29124:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7123:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28332:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9880:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34363:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28022:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37467:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33180:676;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28905:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28218:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28294:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35334:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28795:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44752;;;;;;;;;;;;;:::i;:::-;;7452:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1467:103;;;;;;;;;;;;;:::i;:::-;;28176:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28262:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28371:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;816:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35059:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28830:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6380:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10598:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27969:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32161:433;;;;;;;;;;;;;:::i;:::-;;7792:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37319:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34789:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36313:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34011:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28415:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32888:145;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28635:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44716:30;;;;;;;;;;;;;:::i;:::-;;28688:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8030:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28722:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37101:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28756:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1725:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28103:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28865:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29338:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35820:329;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35958:10:::1;35942:13;:26;;;;35998:13;35979:16;:32;;;;36054:16;;36038:13;;:32;;;;:::i;:::-;36022:13;:48;;;;36106:2;36089:13;;:19;;36081:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;35820:329:::0;;:::o;6161:100::-;6215:13;6248:5;6241:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6161:100;:::o;8328:169::-;8411:4;8428:39;8437:12;:10;:12::i;:::-;8451:7;8460:6;8428:8;:39::i;:::-;8485:4;8478:11;;8328:169;;;;:::o;32695:125::-;32752:4;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32785:5:::1;32769:13;;:21;;;;;;;;;;;;;;;;;;32808:4;32801:11;;32695:125:::0;:::o;7281:108::-;7342:7;7369:12;;7362:19;;7281:108;:::o;28942:33::-;;;;:::o;28140:27::-;;;;;;;;;;;;;:::o;8979:492::-;9119:4;9136:36;9146:6;9154:9;9165:6;9136:9;:36::i;:::-;9185:24;9212:11;:19;9224:6;9212:19;;;;;;;;;;;;;;;:33;9232:12;:10;:12::i;:::-;9212:33;;;;;;;;;;;;;;;;9185:60;;9284:6;9264:16;:26;;9256:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9371:57;9380:6;9388:12;:10;:12::i;:::-;9421:6;9402:16;:25;9371:8;:57::i;:::-;9459:4;9452:11;;;8979:492;;;;;:::o;36627:282::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36761:13:::1;36753:21;;:4;:21;;::::0;36731:116:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36860:41;36889:4;36895:5;36860:28;:41::i;:::-;36627:282:::0;;:::o;29124:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;7123:93::-;7181:5;7206:2;7199:9;;7123:93;:::o;28332:32::-;;;;;;;;;;;;;:::o;9880:215::-;9968:4;9985:80;9994:12;:10;:12::i;:::-;10008:7;10054:10;10017:11;:25;10029:12;:10;:12::i;:::-;10017:25;;;;;;;;;;;;;;;:34;10043:7;10017:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9985:8;:80::i;:::-;10083:4;10076:11;;9880:215;;;;:::o;34363:241::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34471:1:::1;34461:6;:11;;34439:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;34592:4;34578:13;:11;:13::i;:::-;34569:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;34552:14;:44;;;;34363:241:::0;:::o;28022:38::-;;;:::o;37467:126::-;37533:4;37557:19;:28;37577:7;37557:28;;;;;;;;;;;;;;;;;;;;;;;;;37550:35;;37467:126;;;:::o;33180:676::-;33297:4;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33351:1:::1;33341:6;:11;;33319:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;33476:3;33466:6;:13;;33444:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;33602:6;33592;:16;;33570:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;33756:6;33741:13;:11;:13::i;:::-;33732:6;:22;;;;:::i;:::-;:30;;;;:::i;:::-;33709:20;:53;;;;33820:6;33805:13;:11;:13::i;:::-;33796:6;:22;;;;:::i;:::-;:30;;;;:::i;:::-;33773:20;:53;;;;33844:4;33837:11;;33180:676:::0;;;;:::o;28905:30::-;;;;:::o;28218:35::-;;;;:::o;28294:29::-;;;;:::o;35334:322::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35470:10:::1;35455:12;:25;;;;35509:13;35491:15;:31;;;;35563:15;;35548:12;;:30;;;;:::i;:::-;35533:12;:45;;;;35613:2;35597:12;;:18;;35589:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;35334:322:::0;;:::o;28795:28::-;;;;:::o;44752:::-;:::o;7452:127::-;7526:7;7553:9;:18;7563:7;7553:18;;;;;;;;;;;;;;;;7546:25;;7452:127;;;:::o;1467:103::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1532:30:::1;1559:1;1532:18;:30::i;:::-;1467:103::o:0;28176:35::-;;;;:::o;28262:25::-;;;;:::o;28371:35::-;;;;;;;;;;;;;:::o;816:87::-;862:7;889:6;;;;;;;;;;;882:13;;816:87;:::o;35059:108::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35152:7:::1;35134:15;;:25;;;;;;;;;;;;;;;;;;35059:108:::0;:::o;28830:28::-;;;;:::o;6380:104::-;6436:13;6469:7;6462:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6380:104;:::o;10598:413::-;10691:4;10708:24;10735:11;:25;10747:12;:10;:12::i;:::-;10735:25;;;;;;;;;;;;;;;:34;10761:7;10735:34;;;;;;;;;;;;;;;;10708:61;;10808:15;10788:16;:35;;10780:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10901:67;10910:12;:10;:12::i;:::-;10924:7;10952:15;10933:16;:34;10901:8;:67::i;:::-;10999:4;10992:11;;;10598:413;;;;:::o;27969:46::-;;;:::o;32161:433::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32225:15:::1;;;;;;;;;;;32224:16;32216:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;32303:3;32288:12;:18;;;;32335:3;32317:15;:21;;;;32379:15;;32364:12;;:30;;;;:::i;:::-;32349:12;:45;;;;32423:3;32407:13;:19;;;;32456:3;32437:16;:22;;;;32502:16;;32486:13;;:32;;;;:::i;:::-;32470:13;:48;;;;32549:4;32531:15;;:22;;;;;;;;;;;;;;;;;;32582:4;32564:15;;:22;;;;;;;;;;;;;;;;;;32161:433::o:0;7792:175::-;7878:4;7895:42;7905:12;:10;:12::i;:::-;7919:9;7930:6;7895:9;:42::i;:::-;7955:4;7948:11;;7792:175;;;;:::o;37319:140::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37440:11:::1;37422:15;;:29;;;;;;;;;;;;;;;;;;37319:140:::0;:::o;34789:155::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34932:4:::1;34897:24;:32;34922:6;34897:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;34789:155:::0;;:::o;36313:182::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36429:8:::1;36398:19;:28;36418:7;36398:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36469:7;36453:34;;;36478:8;36453:34;;;;;;:::i;:::-;;;;;;;;36313:182:::0;;:::o;34011:230::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34115:1:::1;34105:6;:11;;34083:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;34229:4;34214:13;:11;:13::i;:::-;34205:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;34192:10;:41;;;;34011:230:::0;:::o;28415:35::-;;;;;;;;;;;;;:::o;32888:145::-;32953:4;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32998:5:::1;32970:25;;:33;;;;;;;;;;;;;;;;;;33021:4;33014:11;;32888:145:::0;:::o;28635:44::-;;;;;;;;;;;;;:::o;44716:30::-;:::o;28688:27::-;;;;:::o;8030:151::-;8119:7;8146:11;:18;8158:5;8146:18;;;;;;;;;;;;;;;:27;8165:7;8146:27;;;;;;;;;;;;;;;;8139:34;;8030:151;;;;:::o;28722:27::-;;;;:::o;37101:210::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37249:12:::1;;;;;;;;;;;37212:50;;37232:15;37212:50;;;;;;;;;;;;37288:15;37273:12;;:30;;;;;;;;;;;;;;;;;;37101:210:::0;:::o;28756:30::-;;;;:::o;1725:201::-;1047:12;:10;:12::i;:::-;1036:23;;:7;:5;:7::i;:::-;:23;;;1028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1834:1:::1;1814:22;;:8;:22;;::::0;1806:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1890:28;1909:8;1890:18;:28::i;:::-;1725:201:::0;:::o;28103:30::-;;;;;;;;;;;;;:::o;28865:31::-;;;;:::o;29338:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;190:98::-;243:7;270:10;263:17;;190:98;:::o;14282:380::-;14435:1;14418:19;;:5;:19;;;14410:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14516:1;14497:21;;:7;:21;;;14489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14600:6;14570:11;:18;14582:5;14570:18;;;;;;;;;;;;;;;:27;14589:7;14570:27;;;;;;;;;;;;;;;:36;;;;14638:7;14622:32;;14631:5;14622:32;;;14647:6;14622:32;;;;;;:::i;:::-;;;;;;;;14282:380;;;:::o;37601:4485::-;37749:1;37733:18;;:4;:18;;;37725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37826:1;37812:16;;:2;:16;;;37804:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37895:1;37885:6;:11;37881:93;;37913:28;37929:4;37935:2;37939:1;37913:15;:28::i;:::-;37956:7;;37881:93;37990:13;;;;;;;;;;;37986:2417;;;38050:7;:5;:7::i;:::-;38042:15;;:4;:15;;;;:49;;;;;38084:7;:5;:7::i;:::-;38078:13;;:2;:13;;;;38042:49;:86;;;;;38126:1;38112:16;;:2;:16;;;;38042:86;:128;;;;;38163:6;38149:21;;:2;:21;;;;38042:128;:162;;;;;38192:12;;;;;;;;;;;38191:13;38042:162;38020:2372;;;38244:15;;;;;;;;;;;38239:225;;38318:19;:25;38338:4;38318:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38347:19;:23;38367:2;38347:23;;;;;;;;;;;;;;;;;;;;;;;;;38318:52;38284:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;38239:225;38620:25;;;;;;;;;;;38616:641;;;38706:7;:5;:7::i;:::-;38700:13;;:2;:13;;;;:67;;;;;38756:10;38742:25;;:2;:25;;;;38700:67;:124;;;;;38810:13;38796:28;;:2;:28;;;;38700:124;38670:568;;;38988:12;38913:28;:39;38942:9;38913:39;;;;;;;;;;;;;;;;:87;38875:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;39202:12;39160:28;:39;39189:9;39160:39;;;;;;;;;;;;;;;:54;;;;38670:568;38616:641;39331:13;:19;39345:4;39331:19;;;;;;;;;;;;;;;;;;;;;;;;;:73;;;;;39376:24;:28;39401:2;39376:28;;;;;;;;;;;;;;;;;;;;;;;;;39375:29;39331:73;39305:1072;;;39491:10;;39481:6;:20;;39447:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;39679:14;;39662:13;39672:2;39662:9;:13::i;:::-;39653:6;:22;;;;:::i;:::-;:40;;39619:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;39305:1072;;;39862:13;:17;39876:2;39862:17;;;;;;;;;;;;;;;;;;;;;;;;;:73;;;;;39905:24;:30;39930:4;39905:30;;;;;;;;;;;;;;;;;;;;;;;;;39904:31;39862:73;39836:541;;;40022:10;;40012:6;:20;;39978:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;39836:541;;;40159:24;:28;40184:2;40159:28;;;;;;;;;;;;;;;;;;;;;;;;;40154:223;;40272:14;;40255:13;40265:2;40255:9;:13::i;:::-;40246:6;:22;;;;:::i;:::-;:40;;40212:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;40154:223;39836:541;39305:1072;38020:2372;37986:2417;40415:28;40446:24;40464:4;40446:9;:24::i;:::-;40415:55;;40483:12;40522:20;;40498;:44;;40483:59;;40573:7;:39;;;;;40597:15;;;;;;;;;;;40573:39;:69;;;;;40630:12;;;;;;;;;;;40629:13;40573:69;:106;;;;;40660:13;:19;40674:4;40660:19;;;;;;;;;;;;;;;;;;;;;;;;;40659:20;40573:106;:149;;;;;40697:19;:25;40717:4;40697:25;;;;;;;;;;;;;;;;;;;;;;;;;40696:26;40573:149;:190;;;;;40740:19;:23;40760:2;40740:23;;;;;;;;;;;;;;;;;;;;;;;;;40739:24;40573:190;40555:330;;;40805:4;40790:12;;:19;;;;;;;;;;;;;;;;;;40826:10;:8;:10::i;:::-;40868:5;40853:12;;:20;;;;;;;;;;;;;;;;;;40555:330;40897:12;40913;;;;;;;;;;;40912:13;40897:28;;41027:19;:25;41047:4;41027:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41056:19;:23;41076:2;41056:23;;;;;;;;;;;;;;;;;;;;;;;;;41027:52;41023:100;;;41106:5;41096:15;;41023:100;41135:12;41240:7;41236:797;;;41292:13;:17;41306:2;41292:17;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;41329:1;41313:13;;:17;41292:38;41288:596;;;41358:35;41388:4;41358:25;41369:13;;41358:6;:10;;:25;;;;:::i;:::-;:29;;:35;;;;:::i;:::-;41351:42;;41462:13;;41442:16;;41435:4;:23;;;;:::i;:::-;41434:41;;;;:::i;:::-;41412:18;;:63;;;;;;;:::i;:::-;;;;;;;;41538:13;;41521;;41514:4;:20;;;;:::i;:::-;41513:38;;;;:::i;:::-;41494:15;;:57;;;;;;;:::i;:::-;;;;;;;;41288:596;;;41613:13;:19;41627:4;41613:19;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;41651:1;41636:12;;:16;41613:39;41609:275;;;41680:34;41709:4;41680:24;41691:12;;41680:6;:10;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;41673:41;;41782:12;;41763:15;;41756:4;:22;;;;:::i;:::-;41755:39;;;;:::i;:::-;41733:18;;:61;;;;;;;:::i;:::-;;;;;;;;41856:12;;41840;;41833:4;:19;;;;:::i;:::-;41832:36;;;;:::i;:::-;41813:15;;:55;;;;;;;:::i;:::-;;;;;;;;41609:275;41288:596;41911:1;41904:4;:8;41900:91;;;41933:42;41949:4;41963;41970;41933:15;:42::i;:::-;41900:91;42017:4;42007:14;;;;;:::i;:::-;;;41236:797;42045:33;42061:4;42067:2;42071:6;42045:15;:33::i;:::-;37714:4372;;;;37601:4485;;;;:::o;36917:176::-;37022:5;37000:13;:19;37014:4;37000:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;37079:5;37045:40;;37073:4;37045:40;;;;;;;;;;;;36917:176;;:::o;2086:191::-;2160:16;2179:6;;;;;;;;;;;2160:25;;2205:8;2196:6;;:17;;;;;;;;;;;;;;;;;;2260:8;2229:40;;2250:8;2229:40;;;;;;;;;;;;2149:128;2086:191;:::o;11501:733::-;11659:1;11641:20;;:6;:20;;;11633:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11743:1;11722:23;;:9;:23;;;11714:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11798:47;11819:6;11827:9;11838:6;11798:20;:47::i;:::-;11858:21;11882:9;:17;11892:6;11882:17;;;;;;;;;;;;;;;;11858:41;;11935:6;11918:13;:23;;11910:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12056:6;12040:13;:22;12020:9;:17;12030:6;12020:17;;;;;;;;;;;;;;;:42;;;;12108:6;12084:9;:20;12094:9;12084:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12149:9;12132:35;;12141:6;12132:35;;;12160:6;12132:35;;;;;;:::i;:::-;;;;;;;;12180:46;12200:6;12208:9;12219:6;12180:19;:46::i;:::-;11622:612;11501:733;;;:::o;43195:1513::-;43234:23;43260:24;43278:4;43260:9;:24::i;:::-;43234:50;;43295:25;43357:15;;43323:18;;:49;;;;:::i;:::-;43295:77;;43383:12;43431:1;43412:15;:20;:46;;;;43457:1;43436:17;:22;43412:46;43408:85;;;43475:7;;;;;43408:85;43527:20;;43509:15;:38;43505:109;;;43582:20;;43564:38;;43505:109;43675:23;43788:1;43755:17;43720:18;;43702:15;:36;;;;:::i;:::-;43701:71;;;;:::i;:::-;:88;;;;:::i;:::-;43675:114;;43800:26;43829:36;43849:15;43829;:19;;:36;;;;:::i;:::-;43800:65;;43878:25;43906:21;43878:49;;43940:36;43957:18;43940:16;:36::i;:::-;43989:18;44010:44;44036:17;44010:21;:25;;:44;;;;:::i;:::-;43989:65;;44067:20;44090:78;44140:17;44090:31;44105:15;;44090:10;:14;;:31;;;;:::i;:::-;:35;;:78;;;;:::i;:::-;44067:101;;44181:23;44220:12;44207:10;:25;;;;:::i;:::-;44181:51;;44266:1;44245:18;:22;;;;44296:1;44278:15;:19;;;;44334:1;44316:15;:19;:42;;;;;44357:1;44339:15;:19;44316:42;44312:278;;;44375:46;44388:15;44405;44375:12;:46::i;:::-;44441:137;44474:18;44511:15;44545:18;;44441:137;;;;;;;;:::i;:::-;;;;;;;;44312:278;44624:12;;;;;;;;;;;44616:26;;44664:21;44616:84;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44602:98;;;;;43223:1485;;;;;;;;;43195:1513;:::o;19211:98::-;19269:7;19300:1;19296;:5;;;;:::i;:::-;19289:12;;19211:98;;;;:::o;19610:::-;19668:7;19699:1;19695;:5;;;;:::i;:::-;19688:12;;19610:98;;;;:::o;15262:125::-;;;;:::o;15991:124::-;;;;:::o;18854:98::-;18912:7;18943:1;18939;:5;;;;:::i;:::-;18932:12;;18854:98;;;;:::o;42094:574::-;42220:21;42258:1;42244:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42220:40;;42289:4;42271;42276:1;42271:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;42315:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42305:4;42310:1;42305:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;42345:57;42362:4;42377:10;42390:11;42345:8;:57::i;:::-;42441:10;:61;;;42517:11;42543:1;42587:4;42614;42634:15;42441:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42149:519;42094:574;:::o;42676:511::-;42824:57;42841:4;42856:10;42869:11;42824:8;:57::i;:::-;42924:10;:26;;;42958:9;42991:4;43011:11;43037:1;43080;43123:15;;;;;;;;;;;43153;42924:255;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;42676:511;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:118::-;4013:24;4031:5;4013:24;:::i;:::-;4008:3;4001:37;3926:118;;:::o;4050:222::-;4143:4;4181:2;4170:9;4166:18;4158:26;;4194:71;4262:1;4251:9;4247:17;4238:6;4194:71;:::i;:::-;4050:222;;;;:::o;4278:118::-;4365:24;4383:5;4365:24;:::i;:::-;4360:3;4353:37;4278:118;;:::o;4402:222::-;4495:4;4533:2;4522:9;4518:18;4510:26;;4546:71;4614:1;4603:9;4599:17;4590:6;4546:71;:::i;:::-;4402:222;;;;:::o;4630:619::-;4707:6;4715;4723;4772:2;4760:9;4751:7;4747:23;4743:32;4740:119;;;4778:79;;:::i;:::-;4740:119;4898:1;4923:53;4968:7;4959:6;4948:9;4944:22;4923:53;:::i;:::-;4913:63;;4869:117;5025:2;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4996:118;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;4630:619;;;;;:::o;5255:116::-;5325:21;5340:5;5325:21;:::i;:::-;5318:5;5315:32;5305:60;;5361:1;5358;5351:12;5305:60;5255:116;:::o;5377:133::-;5420:5;5458:6;5445:20;5436:29;;5474:30;5498:5;5474:30;:::i;:::-;5377:133;;;;:::o;5516:468::-;5581:6;5589;5638:2;5626:9;5617:7;5613:23;5609:32;5606:119;;;5644:79;;:::i;:::-;5606:119;5764:1;5789:53;5834:7;5825:6;5814:9;5810:22;5789:53;:::i;:::-;5779:63;;5735:117;5891:2;5917:50;5959:7;5950:6;5939:9;5935:22;5917:50;:::i;:::-;5907:60;;5862:115;5516:468;;;;;:::o;5990:329::-;6049:6;6098:2;6086:9;6077:7;6073:23;6069:32;6066:119;;;6104:79;;:::i;:::-;6066:119;6224:1;6249:53;6294:7;6285:6;6274:9;6270:22;6249:53;:::i;:::-;6239:63;;6195:117;5990:329;;;;:::o;6325:86::-;6360:7;6400:4;6393:5;6389:16;6378:27;;6325:86;;;:::o;6417:112::-;6500:22;6516:5;6500:22;:::i;:::-;6495:3;6488:35;6417:112;;:::o;6535:214::-;6624:4;6662:2;6651:9;6647:18;6639:26;;6675:67;6739:1;6728:9;6724:17;6715:6;6675:67;:::i;:::-;6535:214;;;;:::o;6755:329::-;6814:6;6863:2;6851:9;6842:7;6838:23;6834:32;6831:119;;;6869:79;;:::i;:::-;6831:119;6989:1;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6960:117;6755:329;;;;:::o;7090:323::-;7146:6;7195:2;7183:9;7174:7;7170:23;7166:32;7163:119;;;7201:79;;:::i;:::-;7163:119;7321:1;7346:50;7388:7;7379:6;7368:9;7364:22;7346:50;:::i;:::-;7336:60;;7292:114;7090:323;;;;:::o;7419:60::-;7447:3;7468:5;7461:12;;7419:60;;;:::o;7485:142::-;7535:9;7568:53;7586:34;7595:24;7613:5;7595:24;:::i;:::-;7586:34;:::i;:::-;7568:53;:::i;:::-;7555:66;;7485:142;;;:::o;7633:126::-;7683:9;7716:37;7747:5;7716:37;:::i;:::-;7703:50;;7633:126;;;:::o;7765:153::-;7842:9;7875:37;7906:5;7875:37;:::i;:::-;7862:50;;7765:153;;;:::o;7924:185::-;8038:64;8096:5;8038:64;:::i;:::-;8033:3;8026:77;7924:185;;:::o;8115:276::-;8235:4;8273:2;8262:9;8258:18;8250:26;;8286:98;8381:1;8370:9;8366:17;8357:6;8286:98;:::i;:::-;8115:276;;;;:::o;8397:474::-;8465:6;8473;8522:2;8510:9;8501:7;8497:23;8493:32;8490:119;;;8528:79;;:::i;:::-;8490:119;8648:1;8673:53;8718:7;8709:6;8698:9;8694:22;8673:53;:::i;:::-;8663:63;;8619:117;8775:2;8801:53;8846:7;8837:6;8826:9;8822:22;8801:53;:::i;:::-;8791:63;;8746:118;8397:474;;;;;:::o;8877:182::-;9017:34;9013:1;9005:6;9001:14;8994:58;8877:182;:::o;9065:366::-;9207:3;9228:67;9292:2;9287:3;9228:67;:::i;:::-;9221:74;;9304:93;9393:3;9304:93;:::i;:::-;9422:2;9417:3;9413:12;9406:19;;9065:366;;;:::o;9437:419::-;9603:4;9641:2;9630:9;9626:18;9618:26;;9690:9;9684:4;9680:20;9676:1;9665:9;9661:17;9654:47;9718:131;9844:4;9718:131;:::i;:::-;9710:139;;9437:419;;;:::o;9862:180::-;9910:77;9907:1;9900:88;10007:4;10004:1;9997:15;10031:4;10028:1;10021:15;10048:191;10088:3;10107:20;10125:1;10107:20;:::i;:::-;10102:25;;10141:20;10159:1;10141:20;:::i;:::-;10136:25;;10184:1;10181;10177:9;10170:16;;10205:3;10202:1;10199:10;10196:36;;;10212:18;;:::i;:::-;10196:36;10048:191;;;;:::o;10245:178::-;10385:30;10381:1;10373:6;10369:14;10362:54;10245:178;:::o;10429:366::-;10571:3;10592:67;10656:2;10651:3;10592:67;:::i;:::-;10585:74;;10668:93;10757:3;10668:93;:::i;:::-;10786:2;10781:3;10777:12;10770:19;;10429:366;;;:::o;10801:419::-;10967:4;11005:2;10994:9;10990:18;10982:26;;11054:9;11048:4;11044:20;11040:1;11029:9;11025:17;11018:47;11082:131;11208:4;11082:131;:::i;:::-;11074:139;;10801:419;;;:::o;11226:180::-;11274:77;11271:1;11264:88;11371:4;11368:1;11361:15;11395:4;11392:1;11385:15;11412:320;11456:6;11493:1;11487:4;11483:12;11473:22;;11540:1;11534:4;11530:12;11561:18;11551:81;;11617:4;11609:6;11605:17;11595:27;;11551:81;11679:2;11671:6;11668:14;11648:18;11645:38;11642:84;;11698:18;;:::i;:::-;11642:84;11463:269;11412:320;;;:::o;11738:227::-;11878:34;11874:1;11866:6;11862:14;11855:58;11947:10;11942:2;11934:6;11930:15;11923:35;11738:227;:::o;11971:366::-;12113:3;12134:67;12198:2;12193:3;12134:67;:::i;:::-;12127:74;;12210:93;12299:3;12210:93;:::i;:::-;12328:2;12323:3;12319:12;12312:19;;11971:366;;;:::o;12343:419::-;12509:4;12547:2;12536:9;12532:18;12524:26;;12596:9;12590:4;12586:20;12582:1;12571:9;12567:17;12560:47;12624:131;12750:4;12624:131;:::i;:::-;12616:139;;12343:419;;;:::o;12768:232::-;12908:34;12904:1;12896:6;12892:14;12885:58;12977:15;12972:2;12964:6;12960:15;12953:40;12768:232;:::o;13006:366::-;13148:3;13169:67;13233:2;13228:3;13169:67;:::i;:::-;13162:74;;13245:93;13334:3;13245:93;:::i;:::-;13363:2;13358:3;13354:12;13347:19;;13006:366;;;:::o;13378:419::-;13544:4;13582:2;13571:9;13567:18;13559:26;;13631:9;13625:4;13621:20;13617:1;13606:9;13602:17;13595:47;13659:131;13785:4;13659:131;:::i;:::-;13651:139;;13378:419;;;:::o;13803:228::-;13943:34;13939:1;13931:6;13927:14;13920:58;14012:11;14007:2;13999:6;13995:15;13988:36;13803:228;:::o;14037:366::-;14179:3;14200:67;14264:2;14259:3;14200:67;:::i;:::-;14193:74;;14276:93;14365:3;14276:93;:::i;:::-;14394:2;14389:3;14385:12;14378:19;;14037:366;;;:::o;14409:419::-;14575:4;14613:2;14602:9;14598:18;14590:26;;14662:9;14656:4;14652:20;14648:1;14637:9;14633:17;14626:47;14690:131;14816:4;14690:131;:::i;:::-;14682:139;;14409:419;;;:::o;14834:410::-;14874:7;14897:20;14915:1;14897:20;:::i;:::-;14892:25;;14931:20;14949:1;14931:20;:::i;:::-;14926:25;;14986:1;14983;14979:9;15008:30;15026:11;15008:30;:::i;:::-;14997:41;;15187:1;15178:7;15174:15;15171:1;15168:22;15148:1;15141:9;15121:83;15098:139;;15217:18;;:::i;:::-;15098:139;14882:362;14834:410;;;;:::o;15250:180::-;15298:77;15295:1;15288:88;15395:4;15392:1;15385:15;15419:4;15416:1;15409:15;15436:185;15476:1;15493:20;15511:1;15493:20;:::i;:::-;15488:25;;15527:20;15545:1;15527:20;:::i;:::-;15522:25;;15566:1;15556:35;;15571:18;;:::i;:::-;15556:35;15613:1;15610;15606:9;15601:14;;15436:185;;;;:::o;15627:240::-;15767:34;15763:1;15755:6;15751:14;15744:58;15836:23;15831:2;15823:6;15819:15;15812:48;15627:240;:::o;15873:366::-;16015:3;16036:67;16100:2;16095:3;16036:67;:::i;:::-;16029:74;;16112:93;16201:3;16112:93;:::i;:::-;16230:2;16225:3;16221:12;16214:19;;15873:366;;;:::o;16245:419::-;16411:4;16449:2;16438:9;16434:18;16426:26;;16498:9;16492:4;16488:20;16484:1;16473:9;16469:17;16462:47;16526:131;16652:4;16526:131;:::i;:::-;16518:139;;16245:419;;;:::o;16670:239::-;16810:34;16806:1;16798:6;16794:14;16787:58;16879:22;16874:2;16866:6;16862:15;16855:47;16670:239;:::o;16915:366::-;17057:3;17078:67;17142:2;17137:3;17078:67;:::i;:::-;17071:74;;17154:93;17243:3;17154:93;:::i;:::-;17272:2;17267:3;17263:12;17256:19;;16915:366;;;:::o;17287:419::-;17453:4;17491:2;17480:9;17476:18;17468:26;;17540:9;17534:4;17530:20;17526:1;17515:9;17511:17;17504:47;17568:131;17694:4;17568:131;:::i;:::-;17560:139;;17287:419;;;:::o;17712:249::-;17852:34;17848:1;17840:6;17836:14;17829:58;17921:32;17916:2;17908:6;17904:15;17897:57;17712:249;:::o;17967:366::-;18109:3;18130:67;18194:2;18189:3;18130:67;:::i;:::-;18123:74;;18206:93;18295:3;18206:93;:::i;:::-;18324:2;18319:3;18315:12;18308:19;;17967:366;;;:::o;18339:419::-;18505:4;18543:2;18532:9;18528:18;18520:26;;18592:9;18586:4;18582:20;18578:1;18567:9;18563:17;18556:47;18620:131;18746:4;18620:131;:::i;:::-;18612:139;;18339:419;;;:::o;18764:224::-;18904:34;18900:1;18892:6;18888:14;18881:58;18973:7;18968:2;18960:6;18956:15;18949:32;18764:224;:::o;18994:366::-;19136:3;19157:67;19221:2;19216:3;19157:67;:::i;:::-;19150:74;;19233:93;19322:3;19233:93;:::i;:::-;19351:2;19346:3;19342:12;19335:19;;18994:366;;;:::o;19366:419::-;19532:4;19570:2;19559:9;19555:18;19547:26;;19619:9;19613:4;19609:20;19605:1;19594:9;19590:17;19583:47;19647:131;19773:4;19647:131;:::i;:::-;19639:139;;19366:419;;;:::o;19791:182::-;19931:34;19927:1;19919:6;19915:14;19908:58;19791:182;:::o;19979:366::-;20121:3;20142:67;20206:2;20201:3;20142:67;:::i;:::-;20135:74;;20218:93;20307:3;20218:93;:::i;:::-;20336:2;20331:3;20327:12;20320:19;;19979:366;;;:::o;20351:419::-;20517:4;20555:2;20544:9;20540:18;20532:26;;20604:9;20598:4;20594:20;20590:1;20579:9;20575:17;20568:47;20632:131;20758:4;20632:131;:::i;:::-;20624:139;;20351:419;;;:::o;20776:224::-;20916:34;20912:1;20904:6;20900:14;20893:58;20985:7;20980:2;20972:6;20968:15;20961:32;20776:224;:::o;21006:366::-;21148:3;21169:67;21233:2;21228:3;21169:67;:::i;:::-;21162:74;;21245:93;21334:3;21245:93;:::i;:::-;21363:2;21358:3;21354:12;21347:19;;21006:366;;;:::o;21378:419::-;21544:4;21582:2;21571:9;21567:18;21559:26;;21631:9;21625:4;21621:20;21617:1;21606:9;21602:17;21595:47;21659:131;21785:4;21659:131;:::i;:::-;21651:139;;21378:419;;;:::o;21803:225::-;21943:34;21939:1;21931:6;21927:14;21920:58;22012:8;22007:2;21999:6;21995:15;21988:33;21803:225;:::o;22034:366::-;22176:3;22197:67;22261:2;22256:3;22197:67;:::i;:::-;22190:74;;22273:93;22362:3;22273:93;:::i;:::-;22391:2;22386:3;22382:12;22375:19;;22034:366;;;:::o;22406:419::-;22572:4;22610:2;22599:9;22595:18;22587:26;;22659:9;22653:4;22649:20;22645:1;22634:9;22630:17;22623:47;22687:131;22813:4;22687:131;:::i;:::-;22679:139;;22406:419;;;:::o;22831:223::-;22971:34;22967:1;22959:6;22955:14;22948:58;23040:6;23035:2;23027:6;23023:15;23016:31;22831:223;:::o;23060:366::-;23202:3;23223:67;23287:2;23282:3;23223:67;:::i;:::-;23216:74;;23299:93;23388:3;23299:93;:::i;:::-;23417:2;23412:3;23408:12;23401:19;;23060:366;;;:::o;23432:419::-;23598:4;23636:2;23625:9;23621:18;23613:26;;23685:9;23679:4;23675:20;23671:1;23660:9;23656:17;23649:47;23713:131;23839:4;23713:131;:::i;:::-;23705:139;;23432:419;;;:::o;23857:221::-;23997:34;23993:1;23985:6;23981:14;23974:58;24066:4;24061:2;24053:6;24049:15;24042:29;23857:221;:::o;24084:366::-;24226:3;24247:67;24311:2;24306:3;24247:67;:::i;:::-;24240:74;;24323:93;24412:3;24323:93;:::i;:::-;24441:2;24436:3;24432:12;24425:19;;24084:366;;;:::o;24456:419::-;24622:4;24660:2;24649:9;24645:18;24637:26;;24709:9;24703:4;24699:20;24695:1;24684:9;24680:17;24673:47;24737:131;24863:4;24737:131;:::i;:::-;24729:139;;24456:419;;;:::o;24881:224::-;25021:34;25017:1;25009:6;25005:14;24998:58;25090:7;25085:2;25077:6;25073:15;25066:32;24881:224;:::o;25111:366::-;25253:3;25274:67;25338:2;25333:3;25274:67;:::i;:::-;25267:74;;25350:93;25439:3;25350:93;:::i;:::-;25468:2;25463:3;25459:12;25452:19;;25111:366;;;:::o;25483:419::-;25649:4;25687:2;25676:9;25672:18;25664:26;;25736:9;25730:4;25726:20;25722:1;25711:9;25707:17;25700:47;25764:131;25890:4;25764:131;:::i;:::-;25756:139;;25483:419;;;:::o;25908:222::-;26048:34;26044:1;26036:6;26032:14;26025:58;26117:5;26112:2;26104:6;26100:15;26093:30;25908:222;:::o;26136:366::-;26278:3;26299:67;26363:2;26358:3;26299:67;:::i;:::-;26292:74;;26375:93;26464:3;26375:93;:::i;:::-;26493:2;26488:3;26484:12;26477:19;;26136:366;;;:::o;26508:419::-;26674:4;26712:2;26701:9;26697:18;26689:26;;26761:9;26755:4;26751:20;26747:1;26736:9;26732:17;26725:47;26789:131;26915:4;26789:131;:::i;:::-;26781:139;;26508:419;;;:::o;26933:172::-;27073:24;27069:1;27061:6;27057:14;27050:48;26933:172;:::o;27111:366::-;27253:3;27274:67;27338:2;27333:3;27274:67;:::i;:::-;27267:74;;27350:93;27439:3;27350:93;:::i;:::-;27468:2;27463:3;27459:12;27452:19;;27111:366;;;:::o;27483:419::-;27649:4;27687:2;27676:9;27672:18;27664:26;;27736:9;27730:4;27726:20;27722:1;27711:9;27707:17;27700:47;27764:131;27890:4;27764:131;:::i;:::-;27756:139;;27483:419;;;:::o;27908:297::-;28048:34;28044:1;28036:6;28032:14;28025:58;28117:34;28112:2;28104:6;28100:15;28093:59;28186:11;28181:2;28173:6;28169:15;28162:36;27908:297;:::o;28211:366::-;28353:3;28374:67;28438:2;28433:3;28374:67;:::i;:::-;28367:74;;28450:93;28539:3;28450:93;:::i;:::-;28568:2;28563:3;28559:12;28552:19;;28211:366;;;:::o;28583:419::-;28749:4;28787:2;28776:9;28772:18;28764:26;;28836:9;28830:4;28826:20;28822:1;28811:9;28807:17;28800:47;28864:131;28990:4;28864:131;:::i;:::-;28856:139;;28583:419;;;:::o;29008:230::-;29148:34;29144:1;29136:6;29132:14;29125:58;29217:13;29212:2;29204:6;29200:15;29193:38;29008:230;:::o;29244:366::-;29386:3;29407:67;29471:2;29466:3;29407:67;:::i;:::-;29400:74;;29483:93;29572:3;29483:93;:::i;:::-;29601:2;29596:3;29592:12;29585:19;;29244:366;;;:::o;29616:419::-;29782:4;29820:2;29809:9;29805:18;29797:26;;29869:9;29863:4;29859:20;29855:1;29844:9;29840:17;29833:47;29897:131;30023:4;29897:131;:::i;:::-;29889:139;;29616:419;;;:::o;30041:169::-;30181:21;30177:1;30169:6;30165:14;30158:45;30041:169;:::o;30216:366::-;30358:3;30379:67;30443:2;30438:3;30379:67;:::i;:::-;30372:74;;30455:93;30544:3;30455:93;:::i;:::-;30573:2;30568:3;30564:12;30557:19;;30216:366;;;:::o;30588:419::-;30754:4;30792:2;30781:9;30777:18;30769:26;;30841:9;30835:4;30831:20;30827:1;30816:9;30812:17;30805:47;30869:131;30995:4;30869:131;:::i;:::-;30861:139;;30588:419;;;:::o;31013:231::-;31153:34;31149:1;31141:6;31137:14;31130:58;31222:14;31217:2;31209:6;31205:15;31198:39;31013:231;:::o;31250:366::-;31392:3;31413:67;31477:2;31472:3;31413:67;:::i;:::-;31406:74;;31489:93;31578:3;31489:93;:::i;:::-;31607:2;31602:3;31598:12;31591:19;;31250:366;;;:::o;31622:419::-;31788:4;31826:2;31815:9;31811:18;31803:26;;31875:9;31869:4;31865:20;31861:1;31850:9;31846:17;31839:47;31903:131;32029:4;31903:131;:::i;:::-;31895:139;;31622:419;;;:::o;32047:194::-;32087:4;32107:20;32125:1;32107:20;:::i;:::-;32102:25;;32141:20;32159:1;32141:20;:::i;:::-;32136:25;;32185:1;32182;32178:9;32170:17;;32209:1;32203:4;32200:11;32197:37;;;32214:18;;:::i;:::-;32197:37;32047:194;;;;:::o;32247:225::-;32387:34;32383:1;32375:6;32371:14;32364:58;32456:8;32451:2;32443:6;32439:15;32432:33;32247:225;:::o;32478:366::-;32620:3;32641:67;32705:2;32700:3;32641:67;:::i;:::-;32634:74;;32717:93;32806:3;32717:93;:::i;:::-;32835:2;32830:3;32826:12;32819:19;;32478:366;;;:::o;32850:419::-;33016:4;33054:2;33043:9;33039:18;33031:26;;33103:9;33097:4;33093:20;33089:1;33078:9;33074:17;33067:47;33131:131;33257:4;33131:131;:::i;:::-;33123:139;;32850:419;;;:::o;33275:442::-;33424:4;33462:2;33451:9;33447:18;33439:26;;33475:71;33543:1;33532:9;33528:17;33519:6;33475:71;:::i;:::-;33556:72;33624:2;33613:9;33609:18;33600:6;33556:72;:::i;:::-;33638;33706:2;33695:9;33691:18;33682:6;33638:72;:::i;:::-;33275:442;;;;;;:::o;33723:147::-;33824:11;33861:3;33846:18;;33723:147;;;;:::o;33876:114::-;;:::o;33996:398::-;34155:3;34176:83;34257:1;34252:3;34176:83;:::i;:::-;34169:90;;34268:93;34357:3;34268:93;:::i;:::-;34386:1;34381:3;34377:11;34370:18;;33996:398;;;:::o;34400:379::-;34584:3;34606:147;34749:3;34606:147;:::i;:::-;34599:154;;34770:3;34763:10;;34400:379;;;:::o;34785:180::-;34833:77;34830:1;34823:88;34930:4;34927:1;34920:15;34954:4;34951:1;34944:15;34971:180;35019:77;35016:1;35009:88;35116:4;35113:1;35106:15;35140:4;35137:1;35130:15;35157:143;35214:5;35245:6;35239:13;35230:22;;35261:33;35288:5;35261:33;:::i;:::-;35157:143;;;;:::o;35306:351::-;35376:6;35425:2;35413:9;35404:7;35400:23;35396:32;35393:119;;;35431:79;;:::i;:::-;35393:119;35551:1;35576:64;35632:7;35623:6;35612:9;35608:22;35576:64;:::i;:::-;35566:74;;35522:128;35306:351;;;;:::o;35663:85::-;35708:7;35737:5;35726:16;;35663:85;;;:::o;35754:158::-;35812:9;35845:61;35863:42;35872:32;35898:5;35872:32;:::i;:::-;35863:42;:::i;:::-;35845:61;:::i;:::-;35832:74;;35754:158;;;:::o;35918:147::-;36013:45;36052:5;36013:45;:::i;:::-;36008:3;36001:58;35918:147;;:::o;36071:114::-;36138:6;36172:5;36166:12;36156:22;;36071:114;;;:::o;36191:184::-;36290:11;36324:6;36319:3;36312:19;36364:4;36359:3;36355:14;36340:29;;36191:184;;;;:::o;36381:132::-;36448:4;36471:3;36463:11;;36501:4;36496:3;36492:14;36484:22;;36381:132;;;:::o;36519:108::-;36596:24;36614:5;36596:24;:::i;:::-;36591:3;36584:37;36519:108;;:::o;36633:179::-;36702:10;36723:46;36765:3;36757:6;36723:46;:::i;:::-;36801:4;36796:3;36792:14;36778:28;;36633:179;;;;:::o;36818:113::-;36888:4;36920;36915:3;36911:14;36903:22;;36818:113;;;:::o;36967:732::-;37086:3;37115:54;37163:5;37115:54;:::i;:::-;37185:86;37264:6;37259:3;37185:86;:::i;:::-;37178:93;;37295:56;37345:5;37295:56;:::i;:::-;37374:7;37405:1;37390:284;37415:6;37412:1;37409:13;37390:284;;;37491:6;37485:13;37518:63;37577:3;37562:13;37518:63;:::i;:::-;37511:70;;37604:60;37657:6;37604:60;:::i;:::-;37594:70;;37450:224;37437:1;37434;37430:9;37425:14;;37390:284;;;37394:14;37690:3;37683:10;;37091:608;;;36967:732;;;;:::o;37705:831::-;37968:4;38006:3;37995:9;37991:19;37983:27;;38020:71;38088:1;38077:9;38073:17;38064:6;38020:71;:::i;:::-;38101:80;38177:2;38166:9;38162:18;38153:6;38101:80;:::i;:::-;38228:9;38222:4;38218:20;38213:2;38202:9;38198:18;38191:48;38256:108;38359:4;38350:6;38256:108;:::i;:::-;38248:116;;38374:72;38442:2;38431:9;38427:18;38418:6;38374:72;:::i;:::-;38456:73;38524:3;38513:9;38509:19;38500:6;38456:73;:::i;:::-;37705:831;;;;;;;;:::o;38542:807::-;38791:4;38829:3;38818:9;38814:19;38806:27;;38843:71;38911:1;38900:9;38896:17;38887:6;38843:71;:::i;:::-;38924:72;38992:2;38981:9;38977:18;38968:6;38924:72;:::i;:::-;39006:80;39082:2;39071:9;39067:18;39058:6;39006:80;:::i;:::-;39096;39172:2;39161:9;39157:18;39148:6;39096:80;:::i;:::-;39186:73;39254:3;39243:9;39239:19;39230:6;39186:73;:::i;:::-;39269;39337:3;39326:9;39322:19;39313:6;39269:73;:::i;:::-;38542:807;;;;;;;;;:::o;39355:143::-;39412:5;39443:6;39437:13;39428:22;;39459:33;39486:5;39459:33;:::i;:::-;39355:143;;;;:::o;39504:663::-;39592:6;39600;39608;39657:2;39645:9;39636:7;39632:23;39628:32;39625:119;;;39663:79;;:::i;:::-;39625:119;39783:1;39808:64;39864:7;39855:6;39844:9;39840:22;39808:64;:::i;:::-;39798:74;;39754:128;39921:2;39947:64;40003:7;39994:6;39983:9;39979:22;39947:64;:::i;:::-;39937:74;;39892:129;40060:2;40086:64;40142:7;40133:6;40122:9;40118:22;40086:64;:::i;:::-;40076:74;;40031:129;39504:663;;;;;:::o

Swarm Source

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