ETH Price: $2,303.43 (+0.93%)

Token

Shiba Capital (SHIBACAP)
 

Overview

Max Total Supply

1,000,000,000,000 SHIBACAP

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
16,039,505,083.847042993 SHIBACAP

Value
$0.00
0x9e23c36e460b18c2c065e396dd38e2d73c2f2e44
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:
ShibaCapital

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-30
*/

/*

SHIBA CAPITAL: The Future of Finance

Shiba Capital aims to offer the community a reward-based token for its holders
in a new and exciting way. The team is finally ready to launch and the token is 
backed by amazing developers. 

Telegram: https://t.me/SHIBACAPITAL_ETH

ERC-20 Stealth Launch
Initial Token Supply: 1 Trillion
10% of every buy goes back to the holders
10% of every sell goes straight to staking fund
Liquidity: Locked
Contract: Renounced
Contract: Verified
Shiba swap post-launch
CG/CMC contacts at the ready, twitter marketing push after the successful launch

TOKENOMICS:
Initial Supply: 1,000,000,000,000
No Max Buy
50% of $SHIBCAP burned to 0x0dEaD
10% of each buy goes to existing holders
10% of each sell goes to staking fund utilizing various other blockchains

*/

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts v4.4.0 (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/utils/Context.sol


// OpenZeppelin Contracts v4.4.0 (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/Ownable.sol


// OpenZeppelin Contracts v4.4.0 (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/utils/Address.sol


// OpenZeppelin Contracts v4.4.0 (utils/Address.sol)

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: contracts/shibacapital.sol


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

pragma solidity ^0.8.0;
//SPDX-License-Identifier: MIT

    contract ShibaCapital is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

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

        mapping (address => bool) private _isExcludedFromFee;

        mapping (address => bool) private _isExcluded;
        address[] private _excluded;

        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 1000000000000 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = 'Shiba Capital';
        string private _symbol = 'SHIBACAP';
        uint8 private _decimals = 9;

        uint256 private _taxFee = 10;
        uint256 private _teamFee = 10;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousTeamFee = _teamFee;

        address payable public _fundWalletAddress;
        address payable public _marketingWalletAddress;

        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 100000000000000e9;
        // We will set a minimum amount of tokens to be swaped => 5M
        uint256 private _numOfTokensToExchangeForTeam = 5 * 10**3 * 10**9;

        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapEnabledUpdated(bool enabled);

        modifier lockTheSwap {
            inSwap = true;
            _;
            inSwap = false;
        }

        constructor (address payable fundWalletAddress, address payable marketingWalletAddress) {
            _fundWalletAddress = fundWalletAddress;
            _marketingWalletAddress = marketingWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network
            // Create a uniswap pair for this new token
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());

            // set the rest of the contract variables
            uniswapV2Router = _uniswapV2Router;

            // Exclude owner and this contract from fee
            _isExcludedFromFee[owner()] = true;
            _isExcludedFromFee[address(this)] = true;

            emit Transfer(address(0), _msgSender(), _tTotal);
        }

        function name() public view returns (string memory) {
            return _name;
        }

        function symbol() public view returns (string memory) {
            return _symbol;
        }

        function decimals() public view returns (uint8) {
            return _decimals;
        }

        function totalSupply() public view override returns (uint256) {
            return _tTotal;
        }

        function balanceOf(address account) public view override returns (uint256) {
            if (_isExcluded[account]) return _tOwned[account];
            return tokenFromReflection(_rOwned[account]);
        }

        function transfer(address recipient, uint256 amount) public override returns (bool) {
            _transfer(_msgSender(), recipient, amount);
            return true;
        }

        function allowance(address owner, address spender) public view override returns (uint256) {
            return _allowances[owner][spender];
        }

        function approve(address spender, uint256 amount) public override returns (bool) {
            _approve(_msgSender(), spender, amount);
            return true;
        }

        function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
            _transfer(sender, recipient, amount);
            _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
            return true;
        }

        function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
            _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
            return true;
        }

        function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
            _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
            return true;
        }

        function isExcluded(address account) public view returns (bool) {
            return _isExcluded[account];
        }

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }

        function totalFees() public view returns (uint256) {
            return _tFeeTotal;
        }

        function deliver(uint256 tAmount) public {
            address sender = _msgSender();
            require(!_isExcluded[sender], "Excluded addresses cannot call this function");
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rTotal = _rTotal.sub(rAmount);
            _tFeeTotal = _tFeeTotal.add(tAmount);
        }

        function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
            require(tAmount <= _tTotal, "Amount must be less than supply");
            if (!deductTransferFee) {
                (uint256 rAmount,,,,,) = _getValues(tAmount);
                return rAmount;
            } else {
                (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
                return rTransferAmount;
            }
        }

        function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
            require(rAmount <= _rTotal, "Amount must be less than total reflections");
            uint256 currentRate =  _getRate();
            return rAmount.div(currentRate);
        }

        function excludeAccount(address account) external onlyOwner() {
            require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
            require(!_isExcluded[account], "Account is already excluded");
            if(_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _isExcluded[account] = true;
            _excluded.push(account);
        }

        function includeAccount(address account) external onlyOwner() {
            require(_isExcluded[account], "Account is already excluded");
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_excluded[i] == account) {
                    _excluded[i] = _excluded[_excluded.length - 1];
                    _tOwned[account] = 0;
                    _isExcluded[account] = false;
                    _excluded.pop();
                    break;
                }
            }
        }

        function removeAllFee() private {
            if(_taxFee == 0 && _teamFee == 0) return;

            _previousTaxFee = _taxFee;
            _previousTeamFee = _teamFee;

            _taxFee = 0;
            _teamFee = 0;
        }

        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _teamFee = _previousTeamFee;
        }

        function isExcludedFromFee(address account) public view returns(bool) {
            return _isExcludedFromFee[account];
        }

        function _approve(address owner, address spender, uint256 amount) private {
            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);
        }

        function _transfer(address sender, address recipient, uint256 amount) private {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");

            if(sender != owner() && recipient != owner())
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

            // is the token balance of this contract address over the min number of
            // tokens that we need to initiate a swap?
            // also, don't get caught in a circular team event.
            // also, don't swap if sender is uniswap pair.
            uint256 contractTokenBalance = balanceOf(address(this));

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                // We need to swap the current tokens to ETH and send to the team wallet
                swapTokensForEth(contractTokenBalance);

                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToTeam(address(this).balance);
                }
            }

            //indicates if fee should be deducted from transfer
            bool takeFee = true;

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

            //transfer amount, it will take tax and team fee
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

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

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

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

        function sendETHToTeam(uint256 amount) private {
            _fundWalletAddress.transfer(amount.div(2));
            _marketingWalletAddress.transfer(amount.div(2));
        }

        // We are exposing these functions to be able to manual swap and send
        // in case the token is highly valued and 5M becomes too much
        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }

        function manualSend() external onlyOwner() {
            uint256 contractETHBalance = address(this).balance;
            sendETHToTeam(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }

        function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
            if(!takeFee)
                removeAllFee();

            if (_isExcluded[sender] && !_isExcluded[recipient]) {
                _transferFromExcluded(sender, recipient, amount);
            } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
                _transferToExcluded(sender, recipient, amount);
            } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
                _transferStandard(sender, recipient, amount);
            } else if (_isExcluded[sender] && _isExcluded[recipient]) {
                _transferBothExcluded(sender, recipient, amount);
            } else {
                _transferStandard(sender, recipient, amount);
            }

            if(!takeFee)
                restoreAllFee();
        }

        function _transferStandard(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _takeTeam(uint256 tTeam) private {
            uint256 currentRate =  _getRate();
            uint256 rTeam = tTeam.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tTeam);
        }

        function _reflectFee(uint256 rFee, uint256 tFee) private {
            _rTotal = _rTotal.sub(rFee);
            _tFeeTotal = _tFeeTotal.add(tFee);
        }

         //to recieve ETH from uniswapV2Router when swaping
        receive() external payable {}

        function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
            (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
            uint256 currentRate =  _getRate();
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
            return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
        }

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tTeam = tAmount.mul(teamFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
            return (tTransferAmount, tFee, tTeam);
        }

        function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
            uint256 rAmount = tAmount.mul(currentRate);
            uint256 rFee = tFee.mul(currentRate);
            uint256 rTransferAmount = rAmount.sub(rFee);
            return (rAmount, rTransferAmount, rFee);
        }

        function _getRate() private view returns(uint256) {
            (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
            return rSupply.div(tSupply);
        }

        function _getCurrentSupply() private view returns(uint256, uint256) {
            uint256 rSupply = _rTotal;
            uint256 tSupply = _tTotal;
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
                rSupply = rSupply.sub(_rOwned[_excluded[i]]);
                tSupply = tSupply.sub(_tOwned[_excluded[i]]);
            }
            if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
            return (rSupply, tSupply);
        }

        function _getTaxFee() private view returns(uint256) {
            return _taxFee;
        }

        function _getMaxTxAmount() private view returns(uint256) {
            return _maxTxAmount;
        }

        function _getETHBalance() public view returns(uint256 balance) {
            return address(this).balance;
        }

        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            require(taxFee >= 1 && taxFee <= 25, 'taxFee should be in 1 - 25');
            _taxFee = taxFee;
        }

        function _setTeamFee(uint256 teamFee) external onlyOwner() {
            require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25');
            _teamFee = teamFee;
        }

        function _setfundWallet(address payable fundWalletAddress) external onlyOwner() {
            _fundWalletAddress = fundWalletAddress;
        }

        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
            require(maxTxAmount >= 100000000000000e9 , 'maxTxAmount should be greater than 100000000000000e9');
            _maxTxAmount = maxTxAmount;
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"fundWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":[],"name":"_fundWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"fundWalletAddress","type":"address"}],"name":"_setfundWallet","outputs":[],"stateMutability":"nonpayable","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052683635c9adc5dea0000060075560075460001962000023919062000952565b6000196200003291906200088f565b6008556040518060400160405280600d81526020017f5368696261204361706974616c00000000000000000000000000000000000000815250600a908051906020019062000082929190620006cc565b506040518060400160405280600881526020017f5348494241434150000000000000000000000000000000000000000000000000815250600b9080519060200190620000d0929190620006cc565b506009600c60006101000a81548160ff021916908360ff160217905550600a600d55600a600e55600d54600f55600e546010556000601260146101000a81548160ff0219169083151502179055506001601260156101000a81548160ff02191690831515021790555069152d02c7e14af680000060135565048c273950006014553480156200015e57600080fd5b5060405162005983380380620059838339818101604052810190620001849190620007dc565b620001a462000198620005d760201b60201c565b620005df60201b60201c565b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600160006200023d620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037957600080fd5b505afa1580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b49190620007aa565b6040518363ffffffff1660e01b8152600401620003d392919062000845565b602060405180830381600087803b158015620003ee57600080fd5b505af115801562000403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004299190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620004ac620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000565620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005c6919062000872565b60405180910390a350505062000a50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006da906200091c565b90600052602060002090601f016020900481019282620006fe57600085556200074a565b82601f106200071957805160ff19168380011785556200074a565b828001600101855582156200074a579182015b82811115620007495782518255916020019190600101906200072c565b5b5090506200075991906200075d565b5090565b5b80821115620007785760008160009055506001016200075e565b5090565b6000815190506200078d8162000a1c565b92915050565b600081519050620007a48162000a36565b92915050565b600060208284031215620007c357620007c262000a17565b5b6000620007d3848285016200077c565b91505092915050565b60008060408385031215620007f657620007f562000a17565b5b6000620008068582860162000793565b9250506020620008198582860162000793565b9150509250929050565b6200082e81620008ca565b82525050565b6200083f8162000912565b82525050565b60006040820190506200085c600083018562000823565b6200086b602083018462000823565b9392505050565b600060208201905062000889600083018462000834565b92915050565b60006200089c8262000912565b9150620008a98362000912565b925082821015620008bf57620008be6200098a565b5b828203905092915050565b6000620008d782620008f2565b9050919050565b6000620008eb82620008f2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200093557607f821691505b602082108114156200094c576200094b620009e8565b5b50919050565b60006200095f8262000912565b91506200096c8362000912565b9250826200097f576200097e620009b9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b62000a2781620008ca565b811462000a3357600080fd5b50565b62000a4181620008de565b811462000a4d57600080fd5b50565b60805160601c60a05160601c614eeb62000a9860003960008181610f6b01526123a701526000818161095d015281816126c6015281816127b601526127dd0152614eeb6000f3fe6080604052600436106102135760003560e01c80635f0dc6e111610118578063af9549e0116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063af9549e014610718578063cba0e99614610741578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061d57806395d89b41146106485780639f2346a214610673578063a457c2d71461069e578063a9059cbb146106db5761021a565b80635f0dc6e1146105755780636ddd17131461059e57806370a08231146105c9578063715018a6146106065761021a565b8063313ce5671161019b5780634549b0391161016a5780634549b0391461049057806349bd5a5e146104cd57806351bc3c85146104f85780635342acb41461050f5780635880b8731461054c5761021a565b8063313ce567146103d457806339509351146103ff5780633bd5d1731461043c5780634144d9e4146104655761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632d838119146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b6040516102419190614331565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190613e94565b610933565b60405161027e91906142fb565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614553565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614316565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614553565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190613f01565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613e01565b610a5c565b60405161036591906142fb565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190613f01565b610b35565b005b3480156103a357600080fd5b506103be60048036038101906103b99190613f01565b610c0c565b6040516103cb9190614553565b60405180910390f35b3480156103e057600080fd5b506103e9610c7a565b6040516103f691906145c8565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190613e94565b610c91565b60405161043391906142fb565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190613f01565b610d44565b005b34801561047157600080fd5b5061047a610ebf565b60405161048791906142e0565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190613f2e565b610ee5565b6040516104c49190614553565b60405180910390f35b3480156104d957600080fd5b506104e2610f69565b6040516104ef91906142c5565b60405180910390f35b34801561050457600080fd5b5061050d610f8d565b005b34801561051b57600080fd5b5061053660048036038101906105319190613d3a565b611022565b60405161054391906142fb565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190613f01565b611078565b005b34801561058157600080fd5b5061059c60048036038101906105979190613d94565b61114f565b005b3480156105aa57600080fd5b506105b361120f565b6040516105c091906142fb565b60405180910390f35b3480156105d557600080fd5b506105f060048036038101906105eb9190613d3a565b611222565b6040516105fd9190614553565b60405180910390f35b34801561061257600080fd5b5061061b61130d565b005b34801561062957600080fd5b50610632611395565b60405161063f91906142c5565b60405180910390f35b34801561065457600080fd5b5061065d6113be565b60405161066a9190614331565b60405180910390f35b34801561067f57600080fd5b50610688611450565b60405161069591906142e0565b60405180910390f35b3480156106aa57600080fd5b506106c560048036038101906106c09190613e94565b611476565b6040516106d291906142fb565b60405180910390f35b3480156106e757600080fd5b5061070260048036038101906106fd9190613e94565b611543565b60405161070f91906142fb565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a9190613e54565b611561565b005b34801561074d57600080fd5b5061076860048036038101906107639190613d3a565b611638565b60405161077591906142fb565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613dc1565b61168e565b6040516107b29190614553565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190613ed4565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613d3a565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613d3a565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614553565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613d3a565b611c59565b005b6060600a80546108b09061482f565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc9061482f565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940611f8f565b8484611f97565b6001905092915050565b6000600954905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b610991611f8f565b73ffffffffffffffffffffffffffffffffffffffff166109af611395565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90614473565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990614413565b60405180910390fd5b8060138190555050565b6000610a69848484612162565b610b2a84610a75611f8f565b610b2585604051806060016040528060288152602001614e6960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e39092919063ffffffff16565b611f97565b600190509392505050565b610b3d611f8f565b73ffffffffffffffffffffffffffffffffffffffff16610b5b611395565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba890614473565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906143d3565b60405180910390fd5b80600e8190555050565b6000600854821115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a90614373565b60405180910390fd5b6000610c5d612538565b9050610c72818461256390919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d3a610c9e611f8f565b84610d358560036000610caf611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b611f97565b6001905092915050565b6000610d4e611f8f565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490614533565b60405180910390fd5b6000610de88361258f565b50505050509050610e4181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e99816008546125f690919063ffffffff16565b600881905550610eb48360095461257990919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390614433565b60405180910390fd5b81610f4c576000610f3c8461258f565b5050505050905080915050610f63565b6000610f578461258f565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f95611f8f565b73ffffffffffffffffffffffffffffffffffffffff16610fb3611395565b73ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100090614473565b60405180910390fd5b600061101430611222565b905061101f8161260c565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611080611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661109e611395565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90614473565b60405180910390fd5b60018110158015611106575060198111155b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906144f3565b60405180910390fd5b80600d8190555050565b611157611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611175611395565b73ffffffffffffffffffffffffffffffffffffffff16146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290614473565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112bd57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611308565b611305600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b90505b919050565b611315611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611333611395565b73ffffffffffffffffffffffffffffffffffffffff1614611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138090614473565b60405180910390fd5b611393600061288e565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546113cd9061482f565b80601f01602080910402602001604051908101604052809291908181526020018280546113f99061482f565b80156114465780601f1061141b57610100808354040283529160200191611446565b820191906000526020600020905b81548152906001019060200180831161142957829003601f168201915b5050505050905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611539611483611f8f565b8461153485604051806060016040528060258152602001614e9160259139600360006114ad611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e39092919063ffffffff16565b611f97565b6001905092915050565b6000611557611550611f8f565b8484612162565b6001905092915050565b611569611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611587611395565b73ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490614473565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661173b611395565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890614473565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6611f8f565b73ffffffffffffffffffffffffffffffffffffffff166117d4611395565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182190614473565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490614513565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906143f3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611af2611395565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f90614473565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614393565b60405180910390fd5b611bc18161288e565b50565b611bcc611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611bea611395565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3790614473565b60405180910390fd5b6000479050611c4e81612952565b50565b600047905090565b611c61611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611c7f611395565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614473565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906143f3565b60405180910390fd5b60005b600680549050811015611f8b578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611d9c57611d9b614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f785760066001600680549050611df79190614719565b81548110611e0857611e07614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611e4757611e46614966565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611f3e57611f3d614937565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611f8b565b8080611f8390614861565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe906144d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e906143b3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121559190614553565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c9906144b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223990614353565b60405180910390fd5b60008111612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227c90614493565b60405180910390fd5b61228d611395565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122fb57506122cb611395565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561234657601354811115612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c90614453565b60405180910390fd5b5b600061235130611222565b905060135481106123625760135490505b60006014548210159050601260149054906101000a900460ff161580156123955750601260159054906101000a900460ff165b801561239e5750805b80156123f657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561241e576124048261260c565b6000479050600081111561241c5761241b47612952565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124c55750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124cf57600090505b6124db86868684612a4d565b505050505050565b600083831115829061252b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125229190614331565b60405180910390fd5b5082840390509392505050565b6000806000612545612d5e565b9150915061255c818361256390919063ffffffff16565b9250505090565b60008183612571919061468e565b905092915050565b600081836125879190614638565b905092915050565b60008060008060008060008060006125ac8a600d54600e54613011565b92509250925060006125bc612538565b905060008060006125ce8e87866130a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600081836126049190614719565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561264457612643614995565b5b6040519080825280602002602001820160405280156126725781602001602082028036833780820191505090505b509050308160008151811061268a57612689614966565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272a57600080fd5b505afa15801561273e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127629190613d67565b8160018151811061277657612775614966565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127db307f000000000000000000000000000000000000000000000000000000000000000084611f97565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161283d95949392919061456e565b600060405180830381600087803b15801561285757600080fd5b505af115801561286b573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6129a260028461256390919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156129cd573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612a1e60028461256390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612a49573d6000803e3d6000fd5b5050565b80612a5b57612a5a613105565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612afe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b1357612b0e848484613148565b612d4a565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bb65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612bcb57612bc68484846133a8565b612d49565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c6f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c8457612c7f848484613608565b612d48565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d265750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d3b57612d368484846137d3565b612d47565b612d46848484613608565b5b5b5b5b80612d5857612d57613ac8565b5b50505050565b600080600060085490506000600754905060005b600680549050811015612fd457826001600060068481548110612d9857612d97614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612e865750816002600060068481548110612e1e57612e1d614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612e9d576008546007549450945050505061300d565b612f2d6001600060068481548110612eb857612eb7614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846125f690919063ffffffff16565b9250612fbf6002600060068481548110612f4a57612f49614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836125f690919063ffffffff16565b91508080612fcc90614861565b915050612d72565b50612fec60075460085461256390919063ffffffff16565b8210156130045760085460075493509350505061300d565b81819350935050505b9091565b60008060008061303d606461302f888a613adc90919063ffffffff16565b61256390919063ffffffff16565b905060006130676064613059888b613adc90919063ffffffff16565b61256390919063ffffffff16565b9050600061309082613082858c6125f690919063ffffffff16565b6125f690919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806130c08588613adc90919063ffffffff16565b905060006130d78688613adc90919063ffffffff16565b905060006130ee82846125f690919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d5414801561311957506000600e54145b1561312357613146565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061315a8761258f565b9550955095509550955095506131b887600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324d86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132e285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061332e81613af2565b6133388483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516133959190614553565b60405180910390a3505050505050505050565b6000806000806000806133ba8761258f565b95509550955095509550955061341886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134ad83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061358e81613af2565b6135988483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135f59190614553565b60405180910390a3505050505050505050565b60008060008060008061361a8761258f565b95509550955095509550955061367886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061370d85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061375981613af2565b6137638483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137c09190614553565b60405180910390a3505050505050505050565b6000806000806000806137e58761258f565b95509550955095509550955061384387600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061396d83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4e81613af2565b613a588483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ab59190614553565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613aea91906146bf565b905092915050565b6000613afc612538565b90506000613b138284613adc90919063ffffffff16565b9050613b6781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c9257613c4e83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613cac826008546125f690919063ffffffff16565b600881905550613cc78160095461257990919063ffffffff16565b6009819055505050565b600081359050613ce081614e0c565b92915050565b600081519050613cf581614e0c565b92915050565b600081359050613d0a81614e23565b92915050565b600081359050613d1f81614e3a565b92915050565b600081359050613d3481614e51565b92915050565b600060208284031215613d5057613d4f6149c4565b5b6000613d5e84828501613cd1565b91505092915050565b600060208284031215613d7d57613d7c6149c4565b5b6000613d8b84828501613ce6565b91505092915050565b600060208284031215613daa57613da96149c4565b5b6000613db884828501613cfb565b91505092915050565b60008060408385031215613dd857613dd76149c4565b5b6000613de685828601613cd1565b9250506020613df785828601613cd1565b9150509250929050565b600080600060608486031215613e1a57613e196149c4565b5b6000613e2886828701613cd1565b9350506020613e3986828701613cd1565b9250506040613e4a86828701613d25565b9150509250925092565b60008060408385031215613e6b57613e6a6149c4565b5b6000613e7985828601613cd1565b9250506020613e8a85828601613d10565b9150509250929050565b60008060408385031215613eab57613eaa6149c4565b5b6000613eb985828601613cd1565b9250506020613eca85828601613d25565b9150509250929050565b600060208284031215613eea57613ee96149c4565b5b6000613ef884828501613d10565b91505092915050565b600060208284031215613f1757613f166149c4565b5b6000613f2584828501613d25565b91505092915050565b60008060408385031215613f4557613f446149c4565b5b6000613f5385828601613d25565b9250506020613f6485828601613d10565b9150509250929050565b6000613f7a8383613f95565b60208301905092915050565b613f8f8161475f565b82525050565b613f9e8161474d565b82525050565b613fad8161474d565b82525050565b6000613fbe826145f3565b613fc88185614616565b9350613fd3836145e3565b8060005b83811015614004578151613feb8882613f6e565b9750613ff683614609565b925050600181019050613fd7565b5085935050505092915050565b61401a81614771565b82525050565b614029816147b4565b82525050565b614038816147c6565b82525050565b6000614049826145fe565b6140538185614627565b93506140638185602086016147fc565b61406c816149c9565b840191505092915050565b6000614084602383614627565b915061408f826149da565b604082019050919050565b60006140a7602a83614627565b91506140b282614a29565b604082019050919050565b60006140ca602683614627565b91506140d582614a78565b604082019050919050565b60006140ed602283614627565b91506140f882614ac7565b604082019050919050565b6000614110601b83614627565b915061411b82614b16565b602082019050919050565b6000614133601b83614627565b915061413e82614b3f565b602082019050919050565b6000614156603483614627565b915061416182614b68565b604082019050919050565b6000614179601f83614627565b915061418482614bb7565b602082019050919050565b600061419c602883614627565b91506141a782614be0565b604082019050919050565b60006141bf602083614627565b91506141ca82614c2f565b602082019050919050565b60006141e2602983614627565b91506141ed82614c58565b604082019050919050565b6000614205602583614627565b915061421082614ca7565b604082019050919050565b6000614228602483614627565b915061423382614cf6565b604082019050919050565b600061424b601a83614627565b915061425682614d45565b602082019050919050565b600061426e602283614627565b915061427982614d6e565b604082019050919050565b6000614291602c83614627565b915061429c82614dbd565b604082019050919050565b6142b08161479d565b82525050565b6142bf816147a7565b82525050565b60006020820190506142da6000830184613fa4565b92915050565b60006020820190506142f56000830184613f86565b92915050565b60006020820190506143106000830184614011565b92915050565b600060208201905061432b6000830184614020565b92915050565b6000602082019050818103600083015261434b818461403e565b905092915050565b6000602082019050818103600083015261436c81614077565b9050919050565b6000602082019050818103600083015261438c8161409a565b9050919050565b600060208201905081810360008301526143ac816140bd565b9050919050565b600060208201905081810360008301526143cc816140e0565b9050919050565b600060208201905081810360008301526143ec81614103565b9050919050565b6000602082019050818103600083015261440c81614126565b9050919050565b6000602082019050818103600083015261442c81614149565b9050919050565b6000602082019050818103600083015261444c8161416c565b9050919050565b6000602082019050818103600083015261446c8161418f565b9050919050565b6000602082019050818103600083015261448c816141b2565b9050919050565b600060208201905081810360008301526144ac816141d5565b9050919050565b600060208201905081810360008301526144cc816141f8565b9050919050565b600060208201905081810360008301526144ec8161421b565b9050919050565b6000602082019050818103600083015261450c8161423e565b9050919050565b6000602082019050818103600083015261452c81614261565b9050919050565b6000602082019050818103600083015261454c81614284565b9050919050565b600060208201905061456860008301846142a7565b92915050565b600060a08201905061458360008301886142a7565b614590602083018761402f565b81810360408301526145a28186613fb3565b90506145b16060830185613fa4565b6145be60808301846142a7565b9695505050505050565b60006020820190506145dd60008301846142b6565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006146438261479d565b915061464e8361479d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614683576146826148aa565b5b828201905092915050565b60006146998261479d565b91506146a48361479d565b9250826146b4576146b36148d9565b5b828204905092915050565b60006146ca8261479d565b91506146d58361479d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561470e5761470d6148aa565b5b828202905092915050565b60006147248261479d565b915061472f8361479d565b925082821015614742576147416148aa565b5b828203905092915050565b60006147588261477d565b9050919050565b600061476a8261477d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147bf826147d8565b9050919050565b60006147d18261479d565b9050919050565b60006147e3826147ea565b9050919050565b60006147f58261477d565b9050919050565b60005b8381101561481a5780820151818401526020810190506147ff565b83811115614829576000848401525b50505050565b6000600282049050600182168061484757607f821691505b6020821081141561485b5761485a614908565b5b50919050565b600061486c8261479d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561489f5761489e6148aa565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614e158161474d565b8114614e2057600080fd5b50565b614e2c8161475f565b8114614e3757600080fd5b50565b614e4381614771565b8114614e4e57600080fd5b50565b614e5a8161479d565b8114614e6557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f4c614ad92d1cbde09e78b116c781464d9ac1fde635f3ec5126f5776c374cfe264736f6c6343000807003300000000000000000000000071d3e8f4ca292d03cfd8394063908eb6fbdba04f000000000000000000000000b1c1e1fb9fbec5bb553643831ecfeccc6344a901

