ETH Price: $2,485.13 (+3.39%)
 

Overview

Max Total Supply

100,000,000,000 LCORGI

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
282,213,441.740066360778016441 LCORGI

Value
$0.00
0x9316a239ad30c3eee5d15d84d15709bafb4e3f28
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:
LuckyCorgi

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-16
*/

// File @openzeppelin/contracts/utils/[email protected]

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


// File @openzeppelin/contracts/access/[email protected]

// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/[email protected]

// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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


// File @openzeppelin/contracts/token/ERC20/[email protected]

// OpenZeppelin Contracts v4.4.1 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

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


// File contracts/Interfaces/IUniswap.sol

pragma solidity ^0.8.0;

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

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    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, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01{
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}


interface IUniswapV2ERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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


contract LuckyCorgi is ERC20Burnable, Ownable {
    address public roadWallet;
    address public pairAddress;
    IUniswapV2Router02 public router;
    address public baseToken;
    address public ecoWallet;
    address public routerAddress;
    mapping(address => bool) public isExcluded;
    uint256 public devMarketingFee = 5;
    uint256 public ecoLotteryFee = 8;
    bool public swapForMarketing = true;
    bool public tradingEnabled = false;
    mapping(address => bool) public _isWhitelisted;
    mapping(address => uint256) public  _isParticipated;
    mapping(address => bool) public _isBlacklisted;
    bool public _wlProtectionEnabled = true;
    uint256 public _lockPercentage = 50;
    uint256 public _maxTxAmount;
    uint256 private _buyCooldown = 1 minutes;
    mapping(address => uint256) public lastBuy;
    bool public buyCooldownEnabled = true;
    uint256 public pairBalanceThreshold = 5;
    uint256 public maxSwapForFeesAmount = 0;
    uint256 public minAmountToSwap = 200_000_000 ether;

    constructor(
        string memory name_,
        string memory symbol_,
        uint256 totalSupply,
        address router_,
        address baseToken_) ERC20(name_, symbol_) {
        baseToken = baseToken_;
        routerAddress = router_;
        router = IUniswapV2Router02(router_);

        pairAddress = IUniswapV2Factory(router.factory()).createPair(address(this), baseToken);
        _approve(address(this), router_, ~uint256(0));
        swapForMarketing = true;

        isExcluded[address(this)] = true;
        isExcluded[msg.sender] = true;

        _mint(msg.sender, totalSupply);
        _maxTxAmount = 700_000_000 ether;
    }

    function setRoadFee(uint256 fee_) external onlyOwner {
        devMarketingFee = fee_;
        require(totalFees() < 20, "Fees too high");
    }

    function setEcoFee(uint256 fee_) external onlyOwner {
        ecoLotteryFee = fee_;
        require(totalFees() < 20, "Fees too high");
    }

    function setRoadWallet(address addr) external onlyOwner {
        roadWallet = addr;
    }

    function setEcoWallet(address addr) external onlyOwner {
        ecoWallet = addr;
    }

    function setPairBalanceThreshold(uint256 percentage) external onlyOwner {
        pairBalanceThreshold = percentage;
    }

    function setMinAmountToSwap(uint256 minAmountToSwap_) external onlyOwner{
        minAmountToSwap = minAmountToSwap_;
    }

    function blacklistAddress(address account, bool value) external onlyOwner {
        _isBlacklisted[account] = value;
    }

    function openTrading() external onlyOwner {
        tradingEnabled = true;
    }

    function multiAddToWhitelist(address [] memory whitelisted) external onlyOwner {
        for (uint256 i = 0; i < whitelisted.length; i++) {
            _isWhitelisted[whitelisted[i]] = true;
        }
    }

    function multiRemoveFromWhitelist(address [] memory whitelisted) external onlyOwner {
        for (uint256 i = 0; i < whitelisted.length; i++) {
            _isWhitelisted[whitelisted[i]] = false;
        }
    }

    function WLProtectionEnabled(bool status) external onlyOwner {
        _wlProtectionEnabled = status;
    }

    function WLPercentageLock(uint256 percentage) external onlyOwner {
        _lockPercentage = percentage;
    }

    function setMaxTxAmount(uint256 maxTx) external onlyOwner {
        require(maxTx >= totalSupply()/10000, "increase limit");
        _maxTxAmount = maxTx;
    }

    function setBuycooldownEnabled(bool status) external onlyOwner {
        buyCooldownEnabled = status;
    }

    function setBuyCooldown(uint256 buyCooldown) external onlyOwner {
        require(buyCooldown < 600, "decrease cooldown");
        _buyCooldown = buyCooldown;
    }

    function setSwapForMarketing(bool enabled) external onlyOwner {
        swapForMarketing = enabled;
    }

    function setMaxTokensToSwapForFees(uint256 maxSwapAmount_) external onlyOwner {
        maxSwapForFeesAmount = maxSwapAmount_;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        if (sender != owner() && recipient != owner() && sender != address(this) && recipient != address(this)) {
            require(amount <= _maxTxAmount, "Amount exceeded balance");
        }

        uint256 totalFees = calculateFee(sender, recipient, amount);
        uint256 remainingAmount = amount - totalFees;

        if (totalFees > 0) {
            super._transfer(sender, address(this), totalFees);
        }

        if (recipient == pairAddress && swapForMarketing && sender != address(this) && sender != owner()) {
            _swapForFees();
        }

        super._transfer(sender, recipient, remainingAmount);
    }

    function getAmountToSwap() public view returns (uint256){
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance < minAmountToSwap) {
            return 0;
        }

        uint256 pairBalance = balanceOf(pairAddress);
        uint256 maxSwapByPairBalance = pairBalance * pairBalanceThreshold / 100;
        uint256 amountToSwap = contractBalance;

        if (maxSwapByPairBalance > 0 && amountToSwap > maxSwapByPairBalance) {
            amountToSwap = maxSwapByPairBalance;
        }

        if (maxSwapForFeesAmount > 0 && amountToSwap > maxSwapForFeesAmount) {
            amountToSwap = maxSwapForFeesAmount;
        }

        return amountToSwap;
    }

    function _swapForFees() internal {
        /* if the balance of address this is 0, no need to initiate swap */
        if (balanceOf(address(this)) == 0) {
            return;
        }
        uint256 amountToSwap = getAmountToSwap();
        if (amountToSwap == 0) {
            return;
        }

        if (allowance(address(this), routerAddress) <= amountToSwap) {
            super._approve(address(this), routerAddress, ~uint256(0));
        }
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        try router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        ){
            uint256 currentETHBalance = address(this).balance;
            uint256 _totalFees = totalFees();
            uint256 roadPortion = ((address(this).balance * devMarketingFee) / _totalFees);
            uint256 ecosystemPortion = ((address(this).balance * ecoLotteryFee) / _totalFees);
            bool sent;
            bytes memory data;
            (sent, data) = ecoWallet.call{value : ecosystemPortion, gas : 2300}("");
            (sent, data) = roadWallet.call{value : roadPortion, gas : 2300}("");
        }
        catch {}
    }

    function totalFees() public view returns (uint256){
        return devMarketingFee + ecoLotteryFee;
    }

    function calculateFee(address sender, address recipient, uint256 amount) public view returns (uint256){
        if (
            isExcluded[sender] ||
            isExcluded[recipient] ||
            !(sender == pairAddress || recipient == pairAddress)
        ) {
            return 0;
        }
        uint256 totalFees = (amount * totalFees()) / 100;
        return totalFees;
    }

    function swapForFees() external onlyOwner {
        _swapForFees();
    }

    function multiExcludeFromFees(address [] memory addresses) external onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
            isExcluded[addresses[i]] = true;
        }
    }

    function _beforeTokenTransfer(address sender, address recipient, uint256 amount) override internal {
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], 'Blacklisted address');

        if (tx.origin == owner() || sender == address(this) || recipient == address(this)) {
            return;
        }
        if (buyCooldownEnabled && sender == pairAddress) {
            require(block.timestamp - lastBuy[tx.origin] >= _buyCooldown, "buy cooldown!");
            lastBuy[tx.origin] = block.timestamp;
        }

        if (!tradingEnabled) {
            require(_isWhitelisted[tx.origin] && (_isParticipated[tx.origin] == 0), "The address is not whitelisted");
            _isParticipated[tx.origin] = amount;
        }

        if (_wlProtectionEnabled && _isWhitelisted[sender]) {
            uint256 leftOverAfterSwap = balanceOf(sender) - (amount);
            uint256 lockedAmount = _isParticipated[sender] * (_lockPercentage) / (100);
            require(leftOverAfterSwap >= lockedAmount, "WL selling more than allowance");
        }
    }

    function multiIncludeInFees(address [] memory addresses) external onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
            isExcluded[addresses[i]] = false;
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"address","name":"router_","type":"address"},{"internalType":"address","name":"baseToken_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"WLPercentageLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"WLProtectionEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isParticipated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lockPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wlProtectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","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":"calculateFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecoLotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecoWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAmountToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapForFeesAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAmountToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"whitelisted","type":"address[]"}],"name":"multiAddToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"multiExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"multiIncludeInFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"whitelisted","type":"address[]"}],"name":"multiRemoveFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairBalanceThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"roadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyCooldown","type":"uint256"}],"name":"setBuyCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setBuycooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee_","type":"uint256"}],"name":"setEcoFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setEcoWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSwapAmount_","type":"uint256"}],"name":"setMaxTokensToSwapForFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minAmountToSwap_","type":"uint256"}],"name":"setMinAmountToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setPairBalanceThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee_","type":"uint256"}],"name":"setRoadFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setRoadWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapForMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapForFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapForMarketing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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":"tradingEnabled","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":[{"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"},{"stateMutability":"payable","type":"receive"}]

