ETH Price: $2,815.78 (+7.49%)
 

Overview

Max Total Supply

1 DOLLA

Holders

121

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.00689780986186788 DOLLA

Value
$0.00
0xB14A6Ab5138835039AA35D70E4eDE6b38de099a9
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:
One

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-08
*/

/**
 * SPDX-License-Identifier: MIT
 */
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 One is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping;

    address public lpWallet;
    address public marketingWallet;

    uint256 public maxTokensForSwapback;
    uint256 public swapTokensAtAmount;

    uint256 public maxTransactionAmount;
    uint256 public maxWallet;

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

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

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;

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

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

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

    constructor() ERC20("One Dolla", "DOLLA") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _buyMarketingFee = 13;
        uint256 _buyLiquidityFee = 12;

        uint256 _sellMarketingFee = 23;
        uint256 _sellLiquidityFee = 22;

        uint256 totalSupply = 1 * 1e18;

        maxTransactionAmount = (totalSupply * 1) / 100; // 1% of total supply
        maxWallet = (totalSupply * 1) / 100; // 1% of total supply

        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swapback trigger
        maxTokensForSwapback = (totalSupply * 6) / 1000; // 0.6% max swapback

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

        marketingWallet = address(0x30CEE3668742B4b096c5dfDaD82c8b6b956EEB3a); 
        lpWallet = msg.sender;

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

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(marketingWallet, 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 trading. Irriversable.
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    /// @dev Removes the max wallet and max transaction limits
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

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

    /// @dev Changes the minimum balance of tokens the contract must have before swapping tokens for ETH. Base 100000, so 0.5% = 500.
    function updateSwapTokensAtAmount(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,
            "Swap amount cannot be higher than maxTokensForSwapback"
        );
        swapTokensAtAmount = 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 updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    /// @dev Changes the maximum amount of tokens a wallet can hold
    /// @param newNum Base 1000, so 1% = 10
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= 5,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = 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 excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    /// @dev Sets if the contract can sell tokens
    /// @param enabled set to false to disable selling
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }
    
    /// @dev Sets the fees for buys
    /// @param _marketingFee The fee for the marketing wallet
    /// @param _liquidityFee The fee for the liquidity pool
    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require(buyTotalFees <= 11, "Must keep fees at 11% or less");
    }

    /// @dev Sets the fees for sells
    /// @param _marketingFee The fee for the marketing wallet
    /// @param _liquidityFee The fee for the liquidity pool
    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        require(sellTotalFees <= 11, "Must keep fees at 11% 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 setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function updateLPWallet(address newLPWallet)
        external
        onlyOwner
    {
        lpWallet = newLPWallet;
    }

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

    event BoughtEarly(address indexed sniper);

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

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

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

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

            amount -= fees;
        }

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

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

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing;
        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 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;


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

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

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":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"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":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","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":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","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":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLPWallet","type":"address"}],"name":"updateLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMin","type":"uint256"},{"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600981526020017f4f6e6520446f6c6c6100000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f444f4c4c410000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000dbc565b5080600490816200010d919062000dbc565b50505062000130620001246200060360201b60201c565b6200060b60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c816001620006d160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062000f0d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000f0d565b6040518363ffffffff1660e01b8152600401620002af92919062000f50565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000f0d565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033d60a0516001620006d160201b60201c565b6200035260a0516001620007bb60201b60201c565b6000600d90506000600c90506000601790506000601690506000670de0b6b3a76400009050606460018262000388919062000fac565b62000394919062001026565b600a819055506064600182620003ab919062000fac565b620003b7919062001026565b600b81905550612710600582620003cf919062000fac565b620003db919062001026565b6009819055506103e8600682620003f3919062000fac565b620003ff919062001026565b60088190555084601081905550836011819055506011546010546200042591906200105e565b600f8190555082601381905550816014819055506014546013546200044b91906200105e565b6012819055507330cee3668742b4b096c5dfdad82c8b6b956eeb3a600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000509620004fb6200085c60201b60201c565b60016200088660201b60201c565b6200051c3060016200088660201b60201c565b6200053161dead60016200088660201b60201c565b62000566600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200088660201b60201c565b620005886200057a6200085c60201b60201c565b6001620006d160201b60201c565b6200059b306001620006d160201b60201c565b620005b061dead6001620006d160201b60201c565b620005e5600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006d160201b60201c565b620005f73382620009c060201b60201c565b505050505050620011f6565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006e16200060360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007076200085c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200075790620010fa565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008966200060360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008bc6200085c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000915576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090c90620010fa565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009b4919062001139565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a2990620011a6565b60405180910390fd5b62000a466000838362000b3860201b60201c565b806002600082825462000a5a91906200105e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000ab191906200105e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b189190620011d9565b60405180910390a362000b346000838362000b3d60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bc457607f821691505b60208210810362000bda5762000bd962000b7c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c05565b62000c50868362000c05565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c9d62000c9762000c918462000c68565b62000c72565b62000c68565b9050919050565b6000819050919050565b62000cb98362000c7c565b62000cd162000cc88262000ca4565b84845462000c12565b825550505050565b600090565b62000ce862000cd9565b62000cf581848462000cae565b505050565b5b8181101562000d1d5762000d1160008262000cde565b60018101905062000cfb565b5050565b601f82111562000d6c5762000d368162000be0565b62000d418462000bf5565b8101602085101562000d51578190505b62000d6962000d608562000bf5565b83018262000cfa565b50505b505050565b600082821c905092915050565b600062000d916000198460080262000d71565b1980831691505092915050565b600062000dac838362000d7e565b9150826002028217905092915050565b62000dc78262000b42565b67ffffffffffffffff81111562000de35762000de262000b4d565b5b62000def825462000bab565b62000dfc82828562000d21565b600060209050601f83116001811462000e34576000841562000e1f578287015190505b62000e2b858262000d9e565b86555062000e9b565b601f19841662000e448662000be0565b60005b8281101562000e6e5784890151825560018201915060208501945060208101905062000e47565b8683101562000e8e578489015162000e8a601f89168262000d7e565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ed58262000ea8565b9050919050565b62000ee78162000ec8565b811462000ef357600080fd5b50565b60008151905062000f078162000edc565b92915050565b60006020828403121562000f265762000f2562000ea3565b5b600062000f368482850162000ef6565b91505092915050565b62000f4a8162000ec8565b82525050565b600060408201905062000f67600083018562000f3f565b62000f76602083018462000f3f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fb98262000c68565b915062000fc68362000c68565b925082820262000fd68162000c68565b9150828204841483151762000ff05762000fef62000f7d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010338262000c68565b9150620010408362000c68565b92508262001053576200105262000ff7565b5b828204905092915050565b60006200106b8262000c68565b9150620010788362000c68565b925082820190508082111562001093576200109262000f7d565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010e260208362001099565b9150620010ef82620010aa565b602082019050919050565b600060208201905081810360008301526200111581620010d3565b9050919050565b60008115159050919050565b62001133816200111c565b82525050565b600060208201905062001150600083018462001128565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200118e601f8362001099565b91506200119b8262001156565b602082019050919050565b60006020820190508181036000830152620011c1816200117f565b9050919050565b620011d38162000c68565b82525050565b6000602082019050620011f06000830184620011c8565b92915050565b60805160a051614e1a62001254600039600081816112ad015281816119670152612722015260008181610e0f015281816126ca01528181613664015281816137450152818161376c01528181613808015261382f0152614e1a6000f3fe6080604052600436106103035760003560e01c806377c1835211610190578063c0246668116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610bab578063f637434214610bd4578063f8b45b0514610bff578063fbc10c5514610c2a5761030a565b8063e2f4560514610b2a578063e884f26014610b55578063f11a24d314610b805761030a565b8063c024666814610a1a578063c18bc19514610a43578063c876d0b914610a6c578063c8c8ebe414610a97578063d85ba06314610ac2578063dd62ed3e14610aed5761030a565b806395d89b4111610149578063a9059cbb11610123578063a9059cbb1461094c578063aacebbe314610989578063b62496f5146109b2578063bbc0c742146109ef5761030a565b806395d89b41146108bb5780639a7a23d6146108e6578063a457c2d71461090f5761030a565b806377c18352146107cf5780637bce5a04146107fa5780638a8c523c146108255780638da5cb5b1461083c5780639213691314610867578063924de9b7146108925761030a565b8063395093511161024f5780636a486a8e11610208578063715018a6116101e2578063715018a614610739578063751039fc146107505780637571336a1461077b57806375f0a874146107a45761030a565b80636a486a8e146106a65780636ddd1713146106d157806370a08231146106fc5761030a565b8063395093511461058257806349bd5a5e146105bf5780634a62bb65146105ea5780634fbee193146106155780636303516c1461065257806366ca9b831461067d5761030a565b80631a8145bb116102bc57806323b872dd1161029657806323b872dd146104b257806327c8f835146104ef5780632c0e22cc1461051a578063313ce567146105575761030a565b80631a8145bb146104335780631f3fed8f1461045e578063203e727e146104895761030a565b806302dbd8f81461030f57806306fdde0314610338578063095ea7b31461036357806310d5de53146103a05780631694505e146103dd57806318160ddd146104085761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061033660048036038101906103319190613939565b610c53565b005b34801561034457600080fd5b5061034d610d3d565b60405161035a9190613a09565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613a89565b610dcf565b6040516103979190613ae4565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613aff565b610ded565b6040516103d49190613ae4565b60405180910390f35b3480156103e957600080fd5b506103f2610e0d565b6040516103ff9190613b8b565b60405180910390f35b34801561041457600080fd5b5061041d610e31565b60405161042a9190613bb5565b60405180910390f35b34801561043f57600080fd5b50610448610e3b565b6040516104559190613bb5565b60405180910390f35b34801561046a57600080fd5b50610473610e41565b6040516104809190613bb5565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190613bd0565b610e47565b005b3480156104be57600080fd5b506104d960048036038101906104d49190613bfd565b610f56565b6040516104e69190613ae4565b60405180910390f35b3480156104fb57600080fd5b5061050461104e565b6040516105119190613c5f565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190613939565b611054565b60405161054e9190613ae4565b60405180910390f35b34801561056357600080fd5b5061056c6111f6565b6040516105799190613c96565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a49190613a89565b6111ff565b6040516105b69190613ae4565b60405180910390f35b3480156105cb57600080fd5b506105d46112ab565b6040516105e19190613c5f565b60405180910390f35b3480156105f657600080fd5b506105ff6112cf565b60405161060c9190613ae4565b60405180910390f35b34801561062157600080fd5b5061063c60048036038101906106379190613aff565b6112e2565b6040516106499190613ae4565b60405180910390f35b34801561065e57600080fd5b50610667611338565b6040516106749190613c5f565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f9190613939565b61135e565b005b3480156106b257600080fd5b506106bb611448565b6040516106c89190613bb5565b60405180910390f35b3480156106dd57600080fd5b506106e661144e565b6040516106f39190613ae4565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190613aff565b611461565b6040516107309190613bb5565b60405180910390f35b34801561074557600080fd5b5061074e6114a9565b005b34801561075c57600080fd5b50610765611531565b6040516107729190613ae4565b60405180910390f35b34801561078757600080fd5b506107a2600480360381019061079d9190613cdd565b6115d1565b005b3480156107b057600080fd5b506107b96116a8565b6040516107c69190613c5f565b60405180910390f35b3480156107db57600080fd5b506107e46116ce565b6040516107f19190613bb5565b60405180910390f35b34801561080657600080fd5b5061080f6116d4565b60405161081c9190613bb5565b60405180910390f35b34801561083157600080fd5b5061083a6116da565b005b34801561084857600080fd5b5061085161178e565b60405161085e9190613c5f565b60405180910390f35b34801561087357600080fd5b5061087c6117b8565b6040516108899190613bb5565b60405180910390f35b34801561089e57600080fd5b506108b960048036038101906108b49190613d1d565b6117be565b005b3480156108c757600080fd5b506108d0611857565b6040516108dd9190613a09565b60405180910390f35b3480156108f257600080fd5b5061090d60048036038101906109089190613cdd565b6118e9565b005b34801561091b57600080fd5b5061093660048036038101906109319190613a89565b611a01565b6040516109439190613ae4565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e9190613a89565b611aec565b6040516109809190613ae4565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab9190613aff565b611b0a565b005b3480156109be57600080fd5b506109d960048036038101906109d49190613aff565b611c46565b6040516109e69190613ae4565b60405180910390f35b3480156109fb57600080fd5b50610a04611c66565b604051610a119190613ae4565b60405180910390f35b348015610a2657600080fd5b50610a416004803603810190610a3c9190613cdd565b611c79565b005b348015610a4f57600080fd5b50610a6a6004803603810190610a659190613bd0565b611d9e565b005b348015610a7857600080fd5b50610a81611e87565b604051610a8e9190613ae4565b60405180910390f35b348015610aa357600080fd5b50610aac611e9a565b604051610ab99190613bb5565b60405180910390f35b348015610ace57600080fd5b50610ad7611ea0565b604051610ae49190613bb5565b60405180910390f35b348015610af957600080fd5b50610b146004803603810190610b0f9190613d4a565b611ea6565b604051610b219190613bb5565b60405180910390f35b348015610b3657600080fd5b50610b3f611f2d565b604051610b4c9190613bb5565b60405180910390f35b348015610b6157600080fd5b50610b6a611f33565b604051610b779190613ae4565b60405180910390f35b348015610b8c57600080fd5b50610b95611fd3565b604051610ba29190613bb5565b60405180910390f35b348015610bb757600080fd5b50610bd26004803603810190610bcd9190613aff565b611fd9565b005b348015610be057600080fd5b50610be96120d0565b604051610bf69190613bb5565b60405180910390f35b348015610c0b57600080fd5b50610c146120d6565b604051610c219190613bb5565b60405180910390f35b348015610c3657600080fd5b50610c516004803603810190610c4c9190613aff565b6120dc565b005b610c5b61219c565b73ffffffffffffffffffffffffffffffffffffffff16610c7961178e565b73ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613dd6565b60405180910390fd5b8160138190555080601481905550601454601354610ced9190613e25565b601281905550600b6012541115610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090613ea5565b60405180910390fd5b5050565b606060038054610d4c90613ef4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7890613ef4565b8015610dc55780601f10610d9a57610100808354040283529160200191610dc5565b820191906000526020600020905b815481529060010190602001808311610da857829003601f168201915b5050505050905090565b6000610de3610ddc61219c565b84846121a4565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60165481565b60155481565b610e4f61219c565b73ffffffffffffffffffffffffffffffffffffffff16610e6d61178e565b73ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90613dd6565b60405180910390fd5b670de0b6b3a76400006103e86001610ed9610e31565b610ee39190613f25565b610eed9190613f96565b610ef79190613f96565b811015610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3090614039565b60405180910390fd5b670de0b6b3a764000081610f4d9190613f25565b600a8190555050565b6000610f6384848461236d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fae61219c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561102e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611025906140cb565b60405180910390fd5b6110428561103a61219c565b8584036121a4565b60019150509392505050565b61dead81565b600061105e61219c565b73ffffffffffffffffffffffffffffffffffffffff1661107c61178e565b73ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c990613dd6565b60405180910390fd5b6001831015611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d9061415d565b60405180910390fd5b6101f483111561115b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611152906141ef565b60405180910390fd5b8183111561119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590614281565b60405180910390fd5b620186a06111aa610e31565b846111b59190613f25565b6111bf9190613f96565b600981905550620186a06111d1610e31565b836111dc9190613f25565b6111e69190613f96565b6008819055506001905092915050565b60006012905090565b60006112a161120c61219c565b84846001600061121a61219c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129c9190613e25565b6121a4565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61136661219c565b73ffffffffffffffffffffffffffffffffffffffff1661138461178e565b73ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190613dd6565b60405180910390fd5b81601081905550806011819055506011546010546113f89190613e25565b600f81905550600b600f541115611444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143b90613ea5565b60405180910390fd5b5050565b60125481565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114b161219c565b73ffffffffffffffffffffffffffffffffffffffff166114cf61178e565b73ffffffffffffffffffffffffffffffffffffffff1614611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90613dd6565b60405180910390fd5b61152f6000612f9e565b565b600061153b61219c565b73ffffffffffffffffffffffffffffffffffffffff1661155961178e565b73ffffffffffffffffffffffffffffffffffffffff16146115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a690613dd6565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b6115d961219c565b73ffffffffffffffffffffffffffffffffffffffff166115f761178e565b73ffffffffffffffffffffffffffffffffffffffff161461164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490613dd6565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b60105481565b6116e261219c565b73ffffffffffffffffffffffffffffffffffffffff1661170061178e565b73ffffffffffffffffffffffffffffffffffffffff1614611756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174d90613dd6565b60405180910390fd5b6001600c60026101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6117c661219c565b73ffffffffffffffffffffffffffffffffffffffff166117e461178e565b73ffffffffffffffffffffffffffffffffffffffff161461183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183190613dd6565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b60606004805461186690613ef4565b80601f016020809104026020016040519081016040528092919081815260200182805461189290613ef4565b80156118df5780601f106118b4576101008083540402835291602001916118df565b820191906000526020600020905b8154815290600101906020018083116118c257829003601f168201915b5050505050905090565b6118f161219c565b73ffffffffffffffffffffffffffffffffffffffff1661190f61178e565b73ffffffffffffffffffffffffffffffffffffffff1614611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90613dd6565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90614313565b60405180910390fd5b6119fd8282613064565b5050565b60008060016000611a1061219c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906143a5565b60405180910390fd5b611ae1611ad861219c565b858584036121a4565b600191505092915050565b6000611b00611af961219c565b848461236d565b6001905092915050565b611b1261219c565b73ffffffffffffffffffffffffffffffffffffffff16611b3061178e565b73ffffffffffffffffffffffffffffffffffffffff1614611b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7d90613dd6565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60196020528060005260406000206000915054906101000a900460ff1681565b600c60029054906101000a900460ff1681565b611c8161219c565b73ffffffffffffffffffffffffffffffffffffffff16611c9f61178e565b73ffffffffffffffffffffffffffffffffffffffff1614611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613dd6565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d929190613ae4565b60405180910390a25050565b611da661219c565b73ffffffffffffffffffffffffffffffffffffffff16611dc461178e565b73ffffffffffffffffffffffffffffffffffffffff1614611e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1190613dd6565b60405180910390fd5b6005811015611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5590614437565b60405180910390fd5b6103e8611e69610e31565b82611e749190613f25565b611e7e9190613f96565b600b8190555050565b600e60009054906101000a900460ff1681565b600a5481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611f3d61219c565b73ffffffffffffffffffffffffffffffffffffffff16611f5b61178e565b73ffffffffffffffffffffffffffffffffffffffff1614611fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa890613dd6565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b611fe161219c565b73ffffffffffffffffffffffffffffffffffffffff16611fff61178e565b73ffffffffffffffffffffffffffffffffffffffff1614612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204c90613dd6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb906144c9565b60405180910390fd5b6120cd81612f9e565b50565b60145481565b600b5481565b6120e461219c565b73ffffffffffffffffffffffffffffffffffffffff1661210261178e565b73ffffffffffffffffffffffffffffffffffffffff1614612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613dd6565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a9061455b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612279906145ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123609190613bb5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d39061467f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361244b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244290614711565b60405180910390fd5b600081036124645761245f83836000613105565b612f99565b600c60009054906101000a900460ff1615612b275761248161178e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124ef57506124bf61178e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125285750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612562575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561257b5750600560149054906101000a900460ff16155b15612b2657600c60029054906101000a900460ff1661267557601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126355750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266b9061477d565b60405180910390fd5b5b600e60009054906101000a900460ff161561283d5761269261178e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561271957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561277157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561283c5743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee90614835565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e05750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561298757600a5481111561292a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612921906148c7565b60405180910390fd5b600b5461293683611461565b826129419190613e25565b1115612982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297990614933565b60405180910390fd5b612b25565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a2a5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a7957600a54811115612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b906149c5565b60405180910390fd5b612b24565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b2357600b54612ad683611461565b82612ae19190613e25565b1115612b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1990614933565b60405180910390fd5b5b5b5b5b5b6000612b3230611461565b905060006009548210159050808015612b575750600c60019054906101000a900460ff165b8015612b705750600560149054906101000a900460ff16155b8015612bc65750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c1c5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c725750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cb6576001600560146101000a81548160ff021916908315150217905550612c9a613384565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d6c5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d7657600090505b60008115612f8957601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dd957506000601254115b15612e7357612e066064612df86012548861357990919063ffffffff16565b61358f90919063ffffffff16565b905060125460145482612e199190613f25565b612e239190613f96565b60166000828254612e349190613e25565b9250508190555060125460135482612e4c9190613f25565b612e569190613f96565b60156000828254612e679190613e25565b92505081905550612f65565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ece57506000600f54115b15612f6457612efb6064612eed600f548861357990919063ffffffff16565b61358f90919063ffffffff16565b9050600f5460115482612f0e9190613f25565b612f189190613f96565b60166000828254612f299190613e25565b92505081905550600f5460105482612f419190613f25565b612f4b9190613f96565b60156000828254612f5c9190613e25565b925050819055505b5b6000811115612f7a57612f79873083613105565b5b8085612f8691906149e5565b94505b612f94878787613105565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316b9061467f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131da90614711565b60405180910390fd5b6131ee8383836135a5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326b90614a8b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133079190613e25565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161336b9190613bb5565b60405180910390a361337e8484846135aa565b50505050565b600061338f30611461565b905060006015546016546133a39190613e25565b90506000808314806133b55750600082145b156133c257505050613577565b6008548311156133d25760085492505b6000600283601654866133e59190613f25565b6133ef9190613f96565b6133f99190613f96565b9050600061341082866135af90919063ffffffff16565b90506000479050613420826135c5565b600061343582476135af90919063ffffffff16565b90506000613460876134526015548561357990919063ffffffff16565b61358f90919063ffffffff16565b90506000818361347091906149e5565b9050600060168190555060006015819055506000861180156134925750600081115b156134df576134a18682613802565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826016546040516134d693929190614aab565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161352590614b13565b60006040518083038185875af1925050503d8060008114613562576040519150601f19603f3d011682016040523d82523d6000602084013e613567565b606091505b5050809750505050505050505050505b565b600081836135879190613f25565b905092915050565b6000818361359d9190613f96565b905092915050565b505050565b505050565b600081836135bd91906149e5565b905092915050565b6000600267ffffffffffffffff8111156135e2576135e1614b28565b5b6040519080825280602002602001820160405280156136105781602001602082028036833780820191505090505b509050308160008151811061362857613627614b57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f19190614b9b565b8160018151811061370557613704614b57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061376a307f0000000000000000000000000000000000000000000000000000000000000000846121a4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016137cc959493929190614cc1565b600060405180830381600087803b1580156137e657600080fd5b505af11580156137fa573d6000803e3d6000fd5b505050505050565b61382d307f0000000000000000000000000000000000000000000000000000000000000000846121a4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016138b496959493929190614d1b565b60606040518083038185885af11580156138d2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138f79190614d91565b5050505050565b600080fd5b6000819050919050565b61391681613903565b811461392157600080fd5b50565b6000813590506139338161390d565b92915050565b600080604083850312156139505761394f6138fe565b5b600061395e85828601613924565b925050602061396f85828601613924565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139b3578082015181840152602081019050613998565b60008484015250505050565b6000601f19601f8301169050919050565b60006139db82613979565b6139e58185613984565b93506139f5818560208601613995565b6139fe816139bf565b840191505092915050565b60006020820190508181036000830152613a2381846139d0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a5682613a2b565b9050919050565b613a6681613a4b565b8114613a7157600080fd5b50565b600081359050613a8381613a5d565b92915050565b60008060408385031215613aa057613a9f6138fe565b5b6000613aae85828601613a74565b9250506020613abf85828601613924565b9150509250929050565b60008115159050919050565b613ade81613ac9565b82525050565b6000602082019050613af96000830184613ad5565b92915050565b600060208284031215613b1557613b146138fe565b5b6000613b2384828501613a74565b91505092915050565b6000819050919050565b6000613b51613b4c613b4784613a2b565b613b2c565b613a2b565b9050919050565b6000613b6382613b36565b9050919050565b6000613b7582613b58565b9050919050565b613b8581613b6a565b82525050565b6000602082019050613ba06000830184613b7c565b92915050565b613baf81613903565b82525050565b6000602082019050613bca6000830184613ba6565b92915050565b600060208284031215613be657613be56138fe565b5b6000613bf484828501613924565b91505092915050565b600080600060608486031215613c1657613c156138fe565b5b6000613c2486828701613a74565b9350506020613c3586828701613a74565b9250506040613c4686828701613924565b9150509250925092565b613c5981613a4b565b82525050565b6000602082019050613c746000830184613c50565b92915050565b600060ff82169050919050565b613c9081613c7a565b82525050565b6000602082019050613cab6000830184613c87565b92915050565b613cba81613ac9565b8114613cc557600080fd5b50565b600081359050613cd781613cb1565b92915050565b60008060408385031215613cf457613cf36138fe565b5b6000613d0285828601613a74565b9250506020613d1385828601613cc8565b9150509250929050565b600060208284031215613d3357613d326138fe565b5b6000613d4184828501613cc8565b91505092915050565b60008060408385031215613d6157613d606138fe565b5b6000613d6f85828601613a74565b9250506020613d8085828601613a74565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613dc0602083613984565b9150613dcb82613d8a565b602082019050919050565b60006020820190508181036000830152613def81613db3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e3082613903565b9150613e3b83613903565b9250828201905080821115613e5357613e52613df6565b5b92915050565b7f4d757374206b656570206665657320617420313125206f72206c657373000000600082015250565b6000613e8f601d83613984565b9150613e9a82613e59565b602082019050919050565b60006020820190508181036000830152613ebe81613e82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f0c57607f821691505b602082108103613f1f57613f1e613ec5565b5b50919050565b6000613f3082613903565b9150613f3b83613903565b9250828202613f4981613903565b91508282048414831517613f6057613f5f613df6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fa182613903565b9150613fac83613903565b925082613fbc57613fbb613f67565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614023602f83613984565b915061402e82613fc7565b604082019050919050565b6000602082019050818103600083015261405281614016565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140b5602883613984565b91506140c082614059565b604082019050919050565b600060208201905081810360008301526140e4816140a8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614147603583613984565b9150614152826140eb565b604082019050919050565b600060208201905081810360008301526141768161413a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141d9603483613984565b91506141e48261417d565b604082019050919050565b60006020820190508181036000830152614208816141cc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e206d6178546f6b656e73466f72537761706261636b00000000000000000000602082015250565b600061426b603683613984565b91506142768261420f565b604082019050919050565b6000602082019050818103600083015261429a8161425e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142fd603983613984565b9150614308826142a1565b604082019050919050565b6000602082019050818103600083015261432c816142f0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061438f602583613984565b915061439a82614333565b604082019050919050565b600060208201905081810360008301526143be81614382565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614421602483613984565b915061442c826143c5565b604082019050919050565b6000602082019050818103600083015261445081614414565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144b3602683613984565b91506144be82614457565b604082019050919050565b600060208201905081810360008301526144e2816144a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614545602483613984565b9150614550826144e9565b604082019050919050565b6000602082019050818103600083015261457481614538565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145d7602283613984565b91506145e28261457b565b604082019050919050565b60006020820190508181036000830152614606816145ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614669602583613984565b91506146748261460d565b604082019050919050565b600060208201905081810360008301526146988161465c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146fb602383613984565b91506147068261469f565b604082019050919050565b6000602082019050818103600083015261472a816146ee565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614767601683613984565b915061477282614731565b602082019050919050565b600060208201905081810360008301526147968161475a565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061481f604983613984565b915061482a8261479d565b606082019050919050565b6000602082019050818103600083015261484e81614812565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006148b1603583613984565b91506148bc82614855565b604082019050919050565b600060208201905081810360008301526148e0816148a4565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061491d601383613984565b9150614928826148e7565b602082019050919050565b6000602082019050818103600083015261494c81614910565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006149af603683613984565b91506149ba82614953565b604082019050919050565b600060208201905081810360008301526149de816149a2565b9050919050565b60006149f082613903565b91506149fb83613903565b9250828203905081811115614a1357614a12613df6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614a75602683613984565b9150614a8082614a19565b604082019050919050565b60006020820190508181036000830152614aa481614a68565b9050919050565b6000606082019050614ac06000830186613ba6565b614acd6020830185613ba6565b614ada6040830184613ba6565b949350505050565b600081905092915050565b50565b6000614afd600083614ae2565b9150614b0882614aed565b600082019050919050565b6000614b1e82614af0565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614b9581613a5d565b92915050565b600060208284031215614bb157614bb06138fe565b5b6000614bbf84828501614b86565b91505092915050565b6000819050919050565b6000614bed614be8614be384614bc8565b613b2c565b613903565b9050919050565b614bfd81614bd2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c3881613a4b565b82525050565b6000614c4a8383614c2f565b60208301905092915050565b6000602082019050919050565b6000614c6e82614c03565b614c788185614c0e565b9350614c8383614c1f565b8060005b83811015614cb4578151614c9b8882614c3e565b9750614ca683614c56565b925050600181019050614c87565b5085935050505092915050565b600060a082019050614cd66000830188613ba6565b614ce36020830187614bf4565b8181036040830152614cf58186614c63565b9050614d046060830185613c50565b614d116080830184613ba6565b9695505050505050565b600060c082019050614d306000830189613c50565b614d3d6020830188613ba6565b614d4a6040830187614bf4565b614d576060830186614bf4565b614d646080830185613c50565b614d7160a0830184613ba6565b979650505050505050565b600081519050614d8b8161390d565b92915050565b600080600060608486031215614daa57614da96138fe565b5b6000614db886828701614d7c565b9350506020614dc986828701614d7c565b9250506040614dda86828701614d7c565b915050925092509256fea264697066735822122050424c96131af1712dd74662acdd30d951c3e836f8bb81f2c84ea178872f283964736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103035760003560e01c806377c1835211610190578063c0246668116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610bab578063f637434214610bd4578063f8b45b0514610bff578063fbc10c5514610c2a5761030a565b8063e2f4560514610b2a578063e884f26014610b55578063f11a24d314610b805761030a565b8063c024666814610a1a578063c18bc19514610a43578063c876d0b914610a6c578063c8c8ebe414610a97578063d85ba06314610ac2578063dd62ed3e14610aed5761030a565b806395d89b4111610149578063a9059cbb11610123578063a9059cbb1461094c578063aacebbe314610989578063b62496f5146109b2578063bbc0c742146109ef5761030a565b806395d89b41146108bb5780639a7a23d6146108e6578063a457c2d71461090f5761030a565b806377c18352146107cf5780637bce5a04146107fa5780638a8c523c146108255780638da5cb5b1461083c5780639213691314610867578063924de9b7146108925761030a565b8063395093511161024f5780636a486a8e11610208578063715018a6116101e2578063715018a614610739578063751039fc146107505780637571336a1461077b57806375f0a874146107a45761030a565b80636a486a8e146106a65780636ddd1713146106d157806370a08231146106fc5761030a565b8063395093511461058257806349bd5a5e146105bf5780634a62bb65146105ea5780634fbee193146106155780636303516c1461065257806366ca9b831461067d5761030a565b80631a8145bb116102bc57806323b872dd1161029657806323b872dd146104b257806327c8f835146104ef5780632c0e22cc1461051a578063313ce567146105575761030a565b80631a8145bb146104335780631f3fed8f1461045e578063203e727e146104895761030a565b806302dbd8f81461030f57806306fdde0314610338578063095ea7b31461036357806310d5de53146103a05780631694505e146103dd57806318160ddd146104085761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061033660048036038101906103319190613939565b610c53565b005b34801561034457600080fd5b5061034d610d3d565b60405161035a9190613a09565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613a89565b610dcf565b6040516103979190613ae4565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613aff565b610ded565b6040516103d49190613ae4565b60405180910390f35b3480156103e957600080fd5b506103f2610e0d565b6040516103ff9190613b8b565b60405180910390f35b34801561041457600080fd5b5061041d610e31565b60405161042a9190613bb5565b60405180910390f35b34801561043f57600080fd5b50610448610e3b565b6040516104559190613bb5565b60405180910390f35b34801561046a57600080fd5b50610473610e41565b6040516104809190613bb5565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190613bd0565b610e47565b005b3480156104be57600080fd5b506104d960048036038101906104d49190613bfd565b610f56565b6040516104e69190613ae4565b60405180910390f35b3480156104fb57600080fd5b5061050461104e565b6040516105119190613c5f565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190613939565b611054565b60405161054e9190613ae4565b60405180910390f35b34801561056357600080fd5b5061056c6111f6565b6040516105799190613c96565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a49190613a89565b6111ff565b6040516105b69190613ae4565b60405180910390f35b3480156105cb57600080fd5b506105d46112ab565b6040516105e19190613c5f565b60405180910390f35b3480156105f657600080fd5b506105ff6112cf565b60405161060c9190613ae4565b60405180910390f35b34801561062157600080fd5b5061063c60048036038101906106379190613aff565b6112e2565b6040516106499190613ae4565b60405180910390f35b34801561065e57600080fd5b50610667611338565b6040516106749190613c5f565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f9190613939565b61135e565b005b3480156106b257600080fd5b506106bb611448565b6040516106c89190613bb5565b60405180910390f35b3480156106dd57600080fd5b506106e661144e565b6040516106f39190613ae4565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190613aff565b611461565b6040516107309190613bb5565b60405180910390f35b34801561074557600080fd5b5061074e6114a9565b005b34801561075c57600080fd5b50610765611531565b6040516107729190613ae4565b60405180910390f35b34801561078757600080fd5b506107a2600480360381019061079d9190613cdd565b6115d1565b005b3480156107b057600080fd5b506107b96116a8565b6040516107c69190613c5f565b60405180910390f35b3480156107db57600080fd5b506107e46116ce565b6040516107f19190613bb5565b60405180910390f35b34801561080657600080fd5b5061080f6116d4565b60405161081c9190613bb5565b60405180910390f35b34801561083157600080fd5b5061083a6116da565b005b34801561084857600080fd5b5061085161178e565b60405161085e9190613c5f565b60405180910390f35b34801561087357600080fd5b5061087c6117b8565b6040516108899190613bb5565b60405180910390f35b34801561089e57600080fd5b506108b960048036038101906108b49190613d1d565b6117be565b005b3480156108c757600080fd5b506108d0611857565b6040516108dd9190613a09565b60405180910390f35b3480156108f257600080fd5b5061090d60048036038101906109089190613cdd565b6118e9565b005b34801561091b57600080fd5b5061093660048036038101906109319190613a89565b611a01565b6040516109439190613ae4565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e9190613a89565b611aec565b6040516109809190613ae4565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab9190613aff565b611b0a565b005b3480156109be57600080fd5b506109d960048036038101906109d49190613aff565b611c46565b6040516109e69190613ae4565b60405180910390f35b3480156109fb57600080fd5b50610a04611c66565b604051610a119190613ae4565b60405180910390f35b348015610a2657600080fd5b50610a416004803603810190610a3c9190613cdd565b611c79565b005b348015610a4f57600080fd5b50610a6a6004803603810190610a659190613bd0565b611d9e565b005b348015610a7857600080fd5b50610a81611e87565b604051610a8e9190613ae4565b60405180910390f35b348015610aa357600080fd5b50610aac611e9a565b604051610ab99190613bb5565b60405180910390f35b348015610ace57600080fd5b50610ad7611ea0565b604051610ae49190613bb5565b60405180910390f35b348015610af957600080fd5b50610b146004803603810190610b0f9190613d4a565b611ea6565b604051610b219190613bb5565b60405180910390f35b348015610b3657600080fd5b50610b3f611f2d565b604051610b4c9190613bb5565b60405180910390f35b348015610b6157600080fd5b50610b6a611f33565b604051610b779190613ae4565b60405180910390f35b348015610b8c57600080fd5b50610b95611fd3565b604051610ba29190613bb5565b60405180910390f35b348015610bb757600080fd5b50610bd26004803603810190610bcd9190613aff565b611fd9565b005b348015610be057600080fd5b50610be96120d0565b604051610bf69190613bb5565b60405180910390f35b348015610c0b57600080fd5b50610c146120d6565b604051610c219190613bb5565b60405180910390f35b348015610c3657600080fd5b50610c516004803603810190610c4c9190613aff565b6120dc565b005b610c5b61219c565b73ffffffffffffffffffffffffffffffffffffffff16610c7961178e565b73ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613dd6565b60405180910390fd5b8160138190555080601481905550601454601354610ced9190613e25565b601281905550600b6012541115610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090613ea5565b60405180910390fd5b5050565b606060038054610d4c90613ef4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7890613ef4565b8015610dc55780601f10610d9a57610100808354040283529160200191610dc5565b820191906000526020600020905b815481529060010190602001808311610da857829003601f168201915b5050505050905090565b6000610de3610ddc61219c565b84846121a4565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60165481565b60155481565b610e4f61219c565b73ffffffffffffffffffffffffffffffffffffffff16610e6d61178e565b73ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90613dd6565b60405180910390fd5b670de0b6b3a76400006103e86001610ed9610e31565b610ee39190613f25565b610eed9190613f96565b610ef79190613f96565b811015610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3090614039565b60405180910390fd5b670de0b6b3a764000081610f4d9190613f25565b600a8190555050565b6000610f6384848461236d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fae61219c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561102e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611025906140cb565b60405180910390fd5b6110428561103a61219c565b8584036121a4565b60019150509392505050565b61dead81565b600061105e61219c565b73ffffffffffffffffffffffffffffffffffffffff1661107c61178e565b73ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c990613dd6565b60405180910390fd5b6001831015611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d9061415d565b60405180910390fd5b6101f483111561115b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611152906141ef565b60405180910390fd5b8183111561119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590614281565b60405180910390fd5b620186a06111aa610e31565b846111b59190613f25565b6111bf9190613f96565b600981905550620186a06111d1610e31565b836111dc9190613f25565b6111e69190613f96565b6008819055506001905092915050565b60006012905090565b60006112a161120c61219c565b84846001600061121a61219c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129c9190613e25565b6121a4565b6001905092915050565b7f000000000000000000000000103e9fd18991ad01fc2da1cea9bb777febef1e8681565b600c60009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61136661219c565b73ffffffffffffffffffffffffffffffffffffffff1661138461178e565b73ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190613dd6565b60405180910390fd5b81601081905550806011819055506011546010546113f89190613e25565b600f81905550600b600f541115611444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143b90613ea5565b60405180910390fd5b5050565b60125481565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114b161219c565b73ffffffffffffffffffffffffffffffffffffffff166114cf61178e565b73ffffffffffffffffffffffffffffffffffffffff1614611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90613dd6565b60405180910390fd5b61152f6000612f9e565b565b600061153b61219c565b73ffffffffffffffffffffffffffffffffffffffff1661155961178e565b73ffffffffffffffffffffffffffffffffffffffff16146115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a690613dd6565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b6115d961219c565b73ffffffffffffffffffffffffffffffffffffffff166115f761178e565b73ffffffffffffffffffffffffffffffffffffffff161461164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490613dd6565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b60105481565b6116e261219c565b73ffffffffffffffffffffffffffffffffffffffff1661170061178e565b73ffffffffffffffffffffffffffffffffffffffff1614611756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174d90613dd6565b60405180910390fd5b6001600c60026101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6117c661219c565b73ffffffffffffffffffffffffffffffffffffffff166117e461178e565b73ffffffffffffffffffffffffffffffffffffffff161461183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183190613dd6565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b60606004805461186690613ef4565b80601f016020809104026020016040519081016040528092919081815260200182805461189290613ef4565b80156118df5780601f106118b4576101008083540402835291602001916118df565b820191906000526020600020905b8154815290600101906020018083116118c257829003601f168201915b5050505050905090565b6118f161219c565b73ffffffffffffffffffffffffffffffffffffffff1661190f61178e565b73ffffffffffffffffffffffffffffffffffffffff1614611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90613dd6565b60405180910390fd5b7f000000000000000000000000103e9fd18991ad01fc2da1cea9bb777febef1e8673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90614313565b60405180910390fd5b6119fd8282613064565b5050565b60008060016000611a1061219c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906143a5565b60405180910390fd5b611ae1611ad861219c565b858584036121a4565b600191505092915050565b6000611b00611af961219c565b848461236d565b6001905092915050565b611b1261219c565b73ffffffffffffffffffffffffffffffffffffffff16611b3061178e565b73ffffffffffffffffffffffffffffffffffffffff1614611b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7d90613dd6565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60196020528060005260406000206000915054906101000a900460ff1681565b600c60029054906101000a900460ff1681565b611c8161219c565b73ffffffffffffffffffffffffffffffffffffffff16611c9f61178e565b73ffffffffffffffffffffffffffffffffffffffff1614611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613dd6565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d929190613ae4565b60405180910390a25050565b611da661219c565b73ffffffffffffffffffffffffffffffffffffffff16611dc461178e565b73ffffffffffffffffffffffffffffffffffffffff1614611e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1190613dd6565b60405180910390fd5b6005811015611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5590614437565b60405180910390fd5b6103e8611e69610e31565b82611e749190613f25565b611e7e9190613f96565b600b8190555050565b600e60009054906101000a900460ff1681565b600a5481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611f3d61219c565b73ffffffffffffffffffffffffffffffffffffffff16611f5b61178e565b73ffffffffffffffffffffffffffffffffffffffff1614611fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa890613dd6565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b611fe161219c565b73ffffffffffffffffffffffffffffffffffffffff16611fff61178e565b73ffffffffffffffffffffffffffffffffffffffff1614612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204c90613dd6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb906144c9565b60405180910390fd5b6120cd81612f9e565b50565b60145481565b600b5481565b6120e461219c565b73ffffffffffffffffffffffffffffffffffffffff1661210261178e565b73ffffffffffffffffffffffffffffffffffffffff1614612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613dd6565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a9061455b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612279906145ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123609190613bb5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d39061467f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361244b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244290614711565b60405180910390fd5b600081036124645761245f83836000613105565b612f99565b600c60009054906101000a900460ff1615612b275761248161178e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124ef57506124bf61178e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125285750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612562575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561257b5750600560149054906101000a900460ff16155b15612b2657600c60029054906101000a900460ff1661267557601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126355750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266b9061477d565b60405180910390fd5b5b600e60009054906101000a900460ff161561283d5761269261178e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561271957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561277157507f000000000000000000000000103e9fd18991ad01fc2da1cea9bb777febef1e8673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561283c5743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee90614835565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e05750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561298757600a5481111561292a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612921906148c7565b60405180910390fd5b600b5461293683611461565b826129419190613e25565b1115612982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297990614933565b60405180910390fd5b612b25565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a2a5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a7957600a54811115612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b906149c5565b60405180910390fd5b612b24565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b2357600b54612ad683611461565b82612ae19190613e25565b1115612b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1990614933565b60405180910390fd5b5b5b5b5b5b6000612b3230611461565b905060006009548210159050808015612b575750600c60019054906101000a900460ff165b8015612b705750600560149054906101000a900460ff16155b8015612bc65750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c1c5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c725750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cb6576001600560146101000a81548160ff021916908315150217905550612c9a613384565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d6c5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d7657600090505b60008115612f8957601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dd957506000601254115b15612e7357612e066064612df86012548861357990919063ffffffff16565b61358f90919063ffffffff16565b905060125460145482612e199190613f25565b612e239190613f96565b60166000828254612e349190613e25565b9250508190555060125460135482612e4c9190613f25565b612e569190613f96565b60156000828254612e679190613e25565b92505081905550612f65565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ece57506000600f54115b15612f6457612efb6064612eed600f548861357990919063ffffffff16565b61358f90919063ffffffff16565b9050600f5460115482612f0e9190613f25565b612f189190613f96565b60166000828254612f299190613e25565b92505081905550600f5460105482612f419190613f25565b612f4b9190613f96565b60156000828254612f5c9190613e25565b925050819055505b5b6000811115612f7a57612f79873083613105565b5b8085612f8691906149e5565b94505b612f94878787613105565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316b9061467f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131da90614711565b60405180910390fd5b6131ee8383836135a5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326b90614a8b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133079190613e25565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161336b9190613bb5565b60405180910390a361337e8484846135aa565b50505050565b600061338f30611461565b905060006015546016546133a39190613e25565b90506000808314806133b55750600082145b156133c257505050613577565b6008548311156133d25760085492505b6000600283601654866133e59190613f25565b6133ef9190613f96565b6133f99190613f96565b9050600061341082866135af90919063ffffffff16565b90506000479050613420826135c5565b600061343582476135af90919063ffffffff16565b90506000613460876134526015548561357990919063ffffffff16565b61358f90919063ffffffff16565b90506000818361347091906149e5565b9050600060168190555060006015819055506000861180156134925750600081115b156134df576134a18682613802565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826016546040516134d693929190614aab565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161352590614b13565b60006040518083038185875af1925050503d8060008114613562576040519150601f19603f3d011682016040523d82523d6000602084013e613567565b606091505b5050809750505050505050505050505b565b600081836135879190613f25565b905092915050565b6000818361359d9190613f96565b905092915050565b505050565b505050565b600081836135bd91906149e5565b905092915050565b6000600267ffffffffffffffff8111156135e2576135e1614b28565b5b6040519080825280602002602001820160405280156136105781602001602082028036833780820191505090505b509050308160008151811061362857613627614b57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f19190614b9b565b8160018151811061370557613704614b57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061376a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121a4565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016137cc959493929190614cc1565b600060405180830381600087803b1580156137e657600080fd5b505af11580156137fa573d6000803e3d6000fd5b505050505050565b61382d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121a4565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016138b496959493929190614d1b565b60606040518083038185885af11580156138d2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138f79190614d91565b5050505050565b600080fd5b6000819050919050565b61391681613903565b811461392157600080fd5b50565b6000813590506139338161390d565b92915050565b600080604083850312156139505761394f6138fe565b5b600061395e85828601613924565b925050602061396f85828601613924565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139b3578082015181840152602081019050613998565b60008484015250505050565b6000601f19601f8301169050919050565b60006139db82613979565b6139e58185613984565b93506139f5818560208601613995565b6139fe816139bf565b840191505092915050565b60006020820190508181036000830152613a2381846139d0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a5682613a2b565b9050919050565b613a6681613a4b565b8114613a7157600080fd5b50565b600081359050613a8381613a5d565b92915050565b60008060408385031215613aa057613a9f6138fe565b5b6000613aae85828601613a74565b9250506020613abf85828601613924565b9150509250929050565b60008115159050919050565b613ade81613ac9565b82525050565b6000602082019050613af96000830184613ad5565b92915050565b600060208284031215613b1557613b146138fe565b5b6000613b2384828501613a74565b91505092915050565b6000819050919050565b6000613b51613b4c613b4784613a2b565b613b2c565b613a2b565b9050919050565b6000613b6382613b36565b9050919050565b6000613b7582613b58565b9050919050565b613b8581613b6a565b82525050565b6000602082019050613ba06000830184613b7c565b92915050565b613baf81613903565b82525050565b6000602082019050613bca6000830184613ba6565b92915050565b600060208284031215613be657613be56138fe565b5b6000613bf484828501613924565b91505092915050565b600080600060608486031215613c1657613c156138fe565b5b6000613c2486828701613a74565b9350506020613c3586828701613a74565b9250506040613c4686828701613924565b9150509250925092565b613c5981613a4b565b82525050565b6000602082019050613c746000830184613c50565b92915050565b600060ff82169050919050565b613c9081613c7a565b82525050565b6000602082019050613cab6000830184613c87565b92915050565b613cba81613ac9565b8114613cc557600080fd5b50565b600081359050613cd781613cb1565b92915050565b60008060408385031215613cf457613cf36138fe565b5b6000613d0285828601613a74565b9250506020613d1385828601613cc8565b9150509250929050565b600060208284031215613d3357613d326138fe565b5b6000613d4184828501613cc8565b91505092915050565b60008060408385031215613d6157613d606138fe565b5b6000613d6f85828601613a74565b9250506020613d8085828601613a74565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613dc0602083613984565b9150613dcb82613d8a565b602082019050919050565b60006020820190508181036000830152613def81613db3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e3082613903565b9150613e3b83613903565b9250828201905080821115613e5357613e52613df6565b5b92915050565b7f4d757374206b656570206665657320617420313125206f72206c657373000000600082015250565b6000613e8f601d83613984565b9150613e9a82613e59565b602082019050919050565b60006020820190508181036000830152613ebe81613e82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f0c57607f821691505b602082108103613f1f57613f1e613ec5565b5b50919050565b6000613f3082613903565b9150613f3b83613903565b9250828202613f4981613903565b91508282048414831517613f6057613f5f613df6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fa182613903565b9150613fac83613903565b925082613fbc57613fbb613f67565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614023602f83613984565b915061402e82613fc7565b604082019050919050565b6000602082019050818103600083015261405281614016565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140b5602883613984565b91506140c082614059565b604082019050919050565b600060208201905081810360008301526140e4816140a8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614147603583613984565b9150614152826140eb565b604082019050919050565b600060208201905081810360008301526141768161413a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141d9603483613984565b91506141e48261417d565b604082019050919050565b60006020820190508181036000830152614208816141cc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e206d6178546f6b656e73466f72537761706261636b00000000000000000000602082015250565b600061426b603683613984565b91506142768261420f565b604082019050919050565b6000602082019050818103600083015261429a8161425e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142fd603983613984565b9150614308826142a1565b604082019050919050565b6000602082019050818103600083015261432c816142f0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061438f602583613984565b915061439a82614333565b604082019050919050565b600060208201905081810360008301526143be81614382565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614421602483613984565b915061442c826143c5565b604082019050919050565b6000602082019050818103600083015261445081614414565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144b3602683613984565b91506144be82614457565b604082019050919050565b600060208201905081810360008301526144e2816144a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614545602483613984565b9150614550826144e9565b604082019050919050565b6000602082019050818103600083015261457481614538565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145d7602283613984565b91506145e28261457b565b604082019050919050565b60006020820190508181036000830152614606816145ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614669602583613984565b91506146748261460d565b604082019050919050565b600060208201905081810360008301526146988161465c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146fb602383613984565b91506147068261469f565b604082019050919050565b6000602082019050818103600083015261472a816146ee565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614767601683613984565b915061477282614731565b602082019050919050565b600060208201905081810360008301526147968161475a565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061481f604983613984565b915061482a8261479d565b606082019050919050565b6000602082019050818103600083015261484e81614812565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006148b1603583613984565b91506148bc82614855565b604082019050919050565b600060208201905081810360008301526148e0816148a4565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061491d601383613984565b9150614928826148e7565b602082019050919050565b6000602082019050818103600083015261494c81614910565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006149af603683613984565b91506149ba82614953565b604082019050919050565b600060208201905081810360008301526149de816149a2565b9050919050565b60006149f082613903565b91506149fb83613903565b9250828203905081811115614a1357614a12613df6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614a75602683613984565b9150614a8082614a19565b604082019050919050565b60006020820190508181036000830152614aa481614a68565b9050919050565b6000606082019050614ac06000830186613ba6565b614acd6020830185613ba6565b614ada6040830184613ba6565b949350505050565b600081905092915050565b50565b6000614afd600083614ae2565b9150614b0882614aed565b600082019050919050565b6000614b1e82614af0565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614b9581613a5d565b92915050565b600060208284031215614bb157614bb06138fe565b5b6000614bbf84828501614b86565b91505092915050565b6000819050919050565b6000614bed614be8614be384614bc8565b613b2c565b613903565b9050919050565b614bfd81614bd2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c3881613a4b565b82525050565b6000614c4a8383614c2f565b60208301905092915050565b6000602082019050919050565b6000614c6e82614c03565b614c788185614c0e565b9350614c8383614c1f565b8060005b83811015614cb4578151614c9b8882614c3e565b9750614ca683614c56565b925050600181019050614c87565b5085935050505092915050565b600060a082019050614cd66000830188613ba6565b614ce36020830187614bf4565b8181036040830152614cf58186614c63565b9050614d046060830185613c50565b614d116080830184613ba6565b9695505050505050565b600060c082019050614d306000830189613c50565b614d3d6020830188613ba6565b614d4a6040830187614bf4565b614d576060830186614bf4565b614d646080830185613c50565b614d7160a0830184613ba6565b979650505050505050565b600081519050614d8b8161390d565b92915050565b600080600060608486031215614daa57614da96138fe565b5b6000614db886828701614d7c565b9350506020614dc986828701614d7c565b9250506040614dda86828701614d7c565b915050925092509256fea264697066735822122050424c96131af1712dd74662acdd30d951c3e836f8bb81f2c84ea178872f283964736f6c63430008130033

Deployed Bytecode Sourcemap

27809:16890:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35572:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6076:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8243:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29096:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27882:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7196:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28914:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28874;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33698:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8894:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27985:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32873:670;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7038:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9795:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27940:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28305:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37275:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28077:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35067:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28761:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28345:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7367:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1382:103;;;;;;;;;;;;;:::i;:::-;;32406:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34512:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28107:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28146:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28685:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32222:112;;;;;;;;;;;;;:::i;:::-;;731:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28796:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34794:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6295:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36392:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10513:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7707:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36900:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29317:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28385:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36078:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34095:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28603:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28230:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28651:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7945:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28188:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32595:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28722:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1640:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28834:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28272:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37139:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35572:342;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35716:13:::1;35697:16;:32;;;;35759:13;35740:16;:32;;;;35818:16;;35799;;:35;;;;:::i;:::-;35783:13;:51;;;;35870:2;35853:13;;:19;;35845:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35572:342:::0;;:::o;6076:100::-;6130:13;6163:5;6156:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6076:100;:::o;8243:169::-;8326:4;8343:39;8352:12;:10;:12::i;:::-;8366:7;8375:6;8343:8;:39::i;:::-;8400:4;8393:11;;8243:169;;;;:::o;29096:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;27882:51::-;;;:::o;7196:108::-;7257:7;7284:12;;7277:19;;7196:108;:::o;28914:33::-;;;;:::o;28874:::-;;;;:::o;33698:275::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33835:4:::1;33827;33822:1;33806:13;:11;:13::i;:::-;:17;;;;:::i;:::-;33805:26;;;;:::i;:::-;33804:35;;;;:::i;:::-;33794:6;:45;;33772:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;33958:6;33948;:17;;;;:::i;:::-;33925:20;:40;;;;33698:275:::0;:::o;8894:492::-;9034:4;9051:36;9061:6;9069:9;9080:6;9051:9;:36::i;:::-;9100:24;9127:11;:19;9139:6;9127:19;;;;;;;;;;;;;;;:33;9147:12;:10;:12::i;:::-;9127:33;;;;;;;;;;;;;;;;9100:60;;9199:6;9179:16;:26;;9171:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9286:57;9295:6;9303:12;:10;:12::i;:::-;9336:6;9317:16;:25;9286:8;:57::i;:::-;9374:4;9367:11;;;8894:492;;;;;:::o;27985:53::-;28031:6;27985:53;:::o;32873:670::-;32994:4;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33048:1:::1;33038:6;:11;;33016:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;33173:3;33163:6;:13;;33141:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;33299:6;33289;:16;;33267:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;33443:6;33428:13;:11;:13::i;:::-;33419:6;:22;;;;:::i;:::-;:30;;;;:::i;:::-;33398:18;:51;;;;33507:6;33492:13;:11;:13::i;:::-;33483:6;:22;;;;:::i;:::-;:30;;;;:::i;:::-;33460:20;:53;;;;33531:4;33524:11;;32873:670:::0;;;;:::o;7038:93::-;7096:5;7121:2;7114:9;;7038:93;:::o;9795:215::-;9883:4;9900:80;9909:12;:10;:12::i;:::-;9923:7;9969:10;9932:11;:25;9944:12;:10;:12::i;:::-;9932:25;;;;;;;;;;;;;;;:34;9958:7;9932:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9900:8;:80::i;:::-;9998:4;9991:11;;9795:215;;;;:::o;27940:38::-;;;:::o;28305:33::-;;;;;;;;;;;;;:::o;37275:126::-;37341:4;37365:19;:28;37385:7;37365:28;;;;;;;;;;;;;;;;;;;;;;;;;37358:35;;37275:126;;;:::o;28077:23::-;;;;;;;;;;;;;:::o;35067:335::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35209:13:::1;35191:15;:31;;;;35251:13;35233:15;:31;;;;35308:15;;35290;;:33;;;;:::i;:::-;35275:12;:48;;;;35358:2;35342:12;;:18;;35334:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;35067:335:::0;;:::o;28761:28::-;;;;:::o;28345:31::-;;;;;;;;;;;;;:::o;7367:127::-;7441:7;7468:9;:18;7478:7;7468:18;;;;;;;;;;;;;;;;7461:25;;7367:127;;;:::o;1382:103::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1447:30:::1;1474:1;1447:18;:30::i;:::-;1382:103::o:0;32406:121::-;32458:4;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32492:5:::1;32475:14;;:22;;;;;;;;;;;;;;;;;;32515:4;32508:11;;32406:121:::0;:::o;34512:167::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34667:4:::1;34625:31;:39;34657:6;34625:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;34512:167:::0;;:::o;28107:30::-;;;;;;;;;;;;;:::o;28146:35::-;;;;:::o;28685:30::-;;;;:::o;32222:112::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32293:4:::1;32277:13;;:20;;;;;;;;;;;;;;;;;;32322:4;32308:11;;:18;;;;;;;;;;;;;;;;;;32222:112::o:0;731:87::-;777:7;804:6;;;;;;;;;;;797:13;;731:87;:::o;28796:31::-;;;;:::o;34794:100::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34879:7:::1;34865:11;;:21;;;;;;;;;;;;;;;;;;34794:100:::0;:::o;6295:104::-;6351:13;6384:7;6377:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6295:104;:::o;36392:304::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36536:13:::1;36528:21;;:4;:21;;::::0;36506:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36647:41;36676:4;36682:5;36647:28;:41::i;:::-;36392:304:::0;;:::o;10513:413::-;10606:4;10623:24;10650:11;:25;10662:12;:10;:12::i;:::-;10650:25;;;;;;;;;;;;;;;:34;10676:7;10650:34;;;;;;;;;;;;;;;;10623:61;;10723:15;10703:16;:35;;10695:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10816:67;10825:12;:10;:12::i;:::-;10839:7;10867:15;10848:16;:34;10816:8;:67::i;:::-;10914:4;10907:11;;;10513:413;;;;:::o;7707:175::-;7793:4;7810:42;7820:12;:10;:12::i;:::-;7834:9;7845:6;7810:9;:42::i;:::-;7870:4;7863:11;;7707:175;;;;:::o;36900:231::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37060:15:::1;;;;;;;;;;;37017:59;;37040:18;37017:59;;;;;;;;;;;;37105:18;37087:15;;:36;;;;;;;;;;;;;;;;;;36900:231:::0;:::o;29317:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;28385:33::-;;;;;;;;;;;;;:::o;36078:182::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36194:8:::1;36163:19;:28;36183:7;36163:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36234:7;36218:34;;;36243:8;36218:34;;;;;;:::i;:::-;;;;;;;;36078:182:::0;;:::o;34095:232::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34204:1:::1;34194:6;:11;;34172:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;34315:4;34301:13;:11;:13::i;:::-;34292:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;34280:9;:39;;;;34095:232:::0;:::o;28603:39::-;;;;;;;;;;;;;:::o;28230:35::-;;;;:::o;28651:27::-;;;;:::o;7945:151::-;8034:7;8061:11;:18;8073:5;8061:18;;;;;;;;;;;;;;;:27;8080:7;8061:27;;;;;;;;;;;;;;;;8054:34;;7945:151;;;;:::o;28188:33::-;;;;:::o;32595:135::-;32655:4;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32695:5:::1;32672:20;;:28;;;;;;;;;;;;;;;;;;32718:4;32711:11;;32595:135:::0;:::o;28722:30::-;;;;:::o;1640:201::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1749:1:::1;1729:22;;:8;:22;;::::0;1721:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1805:28;1824:8;1805:18;:28::i;:::-;1640:201:::0;:::o;28834:31::-;;;;:::o;28272:24::-;;;;:::o;37139:128::-;962:12;:10;:12::i;:::-;951:23;;:7;:5;:7::i;:::-;:23;;;943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37248:11:::1;37237:8;;:22;;;;;;;;;;;;;;;;;;37139:128:::0;:::o;105:98::-;158:7;185:10;178:17;;105:98;:::o;14197:380::-;14350:1;14333:19;;:5;:19;;;14325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14431:1;14412:21;;:7;:21;;;14404:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14515:6;14485:11;:18;14497:5;14485:18;;;;;;;;;;;;;;;:27;14504:7;14485:27;;;;;;;;;;;;;;;:36;;;;14553:7;14537:32;;14546:5;14537:32;;;14562:6;14537:32;;;;;;:::i;:::-;;;;;;;;14197:380;;;:::o;37459:4579::-;37607:1;37591:18;;:4;:18;;;37583:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37684:1;37670:16;;:2;:16;;;37662:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37753:1;37743:6;:11;37739:93;;37771:28;37787:4;37793:2;37797:1;37771:15;:28::i;:::-;37814:7;;37739:93;37848:14;;;;;;;;;;;37844:2487;;;37909:7;:5;:7::i;:::-;37901:15;;:4;:15;;;;:49;;;;;37943:7;:5;:7::i;:::-;37937:13;;:2;:13;;;;37901:49;:86;;;;;37985:1;37971:16;;:2;:16;;;;37901:86;:128;;;;;38022:6;38008:21;;:2;:21;;;;37901:128;:158;;;;;38051:8;;;;;;;;;;;38050:9;37901:158;37879:2441;;;38099:13;;;;;;;;;;;38094:223;;38171:19;:25;38191:4;38171:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38200:19;:23;38220:2;38200:23;;;;;;;;;;;;;;;;;;;;;;;;;38171:52;38137:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;38094:223;38473:20;;;;;;;;;;;38469:641;;;38554:7;:5;:7::i;:::-;38548:13;;:2;:13;;;;:72;;;;;38604:15;38590:30;;:2;:30;;;;38548:72;:129;;;;;38663:13;38649:28;;:2;:28;;;;38548:129;38518:573;;;38841:12;38766:28;:39;38795:9;38766:39;;;;;;;;;;;;;;;;:87;38728:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;39055:12;39013:28;:39;39042:9;39013:39;;;;;;;;;;;;;;;:54;;;;38518:573;38469:641;39184:25;:31;39210:4;39184:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;39241:31;:35;39273:2;39241:35;;;;;;;;;;;;;;;;;;;;;;;;;39240:36;39184:92;39158:1147;;;39363:20;;39353:6;:30;;39319:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;39571:9;;39554:13;39564:2;39554:9;:13::i;:::-;39545:6;:22;;;;:::i;:::-;:35;;39511:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39158:1147;;;39749:25;:29;39775:2;39749:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;39804:31;:37;39836:4;39804:37;;;;;;;;;;;;;;;;;;;;;;;;;39803:38;39749:92;39723:582;;;39928:20;;39918:6;:30;;39884:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;39723:582;;;40085:31;:35;40117:2;40085:35;;;;;;;;;;;;;;;;;;;;;;;;;40080:225;;40205:9;;40188:13;40198:2;40188:9;:13::i;:::-;40179:6;:22;;;;:::i;:::-;:35;;40145:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;40080:225;39723:582;39158:1147;37879:2441;37844:2487;40343:28;40374:24;40392:4;40374:9;:24::i;:::-;40343:55;;40411:12;40450:18;;40426:20;:42;;40411:57;;40499:7;:35;;;;;40523:11;;;;;;;;;;;40499:35;:61;;;;;40552:8;;;;;;;;;;;40551:9;40499:61;:110;;;;;40578:25;:31;40604:4;40578:31;;;;;;;;;;;;;;;;;;;;;;;;;40577:32;40499:110;:153;;;;;40627:19;:25;40647:4;40627:25;;;;;;;;;;;;;;;;;;;;;;;;;40626:26;40499:153;:194;;;;;40670:19;:23;40690:2;40670:23;;;;;;;;;;;;;;;;;;;;;;;;;40669:24;40499:194;40481:326;;;40731:4;40720:8;;:15;;;;;;;;;;;;;;;;;;40752:10;:8;:10::i;:::-;40790:5;40779:8;;:16;;;;;;;;;;;;;;;;;;40481:326;40819:12;40835:8;;;;;;;;;;;40834:9;40819:24;;40945:19;:25;40965:4;40945:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;40974:19;:23;40994:2;40974:23;;;;;;;;;;;;;;;;;;;;;;;;;40945:52;40941:100;;;41024:5;41014:15;;40941:100;41053:12;41158:7;41154:831;;;41210:25;:29;41236:2;41210:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41259:1;41243:13;;:17;41210:50;41206:630;;;41288:34;41318:3;41288:25;41299:13;;41288:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41281:41;;41391:13;;41371:16;;41364:4;:23;;;;:::i;:::-;41363:41;;;;:::i;:::-;41341:18;;:63;;;;;;;:::i;:::-;;;;;;;;41473:13;;41453:16;;41446:4;:23;;;;:::i;:::-;41445:41;;;;:::i;:::-;41423:18;;:63;;;;;;;:::i;:::-;;;;;;;;41206:630;;;41548:25;:31;41574:4;41548:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;41598:1;41583:12;;:16;41548:51;41544:292;;;41627:33;41656:3;41627:24;41638:12;;41627:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;41620:40;;41728:12;;41709:15;;41702:4;:22;;;;:::i;:::-;41701:39;;;;:::i;:::-;41679:18;;:61;;;;;;;:::i;:::-;;;;;;;;41808:12;;41789:15;;41782:4;:22;;;;:::i;:::-;41781:39;;;;:::i;:::-;41759:18;;:61;;;;;;;:::i;:::-;;;;;;;;41544:292;41206:630;41863:1;41856:4;:8;41852:91;;;41885:42;41901:4;41915;41922;41885:15;:42::i;:::-;41852:91;41969:4;41959:14;;;;;:::i;:::-;;;41154:831;41997:33;42013:4;42019:2;42023:6;41997:15;:33::i;:::-;37572:4466;;;;37459:4579;;;;:::o;2001:191::-;2075:16;2094:6;;;;;;;;;;;2075:25;;2120:8;2111:6;;:17;;;;;;;;;;;;;;;;;;2175:8;2144:40;;2165:8;2144:40;;;;;;;;;;;;2064:128;2001:191;:::o;36704:188::-;36821:5;36787:25;:31;36813:4;36787:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36878:5;36844:40;;36872:4;36844:40;;;;;;;;;;;;36704:188;;:::o;11416:733::-;11574:1;11556:20;;:6;:20;;;11548:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11658:1;11637:23;;:9;:23;;;11629:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11713:47;11734:6;11742:9;11753:6;11713:20;:47::i;:::-;11773:21;11797:9;:17;11807:6;11797:17;;;;;;;;;;;;;;;;11773:41;;11850:6;11833:13;:23;;11825:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11971:6;11955:13;:22;11935:9;:17;11945:6;11935:17;;;;;;;;;;;;;;;:42;;;;12023:6;11999:9;:20;12009:9;11999:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12064:9;12047:35;;12056:6;12047:35;;;12075:6;12047:35;;;;;;:::i;:::-;;;;;;;;12095:46;12115:6;12123:9;12134:6;12095:19;:46::i;:::-;11537:612;11416:733;;;:::o;43165:1531::-;43204:23;43230:24;43248:4;43230:9;:24::i;:::-;43204:50;;43265:25;43327:18;;43293;;:52;;;;:::i;:::-;43265:80;;43356:12;43404:1;43385:15;:20;:46;;;;43430:1;43409:17;:22;43385:46;43381:85;;;43448:7;;;;;43381:85;43500:20;;43482:15;:38;43478:109;;;43555:20;;43537:38;;43478:109;43648:23;43761:1;43728:17;43693:18;;43675:15;:36;;;;:::i;:::-;43674:71;;;;:::i;:::-;:88;;;;:::i;:::-;43648:114;;43773:26;43802:36;43822:15;43802;:19;;:36;;;;:::i;:::-;43773:65;;43851:25;43879:21;43851:49;;43913:36;43930:18;43913:16;:36::i;:::-;43962:18;43983:44;44009:17;43983:21;:25;;:44;;;;:::i;:::-;43962:65;;44040:23;44066:81;44119:17;44066:34;44081:18;;44066:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;44040:107;;44160:23;44199:15;44186:10;:28;;;;:::i;:::-;44160:54;;44248:1;44227:18;:22;;;;44281:1;44260:18;:22;;;;44319:1;44301:15;:19;:42;;;;;44342:1;44324:15;:19;44301:42;44297:278;;;44360:46;44373:15;44390;44360:12;:46::i;:::-;44426:137;44459:18;44496:15;44530:18;;44426:137;;;;;;;;:::i;:::-;;;;;;;;44297:278;44609:15;;;;;;;;;;;44601:29;;44652:21;44601:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44587:101;;;;;43193:1503;;;;;;;;;43165:1531;:::o;19126:98::-;19184:7;19215:1;19211;:5;;;;:::i;:::-;19204:12;;19126:98;;;;:::o;19525:::-;19583:7;19614:1;19610;:5;;;;:::i;:::-;19603:12;;19525:98;;;;:::o;15177:125::-;;;;:::o;15906:124::-;;;;:::o;18769:98::-;18827:7;18858:1;18854;:5;;;;:::i;:::-;18847:12;;18769:98;;;;:::o;42046:589::-;42172:21;42210:1;42196:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42172:40;;42241:4;42223;42228:1;42223:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;42267:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42257:4;42262:1;42257:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;42302:62;42319:4;42334:15;42352:11;42302:8;:62::i;:::-;42403:15;:66;;;42484:11;42510:1;42554:4;42581;42601:15;42403:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42101:534;42046:589;:::o;42643:514::-;42791:62;42808:4;42823:15;42841:11;42791:8;:62::i;:::-;42896:15;:31;;;42935:9;42968:4;42988:11;43014:1;43057;43100:8;;;;;;;;;;;43123:15;42896:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;42643:514;;:::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:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:153::-;4684:9;4717:37;4748:5;4717:37;:::i;:::-;4704:50;;4607:153;;;:::o;4766:185::-;4880:64;4938:5;4880:64;:::i;:::-;4875:3;4868:77;4766:185;;:::o;4957:276::-;5077:4;5115:2;5104:9;5100:18;5092:26;;5128:98;5223:1;5212:9;5208:17;5199:6;5128:98;:::i;:::-;4957:276;;;;:::o;5239:118::-;5326:24;5344:5;5326:24;:::i;:::-;5321:3;5314:37;5239:118;;:::o;5363:222::-;5456:4;5494:2;5483:9;5479:18;5471:26;;5507:71;5575:1;5564:9;5560:17;5551:6;5507:71;:::i;:::-;5363:222;;;;:::o;5591:329::-;5650:6;5699:2;5687:9;5678:7;5674:23;5670:32;5667:119;;;5705:79;;:::i;:::-;5667:119;5825:1;5850:53;5895:7;5886:6;5875:9;5871:22;5850:53;:::i;:::-;5840:63;;5796:117;5591:329;;;;:::o;5926:619::-;6003:6;6011;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6292:118;6449:2;6475:53;6520:7;6511:6;6500:9;6496:22;6475:53;:::i;:::-;6465:63;;6420:118;5926:619;;;;;:::o;6551:118::-;6638:24;6656:5;6638:24;:::i;:::-;6633:3;6626:37;6551:118;;:::o;6675:222::-;6768:4;6806:2;6795:9;6791:18;6783:26;;6819:71;6887:1;6876:9;6872:17;6863:6;6819:71;:::i;:::-;6675:222;;;;:::o;6903:86::-;6938:7;6978:4;6971:5;6967:16;6956:27;;6903:86;;;:::o;6995:112::-;7078:22;7094:5;7078:22;:::i;:::-;7073:3;7066:35;6995:112;;:::o;7113:214::-;7202:4;7240:2;7229:9;7225:18;7217:26;;7253:67;7317:1;7306:9;7302:17;7293:6;7253:67;:::i;:::-;7113:214;;;;:::o;7333:116::-;7403:21;7418:5;7403:21;:::i;:::-;7396:5;7393:32;7383:60;;7439:1;7436;7429:12;7383:60;7333:116;:::o;7455:133::-;7498:5;7536:6;7523:20;7514:29;;7552:30;7576:5;7552:30;:::i;:::-;7455:133;;;;:::o;7594:468::-;7659:6;7667;7716:2;7704:9;7695:7;7691:23;7687:32;7684:119;;;7722:79;;:::i;:::-;7684:119;7842:1;7867:53;7912:7;7903:6;7892:9;7888:22;7867:53;:::i;:::-;7857:63;;7813:117;7969:2;7995:50;8037:7;8028:6;8017:9;8013:22;7995:50;:::i;:::-;7985:60;;7940:115;7594:468;;;;;:::o;8068:323::-;8124:6;8173:2;8161:9;8152:7;8148:23;8144:32;8141:119;;;8179:79;;:::i;:::-;8141:119;8299:1;8324:50;8366:7;8357:6;8346:9;8342:22;8324:50;:::i;:::-;8314:60;;8270:114;8068:323;;;;:::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:179::-;10385:31;10381:1;10373:6;10369:14;10362:55;10245:179;:::o;10430:366::-;10572:3;10593:67;10657:2;10652:3;10593:67;:::i;:::-;10586:74;;10669:93;10758:3;10669:93;:::i;:::-;10787:2;10782:3;10778:12;10771:19;;10430:366;;;:::o;10802:419::-;10968:4;11006:2;10995:9;10991:18;10983:26;;11055:9;11049:4;11045:20;11041:1;11030:9;11026:17;11019:47;11083:131;11209:4;11083:131;:::i;:::-;11075:139;;10802:419;;;:::o;11227:180::-;11275:77;11272:1;11265:88;11372:4;11369:1;11362:15;11396:4;11393:1;11386:15;11413:320;11457:6;11494:1;11488:4;11484:12;11474:22;;11541:1;11535:4;11531:12;11562:18;11552:81;;11618:4;11610:6;11606:17;11596:27;;11552:81;11680:2;11672:6;11669:14;11649:18;11646:38;11643:84;;11699:18;;:::i;:::-;11643:84;11464:269;11413:320;;;:::o;11739:410::-;11779:7;11802:20;11820:1;11802:20;:::i;:::-;11797:25;;11836:20;11854:1;11836:20;:::i;:::-;11831:25;;11891:1;11888;11884:9;11913:30;11931:11;11913:30;:::i;:::-;11902:41;;12092:1;12083:7;12079:15;12076:1;12073:22;12053:1;12046:9;12026:83;12003:139;;12122:18;;:::i;:::-;12003:139;11787:362;11739:410;;;;:::o;12155:180::-;12203:77;12200:1;12193:88;12300:4;12297:1;12290:15;12324:4;12321:1;12314:15;12341:185;12381:1;12398:20;12416:1;12398:20;:::i;:::-;12393:25;;12432:20;12450:1;12432:20;:::i;:::-;12427:25;;12471:1;12461:35;;12476:18;;:::i;:::-;12461:35;12518:1;12515;12511:9;12506:14;;12341:185;;;;:::o;12532:234::-;12672:34;12668:1;12660:6;12656:14;12649:58;12741:17;12736:2;12728:6;12724:15;12717:42;12532:234;:::o;12772:366::-;12914:3;12935:67;12999:2;12994:3;12935:67;:::i;:::-;12928:74;;13011:93;13100:3;13011:93;:::i;:::-;13129:2;13124:3;13120:12;13113:19;;12772:366;;;:::o;13144:419::-;13310:4;13348:2;13337:9;13333:18;13325:26;;13397:9;13391:4;13387:20;13383:1;13372:9;13368:17;13361:47;13425:131;13551:4;13425:131;:::i;:::-;13417:139;;13144:419;;;:::o;13569:227::-;13709:34;13705:1;13697:6;13693:14;13686:58;13778:10;13773:2;13765:6;13761:15;13754:35;13569:227;:::o;13802:366::-;13944:3;13965:67;14029:2;14024:3;13965:67;:::i;:::-;13958:74;;14041:93;14130:3;14041:93;:::i;:::-;14159:2;14154:3;14150:12;14143:19;;13802:366;;;:::o;14174:419::-;14340:4;14378:2;14367:9;14363:18;14355:26;;14427:9;14421:4;14417:20;14413:1;14402:9;14398:17;14391:47;14455:131;14581:4;14455:131;:::i;:::-;14447:139;;14174:419;;;:::o;14599:240::-;14739:34;14735:1;14727:6;14723:14;14716:58;14808:23;14803:2;14795:6;14791:15;14784:48;14599:240;:::o;14845:366::-;14987:3;15008:67;15072:2;15067:3;15008:67;:::i;:::-;15001:74;;15084:93;15173:3;15084:93;:::i;:::-;15202:2;15197:3;15193:12;15186:19;;14845:366;;;:::o;15217:419::-;15383:4;15421:2;15410:9;15406:18;15398:26;;15470:9;15464:4;15460:20;15456:1;15445:9;15441:17;15434:47;15498:131;15624:4;15498:131;:::i;:::-;15490:139;;15217:419;;;:::o;15642:239::-;15782:34;15778:1;15770:6;15766:14;15759:58;15851:22;15846:2;15838:6;15834:15;15827:47;15642:239;:::o;15887:366::-;16029:3;16050:67;16114:2;16109:3;16050:67;:::i;:::-;16043:74;;16126:93;16215:3;16126:93;:::i;:::-;16244:2;16239:3;16235:12;16228:19;;15887:366;;;:::o;16259:419::-;16425:4;16463:2;16452:9;16448:18;16440:26;;16512:9;16506:4;16502:20;16498:1;16487:9;16483:17;16476:47;16540:131;16666:4;16540:131;:::i;:::-;16532:139;;16259:419;;;:::o;16684:241::-;16824:34;16820:1;16812:6;16808:14;16801:58;16893:24;16888:2;16880:6;16876:15;16869:49;16684:241;:::o;16931:366::-;17073:3;17094:67;17158:2;17153:3;17094:67;:::i;:::-;17087:74;;17170:93;17259:3;17170:93;:::i;:::-;17288:2;17283:3;17279:12;17272:19;;16931:366;;;:::o;17303:419::-;17469:4;17507:2;17496:9;17492:18;17484:26;;17556:9;17550:4;17546:20;17542:1;17531:9;17527:17;17520:47;17584:131;17710:4;17584:131;:::i;:::-;17576:139;;17303:419;;;:::o;17728:244::-;17868:34;17864:1;17856:6;17852:14;17845:58;17937:27;17932:2;17924:6;17920:15;17913:52;17728:244;:::o;17978:366::-;18120:3;18141:67;18205:2;18200:3;18141:67;:::i;:::-;18134:74;;18217:93;18306:3;18217:93;:::i;:::-;18335:2;18330:3;18326:12;18319:19;;17978:366;;;:::o;18350:419::-;18516:4;18554:2;18543:9;18539:18;18531:26;;18603:9;18597:4;18593:20;18589:1;18578:9;18574:17;18567:47;18631:131;18757:4;18631:131;:::i;:::-;18623:139;;18350:419;;;:::o;18775:224::-;18915:34;18911:1;18903:6;18899:14;18892:58;18984:7;18979:2;18971:6;18967:15;18960:32;18775:224;:::o;19005:366::-;19147:3;19168:67;19232:2;19227:3;19168:67;:::i;:::-;19161:74;;19244:93;19333:3;19244:93;:::i;:::-;19362:2;19357:3;19353:12;19346:19;;19005:366;;;:::o;19377:419::-;19543:4;19581:2;19570:9;19566:18;19558:26;;19630:9;19624:4;19620:20;19616:1;19605:9;19601:17;19594:47;19658:131;19784:4;19658:131;:::i;:::-;19650:139;;19377:419;;;:::o;19802:223::-;19942:34;19938:1;19930:6;19926:14;19919:58;20011:6;20006:2;19998:6;19994:15;19987:31;19802:223;:::o;20031:366::-;20173:3;20194:67;20258:2;20253:3;20194:67;:::i;:::-;20187:74;;20270:93;20359:3;20270:93;:::i;:::-;20388:2;20383:3;20379:12;20372:19;;20031:366;;;:::o;20403:419::-;20569:4;20607:2;20596:9;20592:18;20584:26;;20656:9;20650:4;20646:20;20642:1;20631:9;20627:17;20620:47;20684:131;20810:4;20684:131;:::i;:::-;20676:139;;20403:419;;;:::o;20828:225::-;20968:34;20964:1;20956:6;20952:14;20945:58;21037:8;21032:2;21024:6;21020:15;21013:33;20828:225;:::o;21059:366::-;21201:3;21222:67;21286:2;21281:3;21222:67;:::i;:::-;21215:74;;21298:93;21387:3;21298:93;:::i;:::-;21416:2;21411:3;21407:12;21400:19;;21059:366;;;:::o;21431:419::-;21597:4;21635:2;21624:9;21620:18;21612:26;;21684:9;21678:4;21674:20;21670:1;21659:9;21655:17;21648:47;21712:131;21838:4;21712:131;:::i;:::-;21704:139;;21431:419;;;:::o;21856:223::-;21996:34;21992:1;21984:6;21980:14;21973:58;22065:6;22060:2;22052:6;22048:15;22041:31;21856:223;:::o;22085:366::-;22227:3;22248:67;22312:2;22307:3;22248:67;:::i;:::-;22241:74;;22324:93;22413:3;22324:93;:::i;:::-;22442:2;22437:3;22433:12;22426:19;;22085:366;;;:::o;22457:419::-;22623:4;22661:2;22650:9;22646:18;22638:26;;22710:9;22704:4;22700:20;22696:1;22685:9;22681:17;22674:47;22738:131;22864:4;22738:131;:::i;:::-;22730:139;;22457:419;;;:::o;22882:221::-;23022:34;23018:1;23010:6;23006:14;22999:58;23091:4;23086:2;23078:6;23074:15;23067:29;22882:221;:::o;23109:366::-;23251:3;23272:67;23336:2;23331:3;23272:67;:::i;:::-;23265:74;;23348:93;23437:3;23348:93;:::i;:::-;23466:2;23461:3;23457:12;23450:19;;23109:366;;;:::o;23481:419::-;23647:4;23685:2;23674:9;23670:18;23662:26;;23734:9;23728:4;23724:20;23720:1;23709:9;23705:17;23698:47;23762:131;23888:4;23762:131;:::i;:::-;23754:139;;23481:419;;;:::o;23906:224::-;24046:34;24042:1;24034:6;24030:14;24023:58;24115:7;24110:2;24102:6;24098:15;24091:32;23906:224;:::o;24136:366::-;24278:3;24299:67;24363:2;24358:3;24299:67;:::i;:::-;24292:74;;24375:93;24464:3;24375:93;:::i;:::-;24493:2;24488:3;24484:12;24477:19;;24136:366;;;:::o;24508:419::-;24674:4;24712:2;24701:9;24697:18;24689:26;;24761:9;24755:4;24751:20;24747:1;24736:9;24732:17;24725:47;24789:131;24915:4;24789:131;:::i;:::-;24781:139;;24508:419;;;:::o;24933:222::-;25073:34;25069:1;25061:6;25057:14;25050:58;25142:5;25137:2;25129:6;25125:15;25118:30;24933:222;:::o;25161:366::-;25303:3;25324:67;25388:2;25383:3;25324:67;:::i;:::-;25317:74;;25400:93;25489:3;25400:93;:::i;:::-;25518:2;25513:3;25509:12;25502:19;;25161:366;;;:::o;25533:419::-;25699:4;25737:2;25726:9;25722:18;25714:26;;25786:9;25780:4;25776:20;25772:1;25761:9;25757:17;25750:47;25814:131;25940:4;25814:131;:::i;:::-;25806:139;;25533:419;;;:::o;25958:172::-;26098:24;26094:1;26086:6;26082:14;26075:48;25958:172;:::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:297::-;27073:34;27069:1;27061:6;27057:14;27050:58;27142:34;27137:2;27129:6;27125:15;27118:59;27211:11;27206:2;27198:6;27194:15;27187:36;26933:297;:::o;27236:366::-;27378:3;27399:67;27463:2;27458:3;27399:67;:::i;:::-;27392:74;;27475:93;27564:3;27475:93;:::i;:::-;27593:2;27588:3;27584:12;27577:19;;27236:366;;;:::o;27608:419::-;27774:4;27812:2;27801:9;27797:18;27789:26;;27861:9;27855:4;27851:20;27847:1;27836:9;27832:17;27825:47;27889:131;28015:4;27889:131;:::i;:::-;27881:139;;27608:419;;;:::o;28033:240::-;28173:34;28169:1;28161:6;28157:14;28150:58;28242:23;28237:2;28229:6;28225:15;28218:48;28033:240;:::o;28279:366::-;28421:3;28442:67;28506:2;28501:3;28442:67;:::i;:::-;28435:74;;28518:93;28607:3;28518:93;:::i;:::-;28636:2;28631:3;28627:12;28620:19;;28279:366;;;:::o;28651:419::-;28817:4;28855:2;28844:9;28840:18;28832:26;;28904:9;28898:4;28894:20;28890:1;28879:9;28875:17;28868:47;28932:131;29058:4;28932:131;:::i;:::-;28924:139;;28651:419;;;:::o;29076:169::-;29216:21;29212:1;29204:6;29200:14;29193:45;29076:169;:::o;29251:366::-;29393:3;29414:67;29478:2;29473:3;29414:67;:::i;:::-;29407:74;;29490:93;29579:3;29490:93;:::i;:::-;29608:2;29603:3;29599:12;29592:19;;29251:366;;;:::o;29623:419::-;29789:4;29827:2;29816:9;29812:18;29804:26;;29876:9;29870:4;29866:20;29862:1;29851:9;29847:17;29840:47;29904:131;30030:4;29904:131;:::i;:::-;29896:139;;29623:419;;;:::o;30048:241::-;30188:34;30184:1;30176:6;30172:14;30165:58;30257:24;30252:2;30244:6;30240:15;30233:49;30048:241;:::o;30295:366::-;30437:3;30458:67;30522:2;30517:3;30458:67;:::i;:::-;30451:74;;30534:93;30623:3;30534:93;:::i;:::-;30652:2;30647:3;30643:12;30636:19;;30295:366;;;:::o;30667:419::-;30833:4;30871:2;30860:9;30856:18;30848:26;;30920:9;30914:4;30910:20;30906:1;30895:9;30891:17;30884:47;30948:131;31074:4;30948:131;:::i;:::-;30940:139;;30667:419;;;:::o;31092:194::-;31132:4;31152:20;31170:1;31152:20;:::i;:::-;31147:25;;31186:20;31204:1;31186:20;:::i;:::-;31181:25;;31230:1;31227;31223:9;31215:17;;31254:1;31248:4;31245:11;31242:37;;;31259:18;;:::i;:::-;31242:37;31092:194;;;;:::o;31292:225::-;31432:34;31428:1;31420:6;31416:14;31409:58;31501:8;31496:2;31488:6;31484:15;31477:33;31292:225;:::o;31523:366::-;31665:3;31686:67;31750:2;31745:3;31686:67;:::i;:::-;31679:74;;31762:93;31851:3;31762:93;:::i;:::-;31880:2;31875:3;31871:12;31864:19;;31523:366;;;:::o;31895:419::-;32061:4;32099:2;32088:9;32084:18;32076:26;;32148:9;32142:4;32138:20;32134:1;32123:9;32119:17;32112:47;32176:131;32302:4;32176:131;:::i;:::-;32168:139;;31895:419;;;:::o;32320:442::-;32469:4;32507:2;32496:9;32492:18;32484:26;;32520:71;32588:1;32577:9;32573:17;32564:6;32520:71;:::i;:::-;32601:72;32669:2;32658:9;32654:18;32645:6;32601:72;:::i;:::-;32683;32751:2;32740:9;32736:18;32727:6;32683:72;:::i;:::-;32320:442;;;;;;:::o;32768:147::-;32869:11;32906:3;32891:18;;32768:147;;;;:::o;32921:114::-;;:::o;33041:398::-;33200:3;33221:83;33302:1;33297:3;33221:83;:::i;:::-;33214:90;;33313:93;33402:3;33313:93;:::i;:::-;33431:1;33426:3;33422:11;33415:18;;33041:398;;;:::o;33445:379::-;33629:3;33651:147;33794:3;33651:147;:::i;:::-;33644:154;;33815:3;33808:10;;33445:379;;;:::o;33830:180::-;33878:77;33875:1;33868:88;33975:4;33972:1;33965:15;33999:4;33996:1;33989:15;34016:180;34064:77;34061:1;34054:88;34161:4;34158:1;34151:15;34185:4;34182:1;34175:15;34202:143;34259:5;34290:6;34284:13;34275:22;;34306:33;34333:5;34306:33;:::i;:::-;34202:143;;;;:::o;34351:351::-;34421:6;34470:2;34458:9;34449:7;34445:23;34441:32;34438:119;;;34476:79;;:::i;:::-;34438:119;34596:1;34621:64;34677:7;34668:6;34657:9;34653:22;34621:64;:::i;:::-;34611:74;;34567:128;34351:351;;;;:::o;34708:85::-;34753:7;34782:5;34771:16;;34708:85;;;:::o;34799:158::-;34857:9;34890:61;34908:42;34917:32;34943:5;34917:32;:::i;:::-;34908:42;:::i;:::-;34890:61;:::i;:::-;34877:74;;34799:158;;;:::o;34963:147::-;35058:45;35097:5;35058:45;:::i;:::-;35053:3;35046:58;34963:147;;:::o;35116:114::-;35183:6;35217:5;35211:12;35201:22;;35116:114;;;:::o;35236:184::-;35335:11;35369:6;35364:3;35357:19;35409:4;35404:3;35400:14;35385:29;;35236:184;;;;:::o;35426:132::-;35493:4;35516:3;35508:11;;35546:4;35541:3;35537:14;35529:22;;35426:132;;;:::o;35564:108::-;35641:24;35659:5;35641:24;:::i;:::-;35636:3;35629:37;35564:108;;:::o;35678:179::-;35747:10;35768:46;35810:3;35802:6;35768:46;:::i;:::-;35846:4;35841:3;35837:14;35823:28;;35678:179;;;;:::o;35863:113::-;35933:4;35965;35960:3;35956:14;35948:22;;35863:113;;;:::o;36012:732::-;36131:3;36160:54;36208:5;36160:54;:::i;:::-;36230:86;36309:6;36304:3;36230:86;:::i;:::-;36223:93;;36340:56;36390:5;36340:56;:::i;:::-;36419:7;36450:1;36435:284;36460:6;36457:1;36454:13;36435:284;;;36536:6;36530:13;36563:63;36622:3;36607:13;36563:63;:::i;:::-;36556:70;;36649:60;36702:6;36649:60;:::i;:::-;36639:70;;36495:224;36482:1;36479;36475:9;36470:14;;36435:284;;;36439:14;36735:3;36728:10;;36136:608;;;36012:732;;;;:::o;36750:831::-;37013:4;37051:3;37040:9;37036:19;37028:27;;37065:71;37133:1;37122:9;37118:17;37109:6;37065:71;:::i;:::-;37146:80;37222:2;37211:9;37207:18;37198:6;37146:80;:::i;:::-;37273:9;37267:4;37263:20;37258:2;37247:9;37243:18;37236:48;37301:108;37404:4;37395:6;37301:108;:::i;:::-;37293:116;;37419:72;37487:2;37476:9;37472:18;37463:6;37419:72;:::i;:::-;37501:73;37569:3;37558:9;37554:19;37545:6;37501:73;:::i;:::-;36750:831;;;;;;;;:::o;37587:807::-;37836:4;37874:3;37863:9;37859:19;37851:27;;37888:71;37956:1;37945:9;37941:17;37932:6;37888:71;:::i;:::-;37969:72;38037:2;38026:9;38022:18;38013:6;37969:72;:::i;:::-;38051:80;38127:2;38116:9;38112:18;38103:6;38051:80;:::i;:::-;38141;38217:2;38206:9;38202:18;38193:6;38141:80;:::i;:::-;38231:73;38299:3;38288:9;38284:19;38275:6;38231:73;:::i;:::-;38314;38382:3;38371:9;38367:19;38358:6;38314:73;:::i;:::-;37587:807;;;;;;;;;:::o;38400:143::-;38457:5;38488:6;38482:13;38473:22;;38504:33;38531:5;38504:33;:::i;:::-;38400:143;;;;:::o;38549:663::-;38637:6;38645;38653;38702:2;38690:9;38681:7;38677:23;38673:32;38670:119;;;38708:79;;:::i;:::-;38670:119;38828:1;38853:64;38909:7;38900:6;38889:9;38885:22;38853:64;:::i;:::-;38843:74;;38799:128;38966:2;38992:64;39048:7;39039:6;39028:9;39024:22;38992:64;:::i;:::-;38982:74;;38937:129;39105:2;39131:64;39187:7;39178:6;39167:9;39163:22;39131:64;:::i;:::-;39121:74;;39076:129;38549:663;;;;;:::o

Swarm Source

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