Deployed Bytecode

0x6080604052600436106102135760003560e01c80635f0dc6e111610118578063af9549e0116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063af9549e014610718578063cba0e99614610741578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061d57806395d89b41146106485780639f2346a214610673578063a457c2d71461069e578063a9059cbb146106db5761021a565b80635f0dc6e1146105755780636ddd17131461059e57806370a08231146105c9578063715018a6146106065761021a565b8063313ce5671161019b5780634549b0391161016a5780634549b0391461049057806349bd5a5e146104cd57806351bc3c85146104f85780635342acb41461050f5780635880b8731461054c5761021a565b8063313ce567146103d457806339509351146103ff5780633bd5d1731461043c5780634144d9e4146104655761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632d838119146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b6040516102419190614331565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190613e94565b610933565b60405161027e91906142fb565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614553565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614316565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614553565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190613f01565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613e01565b610a5c565b60405161036591906142fb565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190613f01565b610b35565b005b3480156103a357600080fd5b506103be60048036038101906103b99190613f01565b610c0c565b6040516103cb9190614553565b60405180910390f35b3480156103e057600080fd5b506103e9610c7a565b6040516103f691906145c8565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190613e94565b610c91565b60405161043391906142fb565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190613f01565b610d44565b005b34801561047157600080fd5b5061047a610ebf565b60405161048791906142e0565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190613f2e565b610ee5565b6040516104c49190614553565b60405180910390f35b3480156104d957600080fd5b506104e2610f69565b6040516104ef91906142c5565b60405180910390f35b34801561050457600080fd5b5061050d610f8d565b005b34801561051b57600080fd5b5061053660048036038101906105319190613d3a565b611022565b60405161054391906142fb565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190613f01565b611078565b005b34801561058157600080fd5b5061059c60048036038101906105979190613d94565b61114f565b005b3480156105aa57600080fd5b506105b361120f565b6040516105c091906142fb565b60405180910390f35b3480156105d557600080fd5b506105f060048036038101906105eb9190613d3a565b611222565b6040516105fd9190614553565b60405180910390f35b34801561061257600080fd5b5061061b61130d565b005b34801561062957600080fd5b50610632611395565b60405161063f91906142c5565b60405180910390f35b34801561065457600080fd5b5061065d6113be565b60405161066a9190614331565b60405180910390f35b34801561067f57600080fd5b50610688611450565b60405161069591906142e0565b60405180910390f35b3480156106aa57600080fd5b506106c560048036038101906106c09190613e94565b611476565b6040516106d291906142fb565b60405180910390f35b3480156106e757600080fd5b5061070260048036038101906106fd9190613e94565b611543565b60405161070f91906142fb565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a9190613e54565b611561565b005b34801561074d57600080fd5b5061076860048036038101906107639190613d3a565b611638565b60405161077591906142fb565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613dc1565b61168e565b6040516107b29190614553565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190613ed4565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613d3a565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613d3a565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614553565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613d3a565b611c59565b005b6060600a80546108b09061482f565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc9061482f565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940611f8f565b8484611f97565b6001905092915050565b6000600954905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b610991611f8f565b73ffffffffffffffffffffffffffffffffffffffff166109af611395565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90614473565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990614413565b60405180910390fd5b8060138190555050565b6000610a69848484612162565b610b2a84610a75611f8f565b610b2585604051806060016040528060288152602001614e6960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e39092919063ffffffff16565b611f97565b600190509392505050565b610b3d611f8f565b73ffffffffffffffffffffffffffffffffffffffff16610b5b611395565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba890614473565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906143d3565b60405180910390fd5b80600e8190555050565b6000600854821115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a90614373565b60405180910390fd5b6000610c5d612538565b9050610c72818461256390919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d3a610c9e611f8f565b84610d358560036000610caf611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b611f97565b6001905092915050565b6000610d4e611f8f565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490614533565b60405180910390fd5b6000610de88361258f565b50505050509050610e4181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e99816008546125f690919063ffffffff16565b600881905550610eb48360095461257990919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390614433565b60405180910390fd5b81610f4c576000610f3c8461258f565b5050505050905080915050610f63565b6000610f578461258f565b50505050915050809150505b92915050565b7f000000000000000000000000be317a59a7fb73c271c705184e4eddfe34aee77a81565b610f95611f8f565b73ffffffffffffffffffffffffffffffffffffffff16610fb3611395565b73ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100090614473565b60405180910390fd5b600061101430611222565b905061101f8161260c565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611080611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661109e611395565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90614473565b60405180910390fd5b60018110158015611106575060198111155b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906144f3565b60405180910390fd5b80600d8190555050565b611157611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611175611395565b73ffffffffffffffffffffffffffffffffffffffff16146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290614473565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112bd57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611308565b611305600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b90505b919050565b611315611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611333611395565b73ffffffffffffffffffffffffffffffffffffffff1614611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138090614473565b60405180910390fd5b611393600061288e565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546113cd9061482f565b80601f01602080910402602001604051908101604052809291908181526020018280546113f99061482f565b80156114465780601f1061141b57610100808354040283529160200191611446565b820191906000526020600020905b81548152906001019060200180831161142957829003601f168201915b5050505050905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611539611483611f8f565b8461153485604051806060016040528060258152602001614e9160259139600360006114ad611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e39092919063ffffffff16565b611f97565b6001905092915050565b6000611557611550611f8f565b8484612162565b6001905092915050565b611569611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611587611395565b73ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490614473565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661173b611395565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890614473565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6611f8f565b73ffffffffffffffffffffffffffffffffffffffff166117d4611395565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182190614473565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490614513565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906143f3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611af2611395565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f90614473565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614393565b60405180910390fd5b611bc18161288e565b50565b611bcc611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611bea611395565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3790614473565b60405180910390fd5b6000479050611c4e81612952565b50565b600047905090565b611c61611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611c7f611395565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614473565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906143f3565b60405180910390fd5b60005b600680549050811015611f8b578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611d9c57611d9b614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f785760066001600680549050611df79190614719565b81548110611e0857611e07614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611e4757611e46614966565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611f3e57611f3d614937565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611f8b565b8080611f8390614861565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe906144d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e906143b3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121559190614553565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c9906144b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223990614353565b60405180910390fd5b60008111612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227c90614493565b60405180910390fd5b61228d611395565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122fb57506122cb611395565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561234657601354811115612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c90614453565b60405180910390fd5b5b600061235130611222565b905060135481106123625760135490505b60006014548210159050601260149054906101000a900460ff161580156123955750601260159054906101000a900460ff165b801561239e5750805b80156123f657507f000000000000000000000000be317a59a7fb73c271c705184e4eddfe34aee77a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561241e576124048261260c565b6000479050600081111561241c5761241b47612952565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124c55750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124cf57600090505b6124db86868684612a4d565b505050505050565b600083831115829061252b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125229190614331565b60405180910390fd5b5082840390509392505050565b6000806000612545612d5e565b9150915061255c818361256390919063ffffffff16565b9250505090565b60008183612571919061468e565b905092915050565b600081836125879190614638565b905092915050565b60008060008060008060008060006125ac8a600d54600e54613011565b92509250925060006125bc612538565b905060008060006125ce8e87866130a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600081836126049190614719565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561264457612643614995565b5b6040519080825280602002602001820160405280156126725781602001602082028036833780820191505090505b509050308160008151811061268a57612689614966565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272a57600080fd5b505afa15801561273e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127629190613d67565b8160018151811061277657612775614966565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127db307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f97565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161283d95949392919061456e565b600060405180830381600087803b15801561285757600080fd5b505af115801561286b573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6129a260028461256390919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156129cd573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612a1e60028461256390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612a49573d6000803e3d6000fd5b5050565b80612a5b57612a5a613105565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612afe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b1357612b0e848484613148565b612d4a565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bb65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612bcb57612bc68484846133a8565b612d49565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c6f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c8457612c7f848484613608565b612d48565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d265750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d3b57612d368484846137d3565b612d47565b612d46848484613608565b5b5b5b5b80612d5857612d57613ac8565b5b50505050565b600080600060085490506000600754905060005b600680549050811015612fd457826001600060068481548110612d9857612d97614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612e865750816002600060068481548110612e1e57612e1d614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612e9d576008546007549450945050505061300d565b612f2d6001600060068481548110612eb857612eb7614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846125f690919063ffffffff16565b9250612fbf6002600060068481548110612f4a57612f49614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836125f690919063ffffffff16565b91508080612fcc90614861565b915050612d72565b50612fec60075460085461256390919063ffffffff16565b8210156130045760085460075493509350505061300d565b81819350935050505b9091565b60008060008061303d606461302f888a613adc90919063ffffffff16565b61256390919063ffffffff16565b905060006130676064613059888b613adc90919063ffffffff16565b61256390919063ffffffff16565b9050600061309082613082858c6125f690919063ffffffff16565b6125f690919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806130c08588613adc90919063ffffffff16565b905060006130d78688613adc90919063ffffffff16565b905060006130ee82846125f690919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d5414801561311957506000600e54145b1561312357613146565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061315a8761258f565b9550955095509550955095506131b887600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324d86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132e285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061332e81613af2565b6133388483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516133959190614553565b60405180910390a3505050505050505050565b6000806000806000806133ba8761258f565b95509550955095509550955061341886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134ad83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061358e81613af2565b6135988483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135f59190614553565b60405180910390a3505050505050505050565b60008060008060008061361a8761258f565b95509550955095509550955061367886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061370d85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061375981613af2565b6137638483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137c09190614553565b60405180910390a3505050505050505050565b6000806000806000806137e58761258f565b95509550955095509550955061384387600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061396d83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4e81613af2565b613a588483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ab59190614553565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613aea91906146bf565b905092915050565b6000613afc612538565b90506000613b138284613adc90919063ffffffff16565b9050613b6781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c9257613c4e83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613cac826008546125f690919063ffffffff16565b600881905550613cc78160095461257990919063ffffffff16565b6009819055505050565b600081359050613ce081614e0c565b92915050565b600081519050613cf581614e0c565b92915050565b600081359050613d0a81614e23565b92915050565b600081359050613d1f81614e3a565b92915050565b600081359050613d3481614e51565b92915050565b600060208284031215613d5057613d4f6149c4565b5b6000613d5e84828501613cd1565b91505092915050565b600060208284031215613d7d57613d7c6149c4565b5b6000613d8b84828501613ce6565b91505092915050565b600060208284031215613daa57613da96149c4565b5b6000613db884828501613cfb565b91505092915050565b60008060408385031215613dd857613dd76149c4565b5b6000613de685828601613cd1565b9250506020613df785828601613cd1565b9150509250929050565b600080600060608486031215613e1a57613e196149c4565b5b6000613e2886828701613cd1565b9350506020613e3986828701613cd1565b9250506040613e4a86828701613d25565b9150509250925092565b60008060408385031215613e6b57613e6a6149c4565b5b6000613e7985828601613cd1565b9250506020613e8a85828601613d10565b9150509250929050565b60008060408385031215613eab57613eaa6149c4565b5b6000613eb985828601613cd1565b9250506020613eca85828601613d25565b9150509250929050565b600060208284031215613eea57613ee96149c4565b5b6000613ef884828501613d10565b91505092915050565b600060208284031215613f1757613f166149c4565b5b6000613f2584828501613d25565b91505092915050565b60008060408385031215613f4557613f446149c4565b5b6000613f5385828601613d25565b9250506020613f6485828601613d10565b9150509250929050565b6000613f7a8383613f95565b60208301905092915050565b613f8f8161475f565b82525050565b613f9e8161474d565b82525050565b613fad8161474d565b82525050565b6000613fbe826145f3565b613fc88185614616565b9350613fd3836145e3565b8060005b83811015614004578151613feb8882613f6e565b9750613ff683614609565b925050600181019050613fd7565b5085935050505092915050565b61401a81614771565b82525050565b614029816147b4565b82525050565b614038816147c6565b82525050565b6000614049826145fe565b6140538185614627565b93506140638185602086016147fc565b61406c816149c9565b840191505092915050565b6000614084602383614627565b915061408f826149da565b604082019050919050565b60006140a7602a83614627565b91506140b282614a29565b604082019050919050565b60006140ca602683614627565b91506140d582614a78565b604082019050919050565b60006140ed602283614627565b91506140f882614ac7565b604082019050919050565b6000614110601b83614627565b915061411b82614b16565b602082019050919050565b6000614133601b83614627565b915061413e82614b3f565b602082019050919050565b6000614156603483614627565b915061416182614b68565b604082019050919050565b6000614179601f83614627565b915061418482614bb7565b602082019050919050565b600061419c602883614627565b91506141a782614be0565b604082019050919050565b60006141bf602083614627565b91506141ca82614c2f565b602082019050919050565b60006141e2602983614627565b91506141ed82614c58565b604082019050919050565b6000614205602583614627565b915061421082614ca7565b604082019050919050565b6000614228602483614627565b915061423382614cf6565b604082019050919050565b600061424b601a83614627565b915061425682614d45565b602082019050919050565b600061426e602283614627565b915061427982614d6e565b604082019050919050565b6000614291602c83614627565b915061429c82614dbd565b604082019050919050565b6142b08161479d565b82525050565b6142bf816147a7565b82525050565b60006020820190506142da6000830184613fa4565b92915050565b60006020820190506142f56000830184613f86565b92915050565b60006020820190506143106000830184614011565b92915050565b600060208201905061432b6000830184614020565b92915050565b6000602082019050818103600083015261434b818461403e565b905092915050565b6000602082019050818103600083015261436c81614077565b9050919050565b6000602082019050818103600083015261438c8161409a565b9050919050565b600060208201905081810360008301526143ac816140bd565b9050919050565b600060208201905081810360008301526143cc816140e0565b9050919050565b600060208201905081810360008301526143ec81614103565b9050919050565b6000602082019050818103600083015261440c81614126565b9050919050565b6000602082019050818103600083015261442c81614149565b9050919050565b6000602082019050818103600083015261444c8161416c565b9050919050565b6000602082019050818103600083015261446c8161418f565b9050919050565b6000602082019050818103600083015261448c816141b2565b9050919050565b600060208201905081810360008301526144ac816141d5565b9050919050565b600060208201905081810360008301526144cc816141f8565b9050919050565b600060208201905081810360008301526144ec8161421b565b9050919050565b6000602082019050818103600083015261450c8161423e565b9050919050565b6000602082019050818103600083015261452c81614261565b9050919050565b6000602082019050818103600083015261454c81614284565b9050919050565b600060208201905061456860008301846142a7565b92915050565b600060a08201905061458360008301886142a7565b614590602083018761402f565b81810360408301526145a28186613fb3565b90506145b16060830185613fa4565b6145be60808301846142a7565b9695505050505050565b60006020820190506145dd60008301846142b6565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006146438261479d565b915061464e8361479d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614683576146826148aa565b5b828201905092915050565b60006146998261479d565b91506146a48361479d565b9250826146b4576146b36148d9565b5b828204905092915050565b60006146ca8261479d565b91506146d58361479d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561470e5761470d6148aa565b5b828202905092915050565b60006147248261479d565b915061472f8361479d565b925082821015614742576147416148aa565b5b828203905092915050565b60006147588261477d565b9050919050565b600061476a8261477d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147bf826147d8565b9050919050565b60006147d18261479d565b9050919050565b60006147e3826147ea565b9050919050565b60006147f58261477d565b9050919050565b60005b8381101561481a5780820151818401526020810190506147ff565b83811115614829576000848401525b50505050565b6000600282049050600182168061484757607f821691505b6020821081141561485b5761485a614908565b5b50919050565b600061486c8261479d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561489f5761489e6148aa565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614e158161474d565b8114614e2057600080fd5b50565b614e2c8161475f565b8114614e3757600080fd5b50565b614e4381614771565b8114614e4e57600080fd5b50565b614e5a8161479d565b8114614e6557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f4c614ad92d1cbde09e78b116c781464d9ac1fde635f3ec5126f5776c374cfe264736f6c63430008070033

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