60806040526005600d556008600e556001600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506001601360006101000a81548160ff0219169083151502179055506032601455603c6016556001601860006101000a81548160ff02191690831515021790555060056019556000601a556aa56fa5b99019a5c8000000601b55348015620000aa57600080fd5b50604051620067f2380380620067f28339818101604052810190620000d091906200100b565b84848160039080519060200190620000ea92919062000e7d565b5080600490805190602001906200010392919062000e7d565b505050620001266200011a6200049160201b60201c565b6200049960201b60201c565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025257600080fd5b505afa15801562000267573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028d919062000fd9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401620002eb92919062001204565b602060405180830381600087803b1580156200030657600080fd5b505af11580156200031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000341919062000fd9565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200039630836000196200055f60201b60201c565b6001600f60006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200047333846200073260201b60201c565b6b024306c4097859c43c00000060158190555050505050506200183d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620005d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c990620012b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000645576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200063c9062001231565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200072591906200131f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200079c90620012fd565b60405180910390fd5b620007b960008383620008ab60201b60201c565b8060026000828254620007cd9190620013ac565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620008249190620013ac565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200088b91906200131f565b60405180910390a3620008a76000838362000e0660201b60201c565b5050565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620009505750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b62000992576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009899062001275565b60405180910390fd5b620009a262000e0b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16148062000a0757503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8062000a3e57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1562000a4a5762000e01565b601860009054906101000a900460ff16801562000ab45750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000b9357601654601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544262000b0a9190620014a2565b101562000b4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b459062001253565b60405180910390fd5b42601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60019054906101000a900460ff1662000cc857601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801562000c4157506000601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b62000c83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c7a9062001297565b60405180910390fd5b80601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900460ff16801562000d2e5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1562000e005760008162000d488562000e3560201b60201c565b62000d549190620014a2565b905060006064601454601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000da9919062001441565b62000db5919062001409565b90508082101562000dfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000df490620012db565b60405180910390fd5b50505b5b505050565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b82805462000e8b9062001551565b90600052602060002090601f01602090048101928262000eaf576000855562000efb565b82601f1062000eca57805160ff191683800117855562000efb565b8280016001018555821562000efb579182015b8281111562000efa57825182559160200191906001019062000edd565b5b50905062000f0a919062000f0e565b5090565b5b8082111562000f2957600081600090555060010162000f0f565b5090565b600062000f4462000f3e8462001365565b6200133c565b90508281526020810184848401111562000f635762000f626200167e565b5b62000f708482856200151b565b509392505050565b60008151905062000f898162001809565b92915050565b600082601f83011262000fa75762000fa662001679565b5b815162000fb984826020860162000f2d565b91505092915050565b60008151905062000fd38162001823565b92915050565b60006020828403121562000ff25762000ff162001688565b5b6000620010028482850162000f78565b91505092915050565b600080600080600060a086880312156200102a576200102962001688565b5b600086015167ffffffffffffffff8111156200104b576200104a62001683565b5b620010598882890162000f8f565b955050602086015167ffffffffffffffff8111156200107d576200107c62001683565b5b6200108b8882890162000f8f565b94505060406200109e8882890162000fc2565b9350506060620010b18882890162000f78565b9250506080620010c48882890162000f78565b9150509295509295909350565b620010dc81620014dd565b82525050565b6000620010f16022836200139b565b9150620010fe826200169e565b604082019050919050565b600062001118600d836200139b565b91506200112582620016ed565b602082019050919050565b60006200113f6013836200139b565b91506200114c8262001716565b602082019050919050565b600062001166601e836200139b565b915062001173826200173f565b602082019050919050565b60006200118d6024836200139b565b91506200119a8262001768565b604082019050919050565b6000620011b4601e836200139b565b9150620011c182620017b7565b602082019050919050565b6000620011db601f836200139b565b9150620011e882620017e0565b602082019050919050565b620011fe8162001511565b82525050565b60006040820190506200121b6000830185620010d1565b6200122a6020830184620010d1565b9392505050565b600060208201905081810360008301526200124c81620010e2565b9050919050565b600060208201905081810360008301526200126e8162001109565b9050919050565b60006020820190508181036000830152620012908162001130565b9050919050565b60006020820190508181036000830152620012b28162001157565b9050919050565b60006020820190508181036000830152620012d4816200117e565b9050919050565b60006020820190508181036000830152620012f681620011a5565b9050919050565b600060208201905081810360008301526200131881620011cc565b9050919050565b6000602082019050620013366000830184620011f3565b92915050565b6000620013486200135b565b905062001356828262001587565b919050565b6000604051905090565b600067ffffffffffffffff8211156200138357620013826200164a565b5b6200138e826200168d565b9050602081019050919050565b600082825260208201905092915050565b6000620013b98262001511565b9150620013c68362001511565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620013fe57620013fd620015bd565b5b828201905092915050565b6000620014168262001511565b9150620014238362001511565b925082620014365762001435620015ec565b5b828204905092915050565b60006200144e8262001511565b91506200145b8362001511565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014975762001496620015bd565b5b828202905092915050565b6000620014af8262001511565b9150620014bc8362001511565b925082821015620014d257620014d1620015bd565b5b828203905092915050565b6000620014ea82620014f1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200153b5780820151818401526020810190506200151e565b838111156200154b576000848401525b50505050565b600060028204905060018216806200156a57607f821691505b602082108114156200158157620015806200161b565b5b50919050565b62001592826200168d565b810181811067ffffffffffffffff82111715620015b457620015b36200164a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f62757920636f6f6c646f776e2100000000000000000000000000000000000000600082015250565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b7f5468652061646472657373206973206e6f742077686974656c69737465640000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f574c2073656c6c696e67206d6f7265207468616e20616c6c6f77616e63650000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6200181481620014dd565b81146200182057600080fd5b50565b6200182e8162001511565b81146200183a57600080fd5b50565b614fa5806200184d6000396000f3fe6080604052600436106103a65760003560e01c8063729d8a87116101e7578063c1adf7bc1161010d578063d9d47d69116100a0578063e0ac033a1161006f578063e0ac033a14610dcf578063ec28438a14610df8578063f2fde38b14610e21578063f887ea4014610e4a576103ad565b8063d9d47d6914610d13578063dc58618214610d3e578063dd1423bb14610d67578063dd62ed3e14610d92576103ad565b8063caab4df0116100dc578063caab4df014610c59578063cba0e99614610c84578063d471bb4714610cc1578063d9a57c9e14610cea576103ad565b8063c1adf7bc14610bb1578063c29632bd14610bee578063c55dae6314610c17578063c9567bf914610c42576103ad565b8063940cbdc611610185578063a8b0898211610154578063a8b0898214610af5578063a9059cbb14610b20578063adabd81714610b5d578063bb5b0e0b14610b88576103ad565b8063940cbdc614610a2557806395d89b4114610a505780639cee214214610a7b578063a457c2d714610ab8576103ad565b80637ca87cb6116101c15780637ca87cb6146109675780637d1db4a5146109a457806383afaac0146109cf5780638da5cb5b146109fa576103ad565b8063729d8a87146108d857806378f8b72e1461090157806379cc67901461093e576103ad565b8063377233eb116102cc5780634ada218b1161026a57806368362ac61161023957806368362ac6146108445780636a972f351461085b57806370a0823114610884578063715018a6146108c1576103ad565b80634ada218b1461079c5780634f3544ed146107c7578063617fe0ed146107f057806364d97ad81461081b576103ad565b806342278a5d116102a657806342278a5d146106f657806342966c681461071f578063455a4396146107485780634658db6c14610771576103ad565b8063377233eb1461066757806339509351146106905780633a2f5784146106cd576103ad565b80631cdd3be3116103445780632b0a696d116103135780632b0a696d146105bd578063313ce567146105e65780633268cc5614610611578063340366511461063c576103ad565b80631cdd3be3146104ef57806323b872dd1461052c5780632a2688d8146105695780632acdc44f14610592576103ad565b806313f43a571161038057806313f43a5714610445578063172c802b1461047057806317a89aab1461049957806318160ddd146104c4576103ad565b806306fdde03146103b2578063095ea7b3146103dd57806313114a9d1461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e75565b6040516103d491906142cd565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190613d8d565b610f07565b6040516104119190614297565b60405180910390f35b34801561042657600080fd5b5061042f610f25565b60405161043c919061456f565b60405180910390f35b34801561045157600080fd5b5061045a610f3c565b604051610467919061456f565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613dcd565b610f42565b005b3480156104a557600080fd5b506104ae611053565b6040516104bb919061427c565b60405180910390f35b3480156104d057600080fd5b506104d9611079565b6040516104e6919061456f565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190613c60565b611083565b6040516105239190614297565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e9190613cfa565b6110a3565b6040516105609190614297565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190613e16565b61119b565b005b34801561059e57600080fd5b506105a7611234565b6040516105b4919061427c565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190613e43565b61125a565b005b3480156105f257600080fd5b506105fb6112e0565b60405161060891906145e4565b60405180910390f35b34801561061d57600080fd5b506106266112e9565b604051610633919061427c565b60405180910390f35b34801561064857600080fd5b5061065161130f565b60405161065e919061456f565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613e43565b611315565b005b34801561069c57600080fd5b506106b760048036038101906106b29190613d8d565b6113e5565b6040516106c49190614297565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190613c60565b611491565b005b34801561070257600080fd5b5061071d60048036038101906107189190613e16565b611551565b005b34801561072b57600080fd5b5061074660048036038101906107419190613e43565b6115ea565b005b34801561075457600080fd5b5061076f600480360381019061076a9190613d4d565b6115fe565b005b34801561077d57600080fd5b506107866116d5565b6040516107939190614297565b60405180910390f35b3480156107a857600080fd5b506107b16116e8565b6040516107be9190614297565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e99190613dcd565b6116fb565b005b3480156107fc57600080fd5b5061080561180c565b6040516108129190614297565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190613c60565b61181f565b005b34801561085057600080fd5b506108596118df565b005b34801561086757600080fd5b50610882600480360381019061087d9190613e43565b611965565b005b34801561089057600080fd5b506108ab60048036038101906108a69190613c60565b611a35565b6040516108b8919061456f565b60405180910390f35b3480156108cd57600080fd5b506108d6611a7d565b005b3480156108e457600080fd5b506108ff60048036038101906108fa9190613e43565b611b05565b005b34801561090d57600080fd5b5061092860048036038101906109239190613c60565b611b8b565b604051610935919061456f565b60405180910390f35b34801561094a57600080fd5b5061096560048036038101906109609190613d8d565b611ba3565b005b34801561097357600080fd5b5061098e60048036038101906109899190613cfa565b611c1e565b60405161099b919061456f565b60405180910390f35b3480156109b057600080fd5b506109b9611daf565b6040516109c6919061456f565b60405180910390f35b3480156109db57600080fd5b506109e4611db5565b6040516109f1919061456f565b60405180910390f35b348015610a0657600080fd5b50610a0f611dbb565b604051610a1c919061427c565b60405180910390f35b348015610a3157600080fd5b50610a3a611de5565b604051610a47919061456f565b60405180910390f35b348015610a5c57600080fd5b50610a65611deb565b604051610a7291906142cd565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190613c60565b611e7d565b604051610aaf9190614297565b60405180910390f35b348015610ac457600080fd5b50610adf6004803603810190610ada9190613d8d565b611e9d565b604051610aec9190614297565b60405180910390f35b348015610b0157600080fd5b50610b0a611f88565b604051610b17919061427c565b60405180910390f35b348015610b2c57600080fd5b50610b476004803603810190610b429190613d8d565b611fae565b604051610b549190614297565b60405180910390f35b348015610b6957600080fd5b50610b72611fcc565b604051610b7f9190614297565b60405180910390f35b348015610b9457600080fd5b50610baf6004803603810190610baa9190613e43565b611fdf565b005b348015610bbd57600080fd5b50610bd86004803603810190610bd39190613c60565b612065565b604051610be5919061456f565b60405180910390f35b348015610bfa57600080fd5b50610c156004803603810190610c109190613e43565b61207d565b005b348015610c2357600080fd5b50610c2c612147565b604051610c39919061427c565b60405180910390f35b348015610c4e57600080fd5b50610c5761216d565b005b348015610c6557600080fd5b50610c6e612206565b604051610c7b919061456f565b60405180910390f35b348015610c9057600080fd5b50610cab6004803603810190610ca69190613c60565b61220c565b604051610cb89190614297565b60405180910390f35b348015610ccd57600080fd5b50610ce86004803603810190610ce39190613dcd565b61222c565b005b348015610cf657600080fd5b50610d116004803603810190610d0c9190613dcd565b61233d565b005b348015610d1f57600080fd5b50610d2861244e565b604051610d35919061456f565b60405180910390f35b348015610d4a57600080fd5b50610d656004803603810190610d609190613e43565b612503565b005b348015610d7357600080fd5b50610d7c612589565b604051610d89919061456f565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db49190613cba565b61258f565b604051610dc6919061456f565b60405180910390f35b348015610ddb57600080fd5b50610df66004803603810190610df19190613e16565b612616565b005b348015610e0457600080fd5b50610e1f6004803603810190610e1a9190613e43565b6126af565b005b348015610e2d57600080fd5b50610e486004803603810190610e439190613c60565b61278c565b005b348015610e5657600080fd5b50610e5f612884565b604051610e6c91906142b2565b60405180910390f35b606060038054610e8490614895565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb090614895565b8015610efd5780601f10610ed257610100808354040283529160200191610efd565b820191906000526020600020905b815481529060010190602001808311610ee057829003601f168201915b5050505050905090565b6000610f1b610f146128aa565b84846128b2565b6001905092915050565b6000600e54600d54610f3791906146b0565b905090565b601b5481565b610f4a6128aa565b73ffffffffffffffffffffffffffffffffffffffff16610f68611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb59061444f565b60405180910390fd5b60005b815181101561104f576000600c6000848481518110610fe357610fe26149ce565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611047906148f8565b915050610fc1565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60126020528060005260406000206000915054906101000a900460ff1681565b60006110b0848484612a7d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110fb6128aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561117b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111729061442f565b60405180910390fd5b61118f856111876128aa565b8584036128b2565b60019150509392505050565b6111a36128aa565b73ffffffffffffffffffffffffffffffffffffffff166111c1611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e9061444f565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112626128aa565b73ffffffffffffffffffffffffffffffffffffffff16611280611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061444f565b60405180910390fd5b80601b8190555050565b60006012905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61131d6128aa565b73ffffffffffffffffffffffffffffffffffffffff1661133b611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113889061444f565b60405180910390fd5b80600d8190555060146113a2610f25565b106113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d99061454f565b60405180910390fd5b50565b60006114876113f26128aa565b8484600160006114006128aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148291906146b0565b6128b2565b6001905092915050565b6114996128aa565b73ffffffffffffffffffffffffffffffffffffffff166114b7611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461150d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115049061444f565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115596128aa565b73ffffffffffffffffffffffffffffffffffffffff16611577611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c49061444f565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6115fb6115f56128aa565b82612ce2565b50565b6116066128aa565b73ffffffffffffffffffffffffffffffffffffffff16611624611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461167a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116719061444f565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b6117036128aa565b73ffffffffffffffffffffffffffffffffffffffff16611721611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e9061444f565b60405180910390fd5b60005b8151811015611808576001600c600084848151811061179c5761179b6149ce565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611800906148f8565b91505061177a565b5050565b601860009054906101000a900460ff1681565b6118276128aa565b73ffffffffffffffffffffffffffffffffffffffff16611845611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461189b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118929061444f565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118e76128aa565b73ffffffffffffffffffffffffffffffffffffffff16611905611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119529061444f565b60405180910390fd5b611963612eb9565b565b61196d6128aa565b73ffffffffffffffffffffffffffffffffffffffff1661198b611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d89061444f565b60405180910390fd5b80600e8190555060146119f2610f25565b10611a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a299061454f565b60405180910390fd5b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a856128aa565b73ffffffffffffffffffffffffffffffffffffffff16611aa3611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af09061444f565b60405180910390fd5b611b0360006132f6565b565b611b0d6128aa565b73ffffffffffffffffffffffffffffffffffffffff16611b2b611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b789061444f565b60405180910390fd5b80601a8190555050565b60116020528060005260406000206000915090505481565b6000611bb683611bb16128aa565b61258f565b905081811015611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf29061446f565b60405180910390fd5b611c0f83611c076128aa565b8484036128b2565b611c198383612ce2565b505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cc15750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d725750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d705750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15611d805760009050611da8565b60006064611d8c610f25565b84611d979190614737565b611da19190614706565b9050809150505b9392505050565b60155481565b600d5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b606060048054611dfa90614895565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2690614895565b8015611e735780601f10611e4857610100808354040283529160200191611e73565b820191906000526020600020905b815481529060010190602001808311611e5657829003601f168201915b5050505050905090565b60106020528060005260406000206000915054906101000a900460ff1681565b60008060016000611eac6128aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f609061452f565b60405180910390fd5b611f7d611f746128aa565b858584036128b2565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fc2611fbb6128aa565b8484612a7d565b6001905092915050565b601360009054906101000a900460ff1681565b611fe76128aa565b73ffffffffffffffffffffffffffffffffffffffff16612005611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461205b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120529061444f565b60405180910390fd5b8060198190555050565b60176020528060005260406000206000915090505481565b6120856128aa565b73ffffffffffffffffffffffffffffffffffffffff166120a3611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f09061444f565b60405180910390fd5b610258811061213d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121349061450f565b60405180910390fd5b8060168190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121756128aa565b73ffffffffffffffffffffffffffffffffffffffff16612193611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146121e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e09061444f565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b600e5481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6122346128aa565b73ffffffffffffffffffffffffffffffffffffffff16612252611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146122a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229f9061444f565b60405180910390fd5b60005b8151811015612339576000601060008484815181106122cd576122cc6149ce565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612331906148f8565b9150506122ab565b5050565b6123456128aa565b73ffffffffffffffffffffffffffffffffffffffff16612363611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146123b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b09061444f565b60405180910390fd5b60005b815181101561244a576001601060008484815181106123de576123dd6149ce565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612442906148f8565b9150506123bc565b5050565b60008061245a30611a35565b9050601b54811015612470576000915050612500565b600061249d600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a35565b905060006064601954836124b19190614737565b6124bb9190614706565b905060008390506000821180156124d157508181115b156124da578190505b6000601a541180156124ed5750601a5481115b156124f857601a5490505b809450505050505b90565b61250b6128aa565b73ffffffffffffffffffffffffffffffffffffffff16612529611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461257f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125769061444f565b60405180910390fd5b8060148190555050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61261e6128aa565b73ffffffffffffffffffffffffffffffffffffffff1661263c611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614612692576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126899061444f565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6126b76128aa565b73ffffffffffffffffffffffffffffffffffffffff166126d5611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461272b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229061444f565b60405180910390fd5b612710612736611079565b6127409190614706565b811015612782576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612779906143af565b60405180910390fd5b8060158190555050565b6127946128aa565b73ffffffffffffffffffffffffffffffffffffffff166127b2611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff9061444f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286f9061432f565b60405180910390fd5b612881816132f6565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612922576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612919906144cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129899061434f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a70919061456f565b60405180910390a3505050565b612a85611dbb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612af35750612ac3611dbb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b2b57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b6357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612bae57601554811115612bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba49061436f565b60405180910390fd5b5b6000612bbb848484611c1e565b905060008183612bcb9190614791565b90506000821115612be257612be18530846133bc565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612c4b5750600f60009054906101000a900460ff165b8015612c8357503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc25750612c92611dbb565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612cd057612ccf612eb9565b5b612cdb8585836133bc565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d499061448f565b60405180910390fd5b612d5e8260008361363d565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb9061430f565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612e3b9190614791565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ea0919061456f565b60405180910390a3612eb483600084613b69565b505050565b6000612ec430611a35565b1415612ecf576132f4565b6000612ed961244e565b90506000811415612eea57506132f4565b80612f1730600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661258f565b11612f4c57612f4b30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196128b2565b5b6000600267ffffffffffffffff811115612f6957612f686149fd565b5b604051908082528060200260200182016040528015612f975781602001602082028036833780820191505090505b5090503081600081518110612faf57612fae6149ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561305157600080fd5b505afa158015613065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130899190613c8d565b8160018151811061309d5761309c6149ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161313b95949392919061458a565b600060405180830381600087803b15801561315557600080fd5b505af1925050508015613166575060015b61316f576132f1565b6000479050600061317e610f25565b9050600081600d54476131919190614737565b61319b9190614706565b9050600082600e54476131ae9190614737565b6131b89190614706565b905060006060600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836108fc9060405161320890614267565b600060405180830381858888f193505050503d8060008114613246576040519150601f19603f3d011682016040523d82523d6000602084013e61324b565b606091505b508092508193505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846108fc9060405161329e90614267565b600060405180830381858888f193505050503d80600081146132dc576040519150601f19603f3d011682016040523d82523d6000602084013e6132e1565b606091505b5080925081935050505050505050505b50505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561342c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613423906144af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561349c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613493906142ef565b60405180910390fd5b6134a783838361363d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561352d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135249061438f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135c091906146b0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613624919061456f565b60405180910390a3613637848484613b69565b50505050565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136e15750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613720576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613717906143ef565b60405180910390fd5b613728611dbb565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16148061378c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806137c257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156137cc57613b64565b601860009054906101000a900460ff1680156138355750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561390e57601654601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426138889190614791565b10156138c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c0906143cf565b60405180910390fd5b42601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60019054906101000a900460ff16613a3e57601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139ba57506000601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b6139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f09061440f565b60405180910390fd5b80601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900460ff168015613aa35750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b6357600081613ab485611a35565b613abe9190614791565b905060006064601454601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b119190614737565b613b1b9190614706565b905080821015613b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b57906144ef565b60405180910390fd5b50505b5b505050565b505050565b6000613b81613b7c84614624565b6145ff565b90508083825260208201905082856020860282011115613ba457613ba3614a31565b5b60005b85811015613bd45781613bba8882613bde565b845260208401935060208301925050600181019050613ba7565b5050509392505050565b600081359050613bed81614f2a565b92915050565b600081519050613c0281614f2a565b92915050565b600082601f830112613c1d57613c1c614a2c565b5b8135613c2d848260208601613b6e565b91505092915050565b600081359050613c4581614f41565b92915050565b600081359050613c5a81614f58565b92915050565b600060208284031215613c7657613c75614a3b565b5b6000613c8484828501613bde565b91505092915050565b600060208284031215613ca357613ca2614a3b565b5b6000613cb184828501613bf3565b91505092915050565b60008060408385031215613cd157613cd0614a3b565b5b6000613cdf85828601613bde565b9250506020613cf085828601613bde565b9150509250929050565b600080600060608486031215613d1357613d12614a3b565b5b6000613d2186828701613bde565b9350506020613d3286828701613bde565b9250506040613d4386828701613c4b565b9150509250925092565b60008060408385031215613d6457613d63614a3b565b5b6000613d7285828601613bde565b9250506020613d8385828601613c36565b9150509250929050565b60008060408385031215613da457613da3614a3b565b5b6000613db285828601613bde565b9250506020613dc385828601613c4b565b9150509250929050565b600060208284031215613de357613de2614a3b565b5b600082013567ffffffffffffffff811115613e0157613e00614a36565b5b613e0d84828501613c08565b91505092915050565b600060208284031215613e2c57613e2b614a3b565b5b6000613e3a84828501613c36565b91505092915050565b600060208284031215613e5957613e58614a3b565b5b6000613e6784828501613c4b565b91505092915050565b6000613e7c8383613e88565b60208301905092915050565b613e91816147c5565b82525050565b613ea0816147c5565b82525050565b6000613eb182614660565b613ebb8185614683565b9350613ec683614650565b8060005b83811015613ef7578151613ede8882613e70565b9750613ee983614676565b925050600181019050613eca565b5085935050505092915050565b613f0d816147d7565b82525050565b613f1c8161481a565b82525050565b613f2b8161482c565b82525050565b6000613f3c8261466b565b613f46818561469f565b9350613f56818560208601614862565b613f5f81614a40565b840191505092915050565b6000613f7760238361469f565b9150613f8282614a51565b604082019050919050565b6000613f9a60228361469f565b9150613fa582614aa0565b604082019050919050565b6000613fbd60268361469f565b9150613fc882614aef565b604082019050919050565b6000613fe060228361469f565b9150613feb82614b3e565b604082019050919050565b600061400360178361469f565b915061400e82614b8d565b602082019050919050565b600061402660268361469f565b915061403182614bb6565b604082019050919050565b6000614049600e8361469f565b915061405482614c05565b602082019050919050565b600061406c600d8361469f565b915061407782614c2e565b602082019050919050565b600061408f60138361469f565b915061409a82614c57565b602082019050919050565b60006140b2601e8361469f565b91506140bd82614c80565b602082019050919050565b60006140d560288361469f565b91506140e082614ca9565b604082019050919050565b60006140f860208361469f565b915061410382614cf8565b602082019050919050565b600061411b60248361469f565b915061412682614d21565b604082019050919050565b600061413e60218361469f565b915061414982614d70565b604082019050919050565b600061416160258361469f565b915061416c82614dbf565b604082019050919050565b6000614184600083614694565b915061418f82614e0e565b600082019050919050565b60006141a760248361469f565b91506141b282614e11565b604082019050919050565b60006141ca601e8361469f565b91506141d582614e60565b602082019050919050565b60006141ed60118361469f565b91506141f882614e89565b602082019050919050565b600061421060258361469f565b915061421b82614eb2565b604082019050919050565b6000614233600d8361469f565b915061423e82614f01565b602082019050919050565b61425281614803565b82525050565b6142618161480d565b82525050565b600061427282614177565b9150819050919050565b60006020820190506142916000830184613e97565b92915050565b60006020820190506142ac6000830184613f04565b92915050565b60006020820190506142c76000830184613f13565b92915050565b600060208201905081810360008301526142e78184613f31565b905092915050565b6000602082019050818103600083015261430881613f6a565b9050919050565b6000602082019050818103600083015261432881613f8d565b9050919050565b6000602082019050818103600083015261434881613fb0565b9050919050565b6000602082019050818103600083015261436881613fd3565b9050919050565b6000602082019050818103600083015261438881613ff6565b9050919050565b600060208201905081810360008301526143a881614019565b9050919050565b600060208201905081810360008301526143c88161403c565b9050919050565b600060208201905081810360008301526143e88161405f565b9050919050565b6000602082019050818103600083015261440881614082565b9050919050565b60006020820190508181036000830152614428816140a5565b9050919050565b60006020820190508181036000830152614448816140c8565b9050919050565b60006020820190508181036000830152614468816140eb565b9050919050565b600060208201905081810360008301526144888161410e565b9050919050565b600060208201905081810360008301526144a881614131565b9050919050565b600060208201905081810360008301526144c881614154565b9050919050565b600060208201905081810360008301526144e88161419a565b9050919050565b60006020820190508181036000830152614508816141bd565b9050919050565b60006020820190508181036000830152614528816141e0565b9050919050565b6000602082019050818103600083015261454881614203565b9050919050565b6000602082019050818103600083015261456881614226565b9050919050565b60006020820190506145846000830184614249565b92915050565b600060a08201905061459f6000830188614249565b6145ac6020830187613f22565b81810360408301526145be8186613ea6565b90506145cd6060830185613e97565b6145da6080830184614249565b9695505050505050565b60006020820190506145f96000830184614258565b92915050565b600061460961461a565b905061461582826148c7565b919050565b6000604051905090565b600067ffffffffffffffff82111561463f5761463e6149fd565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006146bb82614803565b91506146c683614803565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146fb576146fa614941565b5b828201905092915050565b600061471182614803565b915061471c83614803565b92508261472c5761472b614970565b5b828204905092915050565b600061474282614803565b915061474d83614803565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561478657614785614941565b5b828202905092915050565b600061479c82614803565b91506147a783614803565b9250828210156147ba576147b9614941565b5b828203905092915050565b60006147d0826147e3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006148258261483e565b9050919050565b600061483782614803565b9050919050565b600061484982614850565b9050919050565b600061485b826147e3565b9050919050565b60005b83811015614880578082015181840152602081019050614865565b8381111561488f576000848401525b50505050565b600060028204905060018216806148ad57607f821691505b602082108114156148c1576148c061499f565b5b50919050565b6148d082614a40565b810181811067ffffffffffffffff821117156148ef576148ee6149fd565b5b80604052505050565b600061490382614803565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561493657614935614941565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e742065786365656465642062616c616e6365000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f696e637265617365206c696d6974000000000000000000000000000000000000600082015250565b7f62757920636f6f6c646f776e2100000000000000000000000000000000000000600082015250565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b7f5468652061646472657373206973206e6f742077686974656c69737465640000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f574c2073656c6c696e67206d6f7265207468616e20616c6c6f77616e63650000600082015250565b7f646563726561736520636f6f6c646f776e000000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f4665657320746f6f206869676800000000000000000000000000000000000000600082015250565b614f33816147c5565b8114614f3e57600080fd5b50565b614f4a816147d7565b8114614f5557600080fd5b50565b614f6181614803565b8114614f6c57600080fd5b5056fea2646970667358221220d276755a48fc3172289bd8ef910467b176be4f83a7c8e710316b5ebeb066ea9364736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000001431e0fae6d7217caa00000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000b4c75636b7920436f72676900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064c434f5247490000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063729d8a87116101e7578063c1adf7bc1161010d578063d9d47d69116100a0578063e0ac033a1161006f578063e0ac033a14610dcf578063ec28438a14610df8578063f2fde38b14610e21578063f887ea4014610e4a576103ad565b8063d9d47d6914610d13578063dc58618214610d3e578063dd1423bb14610d67578063dd62ed3e14610d92576103ad565b8063caab4df0116100dc578063caab4df014610c59578063cba0e99614610c84578063d471bb4714610cc1578063d9a57c9e14610cea576103ad565b8063c1adf7bc14610bb1578063c29632bd14610bee578063c55dae6314610c17578063c9567bf914610c42576103ad565b8063940cbdc611610185578063a8b0898211610154578063a8b0898214610af5578063a9059cbb14610b20578063adabd81714610b5d578063bb5b0e0b14610b88576103ad565b8063940cbdc614610a2557806395d89b4114610a505780639cee214214610a7b578063a457c2d714610ab8576103ad565b80637ca87cb6116101c15780637ca87cb6146109675780637d1db4a5146109a457806383afaac0146109cf5780638da5cb5b146109fa576103ad565b8063729d8a87146108d857806378f8b72e1461090157806379cc67901461093e576103ad565b8063377233eb116102cc5780634ada218b1161026a57806368362ac61161023957806368362ac6146108445780636a972f351461085b57806370a0823114610884578063715018a6146108c1576103ad565b80634ada218b1461079c5780634f3544ed146107c7578063617fe0ed146107f057806364d97ad81461081b576103ad565b806342278a5d116102a657806342278a5d146106f657806342966c681461071f578063455a4396146107485780634658db6c14610771576103ad565b8063377233eb1461066757806339509351146106905780633a2f5784146106cd576103ad565b80631cdd3be3116103445780632b0a696d116103135780632b0a696d146105bd578063313ce567146105e65780633268cc5614610611578063340366511461063c576103ad565b80631cdd3be3146104ef57806323b872dd1461052c5780632a2688d8146105695780632acdc44f14610592576103ad565b806313f43a571161038057806313f43a5714610445578063172c802b1461047057806317a89aab1461049957806318160ddd146104c4576103ad565b806306fdde03146103b2578063095ea7b3146103dd57806313114a9d1461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e75565b6040516103d491906142cd565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190613d8d565b610f07565b6040516104119190614297565b60405180910390f35b34801561042657600080fd5b5061042f610f25565b60405161043c919061456f565b60405180910390f35b34801561045157600080fd5b5061045a610f3c565b604051610467919061456f565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613dcd565b610f42565b005b3480156104a557600080fd5b506104ae611053565b6040516104bb919061427c565b60405180910390f35b3480156104d057600080fd5b506104d9611079565b6040516104e6919061456f565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190613c60565b611083565b6040516105239190614297565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e9190613cfa565b6110a3565b6040516105609190614297565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190613e16565b61119b565b005b34801561059e57600080fd5b506105a7611234565b6040516105b4919061427c565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190613e43565b61125a565b005b3480156105f257600080fd5b506105fb6112e0565b60405161060891906145e4565b60405180910390f35b34801561061d57600080fd5b506106266112e9565b604051610633919061427c565b60405180910390f35b34801561064857600080fd5b5061065161130f565b60405161065e919061456f565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613e43565b611315565b005b34801561069c57600080fd5b506106b760048036038101906106b29190613d8d565b6113e5565b6040516106c49190614297565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190613c60565b611491565b005b34801561070257600080fd5b5061071d60048036038101906107189190613e16565b611551565b005b34801561072b57600080fd5b5061074660048036038101906107419190613e43565b6115ea565b005b34801561075457600080fd5b5061076f600480360381019061076a9190613d4d565b6115fe565b005b34801561077d57600080fd5b506107866116d5565b6040516107939190614297565b60405180910390f35b3480156107a857600080fd5b506107b16116e8565b6040516107be9190614297565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e99190613dcd565b6116fb565b005b3480156107fc57600080fd5b5061080561180c565b6040516108129190614297565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190613c60565b61181f565b005b34801561085057600080fd5b506108596118df565b005b34801561086757600080fd5b50610882600480360381019061087d9190613e43565b611965565b005b34801561089057600080fd5b506108ab60048036038101906108a69190613c60565b611a35565b6040516108b8919061456f565b60405180910390f35b3480156108cd57600080fd5b506108d6611a7d565b005b3480156108e457600080fd5b506108ff60048036038101906108fa9190613e43565b611b05565b005b34801561090d57600080fd5b5061092860048036038101906109239190613c60565b611b8b565b604051610935919061456f565b60405180910390f35b34801561094a57600080fd5b5061096560048036038101906109609190613d8d565b611ba3565b005b34801561097357600080fd5b5061098e60048036038101906109899190613cfa565b611c1e565b60405161099b919061456f565b60405180910390f35b3480156109b057600080fd5b506109b9611daf565b6040516109c6919061456f565b60405180910390f35b3480156109db57600080fd5b506109e4611db5565b6040516109f1919061456f565b60405180910390f35b348015610a0657600080fd5b50610a0f611dbb565b604051610a1c919061427c565b60405180910390f35b348015610a3157600080fd5b50610a3a611de5565b604051610a47919061456f565b60405180910390f35b348015610a5c57600080fd5b50610a65611deb565b604051610a7291906142cd565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190613c60565b611e7d565b604051610aaf9190614297565b60405180910390f35b348015610ac457600080fd5b50610adf6004803603810190610ada9190613d8d565b611e9d565b604051610aec9190614297565b60405180910390f35b348015610b0157600080fd5b50610b0a611f88565b604051610b17919061427c565b60405180910390f35b348015610b2c57600080fd5b50610b476004803603810190610b429190613d8d565b611fae565b604051610b549190614297565b60405180910390f35b348015610b6957600080fd5b50610b72611fcc565b604051610b7f9190614297565b60405180910390f35b348015610b9457600080fd5b50610baf6004803603810190610baa9190613e43565b611fdf565b005b348015610bbd57600080fd5b50610bd86004803603810190610bd39190613c60565b612065565b604051610be5919061456f565b60405180910390f35b348015610bfa57600080fd5b50610c156004803603810190610c109190613e43565b61207d565b005b348015610c2357600080fd5b50610c2c612147565b604051610c39919061427c565b60405180910390f35b348015610c4e57600080fd5b50610c5761216d565b005b348015610c6557600080fd5b50610c6e612206565b604051610c7b919061456f565b60405180910390f35b348015610c9057600080fd5b50610cab6004803603810190610ca69190613c60565b61220c565b604051610cb89190614297565b60405180910390f35b348015610ccd57600080fd5b50610ce86004803603810190610ce39190613dcd565b61222c565b005b348015610cf657600080fd5b50610d116004803603810190610d0c9190613dcd565b61233d565b005b348015610d1f57600080fd5b50610d2861244e565b604051610d35919061456f565b60405180910390f35b348015610d4a57600080fd5b50610d656004803603810190610d609190613e43565b612503565b005b348015610d7357600080fd5b50610d7c612589565b604051610d89919061456f565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db49190613cba565b61258f565b604051610dc6919061456f565b60405180910390f35b348015610ddb57600080fd5b50610df66004803603810190610df19190613e16565b612616565b005b348015610e0457600080fd5b50610e1f6004803603810190610e1a9190613e43565b6126af565b005b348015610e2d57600080fd5b50610e486004803603810190610e439190613c60565b61278c565b005b348015610e5657600080fd5b50610e5f612884565b604051610e6c91906142b2565b60405180910390f35b606060038054610e8490614895565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb090614895565b8015610efd5780601f10610ed257610100808354040283529160200191610efd565b820191906000526020600020905b815481529060010190602001808311610ee057829003601f168201915b5050505050905090565b6000610f1b610f146128aa565b84846128b2565b6001905092915050565b6000600e54600d54610f3791906146b0565b905090565b601b5481565b610f4a6128aa565b73ffffffffffffffffffffffffffffffffffffffff16610f68611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb59061444f565b60405180910390fd5b60005b815181101561104f576000600c6000848481518110610fe357610fe26149ce565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611047906148f8565b915050610fc1565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60126020528060005260406000206000915054906101000a900460ff1681565b60006110b0848484612a7d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110fb6128aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561117b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111729061442f565b60405180910390fd5b61118f856111876128aa565b8584036128b2565b60019150509392505050565b6111a36128aa565b73ffffffffffffffffffffffffffffffffffffffff166111c1611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e9061444f565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112626128aa565b73ffffffffffffffffffffffffffffffffffffffff16611280611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061444f565b60405180910390fd5b80601b8190555050565b60006012905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61131d6128aa565b73ffffffffffffffffffffffffffffffffffffffff1661133b611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113889061444f565b60405180910390fd5b80600d8190555060146113a2610f25565b106113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d99061454f565b60405180910390fd5b50565b60006114876113f26128aa565b8484600160006114006128aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148291906146b0565b6128b2565b6001905092915050565b6114996128aa565b73ffffffffffffffffffffffffffffffffffffffff166114b7611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461150d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115049061444f565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115596128aa565b73ffffffffffffffffffffffffffffffffffffffff16611577611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c49061444f565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6115fb6115f56128aa565b82612ce2565b50565b6116066128aa565b73ffffffffffffffffffffffffffffffffffffffff16611624611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461167a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116719061444f565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b6117036128aa565b73ffffffffffffffffffffffffffffffffffffffff16611721611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e9061444f565b60405180910390fd5b60005b8151811015611808576001600c600084848151811061179c5761179b6149ce565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611800906148f8565b91505061177a565b5050565b601860009054906101000a900460ff1681565b6118276128aa565b73ffffffffffffffffffffffffffffffffffffffff16611845611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461189b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118929061444f565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118e76128aa565b73ffffffffffffffffffffffffffffffffffffffff16611905611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119529061444f565b60405180910390fd5b611963612eb9565b565b61196d6128aa565b73ffffffffffffffffffffffffffffffffffffffff1661198b611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d89061444f565b60405180910390fd5b80600e8190555060146119f2610f25565b10611a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a299061454f565b60405180910390fd5b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a856128aa565b73ffffffffffffffffffffffffffffffffffffffff16611aa3611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af09061444f565b60405180910390fd5b611b0360006132f6565b565b611b0d6128aa565b73ffffffffffffffffffffffffffffffffffffffff16611b2b611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b789061444f565b60405180910390fd5b80601a8190555050565b60116020528060005260406000206000915090505481565b6000611bb683611bb16128aa565b61258f565b905081811015611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf29061446f565b60405180910390fd5b611c0f83611c076128aa565b8484036128b2565b611c198383612ce2565b505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cc15750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d725750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d705750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15611d805760009050611da8565b60006064611d8c610f25565b84611d979190614737565b611da19190614706565b9050809150505b9392505050565b60155481565b600d5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b606060048054611dfa90614895565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2690614895565b8015611e735780601f10611e4857610100808354040283529160200191611e73565b820191906000526020600020905b815481529060010190602001808311611e5657829003601f168201915b5050505050905090565b60106020528060005260406000206000915054906101000a900460ff1681565b60008060016000611eac6128aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f609061452f565b60405180910390fd5b611f7d611f746128aa565b858584036128b2565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fc2611fbb6128aa565b8484612a7d565b6001905092915050565b601360009054906101000a900460ff1681565b611fe76128aa565b73ffffffffffffffffffffffffffffffffffffffff16612005611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461205b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120529061444f565b60405180910390fd5b8060198190555050565b60176020528060005260406000206000915090505481565b6120856128aa565b73ffffffffffffffffffffffffffffffffffffffff166120a3611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f09061444f565b60405180910390fd5b610258811061213d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121349061450f565b60405180910390fd5b8060168190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121756128aa565b73ffffffffffffffffffffffffffffffffffffffff16612193611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146121e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e09061444f565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b600e5481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6122346128aa565b73ffffffffffffffffffffffffffffffffffffffff16612252611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146122a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229f9061444f565b60405180910390fd5b60005b8151811015612339576000601060008484815181106122cd576122cc6149ce565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612331906148f8565b9150506122ab565b5050565b6123456128aa565b73ffffffffffffffffffffffffffffffffffffffff16612363611dbb565b73ffffffffffffffffffffffffffffffffffffffff16146123b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b09061444f565b60405180910390fd5b60005b815181101561244a576001601060008484815181106123de576123dd6149ce565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612442906148f8565b9150506123bc565b5050565b60008061245a30611a35565b9050601b54811015612470576000915050612500565b600061249d600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a35565b905060006064601954836124b19190614737565b6124bb9190614706565b905060008390506000821180156124d157508181115b156124da578190505b6000601a541180156124ed5750601a5481115b156124f857601a5490505b809450505050505b90565b61250b6128aa565b73ffffffffffffffffffffffffffffffffffffffff16612529611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461257f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125769061444f565b60405180910390fd5b8060148190555050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61261e6128aa565b73ffffffffffffffffffffffffffffffffffffffff1661263c611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614612692576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126899061444f565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6126b76128aa565b73ffffffffffffffffffffffffffffffffffffffff166126d5611dbb565b73ffffffffffffffffffffffffffffffffffffffff161461272b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229061444f565b60405180910390fd5b612710612736611079565b6127409190614706565b811015612782576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612779906143af565b60405180910390fd5b8060158190555050565b6127946128aa565b73ffffffffffffffffffffffffffffffffffffffff166127b2611dbb565b73ffffffffffffffffffffffffffffffffffffffff1614612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff9061444f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286f9061432f565b60405180910390fd5b612881816132f6565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612922576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612919906144cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129899061434f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a70919061456f565b60405180910390a3505050565b612a85611dbb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612af35750612ac3611dbb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b2b57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b6357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612bae57601554811115612bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba49061436f565b60405180910390fd5b5b6000612bbb848484611c1e565b905060008183612bcb9190614791565b90506000821115612be257612be18530846133bc565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612c4b5750600f60009054906101000a900460ff165b8015612c8357503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc25750612c92611dbb565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612cd057612ccf612eb9565b5b612cdb8585836133bc565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d499061448f565b60405180910390fd5b612d5e8260008361363d565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb9061430f565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612e3b9190614791565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ea0919061456f565b60405180910390a3612eb483600084613b69565b505050565b6000612ec430611a35565b1415612ecf576132f4565b6000612ed961244e565b90506000811415612eea57506132f4565b80612f1730600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661258f565b11612f4c57612f4b30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196128b2565b5b6000600267ffffffffffffffff811115612f6957612f686149fd565b5b604051908082528060200260200182016040528015612f975781602001602082028036833780820191505090505b5090503081600081518110612faf57612fae6149ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561305157600080fd5b505afa158015613065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130899190613c8d565b8160018151811061309d5761309c6149ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161313b95949392919061458a565b600060405180830381600087803b15801561315557600080fd5b505af1925050508015613166575060015b61316f576132f1565b6000479050600061317e610f25565b9050600081600d54476131919190614737565b61319b9190614706565b9050600082600e54476131ae9190614737565b6131b89190614706565b905060006060600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836108fc9060405161320890614267565b600060405180830381858888f193505050503d8060008114613246576040519150601f19603f3d011682016040523d82523d6000602084013e61324b565b606091505b508092508193505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846108fc9060405161329e90614267565b600060405180830381858888f193505050503d80600081146132dc576040519150601f19603f3d011682016040523d82523d6000602084013e6132e1565b606091505b5080925081935050505050505050505b50505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561342c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613423906144af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561349c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613493906142ef565b60405180910390fd5b6134a783838361363d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561352d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135249061438f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135c091906146b0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613624919061456f565b60405180910390a3613637848484613b69565b50505050565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136e15750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613720576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613717906143ef565b60405180910390fd5b613728611dbb565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16148061378c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806137c257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156137cc57613b64565b601860009054906101000a900460ff1680156138355750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561390e57601654601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426138889190614791565b10156138c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c0906143cf565b60405180910390fd5b42601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60019054906101000a900460ff16613a3e57601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139ba57506000601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b6139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f09061440f565b60405180910390fd5b80601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900460ff168015613aa35750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b6357600081613ab485611a35565b613abe9190614791565b905060006064601454601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b119190614737565b613b1b9190614706565b905080821015613b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b57906144ef565b60405180910390fd5b50505b5b505050565b505050565b6000613b81613b7c84614624565b6145ff565b90508083825260208201905082856020860282011115613ba457613ba3614a31565b5b60005b85811015613bd45781613bba8882613bde565b845260208401935060208301925050600181019050613ba7565b5050509392505050565b600081359050613bed81614f2a565b92915050565b600081519050613c0281614f2a565b92915050565b600082601f830112613c1d57613c1c614a2c565b5b8135613c2d848260208601613b6e565b91505092915050565b600081359050613c4581614f41565b92915050565b600081359050613c5a81614f58565b92915050565b600060208284031215613c7657613c75614a3b565b5b6000613c8484828501613bde565b91505092915050565b600060208284031215613ca357613ca2614a3b565b5b6000613cb184828501613bf3565b91505092915050565b60008060408385031215613cd157613cd0614a3b565b5b6000613cdf85828601613bde565b9250506020613cf085828601613bde565b9150509250929050565b600080600060608486031215613d1357613d12614a3b565b5b6000613d2186828701613bde565b9350506020613d3286828701613bde565b9250506040613d4386828701613c4b565b9150509250925092565b60008060408385031215613d6457613d63614a3b565b5b6000613d7285828601613bde565b9250506020613d8385828601613c36565b9150509250929050565b60008060408385031215613da457613da3614a3b565b5b6000613db285828601613bde565b9250506020613dc385828601613c4b565b9150509250929050565b600060208284031215613de357613de2614a3b565b5b600082013567ffffffffffffffff811115613e0157613e00614a36565b5b613e0d84828501613c08565b91505092915050565b600060208284031215613e2c57613e2b614a3b565b5b6000613e3a84828501613c36565b91505092915050565b600060208284031215613e5957613e58614a3b565b5b6000613e6784828501613c4b565b91505092915050565b6000613e7c8383613e88565b60208301905092915050565b613e91816147c5565b82525050565b613ea0816147c5565b82525050565b6000613eb182614660565b613ebb8185614683565b9350613ec683614650565b8060005b83811015613ef7578151613ede8882613e70565b9750613ee983614676565b925050600181019050613eca565b5085935050505092915050565b613f0d816147d7565b82525050565b613f1c8161481a565b82525050565b613f2b8161482c565b82525050565b6000613f3c8261466b565b613f46818561469f565b9350613f56818560208601614862565b613f5f81614a40565b840191505092915050565b6000613f7760238361469f565b9150613f8282614a51565b604082019050919050565b6000613f9a60228361469f565b9150613fa582614aa0565b604082019050919050565b6000613fbd60268361469f565b9150613fc882614aef565b604082019050919050565b6000613fe060228361469f565b9150613feb82614b3e565b604082019050919050565b600061400360178361469f565b915061400e82614b8d565b602082019050919050565b600061402660268361469f565b915061403182614bb6565b604082019050919050565b6000614049600e8361469f565b915061405482614c05565b602082019050919050565b600061406c600d8361469f565b915061407782614c2e565b602082019050919050565b600061408f60138361469f565b915061409a82614c57565b602082019050919050565b60006140b2601e8361469f565b91506140bd82614c80565b602082019050919050565b60006140d560288361469f565b91506140e082614ca9565b604082019050919050565b60006140f860208361469f565b915061410382614cf8565b602082019050919050565b600061411b60248361469f565b915061412682614d21565b604082019050919050565b600061413e60218361469f565b915061414982614d70565b604082019050919050565b600061416160258361469f565b915061416c82614dbf565b604082019050919050565b6000614184600083614694565b915061418f82614e0e565b600082019050919050565b60006141a760248361469f565b91506141b282614e11565b604082019050919050565b60006141ca601e8361469f565b91506141d582614e60565b602082019050919050565b60006141ed60118361469f565b91506141f882614e89565b602082019050919050565b600061421060258361469f565b915061421b82614eb2565b604082019050919050565b6000614233600d8361469f565b915061423e82614f01565b602082019050919050565b61425281614803565b82525050565b6142618161480d565b82525050565b600061427282614177565b9150819050919050565b60006020820190506142916000830184613e97565b92915050565b60006020820190506142ac6000830184613f04565b92915050565b60006020820190506142c76000830184613f13565b92915050565b600060208201905081810360008301526142e78184613f31565b905092915050565b6000602082019050818103600083015261430881613f6a565b9050919050565b6000602082019050818103600083015261432881613f8d565b9050919050565b6000602082019050818103600083015261434881613fb0565b9050919050565b6000602082019050818103600083015261436881613fd3565b9050919050565b6000602082019050818103600083015261438881613ff6565b9050919050565b600060208201905081810360008301526143a881614019565b9050919050565b600060208201905081810360008301526143c88161403c565b9050919050565b600060208201905081810360008301526143e88161405f565b9050919050565b6000602082019050818103600083015261440881614082565b9050919050565b60006020820190508181036000830152614428816140a5565b9050919050565b60006020820190508181036000830152614448816140c8565b9050919050565b60006020820190508181036000830152614468816140eb565b9050919050565b600060208201905081810360008301526144888161410e565b9050919050565b600060208201905081810360008301526144a881614131565b9050919050565b600060208201905081810360008301526144c881614154565b9050919050565b600060208201905081810360008301526144e88161419a565b9050919050565b60006020820190508181036000830152614508816141bd565b9050919050565b60006020820190508181036000830152614528816141e0565b9050919050565b6000602082019050818103600083015261454881614203565b9050919050565b6000602082019050818103600083015261456881614226565b9050919050565b60006020820190506145846000830184614249565b92915050565b600060a08201905061459f6000830188614249565b6145ac6020830187613f22565b81810360408301526145be8186613ea6565b90506145cd6060830185613e97565b6145da6080830184614249565b9695505050505050565b60006020820190506145f96000830184614258565b92915050565b600061460961461a565b905061461582826148c7565b919050565b6000604051905090565b600067ffffffffffffffff82111561463f5761463e6149fd565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006146bb82614803565b91506146c683614803565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146fb576146fa614941565b5b828201905092915050565b600061471182614803565b915061471c83614803565b92508261472c5761472b614970565b5b828204905092915050565b600061474282614803565b915061474d83614803565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561478657614785614941565b5b828202905092915050565b600061479c82614803565b91506147a783614803565b9250828210156147ba576147b9614941565b5b828203905092915050565b60006147d0826147e3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006148258261483e565b9050919050565b600061483782614803565b9050919050565b600061484982614850565b9050919050565b600061485b826147e3565b9050919050565b60005b83811015614880578082015181840152602081019050614865565b8381111561488f576000848401525b50505050565b600060028204905060018216806148ad57607f821691505b602082108114156148c1576148c061499f565b5b50919050565b6148d082614a40565b810181811067ffffffffffffffff821117156148ef576148ee6149fd565b5b80604052505050565b600061490382614803565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561493657614935614941565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e742065786365656465642062616c616e6365000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f696e637265617365206c696d6974000000000000000000000000000000000000600082015250565b7f62757920636f6f6c646f776e2100000000000000000000000000000000000000600082015250565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b7f5468652061646472657373206973206e6f742077686974656c69737465640000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f574c2073656c6c696e67206d6f7265207468616e20616c6c6f77616e63650000600082015250565b7f646563726561736520636f6f6c646f776e000000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f4665657320746f6f206869676800000000000000000000000000000000000000600082015250565b614f33816147c5565b8114614f3e57600080fd5b50565b614f4a816147d7565b8114614f5557600080fd5b50565b614f6181614803565b8114614f6c57600080fd5b5056fea2646970667358221220d276755a48fc3172289bd8ef910467b176be4f83a7c8e710316b5ebeb066ea9364736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000001431e0fae6d7217caa00000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000b4c75636b7920436f72676900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064c434f5247490000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Lucky Corgi
Arg [1] : symbol_ (string): LCORGI
Arg [2] : totalSupply (uint256): 100000000000000000000000000000
Arg [3] : router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [4] : baseToken_ (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000001431e0fae6d7217caa0000000
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [4] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [6] : 4c75636b7920436f726769000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [8] : 4c434f5247490000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

29880:9119:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9240:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11407:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36852:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30864:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38759:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30068:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10360:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30457:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12058:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33437:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29933:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32232:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10202:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30099:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30772:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31595:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12959:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32002:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33729:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19773:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32365:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30263:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30305:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37454:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30728:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31902:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37371:75;;;;;;;;;;;;;:::i;:::-;;31750:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10531:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2647:103;;;;;;;;;;;;;:::i;:::-;;33844:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30399:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20183:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36967:396;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30598:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30183:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1996:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30818:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9459:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30346:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13677:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29965:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10871:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30510:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32100:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30679:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33554:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30037:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32497:82;;;;;;;;;;;;;:::i;:::-;;30224:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30134:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32805:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32587:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34772:717;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33146:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30556:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11109:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33029:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33266:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2905:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29998:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9240:100;9294:13;9327:5;9320:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9240:100;:::o;11407:169::-;11490:4;11507:39;11516:12;:10;:12::i;:::-;11530:7;11539:6;11507:8;:39::i;:::-;11564:4;11557:11;;11407:169;;;;:::o;36852:107::-;36894:7;36938:13;;36920:15;;:31;;;;:::i;:::-;36913:38;;36852:107;:::o;30864:50::-;;;;:::o;38759:200::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38851:9:::1;38846:106;38870:9;:16;38866:1;:20;38846:106;;;38935:5;38908:10;:24;38919:9;38929:1;38919:12;;;;;;;;:::i;:::-;;;;;;;;38908:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;38888:3;;;;;:::i;:::-;;;;38846:106;;;;38759:200:::0;:::o;30068:24::-;;;;;;;;;;;;;:::o;10360:108::-;10421:7;10448:12;;10441:19;;10360:108;:::o;30457:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;12058:492::-;12198:4;12215:36;12225:6;12233:9;12244:6;12215:9;:36::i;:::-;12264:24;12291:11;:19;12303:6;12291:19;;;;;;;;;;;;;;;:33;12311:12;:10;:12::i;:::-;12291:33;;;;;;;;;;;;;;;;12264:60;;12363:6;12343:16;:26;;12335:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12450:57;12459:6;12467:12;:10;:12::i;:::-;12500:6;12481:16;:25;12450:8;:57::i;:::-;12538:4;12531:11;;;12058:492;;;;;:::o;33437:109::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33532:6:::1;33511:18;;:27;;;;;;;;;;;;;;;;;;33437:109:::0;:::o;29933:25::-;;;;;;;;;;;;;:::o;32232:125::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32333:16:::1;32315:15;:34;;;;32232:125:::0;:::o;10202:93::-;10260:5;10285:2;10278:9;;10202:93;:::o;30099:28::-;;;;;;;;;;;;;:::o;30772:39::-;;;;:::o;31595:147::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31677:4:::1;31659:15;:22;;;;31714:2;31700:11;:9;:11::i;:::-;:16;31692:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;31595:147:::0;:::o;12959:215::-;13047:4;13064:80;13073:12;:10;:12::i;:::-;13087:7;13133:10;13096:11;:25;13108:12;:10;:12::i;:::-;13096:25;;;;;;;;;;;;;;;:34;13122:7;13096:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13064:8;:80::i;:::-;13162:4;13155:11;;12959:215;;;;:::o;32002:90::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32080:4:::1;32068:9;;:16;;;;;;;;;;;;;;;;;;32002:90:::0;:::o;33729:107::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33821:7:::1;33802:16;;:26;;;;;;;;;;;;;;;;;;33729:107:::0;:::o;19773:91::-;19829:27;19835:12;:10;:12::i;:::-;19849:6;19829:5;:27::i;:::-;19773:91;:::o;32365:124::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32476:5:::1;32450:14;:23;32465:7;32450:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;32365:124:::0;;:::o;30263:35::-;;;;;;;;;;;;;:::o;30305:34::-;;;;;;;;;;;;;:::o;37454:201::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37548:9:::1;37543:105;37567:9;:16;37563:1;:20;37543:105;;;37632:4;37605:10;:24;37616:9;37626:1;37616:12;;;;;;;;:::i;:::-;;;;;;;;37605:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;37585:3;;;;;:::i;:::-;;;;37543:105;;;;37454:201:::0;:::o;30728:37::-;;;;;;;;;;;;;:::o;31902:92::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31982:4:::1;31969:10;;:17;;;;;;;;;;;;;;;;;;31902:92:::0;:::o;37371:75::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37424:14:::1;:12;:14::i;:::-;37371:75::o:0;31750:144::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31829:4:::1;31813:13;:20;;;;31866:2;31852:11;:9;:11::i;:::-;:16;31844:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;31750:144:::0;:::o;10531:127::-;10605:7;10632:9;:18;10642:7;10632:18;;;;;;;;;;;;;;;;10625:25;;10531:127;;;:::o;2647:103::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2712:30:::1;2739:1;2712:18;:30::i;:::-;2647:103::o:0;33844:134::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33956:14:::1;33933:20;:37;;;;33844:134:::0;:::o;30399:51::-;;;;;;;;;;;;;;;;;:::o;20183:368::-;20260:24;20287:32;20297:7;20306:12;:10;:12::i;:::-;20287:9;:32::i;:::-;20260:59;;20358:6;20338:16;:26;;20330:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;20441:58;20450:7;20459:12;:10;:12::i;:::-;20492:6;20473:16;:25;20441:8;:58::i;:::-;20521:22;20527:7;20536:6;20521:5;:22::i;:::-;20249:302;20183:368;;:::o;36967:396::-;37061:7;37098:10;:18;37109:6;37098:18;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;37133:10;:21;37144:9;37133:21;;;;;;;;;;;;;;;;;;;;;;;;;37098:56;:125;;;;37183:11;;;;;;;;;;;37173:21;;:6;:21;;;:49;;;;37211:11;;;;;;;;;;;37198:24;;:9;:24;;;37173:49;37171:52;37098:125;37080:190;;;37257:1;37250:8;;;;37080:190;37280:17;37325:3;37310:11;:9;:11::i;:::-;37301:6;:20;;;;:::i;:::-;37300:28;;;;:::i;:::-;37280:48;;37346:9;37339:16;;;36967:396;;;;;;:::o;30598:27::-;;;;:::o;30183:34::-;;;;:::o;1996:87::-;2042:7;2069:6;;;;;;;;;;;2062:13;;1996:87;:::o;30818:39::-;;;;:::o;9459:104::-;9515:13;9548:7;9541:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9459:104;:::o;30346:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;13677:413::-;13770:4;13787:24;13814:11;:25;13826:12;:10;:12::i;:::-;13814:25;;;;;;;;;;;;;;;:34;13840:7;13814:34;;;;;;;;;;;;;;;;13787:61;;13887:15;13867:16;:35;;13859:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13980:67;13989:12;:10;:12::i;:::-;14003:7;14031:15;14012:16;:34;13980:8;:67::i;:::-;14078:4;14071:11;;;13677:413;;;;:::o;29965:26::-;;;;;;;;;;;;;:::o;10871:175::-;10957:4;10974:42;10984:12;:10;:12::i;:::-;10998:9;11009:6;10974:9;:42::i;:::-;11034:4;11027:11;;10871:175;;;;:::o;30510:39::-;;;;;;;;;;;;;:::o;32100:124::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32206:10:::1;32183:20;:33;;;;32100:124:::0;:::o;30679:42::-;;;;;;;;;;;;;;;;;:::o;33554:167::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33651:3:::1;33637:11;:17;33629:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;33702:11;33687:12;:26;;;;33554:167:::0;:::o;30037:24::-;;;;;;;;;;;;;:::o;32497:82::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32567:4:::1;32550:14;;:21;;;;;;;;;;;;;;;;;;32497:82::o:0;30224:32::-;;;;:::o;30134:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;32805:216::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32905:9:::1;32900:114;32924:11;:18;32920:1;:22;32900:114;;;32997:5;32964:14;:30;32979:11;32991:1;32979:14;;;;;;;;:::i;:::-;;;;;;;;32964:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;32944:3;;;;;:::i;:::-;;;;32900:114;;;;32805:216:::0;:::o;32587:210::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32682:9:::1;32677:113;32701:11;:18;32697:1;:22;32677:113;;;32774:4;32741:14;:30;32756:11;32768:1;32756:14;;;;;;;;:::i;:::-;;;;;;;;32741:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;32721:3;;;;;:::i;:::-;;;;32677:113;;;;32587:210:::0;:::o;34772:717::-;34820:7;34839:23;34865:24;34883:4;34865:9;:24::i;:::-;34839:50;;34924:15;;34906;:33;34902:74;;;34963:1;34956:8;;;;;34902:74;34988:19;35010:22;35020:11;;;;;;;;;;;35010:9;:22::i;:::-;34988:44;;35043:28;35111:3;35088:20;;35074:11;:34;;;;:::i;:::-;:40;;;;:::i;:::-;35043:71;;35125:20;35148:15;35125:38;;35203:1;35180:20;:24;:63;;;;;35223:20;35208:12;:35;35180:63;35176:131;;;35275:20;35260:35;;35176:131;35346:1;35323:20;;:24;:63;;;;;35366:20;;35351:12;:35;35323:63;35319:131;;;35418:20;;35403:35;;35319:131;35469:12;35462:19;;;;;;34772:717;;:::o;33146:112::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33240:10:::1;33222:15;:28;;;;33146:112:::0;:::o;30556:35::-;;;;:::o;11109:151::-;11198:7;11225:11;:18;11237:5;11225:18;;;;;;;;;;;;;;;:27;11244:7;11225:27;;;;;;;;;;;;;;;;11218:34;;11109:151;;;;:::o;33029:109::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33124:6:::1;33101:20;;:29;;;;;;;;;;;;;;;;;;33029:109:::0;:::o;33266:163::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33366:5:::1;33352:13;:11;:13::i;:::-;:19;;;;:::i;:::-;33343:5;:28;;33335:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;33416:5;33401:12;:20;;;;33266:163:::0;:::o;2905:201::-;2227:12;:10;:12::i;:::-;2216:23;;:7;:5;:7::i;:::-;:23;;;2208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3014:1:::1;2994:22;;:8;:22;;;;2986:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3070:28;3089:8;3070:18;:28::i;:::-;2905:201:::0;:::o;29998:32::-;;;;;;;;;;;;;:::o;716:98::-;769:7;796:10;789:17;;716:98;:::o;17361:380::-;17514:1;17497:19;;:5;:19;;;;17489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17595:1;17576:21;;:7;:21;;;;17568:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17679:6;17649:11;:18;17661:5;17649:18;;;;;;;;;;;;;;;:27;17668:7;17649:27;;;;;;;;;;;;;;;:36;;;;17717:7;17701:32;;17710:5;17701:32;;;17726:6;17701:32;;;;;;:::i;:::-;;;;;;;;17361:380;;;:::o;33986:778::-;34133:7;:5;:7::i;:::-;34123:17;;:6;:17;;;;:41;;;;;34157:7;:5;:7::i;:::-;34144:20;;:9;:20;;;;34123:41;:68;;;;;34186:4;34168:23;;:6;:23;;;;34123:68;:98;;;;;34216:4;34195:26;;:9;:26;;;;34123:98;34119:189;;;34256:12;;34246:6;:22;;34238:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;34119:189;34320:17;34340:39;34353:6;34361:9;34372:6;34340:12;:39::i;:::-;34320:59;;34390:23;34425:9;34416:6;:18;;;;:::i;:::-;34390:44;;34463:1;34451:9;:13;34447:95;;;34481:49;34497:6;34513:4;34520:9;34481:15;:49::i;:::-;34447:95;34571:11;;;;;;;;;;;34558:24;;:9;:24;;;:44;;;;;34586:16;;;;;;;;;;;34558:44;:71;;;;;34624:4;34606:23;;:6;:23;;;;34558:71;:92;;;;;34643:7;:5;:7::i;:::-;34633:17;;:6;:17;;;;34558:92;34554:139;;;34667:14;:12;:14::i;:::-;34554:139;34705:51;34721:6;34729:9;34740:15;34705;:51::i;:::-;34108:656;;33986:778;;;:::o;16332:591::-;16435:1;16416:21;;:7;:21;;;;16408:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16488:49;16509:7;16526:1;16530:6;16488:20;:49::i;:::-;16550:22;16575:9;:18;16585:7;16575:18;;;;;;;;;;;;;;;;16550:43;;16630:6;16612:14;:24;;16604:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16749:6;16732:14;:23;16711:9;:18;16721:7;16711:18;;;;;;;;;;;;;;;:44;;;;16793:6;16777:12;;:22;;;;;;;:::i;:::-;;;;;;;;16843:1;16817:37;;16826:7;16817:37;;;16847:6;16817:37;;;;;;:::i;:::-;;;;;;;;16867:48;16887:7;16904:1;16908:6;16867:19;:48::i;:::-;16397:526;16332:591;;:::o;35497:1347::-;35650:1;35622:24;35640:4;35622:9;:24::i;:::-;:29;35618:68;;;35668:7;;35618:68;35696:20;35719:17;:15;:17::i;:::-;35696:40;;35767:1;35751:12;:17;35747:56;;;35785:7;;;35747:56;35862:12;35819:39;35837:4;35844:13;;;;;;;;;;;35819:9;:39::i;:::-;:55;35815:145;;35891:57;35914:4;35921:13;;;;;;;;;;;35945:1;35936:11;35891:14;:57::i;:::-;35815:145;35970:21;36008:1;35994:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35970:40;;36039:4;36021;36026:1;36021:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;36065:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36055:4;36060:1;36055:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;36095:6;;;;;;;;;;;:57;;;36167:12;36194:1;36210:4;36237;36257:15;36095:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36091:746;;;;;36298:25;36326:21;36298:49;;36362:18;36383:11;:9;:11::i;:::-;36362:32;;36409:19;36476:10;36457:15;;36433:21;:39;;;;:::i;:::-;36432:54;;;;:::i;:::-;36409:78;;36502:24;36572:10;36555:13;;36531:21;:37;;;;:::i;:::-;36530:52;;;;:::i;:::-;36502:81;;36598:9;36622:17;36669:9;;;;;;;;;;;:14;;36692:16;36716:4;36669:56;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36654:71;;;;;;;;36755:10;;;;;;;;;;;:15;;36779:11;36798:4;36755:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36740:67;;;;;;;;36283:536;;;;;;36091:746;35530:1314;;35497:1347;:::o;3266:191::-;3340:16;3359:6;;;;;;;;;;;3340:25;;3385:8;3376:6;;:17;;;;;;;;;;;;;;;;;;3440:8;3409:40;;3430:8;3409:40;;;;;;;;;;;;3329:128;3266:191;:::o;14580:733::-;14738:1;14720:20;;:6;:20;;;;14712:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14822:1;14801:23;;:9;:23;;;;14793:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14877:47;14898:6;14906:9;14917:6;14877:20;:47::i;:::-;14937:21;14961:9;:17;14971:6;14961:17;;;;;;;;;;;;;;;;14937:41;;15014:6;14997:13;:23;;14989:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15135:6;15119:13;:22;15099:9;:17;15109:6;15099:17;;;;;;;;;;;;;;;:42;;;;15187:6;15163:9;:20;15173:9;15163:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15228:9;15211:35;;15220:6;15211:35;;;15239:6;15211:35;;;;;;:::i;:::-;;;;;;;;15259:46;15279:6;15287:9;15298:6;15259:19;:46::i;:::-;14701:612;14580:733;;;:::o;37663:1088::-;37782:14;:22;37797:6;37782:22;;;;;;;;;;;;;;;;;;;;;;;;;37781:23;:53;;;;;37809:14;:25;37824:9;37809:25;;;;;;;;;;;;;;;;;;;;;;;;;37808:26;37781:53;37773:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;37888:7;:5;:7::i;:::-;37875:20;;:9;:20;;;:47;;;;37917:4;37899:23;;:6;:23;;;37875:47;:77;;;;37947:4;37926:26;;:9;:26;;;37875:77;37871:116;;;37969:7;;37871:116;38001:18;;;;;;;;;;;:43;;;;;38033:11;;;;;;;;;;;38023:21;;:6;:21;;;38001:43;37997:205;;;38109:12;;38087:7;:18;38095:9;38087:18;;;;;;;;;;;;;;;;38069:15;:36;;;;:::i;:::-;:52;;38061:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;38175:15;38154:7;:18;38162:9;38154:18;;;;;;;;;;;;;;;:36;;;;37997:205;38219:14;;;;;;;;;;;38214:203;;38258:14;:25;38273:9;38258:25;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;38318:1;38288:15;:26;38304:9;38288:26;;;;;;;;;;;;;;;;:31;38258:62;38250:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;38399:6;38370:15;:26;38386:9;38370:26;;;;;;;;;;;;;;;:35;;;;38214:203;38433:20;;;;;;;;;;;:46;;;;;38457:14;:22;38472:6;38457:22;;;;;;;;;;;;;;;;;;;;;;;;;38433:46;38429:315;;;38496:25;38545:6;38524:17;38534:6;38524:9;:17::i;:::-;:28;;;;:::i;:::-;38496:56;;38567:20;38637:3;38617:15;;38590;:23;38606:6;38590:23;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:51;;;;:::i;:::-;38567:74;;38685:12;38664:17;:33;;38656:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;38481:263;;38429:315;37663:1088;;;;:::o;19070:124::-;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:139::-;1624:5;1662:6;1649:20;1640:29;;1678:33;1705:5;1678:33;:::i;:::-;1578:139;;;;:::o;1723:329::-;1782:6;1831:2;1819:9;1810:7;1806:23;1802:32;1799:119;;;1837:79;;:::i;:::-;1799:119;1957:1;1982:53;2027:7;2018:6;2007:9;2003:22;1982:53;:::i;:::-;1972:63;;1928:117;1723:329;;;;:::o;2058:351::-;2128:6;2177:2;2165:9;2156:7;2152:23;2148:32;2145:119;;;2183:79;;:::i;:::-;2145:119;2303:1;2328:64;2384:7;2375:6;2364:9;2360:22;2328:64;:::i;:::-;2318:74;;2274:128;2058:351;;;;:::o;2415:474::-;2483:6;2491;2540:2;2528:9;2519:7;2515:23;2511:32;2508:119;;;2546:79;;:::i;:::-;2508:119;2666:1;2691:53;2736:7;2727:6;2716:9;2712:22;2691:53;:::i;:::-;2681:63;;2637:117;2793:2;2819:53;2864:7;2855:6;2844:9;2840:22;2819:53;:::i;:::-;2809:63;;2764:118;2415:474;;;;;:::o;2895:619::-;2972:6;2980;2988;3037:2;3025:9;3016:7;3012:23;3008:32;3005:119;;;3043:79;;:::i;:::-;3005:119;3163:1;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3134:117;3290:2;3316:53;3361:7;3352:6;3341:9;3337:22;3316:53;:::i;:::-;3306:63;;3261:118;3418:2;3444:53;3489:7;3480:6;3469:9;3465:22;3444:53;:::i;:::-;3434:63;;3389:118;2895:619;;;;;:::o;3520:468::-;3585:6;3593;3642:2;3630:9;3621:7;3617:23;3613:32;3610:119;;;3648:79;;:::i;:::-;3610:119;3768:1;3793:53;3838:7;3829:6;3818:9;3814:22;3793:53;:::i;:::-;3783:63;;3739:117;3895:2;3921:50;3963:7;3954:6;3943:9;3939:22;3921:50;:::i;:::-;3911:60;;3866:115;3520:468;;;;;:::o;3994:474::-;4062:6;4070;4119:2;4107:9;4098:7;4094:23;4090:32;4087:119;;;4125:79;;:::i;:::-;4087:119;4245:1;4270:53;4315:7;4306:6;4295:9;4291:22;4270:53;:::i;:::-;4260:63;;4216:117;4372:2;4398:53;4443:7;4434:6;4423:9;4419:22;4398:53;:::i;:::-;4388:63;;4343:118;3994:474;;;;;:::o;4474:539::-;4558:6;4607:2;4595:9;4586:7;4582:23;4578:32;4575:119;;;4613:79;;:::i;:::-;4575:119;4761:1;4750:9;4746:17;4733:31;4791:18;4783:6;4780:30;4777:117;;;4813:79;;:::i;:::-;4777:117;4918:78;4988:7;4979:6;4968:9;4964:22;4918:78;:::i;:::-;4908:88;;4704:302;4474:539;;;;:::o;5019:323::-;5075:6;5124:2;5112:9;5103:7;5099:23;5095:32;5092:119;;;5130:79;;:::i;:::-;5092:119;5250:1;5275:50;5317:7;5308:6;5297:9;5293:22;5275:50;:::i;:::-;5265:60;;5221:114;5019:323;;;;:::o;5348:329::-;5407:6;5456:2;5444:9;5435:7;5431:23;5427:32;5424:119;;;5462:79;;:::i;:::-;5424:119;5582:1;5607:53;5652:7;5643:6;5632:9;5628:22;5607:53;:::i;:::-;5597:63;;5553:117;5348:329;;;;:::o;5683:179::-;5752:10;5773:46;5815:3;5807:6;5773:46;:::i;:::-;5851:4;5846:3;5842:14;5828:28;;5683:179;;;;:::o;5868:108::-;5945:24;5963:5;5945:24;:::i;:::-;5940:3;5933:37;5868:108;;:::o;5982:118::-;6069:24;6087:5;6069:24;:::i;:::-;6064:3;6057:37;5982:118;;:::o;6136:732::-;6255:3;6284:54;6332:5;6284:54;:::i;:::-;6354:86;6433:6;6428:3;6354:86;:::i;:::-;6347:93;;6464:56;6514:5;6464:56;:::i;:::-;6543:7;6574:1;6559:284;6584:6;6581:1;6578:13;6559:284;;;6660:6;6654:13;6687:63;6746:3;6731:13;6687:63;:::i;:::-;6680:70;;6773:60;6826:6;6773:60;:::i;:::-;6763:70;;6619:224;6606:1;6603;6599:9;6594:14;;6559:284;;;6563:14;6859:3;6852:10;;6260:608;;;6136:732;;;;:::o;6874:109::-;6955:21;6970:5;6955:21;:::i;:::-;6950:3;6943:34;6874:109;;:::o;6989:185::-;7103:64;7161:5;7103:64;:::i;:::-;7098:3;7091:77;6989:185;;:::o;7180:147::-;7275:45;7314:5;7275:45;:::i;:::-;7270:3;7263:58;7180:147;;:::o;7333:364::-;7421:3;7449:39;7482:5;7449:39;:::i;:::-;7504:71;7568:6;7563:3;7504:71;:::i;:::-;7497:78;;7584:52;7629:6;7624:3;7617:4;7610:5;7606:16;7584:52;:::i;:::-;7661:29;7683:6;7661:29;:::i;:::-;7656:3;7652:39;7645:46;;7425:272;7333:364;;;;:::o;7703:366::-;7845:3;7866:67;7930:2;7925:3;7866:67;:::i;:::-;7859:74;;7942:93;8031:3;7942:93;:::i;:::-;8060:2;8055:3;8051:12;8044:19;;7703:366;;;:::o;8075:::-;8217:3;8238:67;8302:2;8297:3;8238:67;:::i;:::-;8231:74;;8314:93;8403:3;8314:93;:::i;:::-;8432:2;8427:3;8423:12;8416:19;;8075:366;;;:::o;8447:::-;8589:3;8610:67;8674:2;8669:3;8610:67;:::i;:::-;8603:74;;8686:93;8775:3;8686:93;:::i;:::-;8804:2;8799:3;8795:12;8788:19;;8447:366;;;:::o;8819:::-;8961:3;8982:67;9046:2;9041:3;8982:67;:::i;:::-;8975:74;;9058:93;9147:3;9058:93;:::i;:::-;9176:2;9171:3;9167:12;9160:19;;8819:366;;;:::o;9191:::-;9333:3;9354:67;9418:2;9413:3;9354:67;:::i;:::-;9347:74;;9430:93;9519:3;9430:93;:::i;:::-;9548:2;9543:3;9539:12;9532:19;;9191:366;;;:::o;9563:::-;9705:3;9726:67;9790:2;9785:3;9726:67;:::i;:::-;9719:74;;9802:93;9891:3;9802:93;:::i;:::-;9920:2;9915:3;9911:12;9904:19;;9563:366;;;:::o;9935:::-;10077:3;10098:67;10162:2;10157:3;10098:67;:::i;:::-;10091:74;;10174:93;10263:3;10174:93;:::i;:::-;10292:2;10287:3;10283:12;10276:19;;9935:366;;;:::o;10307:::-;10449:3;10470:67;10534:2;10529:3;10470:67;:::i;:::-;10463:74;;10546:93;10635:3;10546:93;:::i;:::-;10664:2;10659:3;10655:12;10648:19;;10307:366;;;:::o;10679:::-;10821:3;10842:67;10906:2;10901:3;10842:67;:::i;:::-;10835:74;;10918:93;11007:3;10918:93;:::i;:::-;11036:2;11031:3;11027:12;11020:19;;10679:366;;;:::o;11051:::-;11193:3;11214:67;11278:2;11273:3;11214:67;:::i;:::-;11207:74;;11290:93;11379:3;11290:93;:::i;:::-;11408:2;11403:3;11399:12;11392:19;;11051:366;;;:::o;11423:::-;11565:3;11586:67;11650:2;11645:3;11586:67;:::i;:::-;11579:74;;11662:93;11751:3;11662:93;:::i;:::-;11780:2;11775:3;11771:12;11764:19;;11423:366;;;:::o;11795:::-;11937:3;11958:67;12022:2;12017:3;11958:67;:::i;:::-;11951:74;;12034:93;12123:3;12034:93;:::i;:::-;12152:2;12147:3;12143:12;12136:19;;11795:366;;;:::o;12167:::-;12309:3;12330:67;12394:2;12389:3;12330:67;:::i;:::-;12323:74;;12406:93;12495:3;12406:93;:::i;:::-;12524:2;12519:3;12515:12;12508:19;;12167:366;;;:::o;12539:::-;12681:3;12702:67;12766:2;12761:3;12702:67;:::i;:::-;12695:74;;12778:93;12867:3;12778:93;:::i;:::-;12896:2;12891:3;12887:12;12880:19;;12539:366;;;:::o;12911:::-;13053:3;13074:67;13138:2;13133:3;13074:67;:::i;:::-;13067:74;;13150:93;13239:3;13150:93;:::i;:::-;13268:2;13263:3;13259:12;13252:19;;12911:366;;;:::o;13283:398::-;13442:3;13463:83;13544:1;13539:3;13463:83;:::i;:::-;13456:90;;13555:93;13644:3;13555:93;:::i;:::-;13673:1;13668:3;13664:11;13657:18;;13283:398;;;:::o;13687:366::-;13829:3;13850:67;13914:2;13909:3;13850:67;:::i;:::-;13843:74;;13926:93;14015:3;13926:93;:::i;:::-;14044:2;14039:3;14035:12;14028:19;;13687:366;;;:::o;14059:::-;14201:3;14222:67;14286:2;14281:3;14222:67;:::i;:::-;14215:74;;14298:93;14387:3;14298:93;:::i;:::-;14416:2;14411:3;14407:12;14400:19;;14059:366;;;:::o;14431:::-;14573:3;14594:67;14658:2;14653:3;14594:67;:::i;:::-;14587:74;;14670:93;14759:3;14670:93;:::i;:::-;14788:2;14783:3;14779:12;14772:19;;14431:366;;;:::o;14803:::-;14945:3;14966:67;15030:2;15025:3;14966:67;:::i;:::-;14959:74;;15042:93;15131:3;15042:93;:::i;:::-;15160:2;15155:3;15151:12;15144:19;;14803:366;;;:::o;15175:::-;15317:3;15338:67;15402:2;15397:3;15338:67;:::i;:::-;15331:74;;15414:93;15503:3;15414:93;:::i;:::-;15532:2;15527:3;15523:12;15516:19;;15175:366;;;:::o;15547:118::-;15634:24;15652:5;15634:24;:::i;:::-;15629:3;15622:37;15547:118;;:::o;15671:112::-;15754:22;15770:5;15754:22;:::i;:::-;15749:3;15742:35;15671:112;;:::o;15789:379::-;15973:3;15995:147;16138:3;15995:147;:::i;:::-;15988:154;;16159:3;16152:10;;15789:379;;;:::o;16174:222::-;16267:4;16305:2;16294:9;16290:18;16282:26;;16318:71;16386:1;16375:9;16371:17;16362:6;16318:71;:::i;:::-;16174:222;;;;:::o;16402:210::-;16489:4;16527:2;16516:9;16512:18;16504:26;;16540:65;16602:1;16591:9;16587:17;16578:6;16540:65;:::i;:::-;16402:210;;;;:::o;16618:276::-;16738:4;16776:2;16765:9;16761:18;16753:26;;16789:98;16884:1;16873:9;16869:17;16860:6;16789:98;:::i;:::-;16618:276;;;;:::o;16900:313::-;17013:4;17051:2;17040:9;17036:18;17028:26;;17100:9;17094:4;17090:20;17086:1;17075:9;17071:17;17064:47;17128:78;17201:4;17192:6;17128:78;:::i;:::-;17120:86;;16900:313;;;;:::o;17219:419::-;17385:4;17423:2;17412:9;17408:18;17400:26;;17472:9;17466:4;17462:20;17458:1;17447:9;17443:17;17436:47;17500:131;17626:4;17500:131;:::i;:::-;17492:139;;17219:419;;;:::o;17644:::-;17810:4;17848:2;17837:9;17833:18;17825:26;;17897:9;17891:4;17887:20;17883:1;17872:9;17868:17;17861:47;17925:131;18051:4;17925:131;:::i;:::-;17917:139;;17644:419;;;:::o;18069:::-;18235:4;18273:2;18262:9;18258:18;18250:26;;18322:9;18316:4;18312:20;18308:1;18297:9;18293:17;18286:47;18350:131;18476:4;18350:131;:::i;:::-;18342:139;;18069:419;;;:::o;18494:::-;18660:4;18698:2;18687:9;18683:18;18675:26;;18747:9;18741:4;18737:20;18733:1;18722:9;18718:17;18711:47;18775:131;18901:4;18775:131;:::i;:::-;18767:139;;18494:419;;;:::o;18919:::-;19085:4;19123:2;19112:9;19108:18;19100:26;;19172:9;19166:4;19162:20;19158:1;19147:9;19143:17;19136:47;19200:131;19326:4;19200:131;:::i;:::-;19192:139;;18919:419;;;:::o;19344:::-;19510:4;19548:2;19537:9;19533:18;19525:26;;19597:9;19591:4;19587:20;19583:1;19572:9;19568:17;19561:47;19625:131;19751:4;19625:131;:::i;:::-;19617:139;;19344:419;;;:::o;19769:::-;19935:4;19973:2;19962:9;19958:18;19950:26;;20022:9;20016:4;20012:20;20008:1;19997:9;19993:17;19986:47;20050:131;20176:4;20050:131;:::i;:::-;20042:139;;19769:419;;;:::o;20194:::-;20360:4;20398:2;20387:9;20383:18;20375:26;;20447:9;20441:4;20437:20;20433:1;20422:9;20418:17;20411:47;20475:131;20601:4;20475:131;:::i;:::-;20467:139;;20194:419;;;:::o;20619:::-;20785:4;20823:2;20812:9;20808:18;20800:26;;20872:9;20866:4;20862:20;20858:1;20847:9;20843:17;20836:47;20900:131;21026:4;20900:131;:::i;:::-;20892:139;;20619:419;;;:::o;21044:::-;21210:4;21248:2;21237:9;21233:18;21225:26;;21297:9;21291:4;21287:20;21283:1;21272:9;21268:17;21261:47;21325:131;21451:4;21325:131;:::i;:::-;21317:139;;21044:419;;;:::o;21469:::-;21635:4;21673:2;21662:9;21658:18;21650:26;;21722:9;21716:4;21712:20;21708:1;21697:9;21693:17;21686:47;21750:131;21876:4;21750:131;:::i;:::-;21742:139;;21469:419;;;:::o;21894:::-;22060:4;22098:2;22087:9;22083:18;22075:26;;22147:9;22141:4;22137:20;22133:1;22122:9;22118:17;22111:47;22175:131;22301:4;22175:131;:::i;:::-;22167:139;;21894:419;;;:::o;22319:::-;22485:4;22523:2;22512:9;22508:18;22500:26;;22572:9;22566:4;22562:20;22558:1;22547:9;22543:17;22536:47;22600:131;22726:4;22600:131;:::i;:::-;22592:139;;22319:419;;;:::o;22744:::-;22910:4;22948:2;22937:9;22933:18;22925:26;;22997:9;22991:4;22987:20;22983:1;22972:9;22968:17;22961:47;23025:131;23151:4;23025:131;:::i;:::-;23017:139;;22744:419;;;:::o;23169:::-;23335:4;23373:2;23362:9;23358:18;23350:26;;23422:9;23416:4;23412:20;23408:1;23397:9;23393:17;23386:47;23450:131;23576:4;23450:131;:::i;:::-;23442:139;;23169:419;;;:::o;23594:::-;23760:4;23798:2;23787:9;23783:18;23775:26;;23847:9;23841:4;23837:20;23833:1;23822:9;23818:17;23811:47;23875:131;24001:4;23875:131;:::i;:::-;23867:139;;23594:419;;;:::o;24019:::-;24185:4;24223:2;24212:9;24208:18;24200:26;;24272:9;24266:4;24262:20;24258:1;24247:9;24243:17;24236:47;24300:131;24426:4;24300:131;:::i;:::-;24292:139;;24019:419;;;:::o;24444:::-;24610:4;24648:2;24637:9;24633:18;24625:26;;24697:9;24691:4;24687:20;24683:1;24672:9;24668:17;24661:47;24725:131;24851:4;24725:131;:::i;:::-;24717:139;;24444:419;;;:::o;24869:::-;25035:4;25073:2;25062:9;25058:18;25050:26;;25122:9;25116:4;25112:20;25108:1;25097:9;25093:17;25086:47;25150:131;25276:4;25150:131;:::i;:::-;25142:139;;24869:419;;;:::o;25294:::-;25460:4;25498:2;25487:9;25483:18;25475:26;;25547:9;25541:4;25537:20;25533:1;25522:9;25518:17;25511:47;25575:131;25701:4;25575:131;:::i;:::-;25567:139;;25294:419;;;:::o;25719:222::-;25812:4;25850:2;25839:9;25835:18;25827:26;;25863:71;25931:1;25920:9;25916:17;25907:6;25863:71;:::i;:::-;25719:222;;;;:::o;25947:831::-;26210:4;26248:3;26237:9;26233:19;26225:27;;26262:71;26330:1;26319:9;26315:17;26306:6;26262:71;:::i;:::-;26343:80;26419:2;26408:9;26404:18;26395:6;26343:80;:::i;:::-;26470:9;26464:4;26460:20;26455:2;26444:9;26440:18;26433:48;26498:108;26601:4;26592:6;26498:108;:::i;:::-;26490:116;;26616:72;26684:2;26673:9;26669:18;26660:6;26616:72;:::i;:::-;26698:73;26766:3;26755:9;26751:19;26742:6;26698:73;:::i;:::-;25947:831;;;;;;;;:::o;26784:214::-;26873:4;26911:2;26900:9;26896:18;26888:26;;26924:67;26988:1;26977:9;26973:17;26964:6;26924:67;:::i;:::-;26784:214;;;;:::o;27004:129::-;27038:6;27065:20;;:::i;:::-;27055:30;;27094:33;27122:4;27114:6;27094:33;:::i;:::-;27004:129;;;:::o;27139:75::-;27172:6;27205:2;27199:9;27189:19;;27139:75;:::o;27220:311::-;27297:4;27387:18;27379:6;27376:30;27373:56;;;27409:18;;:::i;:::-;27373:56;27459:4;27451:6;27447:17;27439:25;;27519:4;27513;27509:15;27501:23;;27220:311;;;:::o;27537:132::-;27604:4;27627:3;27619:11;;27657:4;27652:3;27648:14;27640:22;;27537:132;;;:::o;27675:114::-;27742:6;27776:5;27770:12;27760:22;;27675:114;;;:::o;27795:99::-;27847:6;27881:5;27875:12;27865:22;;27795:99;;;:::o;27900:113::-;27970:4;28002;27997:3;27993:14;27985:22;;27900:113;;;:::o;28019:184::-;28118:11;28152:6;28147:3;28140:19;28192:4;28187:3;28183:14;28168:29;;28019:184;;;;:::o;28209:147::-;28310:11;28347:3;28332:18;;28209:147;;;;:::o;28362:169::-;28446:11;28480:6;28475:3;28468:19;28520:4;28515:3;28511:14;28496:29;;28362:169;;;;:::o;28537:305::-;28577:3;28596:20;28614:1;28596:20;:::i;:::-;28591:25;;28630:20;28648:1;28630:20;:::i;:::-;28625:25;;28784:1;28716:66;28712:74;28709:1;28706:81;28703:107;;;28790:18;;:::i;:::-;28703:107;28834:1;28831;28827:9;28820:16;;28537:305;;;;:::o;28848:185::-;28888:1;28905:20;28923:1;28905:20;:::i;:::-;28900:25;;28939:20;28957:1;28939:20;:::i;:::-;28934:25;;28978:1;28968:35;;28983:18;;:::i;:::-;28968:35;29025:1;29022;29018:9;29013:14;;28848:185;;;;:::o;29039:348::-;29079:7;29102:20;29120:1;29102:20;:::i;:::-;29097:25;;29136:20;29154:1;29136:20;:::i;:::-;29131:25;;29324:1;29256:66;29252:74;29249:1;29246:81;29241:1;29234:9;29227:17;29223:105;29220:131;;;29331:18;;:::i;:::-;29220:131;29379:1;29376;29372:9;29361:20;;29039:348;;;;:::o;29393:191::-;29433:4;29453:20;29471:1;29453:20;:::i;:::-;29448:25;;29487:20;29505:1;29487:20;:::i;:::-;29482:25;;29526:1;29523;29520:8;29517:34;;;29531:18;;:::i;:::-;29517:34;29576:1;29573;29569:9;29561:17;;29393:191;;;;:::o;29590:96::-;29627:7;29656:24;29674:5;29656:24;:::i;:::-;29645:35;;29590:96;;;:::o;29692:90::-;29726:7;29769:5;29762:13;29755:21;29744:32;;29692:90;;;:::o;29788:126::-;29825:7;29865:42;29858:5;29854:54;29843:65;;29788:126;;;:::o;29920:77::-;29957:7;29986:5;29975:16;;29920:77;;;:::o;30003:86::-;30038:7;30078:4;30071:5;30067:16;30056:27;;30003:86;;;:::o;30095:153::-;30172:9;30205:37;30236:5;30205:37;:::i;:::-;30192:50;;30095:153;;;:::o;30254:121::-;30312:9;30345:24;30363:5;30345:24;:::i;:::-;30332:37;;30254:121;;;:::o;30381:126::-;30431:9;30464:37;30495:5;30464:37;:::i;:::-;30451:50;;30381:126;;;:::o;30513:113::-;30563:9;30596:24;30614:5;30596:24;:::i;:::-;30583:37;;30513:113;;;:::o;30632:307::-;30700:1;30710:113;30724:6;30721:1;30718:13;30710:113;;;30809:1;30804:3;30800:11;30794:18;30790:1;30785:3;30781:11;30774:39;30746:2;30743:1;30739:10;30734:15;;30710:113;;;30841:6;30838:1;30835:13;30832:101;;;30921:1;30912:6;30907:3;30903:16;30896:27;30832:101;30681:258;30632:307;;;:::o;30945:320::-;30989:6;31026:1;31020:4;31016:12;31006:22;;31073:1;31067:4;31063:12;31094:18;31084:81;;31150:4;31142:6;31138:17;31128:27;;31084:81;31212:2;31204:6;31201:14;31181:18;31178:38;31175:84;;;31231:18;;:::i;:::-;31175:84;30996:269;30945:320;;;:::o;31271:281::-;31354:27;31376:4;31354:27;:::i;:::-;31346:6;31342:40;31484:6;31472:10;31469:22;31448:18;31436:10;31433:34;31430:62;31427:88;;;31495:18;;:::i;:::-;31427:88;31535:10;31531:2;31524:22;31314:238;31271:281;;:::o;31558:233::-;31597:3;31620:24;31638:5;31620:24;:::i;:::-;31611:33;;31666:66;31659:5;31656:77;31653:103;;;31736:18;;:::i;:::-;31653:103;31783:1;31776:5;31772:13;31765:20;;31558:233;;;:::o;31797:180::-;31845:77;31842:1;31835:88;31942:4;31939:1;31932:15;31966:4;31963:1;31956:15;31983:180;32031:77;32028:1;32021:88;32128:4;32125:1;32118:15;32152:4;32149:1;32142:15;32169:180;32217:77;32214:1;32207:88;32314:4;32311:1;32304:15;32338:4;32335:1;32328:15;32355:180;32403:77;32400:1;32393:88;32500:4;32497:1;32490:15;32524:4;32521:1;32514:15;32541:180;32589:77;32586:1;32579:88;32686:4;32683:1;32676:15;32710:4;32707:1;32700:15;32727:117;32836:1;32833;32826:12;32850:117;32959:1;32956;32949:12;32973:117;33082:1;33079;33072:12;33096:117;33205:1;33202;33195:12;33219:102;33260:6;33311:2;33307:7;33302:2;33295:5;33291:14;33287:28;33277:38;;33219:102;;;:::o;33327:222::-;33467:34;33463:1;33455:6;33451:14;33444:58;33536:5;33531:2;33523:6;33519:15;33512:30;33327:222;:::o;33555:221::-;33695:34;33691:1;33683:6;33679:14;33672:58;33764:4;33759:2;33751:6;33747:15;33740:29;33555:221;:::o;33782:225::-;33922:34;33918:1;33910:6;33906:14;33899:58;33991:8;33986:2;33978:6;33974:15;33967:33;33782:225;:::o;34013:221::-;34153:34;34149:1;34141:6;34137:14;34130:58;34222:4;34217:2;34209:6;34205:15;34198:29;34013:221;:::o;34240:173::-;34380:25;34376:1;34368:6;34364:14;34357:49;34240:173;:::o;34419:225::-;34559:34;34555:1;34547:6;34543:14;34536:58;34628:8;34623:2;34615:6;34611:15;34604:33;34419:225;:::o;34650:164::-;34790:16;34786:1;34778:6;34774:14;34767:40;34650:164;:::o;34820:163::-;34960:15;34956:1;34948:6;34944:14;34937:39;34820:163;:::o;34989:169::-;35129:21;35125:1;35117:6;35113:14;35106:45;34989:169;:::o;35164:180::-;35304:32;35300:1;35292:6;35288:14;35281:56;35164:180;:::o;35350:227::-;35490:34;35486:1;35478:6;35474:14;35467:58;35559:10;35554:2;35546:6;35542:15;35535:35;35350:227;:::o;35583:182::-;35723:34;35719:1;35711:6;35707:14;35700:58;35583:182;:::o;35771:223::-;35911:34;35907:1;35899:6;35895:14;35888:58;35980:6;35975:2;35967:6;35963:15;35956:31;35771:223;:::o;36000:220::-;36140:34;36136:1;36128:6;36124:14;36117:58;36209:3;36204:2;36196:6;36192:15;36185:28;36000:220;:::o;36226:224::-;36366:34;36362:1;36354:6;36350:14;36343:58;36435:7;36430:2;36422:6;36418:15;36411:32;36226:224;:::o;36456:114::-;;:::o;36576:223::-;36716:34;36712:1;36704:6;36700:14;36693:58;36785:6;36780:2;36772:6;36768:15;36761:31;36576:223;:::o;36805:180::-;36945:32;36941:1;36933:6;36929:14;36922:56;36805:180;:::o;36991:167::-;37131:19;37127:1;37119:6;37115:14;37108:43;36991:167;:::o;37164:224::-;37304:34;37300:1;37292:6;37288:14;37281:58;37373:7;37368:2;37360:6;37356:15;37349:32;37164:224;:::o;37394:163::-;37534:15;37530:1;37522:6;37518:14;37511:39;37394:163;:::o;37563:122::-;37636:24;37654:5;37636:24;:::i;:::-;37629:5;37626:35;37616:63;;37675:1;37672;37665:12;37616:63;37563:122;:::o;37691:116::-;37761:21;37776:5;37761:21;:::i;:::-;37754:5;37751:32;37741:60;;37797:1;37794;37787:12;37741:60;37691:116;:::o;37813:122::-;37886:24;37904:5;37886:24;:::i;:::-;37879:5;37876:35;37866:63;;37925:1;37922;37915:12;37866:63;37813:122;:::o

Swarm Source

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