00000000000000000000000071d3e8f4ca292d03cfd8394063908eb6fbdba04f000000000000000000000000b1c1e1fb9fbec5bb553643831ecfeccc6344a901

-----Decoded View---------------
Arg [0] : fundWalletAddress (address): 0x71d3e8F4ca292D03cFd8394063908eb6fBDba04f
Arg [1] : marketingWalletAddress (address): 0xb1C1E1FB9FBEc5Bb553643831EcFEccC6344a901

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000071d3e8f4ca292d03cfd8394063908eb6fbdba04f
Arg [1] : 000000000000000000000000b1c1e1fb9fbec5bb553643831ecfeccc6344a901


Deployed Bytecode Sourcemap

30991:18847:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33718:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34722:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36070:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32123:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34031:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49598:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34907:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49241:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37078:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33928:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35248:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36177:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32064:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36594:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32185:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42265:168;;;;;;;;;;;;;:::i;:::-;;38769:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49048:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49441:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32266:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34146:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13227:103;;;;;;;;;;;;;:::i;:::-;;12576:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33821:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32012:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35490:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34368:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35913:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35783:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34559:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42625:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37359:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13485:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42445:168;;;;;;;;;;;;;:::i;:::-;;48918:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37846:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33718:91;33755:13;33792:5;33785:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33718:91;:::o;34722:173::-;34797:4;34818:39;34827:12;:10;:12::i;:::-;34841:7;34850:6;34818:8;:39::i;:::-;34879:4;34872:11;;34722:173;;;;:::o;36070:95::-;36112:7;36143:10;;36136:17;;36070:95;:::o;32123:51::-;;;:::o;34031:103::-;34084:7;34115;;34108:14;;34031:103;:::o;49598:233::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49703:17:::1;49688:11;:32;;49680:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;49808:11;49793:12;:26;;;;49598:233:::0;:::o;34907:329::-;35005:4;35026:36;35036:6;35044:9;35055:6;35026:9;:36::i;:::-;35077:121;35086:6;35094:12;:10;:12::i;:::-;35108:89;35146:6;35108:89;;;;;;;;;;;;;;;;;:11;:19;35120:6;35108:19;;;;;;;;;;;;;;;:33;35128:12;:10;:12::i;:::-;35108:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;35077:8;:121::i;:::-;35220:4;35213:11;;34907:329;;;;;:::o;49241:188::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49334:1:::1;49323:7;:12;;:29;;;;;49350:2;49339:7;:13;;49323:29;49315:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;49410:7;49399:8;:18;;;;49241:188:::0;:::o;37078:269::-;37144:7;37187;;37176;:18;;37168:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37256:19;37279:10;:8;:10::i;:::-;37256:33;;37311:24;37323:11;37311:7;:11;;:24;;;;:::i;:::-;37304:31;;;37078:269;;;:::o;33928:91::-;33969:5;33998:9;;;;;;;;;;;33991:16;;33928:91;:::o;35248:230::-;35336:4;35357:83;35366:12;:10;:12::i;:::-;35380:7;35389:50;35428:10;35389:11;:25;35401:12;:10;:12::i;:::-;35389:25;;;;;;;;;;;;;;;:34;35415:7;35389:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;35357:8;:83::i;:::-;35462:4;35455:11;;35248:230;;;;:::o;36177:405::-;36233:14;36250:12;:10;:12::i;:::-;36233:29;;36286:11;:19;36298:6;36286:19;;;;;;;;;;;;;;;;;;;;;;;;;36285:20;36277:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;36370:15;36394:19;36405:7;36394:10;:19::i;:::-;36369:44;;;;;;;36446:28;36466:7;36446;:15;36454:6;36446:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36428:7;:15;36436:6;36428:15;;;;;;;;;;;;;;;:46;;;;36499:20;36511:7;36499;;:11;;:20;;;;:::i;:::-;36489:7;:30;;;;36547:23;36562:7;36547:10;;:14;;:23;;;;:::i;:::-;36534:10;:36;;;;36218:364;;36177:405;:::o;32064:46::-;;;;;;;;;;;;;:::o;36594:472::-;36684:7;36727;;36716;:18;;36708:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;36790:17;36785:270;;36829:15;36853:19;36864:7;36853:10;:19::i;:::-;36828:44;;;;;;;36898:7;36891:14;;;;;36785:270;36948:23;36979:19;36990:7;36979:10;:19::i;:::-;36946:52;;;;;;;37024:15;37017:22;;;36594:472;;;;;:::o;32185:38::-;;;:::o;42265:168::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42323:23:::1;42349:24;42367:4;42349:9;:24::i;:::-;42323:50;;42388:33;42405:15;42388:16;:33::i;:::-;42308:125;42265:168::o:0;38769:131::-;38833:4;38861:18;:27;38880:7;38861:27;;;;;;;;;;;;;;;;;;;;;;;;;38854:34;;38769:131;;;:::o;49048:181::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49138:1:::1;49128:6;:11;;:27;;;;;49153:2;49143:6;:12;;49128:27;49120:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;49211:6;49201:7;:16;;;;49048:181:::0;:::o;49441:145::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49557:17:::1;49536:18;;:38;;;;;;;;;;;;;;;;;;49441:145:::0;:::o;32266:30::-;;;;;;;;;;;;;:::o;34146:210::-;34212:7;34240:11;:20;34252:7;34240:20;;;;;;;;;;;;;;;;;;;;;;;;;34236:49;;;34269:7;:16;34277:7;34269:16;;;;;;;;;;;;;;;;34262:23;;;;34236:49;34307:37;34327:7;:16;34335:7;34327:16;;;;;;;;;;;;;;;;34307:19;:37::i;:::-;34300:44;;34146:210;;;;:::o;13227:103::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13292:30:::1;13319:1;13292:18;:30::i;:::-;13227:103::o:0;12576:87::-;12622:7;12649:6;;;;;;;;;;;12642:13;;12576:87;:::o;33821:95::-;33860:13;33897:7;33890:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33821:95;:::o;32012:41::-;;;;;;;;;;;;;:::o;35490:281::-;35583:4;35604:129;35613:12;:10;:12::i;:::-;35627:7;35636:96;35675:15;35636:96;;;;;;;;;;;;;;;;;:11;:25;35648:12;:10;:12::i;:::-;35636:25;;;;;;;;;;;;;;;:34;35662:7;35636:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;35604:8;:129::i;:::-;35755:4;35748:11;;35490:281;;;;:::o;34368:179::-;34446:4;34467:42;34477:12;:10;:12::i;:::-;34491:9;34502:6;34467:9;:42::i;:::-;34531:4;34524:11;;34368:179;;;;:::o;35913:145::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36038:8:::1;36008:18;:27;36027:7;36008:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;35913:145:::0;;:::o;35783:118::-;35841:4;35869:11;:20;35881:7;35869:20;;;;;;;;;;;;;;;;;;;;;;;;;35862:27;;35783:118;;;:::o;34559:151::-;34640:7;34671:11;:18;34683:5;34671:18;;;;;;;;;;;;;;;:27;34690:7;34671:27;;;;;;;;;;;;;;;;34664:34;;34559:151;;;;:::o;42625:106::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42712:7:::1;42698:11;;:21;;;;;;;;;;;;;;;;;;42625:106:::0;:::o;37359:475::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37455:42:::1;37444:53;;:7;:53;;;;37436:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;37560:11;:20;37572:7;37560:20;;;;;;;;;;;;;;;;;;;;;;;;;37559:21;37551:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;37649:1;37630:7;:16;37638:7;37630:16;;;;;;;;;;;;;;;;:20;37627:116;;;37690:37;37710:7;:16;37718:7;37710:16;;;;;;;;;;;;;;;;37690:19;:37::i;:::-;37671:7;:16;37679:7;37671:16;;;;;;;;;;;;;;;:56;;;;37627:116;37780:4;37757:11;:20;37769:7;37757:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;37799:9;37814:7;37799:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37359:475:::0;:::o;13485:201::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13594:1:::1;13574:22;;:8;:22;;;;13566:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13650:28;13669:8;13650:18;:28::i;:::-;13485:201:::0;:::o;42445:168::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42503:26:::1;42532:21;42503:50;;42568:33;42582:18;42568:13;:33::i;:::-;42488:125;42445:168::o:0;48918:118::-;48964:15;49003:21;48996:28;;48918:118;:::o;37846:522::-;12807:12;:10;:12::i;:::-;12796:23;;:7;:5;:7::i;:::-;:23;;;12788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37931:11:::1;:20;37943:7;37931:20;;;;;;;;;;;;;;;;;;;;;;;;;37923:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;38003:9;37998:359;38022:9;:16;;;;38018:1;:20;37998:359;;;38084:7;38068:23;;:9;38078:1;38068:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;38064:278;;;38131:9;38160:1;38141:9;:16;;;;:20;;;;:::i;:::-;38131:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38116:9;38126:1;38116:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38204:1;38185:7;:16;38193:7;38185:16;;;;;;;;;;;;;;;:20;;;;38251:5;38228:11;:20;38240:7;38228:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38279:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;38317:5;;38064:278;38040:3;;;;;:::i;:::-;;;;37998:359;;;;37846:522:::0;:::o;11300:98::-;11353:7;11380:10;11373:17;;11300:98;:::o;38912:357::-;39026:1;39009:19;;:5;:19;;;;39001:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39111:1;39092:21;;:7;:21;;;;39084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39199:6;39169:11;:18;39181:5;39169:18;;;;;;;;;;;;;;;:27;39188:7;39169:27;;;;;;;;;;;;;;;:36;;;;39241:7;39225:32;;39234:5;39225:32;;;39250:6;39225:32;;;;;;:::i;:::-;;;;;;;;38912:357;;;:::o;39281:1964::-;39400:1;39382:20;;:6;:20;;;;39374:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39488:1;39467:23;;:9;:23;;;;39459:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;39562:1;39553:6;:10;39545:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;39639:7;:5;:7::i;:::-;39629:17;;:6;:17;;;;:41;;;;;39663:7;:5;:7::i;:::-;39650:20;;:9;:20;;;;39629:41;39626:138;;;39707:12;;39697:6;:22;;39689:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;39626:138;40047:28;40078:24;40096:4;40078:9;:24::i;:::-;40047:55;;40146:12;;40122:20;:36;40119:124;;40215:12;;40192:35;;40119:124;40259:24;40310:29;;40286:20;:53;;40259:80;;40359:6;;;;;;;;;;;40358:7;:22;;;;;40369:11;;;;;;;;;;;40358:22;:45;;;;;40384:19;40358:45;:72;;;;;40417:13;40407:23;;:6;:23;;;;40358:72;40354:436;;;40541:38;40558:20;40541:16;:38::i;:::-;40600:26;40629:21;40600:50;;40693:1;40672:18;:22;40669:106;;;40719:36;40733:21;40719:13;:36::i;:::-;40669:106;40432:358;40354:436;40871:12;40886:4;40871:19;;40998:18;:26;41017:6;40998:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;41028:18;:29;41047:9;41028:29;;;;;;;;;;;;;;;;;;;;;;;;;40998:59;40995:113;;;41087:5;41077:15;;40995:113;41186:47;41201:6;41208:9;41218:6;41225:7;41186:14;:47::i;:::-;39359:1886;;;39281:1964;;;:::o;5839:240::-;5959:7;6017:1;6012;:6;;6020:12;6004:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6059:1;6055;:5;6048:12;;5839:240;;;;;:::o;47904:175::-;47945:7;47970:15;47987;48006:19;:17;:19::i;:::-;47969:56;;;;48047:20;48059:7;48047;:11;;:20;;;;:::i;:::-;48040:27;;;;47904:175;:::o;4697:98::-;4755:7;4786:1;4782;:5;;;;:::i;:::-;4775:12;;4697:98;;;;:::o;3560:::-;3618:7;3649:1;3645;:5;;;;:::i;:::-;3638:12;;3560:98;;;;:::o;46662:481::-;46721:7;46730;46739;46748;46757;46766;46791:23;46816:12;46830:13;46847:39;46859:7;46868;;46877:8;;46847:11;:39::i;:::-;46790:96;;;;;;46901:19;46924:10;:8;:10::i;:::-;46901:33;;46950:15;46967:23;46992:12;47008:39;47020:7;47029:4;47035:11;47008;:39::i;:::-;46949:98;;;;;;47070:7;47079:15;47096:4;47102:15;47119:4;47125:5;47062:69;;;;;;;;;;;;;;;;;;;46662:481;;;;;;;:::o;3941:98::-;3999:7;4030:1;4026;:5;;;;:::i;:::-;4019:12;;3941:98;;;;:::o;41257:656::-;32684:4;32675:6;;:13;;;;;;;;;;;;;;;;;;41402:21:::1;41440:1;41426:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41402:40;;41475:4;41457;41462:1;41457:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;41505:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41495:4;41500:1;41495:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;41544:62;41561:4;41576:15;41594:11;41544:8;:62::i;:::-;41653:15;:66;;;41738:11;41768:1;41816:4;41847;41871:15;41653:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41323:590;32728:5:::0;32719:6;;:14;;;;;;;;;;;;;;;;;;41257:656;:::o;13846:191::-;13920:16;13939:6;;;;;;;;;;;13920:25;;13965:8;13956:6;;:17;;;;;;;;;;;;;;;;;;14020:8;13989:40;;14010:8;13989:40;;;;;;;;;;;;13909:128;13846:191;:::o;41925:178::-;41987:18;;;;;;;;;;;:27;;:42;42015:13;42026:1;42015:6;:10;;:13;;;;:::i;:::-;41987:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42044:23;;;;;;;;;;;:32;;:47;42077:13;42088:1;42077:6;:10;;:13;;;;:::i;:::-;42044:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41925:178;:::o;42743:883::-;42859:7;42855:44;;42885:14;:12;:14::i;:::-;42855:44;42920:11;:19;42932:6;42920:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;42944:11;:22;42956:9;42944:22;;;;;;;;;;;;;;;;;;;;;;;;;42943:23;42920:46;42916:637;;;42987:48;43009:6;43017:9;43028:6;42987:21;:48::i;:::-;42916:637;;;43062:11;:19;43074:6;43062:19;;;;;;;;;;;;;;;;;;;;;;;;;43061:20;:46;;;;;43085:11;:22;43097:9;43085:22;;;;;;;;;;;;;;;;;;;;;;;;;43061:46;43057:496;;;43128:46;43148:6;43156:9;43167:6;43128:19;:46::i;:::-;43057:496;;;43201:11;:19;43213:6;43201:19;;;;;;;;;;;;;;;;;;;;;;;;;43200:20;:47;;;;;43225:11;:22;43237:9;43225:22;;;;;;;;;;;;;;;;;;;;;;;;;43224:23;43200:47;43196:357;;;43268:44;43286:6;43294:9;43305:6;43268:17;:44::i;:::-;43196:357;;;43338:11;:19;43350:6;43338:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;43361:11;:22;43373:9;43361:22;;;;;;;;;;;;;;;;;;;;;;;;;43338:45;43334:219;;;43404:48;43426:6;43434:9;43445:6;43404:21;:48::i;:::-;43334:219;;;43493:44;43511:6;43519:9;43530:6;43493:17;:44::i;:::-;43334:219;43196:357;43057:496;42916:637;43573:7;43569:45;;43599:15;:13;:15::i;:::-;43569:45;42743:883;;;;:::o;48091:595::-;48141:7;48150;48174:15;48192:7;;48174:25;;48214:15;48232:7;;48214:25;;48259:9;48254:305;48278:9;:16;;;;48274:1;:20;48254:305;;;48348:7;48324;:21;48332:9;48342:1;48332:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48324:21;;;;;;;;;;;;;;;;:31;:66;;;;48383:7;48359;:21;48367:9;48377:1;48367:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48359:21;;;;;;;;;;;;;;;;:31;48324:66;48320:97;;;48400:7;;48409;;48392:25;;;;;;;;;48320:97;48446:34;48458:7;:21;48466:9;48476:1;48466:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48458:21;;;;;;;;;;;;;;;;48446:7;:11;;:34;;;;:::i;:::-;48436:44;;48509:34;48521:7;:21;48529:9;48539:1;48529:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48521:21;;;;;;;;;;;;;;;;48509:7;:11;;:34;;;;:::i;:::-;48499:44;;48296:3;;;;;:::i;:::-;;;;48254:305;;;;48587:20;48599:7;;48587;;:11;;:20;;;;:::i;:::-;48577:7;:30;48573:61;;;48617:7;;48626;;48609:25;;;;;;;;48573:61;48657:7;48666;48649:25;;;;;;48091:595;;;:::o;47155:371::-;47248:7;47257;47266;47290:12;47305:28;47329:3;47305:19;47317:6;47305:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;47290:43;;47348:13;47364:29;47389:3;47364:20;47376:7;47364;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;47348:45;;47408:23;47434:28;47456:5;47434:17;47446:4;47434:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;47408:54;;47485:15;47502:4;47508:5;47477:37;;;;;;;;;47155:371;;;;;;;:::o;47538:354::-;47633:7;47642;47651;47675:15;47693:24;47705:11;47693:7;:11;;:24;;;;:::i;:::-;47675:42;;47732:12;47747:21;47756:11;47747:4;:8;;:21;;;;:::i;:::-;47732:36;;47783:23;47809:17;47821:4;47809:7;:11;;:17;;;;:::i;:::-;47783:43;;47849:7;47858:15;47875:4;47841:39;;;;;;;;;47538:354;;;;;;;:::o;38380:238::-;38441:1;38430:7;;:12;:29;;;;;38458:1;38446:8;;:13;38430:29;38427:41;;;38461:7;;38427:41;38502:7;;38484:15;:25;;;;38543:8;;38524:16;:27;;;;38578:1;38568:7;:11;;;;38605:1;38594:8;:12;;;;38380:238;:::o;44769:580::-;44876:15;44893:23;44918:12;44932:23;44957:12;44971:13;44988:19;44999:7;44988:10;:19::i;:::-;44875:132;;;;;;;;;;;;45040:28;45060:7;45040;:15;45048:6;45040:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45022:7;:15;45030:6;45022:15;;;;;;;;;;;;;;;:46;;;;45101:28;45121:7;45101;:15;45109:6;45101:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45083:7;:15;45091:6;45083:15;;;;;;;;;;;;;;;:46;;;;45165:39;45188:15;45165:7;:18;45173:9;45165:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45144:7;:18;45152:9;45144:18;;;;;;;;;;;;;;;:60;;;;45219:16;45229:5;45219:9;:16::i;:::-;45250:23;45262:4;45268;45250:11;:23::i;:::-;45310:9;45293:44;;45302:6;45293:44;;;45321:15;45293:44;;;;;;:::i;:::-;;;;;;;;44860:489;;;;;;44769:580;;;:::o;44165:592::-;44270:15;44287:23;44312:12;44326:23;44351:12;44365:13;44382:19;44393:7;44382:10;:19::i;:::-;44269:132;;;;;;;;;;;;44434:28;44454:7;44434;:15;44442:6;44434:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44416:7;:15;44424:6;44416:15;;;;;;;;;;;;;;;:46;;;;44498:39;44521:15;44498:7;:18;44506:9;44498:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44477:7;:18;44485:9;44477:18;;;;;;;;;;;;;;;:60;;;;44573:39;44596:15;44573:7;:18;44581:9;44573:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44552:7;:18;44560:9;44552:18;;;;;;;;;;;;;;;:60;;;;44627:16;44637:5;44627:9;:16::i;:::-;44658:23;44670:4;44676;44658:11;:23::i;:::-;44718:9;44701:44;;44710:6;44701:44;;;44729:15;44701:44;;;;;;:::i;:::-;;;;;;;;44254:503;;;;;;44165:592;;;:::o;43638:515::-;43741:15;43758:23;43783:12;43797:23;43822:12;43836:13;43853:19;43864:7;43853:10;:19::i;:::-;43740:132;;;;;;;;;;;;43905:28;43925:7;43905;:15;43913:6;43905:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43887:7;:15;43895:6;43887:15;;;;;;;;;;;;;;;:46;;;;43969:39;43992:15;43969:7;:18;43977:9;43969:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43948:7;:18;43956:9;43948:18;;;;;;;;;;;;;;;:60;;;;44023:16;44033:5;44023:9;:16::i;:::-;44054:23;44066:4;44072;44054:11;:23::i;:::-;44114:9;44097:44;;44106:6;44097:44;;;44125:15;44097:44;;;;;;:::i;:::-;;;;;;;;43725:428;;;;;;43638:515;;;:::o;45361:655::-;45468:15;45485:23;45510:12;45524:23;45549:12;45563:13;45580:19;45591:7;45580:10;:19::i;:::-;45467:132;;;;;;;;;;;;45632:28;45652:7;45632;:15;45640:6;45632:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45614:7;:15;45622:6;45614:15;;;;;;;;;;;;;;;:46;;;;45693:28;45713:7;45693;:15;45701:6;45693:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45675:7;:15;45683:6;45675:15;;;;;;;;;;;;;;;:46;;;;45757:39;45780:15;45757:7;:18;45765:9;45757:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45736:7;:18;45744:9;45736:18;;;;;;;;;;;;;;;:60;;;;45832:39;45855:15;45832:7;:18;45840:9;45832:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45811:7;:18;45819:9;45811:18;;;;;;;;;;;;;;;:60;;;;45886:16;45896:5;45886:9;:16::i;:::-;45917:23;45929:4;45935;45917:11;:23::i;:::-;45977:9;45960:44;;45969:6;45960:44;;;45988:15;45960:44;;;;;;:::i;:::-;;;;;;;;45452:564;;;;;;45361:655;;;:::o;38630:127::-;38688:15;;38678:7;:25;;;;38729:16;;38718:8;:27;;;;38630:127::o;4298:98::-;4356:7;4387:1;4383;:5;;;;:::i;:::-;4376:12;;4298:98;;;;:::o;46028:349::-;46085:19;46108:10;:8;:10::i;:::-;46085:33;;46133:13;46149:22;46159:11;46149:5;:9;;:22;;;;:::i;:::-;46133:38;;46211:33;46238:5;46211:7;:22;46227:4;46211:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46186:7;:22;46202:4;46186:22;;;;;;;;;;;;;;;:58;;;;46262:11;:26;46282:4;46262:26;;;;;;;;;;;;;;;;;;;;;;;;;46259:106;;;46332:33;46359:5;46332:7;:22;46348:4;46332:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46307:7;:22;46323:4;46307:22;;;;;;;;;;;;;;;:58;;;;46259:106;46070:307;;46028:349;:::o;46389:159::-;46471:17;46483:4;46471:7;;:11;;:17;;;;:::i;:::-;46461:7;:27;;;;46516:20;46531:4;46516:10;;:14;;:20;;;;:::i;:::-;46503:10;:33;;;;46389:159;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;601:139;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:119;;;860:79;;:::i;:::-;822:119;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;746:329;;;;:::o;1081:351::-;1151:6;1200:2;1188:9;1179:7;1175:23;1171:32;1168:119;;;1206:79;;:::i;:::-;1168:119;1326:1;1351:64;1407:7;1398:6;1387:9;1383:22;1351:64;:::i;:::-;1341:74;;1297:128;1081:351;;;;:::o;1438:345::-;1505:6;1554:2;1542:9;1533:7;1529:23;1525:32;1522:119;;;1560:79;;:::i;:::-;1522:119;1680:1;1705:61;1758:7;1749:6;1738:9;1734:22;1705:61;:::i;:::-;1695:71;;1651:125;1438:345;;;;:::o;1789:474::-;1857:6;1865;1914:2;1902:9;1893:7;1889:23;1885:32;1882:119;;;1920:79;;:::i;:::-;1882:119;2040:1;2065:53;2110:7;2101:6;2090:9;2086:22;2065:53;:::i;:::-;2055:63;;2011:117;2167:2;2193:53;2238:7;2229:6;2218:9;2214:22;2193:53;:::i;:::-;2183:63;;2138:118;1789:474;;;;;:::o;2269:619::-;2346:6;2354;2362;2411:2;2399:9;2390:7;2386:23;2382:32;2379:119;;;2417:79;;:::i;:::-;2379:119;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:53;2735:7;2726:6;2715:9;2711:22;2690:53;:::i;:::-;2680:63;;2635:118;2792:2;2818:53;2863:7;2854:6;2843:9;2839:22;2818:53;:::i;:::-;2808:63;;2763:118;2269:619;;;;;:::o;2894:468::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:50;3337:7;3328:6;3317:9;3313:22;3295:50;:::i;:::-;3285:60;;3240:115;2894:468;;;;;:::o;3368:474::-;3436:6;3444;3493:2;3481:9;3472:7;3468:23;3464:32;3461:119;;;3499:79;;:::i;:::-;3461:119;3619:1;3644:53;3689:7;3680:6;3669:9;3665:22;3644:53;:::i;:::-;3634:63;;3590:117;3746:2;3772:53;3817:7;3808:6;3797:9;3793:22;3772:53;:::i;:::-;3762:63;;3717:118;3368:474;;;;;:::o;3848:323::-;3904:6;3953:2;3941:9;3932:7;3928:23;3924:32;3921:119;;;3959:79;;:::i;:::-;3921:119;4079:1;4104:50;4146:7;4137:6;4126:9;4122:22;4104:50;:::i;:::-;4094:60;;4050:114;3848:323;;;;:::o;4177:329::-;4236:6;4285:2;4273:9;4264:7;4260:23;4256:32;4253:119;;;4291:79;;:::i;:::-;4253:119;4411:1;4436:53;4481:7;4472:6;4461:9;4457:22;4436:53;:::i;:::-;4426:63;;4382:117;4177:329;;;;:::o;4512:468::-;4577:6;4585;4634:2;4622:9;4613:7;4609:23;4605:32;4602:119;;;4640:79;;:::i;:::-;4602:119;4760:1;4785:53;4830:7;4821:6;4810:9;4806:22;4785:53;:::i;:::-;4775:63;;4731:117;4887:2;4913:50;4955:7;4946:6;4935:9;4931:22;4913:50;:::i;:::-;4903:60;;4858:115;4512:468;;;;;:::o;4986:179::-;5055:10;5076:46;5118:3;5110:6;5076:46;:::i;:::-;5154:4;5149:3;5145:14;5131:28;;4986:179;;;;:::o;5171:142::-;5274:32;5300:5;5274:32;:::i;:::-;5269:3;5262:45;5171:142;;:::o;5319:108::-;5396:24;5414:5;5396:24;:::i;:::-;5391:3;5384:37;5319:108;;:::o;5433:118::-;5520:24;5538:5;5520:24;:::i;:::-;5515:3;5508:37;5433:118;;:::o;5587:732::-;5706:3;5735:54;5783:5;5735:54;:::i;:::-;5805:86;5884:6;5879:3;5805:86;:::i;:::-;5798:93;;5915:56;5965:5;5915:56;:::i;:::-;5994:7;6025:1;6010:284;6035:6;6032:1;6029:13;6010:284;;;6111:6;6105:13;6138:63;6197:3;6182:13;6138:63;:::i;:::-;6131:70;;6224:60;6277:6;6224:60;:::i;:::-;6214:70;;6070:224;6057:1;6054;6050:9;6045:14;;6010:284;;;6014:14;6310:3;6303:10;;5711:608;;;5587:732;;;;:::o;6325:109::-;6406:21;6421:5;6406:21;:::i;:::-;6401:3;6394:34;6325:109;;:::o;6440:185::-;6554:64;6612:5;6554:64;:::i;:::-;6549:3;6542:77;6440:185;;:::o;6631:147::-;6726:45;6765:5;6726:45;:::i;:::-;6721:3;6714:58;6631:147;;:::o;6784:364::-;6872:3;6900:39;6933:5;6900:39;:::i;:::-;6955:71;7019:6;7014:3;6955:71;:::i;:::-;6948:78;;7035:52;7080:6;7075:3;7068:4;7061:5;7057:16;7035:52;:::i;:::-;7112:29;7134:6;7112:29;:::i;:::-;7107:3;7103:39;7096:46;;6876:272;6784:364;;;;:::o;7154:366::-;7296:3;7317:67;7381:2;7376:3;7317:67;:::i;:::-;7310:74;;7393:93;7482:3;7393:93;:::i;:::-;7511:2;7506:3;7502:12;7495:19;;7154:366;;;:::o;7526:::-;7668:3;7689:67;7753:2;7748:3;7689:67;:::i;:::-;7682:74;;7765:93;7854:3;7765:93;:::i;:::-;7883:2;7878:3;7874:12;7867:19;;7526:366;;;:::o;7898:::-;8040:3;8061:67;8125:2;8120:3;8061:67;:::i;:::-;8054:74;;8137:93;8226:3;8137:93;:::i;:::-;8255:2;8250:3;8246:12;8239:19;;7898:366;;;:::o;8270:::-;8412:3;8433:67;8497:2;8492:3;8433:67;:::i;:::-;8426:74;;8509:93;8598:3;8509:93;:::i;:::-;8627:2;8622:3;8618:12;8611:19;;8270:366;;;:::o;8642:::-;8784:3;8805:67;8869:2;8864:3;8805:67;:::i;:::-;8798:74;;8881:93;8970:3;8881:93;:::i;:::-;8999:2;8994:3;8990:12;8983:19;;8642:366;;;:::o;9014:::-;9156:3;9177:67;9241:2;9236:3;9177:67;:::i;:::-;9170:74;;9253:93;9342:3;9253:93;:::i;:::-;9371:2;9366:3;9362:12;9355:19;;9014:366;;;:::o;9386:::-;9528:3;9549:67;9613:2;9608:3;9549:67;:::i;:::-;9542:74;;9625:93;9714:3;9625:93;:::i;:::-;9743:2;9738:3;9734:12;9727:19;;9386:366;;;:::o;9758:::-;9900:3;9921:67;9985:2;9980:3;9921:67;:::i;:::-;9914:74;;9997:93;10086:3;9997:93;:::i;:::-;10115:2;10110:3;10106:12;10099:19;;9758:366;;;:::o;10130:::-;10272:3;10293:67;10357:2;10352:3;10293:67;:::i;:::-;10286:74;;10369:93;10458:3;10369:93;:::i;:::-;10487:2;10482:3;10478:12;10471:19;;10130:366;;;:::o;10502:::-;10644:3;10665:67;10729:2;10724:3;10665:67;:::i;:::-;10658:74;;10741:93;10830:3;10741:93;:::i;:::-;10859:2;10854:3;10850:12;10843:19;;10502:366;;;:::o;10874:::-;11016:3;11037:67;11101:2;11096:3;11037:67;:::i;:::-;11030:74;;11113:93;11202:3;11113:93;:::i;:::-;11231:2;11226:3;11222:12;11215:19;;10874:366;;;:::o;11246:::-;11388:3;11409:67;11473:2;11468:3;11409:67;:::i;:::-;11402:74;;11485:93;11574:3;11485:93;:::i;:::-;11603:2;11598:3;11594:12;11587:19;;11246:366;;;:::o;11618:::-;11760:3;11781:67;11845:2;11840:3;11781:67;:::i;:::-;11774:74;;11857:93;11946:3;11857:93;:::i;:::-;11975:2;11970:3;11966:12;11959:19;;11618:366;;;:::o;11990:::-;12132:3;12153:67;12217:2;12212:3;12153:67;:::i;:::-;12146:74;;12229:93;12318:3;12229:93;:::i;:::-;12347:2;12342:3;12338:12;12331:19;;11990:366;;;:::o;12362:::-;12504:3;12525:67;12589:2;12584:3;12525:67;:::i;:::-;12518:74;;12601:93;12690:3;12601:93;:::i;:::-;12719:2;12714:3;12710:12;12703:19;;12362:366;;;:::o;12734:::-;12876:3;12897:67;12961:2;12956:3;12897:67;:::i;:::-;12890:74;;12973:93;13062:3;12973:93;:::i;:::-;13091:2;13086:3;13082:12;13075:19;;12734:366;;;:::o;13106:118::-;13193:24;13211:5;13193:24;:::i;:::-;13188:3;13181:37;13106:118;;:::o;13230:112::-;13313:22;13329:5;13313:22;:::i;:::-;13308:3;13301:35;13230:112;;:::o;13348:222::-;13441:4;13479:2;13468:9;13464:18;13456:26;;13492:71;13560:1;13549:9;13545:17;13536:6;13492:71;:::i;:::-;13348:222;;;;:::o;13576:254::-;13685:4;13723:2;13712:9;13708:18;13700:26;;13736:87;13820:1;13809:9;13805:17;13796:6;13736:87;:::i;:::-;13576:254;;;;:::o;13836:210::-;13923:4;13961:2;13950:9;13946:18;13938:26;;13974:65;14036:1;14025:9;14021:17;14012:6;13974:65;:::i;:::-;13836:210;;;;:::o;14052:276::-;14172:4;14210:2;14199:9;14195:18;14187:26;;14223:98;14318:1;14307:9;14303:17;14294:6;14223:98;:::i;:::-;14052:276;;;;:::o;14334:313::-;14447:4;14485:2;14474:9;14470:18;14462:26;;14534:9;14528:4;14524:20;14520:1;14509:9;14505:17;14498:47;14562:78;14635:4;14626:6;14562:78;:::i;:::-;14554:86;;14334:313;;;;:::o;14653:419::-;14819:4;14857:2;14846:9;14842:18;14834:26;;14906:9;14900:4;14896:20;14892:1;14881:9;14877:17;14870:47;14934:131;15060:4;14934:131;:::i;:::-;14926:139;;14653:419;;;:::o;15078:::-;15244:4;15282:2;15271:9;15267:18;15259:26;;15331:9;15325:4;15321:20;15317:1;15306:9;15302:17;15295:47;15359:131;15485:4;15359:131;:::i;:::-;15351:139;;15078:419;;;:::o;15503:::-;15669:4;15707:2;15696:9;15692:18;15684:26;;15756:9;15750:4;15746:20;15742:1;15731:9;15727:17;15720:47;15784:131;15910:4;15784:131;:::i;:::-;15776:139;;15503:419;;;:::o;15928:::-;16094:4;16132:2;16121:9;16117:18;16109:26;;16181:9;16175:4;16171:20;16167:1;16156:9;16152:17;16145:47;16209:131;16335:4;16209:131;:::i;:::-;16201:139;;15928:419;;;:::o;16353:::-;16519:4;16557:2;16546:9;16542:18;16534:26;;16606:9;16600:4;16596:20;16592:1;16581:9;16577:17;16570:47;16634:131;16760:4;16634:131;:::i;:::-;16626:139;;16353:419;;;:::o;16778:::-;16944:4;16982:2;16971:9;16967:18;16959:26;;17031:9;17025:4;17021:20;17017:1;17006:9;17002:17;16995:47;17059:131;17185:4;17059:131;:::i;:::-;17051:139;;16778:419;;;:::o;17203:::-;17369:4;17407:2;17396:9;17392:18;17384:26;;17456:9;17450:4;17446:20;17442:1;17431:9;17427:17;17420:47;17484:131;17610:4;17484:131;:::i;:::-;17476:139;;17203:419;;;:::o;17628:::-;17794:4;17832:2;17821:9;17817:18;17809:26;;17881:9;17875:4;17871:20;17867:1;17856:9;17852:17;17845:47;17909:131;18035:4;17909:131;:::i;:::-;17901:139;;17628:419;;;:::o;18053:::-;18219:4;18257:2;18246:9;18242:18;18234:26;;18306:9;18300:4;18296:20;18292:1;18281:9;18277:17;18270:47;18334:131;18460:4;18334:131;:::i;:::-;18326:139;;18053:419;;;:::o;18478:::-;18644:4;18682:2;18671:9;18667:18;18659:26;;18731:9;18725:4;18721:20;18717:1;18706:9;18702:17;18695:47;18759:131;18885:4;18759:131;:::i;:::-;18751:139;;18478:419;;;:::o;18903:::-;19069:4;19107:2;19096:9;19092:18;19084:26;;19156:9;19150:4;19146:20;19142:1;19131:9;19127:17;19120:47;19184:131;19310:4;19184:131;:::i;:::-;19176:139;;18903:419;;;:::o;19328:::-;19494:4;19532:2;19521:9;19517:18;19509:26;;19581:9;19575:4;19571:20;19567:1;19556:9;19552:17;19545:47;19609:131;19735:4;19609:131;:::i;:::-;19601:139;;19328:419;;;:::o;19753:::-;19919:4;19957:2;19946:9;19942:18;19934:26;;20006:9;20000:4;19996:20;19992:1;19981:9;19977:17;19970:47;20034:131;20160:4;20034:131;:::i;:::-;20026:139;;19753:419;;;:::o;20178:::-;20344:4;20382:2;20371:9;20367:18;20359:26;;20431:9;20425:4;20421:20;20417:1;20406:9;20402:17;20395:47;20459:131;20585:4;20459:131;:::i;:::-;20451:139;;20178:419;;;:::o;20603:::-;20769:4;20807:2;20796:9;20792:18;20784:26;;20856:9;20850:4;20846:20;20842:1;20831:9;20827:17;20820:47;20884:131;21010:4;20884:131;:::i;:::-;20876:139;;20603:419;;;:::o;21028:::-;21194:4;21232:2;21221:9;21217:18;21209:26;;21281:9;21275:4;21271:20;21267:1;21256:9;21252:17;21245:47;21309:131;21435:4;21309:131;:::i;:::-;21301:139;;21028:419;;;:::o;21453:222::-;21546:4;21584:2;21573:9;21569:18;21561:26;;21597:71;21665:1;21654:9;21650:17;21641:6;21597:71;:::i;:::-;21453:222;;;;:::o;21681:831::-;21944:4;21982:3;21971:9;21967:19;21959:27;;21996:71;22064:1;22053:9;22049:17;22040:6;21996:71;:::i;:::-;22077:80;22153:2;22142:9;22138:18;22129:6;22077:80;:::i;:::-;22204:9;22198:4;22194:20;22189:2;22178:9;22174:18;22167:48;22232:108;22335:4;22326:6;22232:108;:::i;:::-;22224:116;;22350:72;22418:2;22407:9;22403:18;22394:6;22350:72;:::i;:::-;22432:73;22500:3;22489:9;22485:19;22476:6;22432:73;:::i;:::-;21681:831;;;;;;;;:::o;22518:214::-;22607:4;22645:2;22634:9;22630:18;22622:26;;22658:67;22722:1;22711:9;22707:17;22698:6;22658:67;:::i;:::-;22518:214;;;;:::o;22819:132::-;22886:4;22909:3;22901:11;;22939:4;22934:3;22930:14;22922:22;;22819:132;;;:::o;22957:114::-;23024:6;23058:5;23052:12;23042:22;;22957:114;;;:::o;23077:99::-;23129:6;23163:5;23157:12;23147:22;;23077:99;;;:::o;23182:113::-;23252:4;23284;23279:3;23275:14;23267:22;;23182:113;;;:::o;23301:184::-;23400:11;23434:6;23429:3;23422:19;23474:4;23469:3;23465:14;23450:29;;23301:184;;;;:::o;23491:169::-;23575:11;23609:6;23604:3;23597:19;23649:4;23644:3;23640:14;23625:29;;23491:169;;;;:::o;23666:305::-;23706:3;23725:20;23743:1;23725:20;:::i;:::-;23720:25;;23759:20;23777:1;23759:20;:::i;:::-;23754:25;;23913:1;23845:66;23841:74;23838:1;23835:81;23832:107;;;23919:18;;:::i;:::-;23832:107;23963:1;23960;23956:9;23949:16;;23666:305;;;;:::o;23977:185::-;24017:1;24034:20;24052:1;24034:20;:::i;:::-;24029:25;;24068:20;24086:1;24068:20;:::i;:::-;24063:25;;24107:1;24097:35;;24112:18;;:::i;:::-;24097:35;24154:1;24151;24147:9;24142:14;;23977:185;;;;:::o;24168:348::-;24208:7;24231:20;24249:1;24231:20;:::i;:::-;24226:25;;24265:20;24283:1;24265:20;:::i;:::-;24260:25;;24453:1;24385:66;24381:74;24378:1;24375:81;24370:1;24363:9;24356:17;24352:105;24349:131;;;24460:18;;:::i;:::-;24349:131;24508:1;24505;24501:9;24490:20;;24168:348;;;;:::o;24522:191::-;24562:4;24582:20;24600:1;24582:20;:::i;:::-;24577:25;;24616:20;24634:1;24616:20;:::i;:::-;24611:25;;24655:1;24652;24649:8;24646:34;;;24660:18;;:::i;:::-;24646:34;24705:1;24702;24698:9;24690:17;;24522:191;;;;:::o;24719:96::-;24756:7;24785:24;24803:5;24785:24;:::i;:::-;24774:35;;24719:96;;;:::o;24821:104::-;24866:7;24895:24;24913:5;24895:24;:::i;:::-;24884:35;;24821:104;;;:::o;24931:90::-;24965:7;25008:5;25001:13;24994:21;24983:32;;24931:90;;;:::o;25027:126::-;25064:7;25104:42;25097:5;25093:54;25082:65;;25027:126;;;:::o;25159:77::-;25196:7;25225:5;25214:16;;25159:77;;;:::o;25242:86::-;25277:7;25317:4;25310:5;25306:16;25295:27;;25242:86;;;:::o;25334:153::-;25411:9;25444:37;25475:5;25444:37;:::i;:::-;25431:50;;25334:153;;;:::o;25493:121::-;25551:9;25584:24;25602:5;25584:24;:::i;:::-;25571:37;;25493:121;;;:::o;25620:126::-;25670:9;25703:37;25734:5;25703:37;:::i;:::-;25690:50;;25620:126;;;:::o;25752:113::-;25802:9;25835:24;25853:5;25835:24;:::i;:::-;25822:37;;25752:113;;;:::o;25871:307::-;25939:1;25949:113;25963:6;25960:1;25957:13;25949:113;;;26048:1;26043:3;26039:11;26033:18;26029:1;26024:3;26020:11;26013:39;25985:2;25982:1;25978:10;25973:15;;25949:113;;;26080:6;26077:1;26074:13;26071:101;;;26160:1;26151:6;26146:3;26142:16;26135:27;26071:101;25920:258;25871:307;;;:::o;26184:320::-;26228:6;26265:1;26259:4;26255:12;26245:22;;26312:1;26306:4;26302:12;26333:18;26323:81;;26389:4;26381:6;26377:17;26367:27;;26323:81;26451:2;26443:6;26440:14;26420:18;26417:38;26414:84;;;26470:18;;:::i;:::-;26414:84;26235:269;26184:320;;;:::o;26510:233::-;26549:3;26572:24;26590:5;26572:24;:::i;:::-;26563:33;;26618:66;26611:5;26608:77;26605:103;;;26688:18;;:::i;:::-;26605:103;26735:1;26728:5;26724:13;26717:20;;26510:233;;;:::o;26749:180::-;26797:77;26794:1;26787:88;26894:4;26891:1;26884:15;26918:4;26915:1;26908:15;26935:180;26983:77;26980:1;26973:88;27080:4;27077:1;27070:15;27104:4;27101:1;27094:15;27121:180;27169:77;27166:1;27159:88;27266:4;27263:1;27256:15;27290:4;27287:1;27280:15;27307:180;27355:77;27352:1;27345:88;27452:4;27449:1;27442:15;27476:4;27473:1;27466:15;27493:180;27541:77;27538:1;27531:88;27638:4;27635:1;27628:15;27662:4;27659:1;27652:15;27679:180;27727:77;27724:1;27717:88;27824:4;27821:1;27814:15;27848:4;27845:1;27838:15;27988:117;28097:1;28094;28087:12;28111:102;28152:6;28203:2;28199:7;28194:2;28187:5;28183:14;28179:28;28169:38;;28111:102;;;:::o;28219:222::-;28359:34;28355:1;28347:6;28343:14;28336:58;28428:5;28423:2;28415:6;28411:15;28404:30;28219:222;:::o;28447:229::-;28587:34;28583:1;28575:6;28571:14;28564:58;28656:12;28651:2;28643:6;28639:15;28632:37;28447:229;:::o;28682:225::-;28822:34;28818:1;28810:6;28806:14;28799:58;28891:8;28886:2;28878:6;28874:15;28867:33;28682:225;:::o;28913:221::-;29053:34;29049:1;29041:6;29037:14;29030:58;29122:4;29117:2;29109:6;29105:15;29098:29;28913:221;:::o;29140:177::-;29280:29;29276:1;29268:6;29264:14;29257:53;29140:177;:::o;29323:::-;29463:29;29459:1;29451:6;29447:14;29440:53;29323:177;:::o;29506:239::-;29646:34;29642:1;29634:6;29630:14;29623:58;29715:22;29710:2;29702:6;29698:15;29691:47;29506:239;:::o;29751:181::-;29891:33;29887:1;29879:6;29875:14;29868:57;29751:181;:::o;29938:227::-;30078:34;30074:1;30066:6;30062:14;30055:58;30147:10;30142:2;30134:6;30130:15;30123:35;29938:227;:::o;30171:182::-;30311:34;30307:1;30299:6;30295:14;30288:58;30171:182;:::o;30359:228::-;30499:34;30495:1;30487:6;30483:14;30476:58;30568:11;30563:2;30555:6;30551:15;30544:36;30359:228;:::o;30593:224::-;30733:34;30729:1;30721:6;30717:14;30710:58;30802:7;30797:2;30789:6;30785:15;30778:32;30593:224;:::o;30823:223::-;30963:34;30959:1;30951:6;30947:14;30940:58;31032:6;31027:2;31019:6;31015:15;31008:31;30823:223;:::o;31052:176::-;31192:28;31188:1;31180:6;31176:14;31169:52;31052:176;:::o;31234:221::-;31374:34;31370:1;31362:6;31358:14;31351:58;31443:4;31438:2;31430:6;31426:15;31419:29;31234:221;:::o;31461:231::-;31601:34;31597:1;31589:6;31585:14;31578:58;31670:14;31665:2;31657:6;31653:15;31646:39;31461:231;:::o;31698:122::-;31771:24;31789:5;31771:24;:::i;:::-;31764:5;31761:35;31751:63;;31810:1;31807;31800:12;31751:63;31698:122;:::o;31826:138::-;31907:32;31933:5;31907:32;:::i;:::-;31900:5;31897:43;31887:71;;31954:1;31951;31944:12;31887:71;31826:138;:::o;31970:116::-;32040:21;32055:5;32040:21;:::i;:::-;32033:5;32030:32;32020:60;;32076:1;32073;32066:12;32020:60;31970:116;:::o;32092:122::-;32165:24;32183:5;32165:24;:::i;:::-;32158:5;32155:35;32145:63;;32204:1;32201;32194:12;32145:63;32092:122;:::o

Swarm Source

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