ETH Price: $3,341.81 (+0.51%)

Token

Lady Lions (LLT)
 

Overview

Max Total Supply

473 LLT

Holders

122

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
bratistuta.eth
Balance
1 LLT
0xc309f479C5001DeAb315252A0BaFB3a0134A0fc3
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:
LADYLIONS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2021-10-07
*/

// SPDX-License-Identifier: MIT

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 no longer needed starting with Solidity 0.8. 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;
        }
    }
}

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

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

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private 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);
            }
        }
    }
}

pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

pragma solidity ^0.8.0;

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

pragma solidity ^0.8.0;

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

pragma solidity ^0.8.0;

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

pragma solidity ^0.8.0;

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

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

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

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

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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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.
     */

    /**
     * @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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity ^0.8.0;

/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;


    string public _baseURI;
    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory base = baseURI();
        return bytes(base).length > 0 ? string(abi.encodePacked(base, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function baseURI() internal view virtual returns (string memory) {
        return _baseURI;
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

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

pragma solidity ^0.8.0;

/**
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

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

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

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

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}

pragma solidity ^0.8.0;

contract  LADYLIONS  is ERC721Enumerable, Ownable
{
    using SafeMath for uint256;


    uint public constant _TOTALSUPPLY =10000;
    uint public maxQuantity =20;
    uint256 public price = 0.05 ether;
    uint256 public preSaleprice = 0.04 ether;
    bool public isPaused = true;
    bool public isPreSalePaused=true;
    uint public preSaleSupply=2000;
    uint public reserve = 100;
    uint private tokenId=1;
       

    constructor(string memory baseURI) ERC721("Lady Lions", "LLT")  {
        setBaseURI(baseURI);
    }
    function setBaseURI(string memory baseURI) public onlyOwner {
        _baseURI = baseURI;
    }

    function setPrice(uint256 _newPrice) public onlyOwner() {
        price = _newPrice;
    }
    function setPreSalePrice(uint256 _newPrice) public onlyOwner() {
        preSaleprice = _newPrice;
    }
    function setMaxxQtPerTx(uint256 _quantity) public onlyOwner {
        maxQuantity=_quantity;
    }
     function setReserveTokens(uint256 _quantity) public onlyOwner {
        reserve=_quantity;
    }



    modifier isSaleOpen{
        require(totalSupply() < _TOTALSUPPLY, "Sale end");
        _;
    }
    function flipPauseStatus() public onlyOwner {
        isPaused = !isPaused;
    }
    function flipPreSalePauseStatus() public onlyOwner {
        isPreSalePaused = !isPreSalePaused;
    }
    function getPrice(uint256 _quantity) public view returns (uint256) {
       
           return _quantity*price ;
     }
    function getPreSalePrice(uint256 _quantity) public view returns (uint256) {
       
           return _quantity*preSaleprice ;
     }
     function reserveTokens(uint quantity) public onlyOwner {
        require(quantity <= reserve, "The quantity exceeds the reserve.");
        reserve -= quantity;
        for (uint i = 0; i < quantity; i++) {
            _safeMint(msg.sender,totalsupply());
            tokenId++;
        }
    }
  
    function preSalemint(uint chosenAmount) public payable isSaleOpen{
        require(isPreSalePaused == false, "Sale is not active at the moment");
        require(totalSupply()+chosenAmount<=_TOTALSUPPLY,"Quantity must be lesser then MaxSupply");
        require(chosenAmount > 0, "Number of tokens can not be less than or equal to 0");
        require(chosenAmount <= maxQuantity,"Chosen Amount exceeds MaxQuantity");
        require(preSaleSupply>0,"Pre Sale supply is zero");
        require(preSaleprice.mul(chosenAmount) == msg.value, "Sent ether value is incorrect");
        for (uint i = 0; i < chosenAmount; i++) {
            _safeMint(msg.sender, totalsupply());
            tokenId++;
            }
            preSaleSupply-=chosenAmount;
    }

    function mint(uint chosenAmount) public payable isSaleOpen{
        require(isPaused == false, "Sale is not active at the moment");
        require(totalSupply()+chosenAmount<=_TOTALSUPPLY-reserve,"Quantity must be lesser then MaxSupply");
        require(chosenAmount > 0, "Number of tokens can not be less than or equal to 0");
        require(chosenAmount <= maxQuantity,"Chosen Amount exceeds MaxQuantity");
        require(price.mul(chosenAmount) == msg.value, "Sent ether value is incorrect");
        for (uint i = 0; i < chosenAmount; i++) {
            _safeMint(msg.sender, totalsupply());
            tokenId++;
            }
    }
 
    function tokensOfOwner(address _owner) public view returns (uint256[] memory)
    {
        uint256 count = balanceOf(_owner);
        uint256[] memory result = new uint256[](count);
        for (uint256 index = 0; index < count; index++) {
            result[index] = tokenOfOwnerByIndex(_owner, index);
        }
        return result;
    }

    function withdraw() public onlyOwner {
        uint balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }
        function totalsupply() private view returns (uint)
    {
        return tokenId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_TOTALSUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPreSalePauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"getPreSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPreSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"preSalemint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"preSaleprice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"reserveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"setMaxxQtPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"setReserveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526014600c5566b1a2bc2ec50000600d55668e1bc9bf040000600e556001600f60006101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506107d0601055606460115560016012553480156200007257600080fd5b50604051620051be380380620051be83398181016040528101906200009891906200040c565b6040518060400160405280600a81526020017f4c616479204c696f6e73000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4c4c54000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200011c929190620002de565b50806001908051906020019062000135929190620002de565b50505060006200014a6200020160201b60201c565b905080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001fa816200020960201b60201c565b5062000664565b600033905090565b620002196200020160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200023f620002b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000298576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028f9062000484565b60405180910390fd5b8060069080519060200190620002b0929190620002de565b5050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620002ec906200054c565b90600052602060002090601f0160209004810192826200031057600085556200035c565b82601f106200032b57805160ff19168380011785556200035c565b828001600101855582156200035c579182015b828111156200035b5782518255916020019190600101906200033e565b5b5090506200036b91906200036f565b5090565b5b808211156200038a57600081600090555060010162000370565b5090565b6000620003a56200039f84620004cf565b620004a6565b905082815260208101848484011115620003c457620003c36200061b565b5b620003d184828562000516565b509392505050565b600082601f830112620003f157620003f062000616565b5b8151620004038482602086016200038e565b91505092915050565b60006020828403121562000425576200042462000625565b5b600082015167ffffffffffffffff81111562000446576200044562000620565b5b6200045484828501620003d9565b91505092915050565b60006200046c60208362000505565b915062000479826200063b565b602082019050919050565b600060208201905081810360008301526200049f816200045d565b9050919050565b6000620004b2620004c5565b9050620004c0828262000582565b919050565b6000604051905090565b600067ffffffffffffffff821115620004ed57620004ec620005e7565b5b620004f8826200062a565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200053657808201518184015260208101905062000519565b8381111562000546576000848401525b50505050565b600060028204905060018216806200056557607f821691505b602082108114156200057c576200057b620005b8565b5b50919050565b6200058d826200062a565b810181811067ffffffffffffffff82111715620005af57620005ae620005e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b614b4a80620006746000396000f3fe6080604052600436106102465760003560e01c80637d7eee4211610139578063b187bd26116100b6578063db4568e21161007a578063db4568e214610872578063e640cf7d1461089d578063e7572230146108c8578063e985e9c514610905578063f2fde38b14610942578063fa62884c1461096b57610246565b8063b187bd261461078d578063b88d4fde146107b8578063c87b56dd146107e1578063cd3293de1461081e578063d031370b1461084957610246565b80639d38fd21116100fd5780639d38fd21146106b75780639e21dabb146106e0578063a035b1fe1461071d578063a0712d6814610748578063a22cb4651461076457610246565b80637d7eee42146105d25780638462151c146105fb5780638da5cb5b1461063857806391b7f5ed1461066357806395d89b411461068c57610246565b80633e343865116101c75780636352211e1161018b5780636352211e146104ed57806367f8ccb81461052a5780636a44e1731461054157806370a082311461056a578063743976a0146105a757610246565b80633e3438651461041757806342842e0e146104335780634f6ccce71461045c578063558da2e31461049957806355f804b3146104c457610246565b806323b872dd1161020e57806323b872dd146103445780632e055bcc1461036d5780632e280e32146103985780632f745c59146103c35780633ccfd60b1461040057610246565b806301ffc9a71461024b57806306fdde0314610288578063081812fc146102b3578063095ea7b3146102f057806318160ddd14610319575b600080fd5b34801561025757600080fd5b50610272600480360381019061026d9190613500565b610982565b60405161027f9190613b60565b60405180910390f35b34801561029457600080fd5b5061029d6109fc565b6040516102aa9190613b7b565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d591906135a3565b610a8e565b6040516102e79190613ad7565b60405180910390f35b3480156102fc57600080fd5b50610317600480360381019061031291906134c0565b610b13565b005b34801561032557600080fd5b5061032e610c2b565b60405161033b9190613edd565b60405180910390f35b34801561035057600080fd5b5061036b600480360381019061036691906133aa565b610c38565b005b34801561037957600080fd5b50610382610c98565b60405161038f9190613edd565b60405180910390f35b3480156103a457600080fd5b506103ad610c9e565b6040516103ba9190613b60565b60405180910390f35b3480156103cf57600080fd5b506103ea60048036038101906103e591906134c0565b610cb1565b6040516103f79190613edd565b60405180910390f35b34801561040c57600080fd5b50610415610d56565b005b610431600480360381019061042c91906135a3565b610e21565b005b34801561043f57600080fd5b5061045a600480360381019061045591906133aa565b6110a0565b005b34801561046857600080fd5b50610483600480360381019061047e91906135a3565b6110c0565b6040516104909190613edd565b60405180910390f35b3480156104a557600080fd5b506104ae611131565b6040516104bb9190613edd565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e6919061355a565b611137565b005b3480156104f957600080fd5b50610514600480360381019061050f91906135a3565b6111cd565b6040516105219190613ad7565b60405180910390f35b34801561053657600080fd5b5061053f61127f565b005b34801561054d57600080fd5b50610568600480360381019061056391906135a3565b611327565b005b34801561057657600080fd5b50610591600480360381019061058c919061333d565b6113ad565b60405161059e9190613edd565b60405180910390f35b3480156105b357600080fd5b506105bc611465565b6040516105c99190613b7b565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f491906135a3565b6114f3565b005b34801561060757600080fd5b50610622600480360381019061061d919061333d565b611579565b60405161062f9190613b3e565b60405180910390f35b34801561064457600080fd5b5061064d611627565b60405161065a9190613ad7565b60405180910390f35b34801561066f57600080fd5b5061068a600480360381019061068591906135a3565b611651565b005b34801561069857600080fd5b506106a16116d7565b6040516106ae9190613b7b565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d991906135a3565b611769565b005b3480156106ec57600080fd5b50610707600480360381019061070291906135a3565b6117ef565b6040516107149190613edd565b60405180910390f35b34801561072957600080fd5b50610732611806565b60405161073f9190613edd565b60405180910390f35b610762600480360381019061075d91906135a3565b61180c565b005b34801561077057600080fd5b5061078b60048036038101906107869190613480565b611a3a565b005b34801561079957600080fd5b506107a2611bbb565b6040516107af9190613b60565b60405180910390f35b3480156107c457600080fd5b506107df60048036038101906107da91906133fd565b611bce565b005b3480156107ed57600080fd5b50610808600480360381019061080391906135a3565b611c30565b6040516108159190613b7b565b60405180910390f35b34801561082a57600080fd5b50610833611cd7565b6040516108409190613edd565b60405180910390f35b34801561085557600080fd5b50610870600480360381019061086b91906135a3565b611cdd565b005b34801561087e57600080fd5b50610887611e02565b6040516108949190613edd565b60405180910390f35b3480156108a957600080fd5b506108b2611e08565b6040516108bf9190613edd565b60405180910390f35b3480156108d457600080fd5b506108ef60048036038101906108ea91906135a3565b611e0e565b6040516108fc9190613edd565b60405180910390f35b34801561091157600080fd5b5061092c6004803603810190610927919061336a565b611e25565b6040516109399190613b60565b60405180910390f35b34801561094e57600080fd5b506109696004803603810190610964919061333d565b611eb9565b005b34801561097757600080fd5b50610980611fb1565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109f557506109f482612059565b5b9050919050565b606060008054610a0b906141c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a37906141c6565b8015610a845780601f10610a5957610100808354040283529160200191610a84565b820191906000526020600020905b815481529060010190602001808311610a6757829003601f168201915b5050505050905090565b6000610a998261213b565b610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90613dbd565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b1e826111cd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690613e5d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610bae6121a7565b73ffffffffffffffffffffffffffffffffffffffff161480610bdd5750610bdc81610bd76121a7565b611e25565b5b610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1390613cdd565b60405180910390fd5b610c2683836121af565b505050565b6000600980549050905090565b610c49610c436121a7565b82612268565b610c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f90613e7d565b60405180910390fd5b610c93838383612346565b505050565b60105481565b600f60019054906101000a900460ff1681565b6000610cbc836113ad565b8210610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490613bbd565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d5e6121a7565b73ffffffffffffffffffffffffffffffffffffffff16610d7c611627565b73ffffffffffffffffffffffffffffffffffffffff1614610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990613ddd565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e1d573d6000803e3d6000fd5b5050565b612710610e2c610c2b565b10610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390613d7d565b60405180910390fd5b60001515600f60019054906101000a900460ff16151514610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613ebd565b60405180910390fd5b61271081610ece610c2b565b610ed89190613ffb565b1115610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1090613dfd565b60405180910390fd5b60008111610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390613b9d565b60405180910390fd5b600c54811115610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890613d9d565b60405180910390fd5b600060105411610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd90613c1d565b60405180910390fd5b34610ffc82600e546125a290919063ffffffff16565b1461103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103390613d3d565b60405180910390fd5b60005b8181101561108357611058336110536125b8565b6125c2565b6012600081548092919061106b90614229565b9190505550808061107b90614229565b91505061103f565b50806010600082825461109691906140dc565b9250508190555050565b6110bb83838360405180602001604052806000815250611bce565b505050565b60006110ca610c2b565b821061110b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110290613e9d565b60405180910390fd5b6009828154811061111f5761111e61435f565b5b90600052602060002001549050919050565b600e5481565b61113f6121a7565b73ffffffffffffffffffffffffffffffffffffffff1661115d611627565b73ffffffffffffffffffffffffffffffffffffffff16146111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90613ddd565b60405180910390fd5b80600690805190602001906111c9929190613151565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d90613d1d565b60405180910390fd5b80915050919050565b6112876121a7565b73ffffffffffffffffffffffffffffffffffffffff166112a5611627565b73ffffffffffffffffffffffffffffffffffffffff16146112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290613ddd565b60405180910390fd5b600f60019054906101000a900460ff1615600f60016101000a81548160ff021916908315150217905550565b61132f6121a7565b73ffffffffffffffffffffffffffffffffffffffff1661134d611627565b73ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90613ddd565b60405180910390fd5b8060118190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561141e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141590613cfd565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60068054611472906141c6565b80601f016020809104026020016040519081016040528092919081815260200182805461149e906141c6565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b505050505081565b6114fb6121a7565b73ffffffffffffffffffffffffffffffffffffffff16611519611627565b73ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690613ddd565b60405180910390fd5b80600e8190555050565b60606000611586836113ad565b905060008167ffffffffffffffff8111156115a4576115a361438e565b5b6040519080825280602002602001820160405280156115d25781602001602082028036833780820191505090505b50905060005b8281101561161c576115ea8582610cb1565b8282815181106115fd576115fc61435f565b5b602002602001018181525050808061161490614229565b9150506115d8565b508092505050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116596121a7565b73ffffffffffffffffffffffffffffffffffffffff16611677611627565b73ffffffffffffffffffffffffffffffffffffffff16146116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c490613ddd565b60405180910390fd5b80600d8190555050565b6060600180546116e6906141c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611712906141c6565b801561175f5780601f106117345761010080835404028352916020019161175f565b820191906000526020600020905b81548152906001019060200180831161174257829003601f168201915b5050505050905090565b6117716121a7565b73ffffffffffffffffffffffffffffffffffffffff1661178f611627565b73ffffffffffffffffffffffffffffffffffffffff16146117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90613ddd565b60405180910390fd5b80600c8190555050565b6000600e54826117ff9190614082565b9050919050565b600d5481565b612710611817610c2b565b10611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90613d7d565b60405180910390fd5b60001515600f60009054906101000a900460ff161515146118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490613ebd565b60405180910390fd5b6011546127106118bd91906140dc565b816118c6610c2b565b6118d09190613ffb565b1115611911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190890613dfd565b60405180910390fd5b60008111611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b90613b9d565b60405180910390fd5b600c54811115611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090613d9d565b60405180910390fd5b346119af82600d546125a290919063ffffffff16565b146119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e690613d3d565b60405180910390fd5b60005b81811015611a3657611a0b33611a066125b8565b6125c2565b60126000815480929190611a1e90614229565b91905055508080611a2e90614229565b9150506119f2565b5050565b611a426121a7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613c9d565b60405180910390fd5b8060056000611abd6121a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611b6a6121a7565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611baf9190613b60565b60405180910390a35050565b600f60009054906101000a900460ff1681565b611bdf611bd96121a7565b83612268565b611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1590613e7d565b60405180910390fd5b611c2a848484846125e0565b50505050565b6060611c3b8261213b565b611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613e3d565b60405180910390fd5b6000611c8461263c565b90506000815111611ca45760405180602001604052806000815250611ccf565b80611cae846126ce565b604051602001611cbf929190613ab3565b6040516020818303038152906040525b915050919050565b60115481565b611ce56121a7565b73ffffffffffffffffffffffffffffffffffffffff16611d03611627565b73ffffffffffffffffffffffffffffffffffffffff1614611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613ddd565b60405180910390fd5b601154811115611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613c5d565b60405180910390fd5b8060116000828254611db091906140dc565b9250508190555060005b81811015611dfe57611dd333611dce6125b8565b6125c2565b60126000815480929190611de690614229565b91905055508080611df690614229565b915050611dba565b5050565b61271081565b600c5481565b6000600d5482611e1e9190614082565b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ec16121a7565b73ffffffffffffffffffffffffffffffffffffffff16611edf611627565b73ffffffffffffffffffffffffffffffffffffffff1614611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c90613ddd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613bfd565b60405180910390fd5b611fae8161282f565b50565b611fb96121a7565b73ffffffffffffffffffffffffffffffffffffffff16611fd7611627565b73ffffffffffffffffffffffffffffffffffffffff161461202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490613ddd565b60405180910390fd5b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061212457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806121345750612133826128f5565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612222836111cd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006122738261213b565b6122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990613cbd565b60405180910390fd5b60006122bd836111cd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061232c57508373ffffffffffffffffffffffffffffffffffffffff1661231484610a8e565b73ffffffffffffffffffffffffffffffffffffffff16145b8061233d575061233c8185611e25565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612366826111cd565b73ffffffffffffffffffffffffffffffffffffffff16146123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b390613e1d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561242c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242390613c7d565b60405180910390fd5b61243783838361295f565b6124426000826121af565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461249291906140dc565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124e99190613ffb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600081836125b09190614082565b905092915050565b6000601254905090565b6125dc828260405180602001604052806000815250612a73565b5050565b6125eb848484612346565b6125f784848484612ace565b612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d90613bdd565b60405180910390fd5b50505050565b60606006805461264b906141c6565b80601f0160208091040260200160405190810160405280929190818152602001828054612677906141c6565b80156126c45780601f10612699576101008083540402835291602001916126c4565b820191906000526020600020905b8154815290600101906020018083116126a757829003601f168201915b5050505050905090565b60606000821415612716576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061282a565b600082905060005b6000821461274857808061273190614229565b915050600a826127419190614051565b915061271e565b60008167ffffffffffffffff8111156127645761276361438e565b5b6040519080825280601f01601f1916602001820160405280156127965781602001600182028036833780820191505090505b5090505b60008514612823576001826127af91906140dc565b9150600a856127be9190614272565b60306127ca9190613ffb565b60f81b8183815181106127e0576127df61435f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561281c9190614051565b945061279a565b8093505050505b919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61296a838383612c65565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129ad576129a881612c6a565b6129ec565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146129eb576129ea8382612cb3565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a2f57612a2a81612e20565b612a6e565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612a6d57612a6c8282612ef1565b5b5b505050565b612a7d8383612f70565b612a8a6000848484612ace565b612ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac090613bdd565b60405180910390fd5b505050565b6000612aef8473ffffffffffffffffffffffffffffffffffffffff1661313e565b15612c58578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b186121a7565b8786866040518563ffffffff1660e01b8152600401612b3a9493929190613af2565b602060405180830381600087803b158015612b5457600080fd5b505af1925050508015612b8557506040513d601f19601f82011682018060405250810190612b82919061352d565b60015b612c08573d8060008114612bb5576040519150601f19603f3d011682016040523d82523d6000602084013e612bba565b606091505b50600081511415612c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf790613bdd565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c5d565b600190505b949350505050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612cc0846113ad565b612cca91906140dc565b9050600060086000848152602001908152602001600020549050818114612daf576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600980549050612e3491906140dc565b90506000600a6000848152602001908152602001600020549050600060098381548110612e6457612e6361435f565b5b906000526020600020015490508060098381548110612e8657612e8561435f565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480612ed557612ed4614330565b5b6001900381819060005260206000200160009055905550505050565b6000612efc836113ad565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd790613d5d565b60405180910390fd5b612fe98161213b565b15613029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302090613c3d565b60405180910390fd5b6130356000838361295f565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130859190613ffb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b82805461315d906141c6565b90600052602060002090601f01602090048101928261317f57600085556131c6565b82601f1061319857805160ff19168380011785556131c6565b828001600101855582156131c6579182015b828111156131c55782518255916020019190600101906131aa565b5b5090506131d391906131d7565b5090565b5b808211156131f05760008160009055506001016131d8565b5090565b600061320761320284613f1d565b613ef8565b905082815260208101848484011115613223576132226143c2565b5b61322e848285614184565b509392505050565b600061324961324484613f4e565b613ef8565b905082815260208101848484011115613265576132646143c2565b5b613270848285614184565b509392505050565b60008135905061328781614ab8565b92915050565b60008135905061329c81614acf565b92915050565b6000813590506132b181614ae6565b92915050565b6000815190506132c681614ae6565b92915050565b600082601f8301126132e1576132e06143bd565b5b81356132f18482602086016131f4565b91505092915050565b600082601f83011261330f5761330e6143bd565b5b813561331f848260208601613236565b91505092915050565b60008135905061333781614afd565b92915050565b600060208284031215613353576133526143cc565b5b600061336184828501613278565b91505092915050565b60008060408385031215613381576133806143cc565b5b600061338f85828601613278565b92505060206133a085828601613278565b9150509250929050565b6000806000606084860312156133c3576133c26143cc565b5b60006133d186828701613278565b93505060206133e286828701613278565b92505060406133f386828701613328565b9150509250925092565b60008060008060808587031215613417576134166143cc565b5b600061342587828801613278565b945050602061343687828801613278565b935050604061344787828801613328565b925050606085013567ffffffffffffffff811115613468576134676143c7565b5b613474878288016132cc565b91505092959194509250565b60008060408385031215613497576134966143cc565b5b60006134a585828601613278565b92505060206134b68582860161328d565b9150509250929050565b600080604083850312156134d7576134d66143cc565b5b60006134e585828601613278565b92505060206134f685828601613328565b9150509250929050565b600060208284031215613516576135156143cc565b5b6000613524848285016132a2565b91505092915050565b600060208284031215613543576135426143cc565b5b6000613551848285016132b7565b91505092915050565b6000602082840312156135705761356f6143cc565b5b600082013567ffffffffffffffff81111561358e5761358d6143c7565b5b61359a848285016132fa565b91505092915050565b6000602082840312156135b9576135b86143cc565b5b60006135c784828501613328565b91505092915050565b60006135dc8383613a95565b60208301905092915050565b6135f181614110565b82525050565b600061360282613f8f565b61360c8185613fbd565b935061361783613f7f565b8060005b8381101561364857815161362f88826135d0565b975061363a83613fb0565b92505060018101905061361b565b5085935050505092915050565b61365e81614122565b82525050565b600061366f82613f9a565b6136798185613fce565b9350613689818560208601614193565b613692816143d1565b840191505092915050565b60006136a882613fa5565b6136b28185613fdf565b93506136c2818560208601614193565b6136cb816143d1565b840191505092915050565b60006136e182613fa5565b6136eb8185613ff0565b93506136fb818560208601614193565b80840191505092915050565b6000613714603383613fdf565b915061371f826143e2565b604082019050919050565b6000613737602b83613fdf565b915061374282614431565b604082019050919050565b600061375a603283613fdf565b915061376582614480565b604082019050919050565b600061377d602683613fdf565b9150613788826144cf565b604082019050919050565b60006137a0601783613fdf565b91506137ab8261451e565b602082019050919050565b60006137c3601c83613fdf565b91506137ce82614547565b602082019050919050565b60006137e6602183613fdf565b91506137f182614570565b604082019050919050565b6000613809602483613fdf565b9150613814826145bf565b604082019050919050565b600061382c601983613fdf565b91506138378261460e565b602082019050919050565b600061384f602c83613fdf565b915061385a82614637565b604082019050919050565b6000613872603883613fdf565b915061387d82614686565b604082019050919050565b6000613895602a83613fdf565b91506138a0826146d5565b604082019050919050565b60006138b8602983613fdf565b91506138c382614724565b604082019050919050565b60006138db601d83613fdf565b91506138e682614773565b602082019050919050565b60006138fe602083613fdf565b91506139098261479c565b602082019050919050565b6000613921600883613fdf565b915061392c826147c5565b602082019050919050565b6000613944602183613fdf565b915061394f826147ee565b604082019050919050565b6000613967602c83613fdf565b91506139728261483d565b604082019050919050565b600061398a602083613fdf565b91506139958261488c565b602082019050919050565b60006139ad602683613fdf565b91506139b8826148b5565b604082019050919050565b60006139d0602983613fdf565b91506139db82614904565b604082019050919050565b60006139f3602f83613fdf565b91506139fe82614953565b604082019050919050565b6000613a16602183613fdf565b9150613a21826149a2565b604082019050919050565b6000613a39603183613fdf565b9150613a44826149f1565b604082019050919050565b6000613a5c602c83613fdf565b9150613a6782614a40565b604082019050919050565b6000613a7f602083613fdf565b9150613a8a82614a8f565b602082019050919050565b613a9e8161417a565b82525050565b613aad8161417a565b82525050565b6000613abf82856136d6565b9150613acb82846136d6565b91508190509392505050565b6000602082019050613aec60008301846135e8565b92915050565b6000608082019050613b0760008301876135e8565b613b1460208301866135e8565b613b216040830185613aa4565b8181036060830152613b338184613664565b905095945050505050565b60006020820190508181036000830152613b5881846135f7565b905092915050565b6000602082019050613b756000830184613655565b92915050565b60006020820190508181036000830152613b95818461369d565b905092915050565b60006020820190508181036000830152613bb681613707565b9050919050565b60006020820190508181036000830152613bd68161372a565b9050919050565b60006020820190508181036000830152613bf68161374d565b9050919050565b60006020820190508181036000830152613c1681613770565b9050919050565b60006020820190508181036000830152613c3681613793565b9050919050565b60006020820190508181036000830152613c56816137b6565b9050919050565b60006020820190508181036000830152613c76816137d9565b9050919050565b60006020820190508181036000830152613c96816137fc565b9050919050565b60006020820190508181036000830152613cb68161381f565b9050919050565b60006020820190508181036000830152613cd681613842565b9050919050565b60006020820190508181036000830152613cf681613865565b9050919050565b60006020820190508181036000830152613d1681613888565b9050919050565b60006020820190508181036000830152613d36816138ab565b9050919050565b60006020820190508181036000830152613d56816138ce565b9050919050565b60006020820190508181036000830152613d76816138f1565b9050919050565b60006020820190508181036000830152613d9681613914565b9050919050565b60006020820190508181036000830152613db681613937565b9050919050565b60006020820190508181036000830152613dd68161395a565b9050919050565b60006020820190508181036000830152613df68161397d565b9050919050565b60006020820190508181036000830152613e16816139a0565b9050919050565b60006020820190508181036000830152613e36816139c3565b9050919050565b60006020820190508181036000830152613e56816139e6565b9050919050565b60006020820190508181036000830152613e7681613a09565b9050919050565b60006020820190508181036000830152613e9681613a2c565b9050919050565b60006020820190508181036000830152613eb681613a4f565b9050919050565b60006020820190508181036000830152613ed681613a72565b9050919050565b6000602082019050613ef26000830184613aa4565b92915050565b6000613f02613f13565b9050613f0e82826141f8565b919050565b6000604051905090565b600067ffffffffffffffff821115613f3857613f3761438e565b5b613f41826143d1565b9050602081019050919050565b600067ffffffffffffffff821115613f6957613f6861438e565b5b613f72826143d1565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006140068261417a565b91506140118361417a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614046576140456142a3565b5b828201905092915050565b600061405c8261417a565b91506140678361417a565b925082614077576140766142d2565b5b828204905092915050565b600061408d8261417a565b91506140988361417a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140d1576140d06142a3565b5b828202905092915050565b60006140e78261417a565b91506140f28361417a565b925082821015614105576141046142a3565b5b828203905092915050565b600061411b8261415a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156141b1578082015181840152602081019050614196565b838111156141c0576000848401525b50505050565b600060028204905060018216806141de57607f821691505b602082108114156141f2576141f1614301565b5b50919050565b614201826143d1565b810181811067ffffffffffffffff821117156142205761421f61438e565b5b80604052505050565b60006142348261417a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614267576142666142a3565b5b600182019050919050565b600061427d8261417a565b91506142888361417a565b925082614298576142976142d2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e756d626572206f6620746f6b656e732063616e206e6f74206265206c65737360008201527f207468616e206f7220657175616c20746f203000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5072652053616c6520737570706c79206973207a65726f000000000000000000600082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f546865207175616e74697479206578636565647320746865207265736572766560008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f53656e742065746865722076616c756520697320696e636f7272656374000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f53616c6520656e64000000000000000000000000000000000000000000000000600082015250565b7f43686f73656e20416d6f756e742065786365656473204d61785175616e74697460008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5175616e74697479206d757374206265206c6573736572207468656e204d617860008201527f537570706c790000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f53616c65206973206e6f742061637469766520617420746865206d6f6d656e74600082015250565b614ac181614110565b8114614acc57600080fd5b50565b614ad881614122565b8114614ae357600080fd5b50565b614aef8161412e565b8114614afa57600080fd5b50565b614b068161417a565b8114614b1157600080fd5b5056fea2646970667358221220ffdba2ad1c4fff08ea2c55ef4355e003a3e390b389b9903fae7b38a4b53e700a64736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003468747470733a2f2f6c6164796c696f6e2d6261636b656e642e6865726f6b756170702e636f6d2f6e66742f6d657461646174612f000000000000000000000000

Deployed Bytecode

0x6080604052600436106102465760003560e01c80637d7eee4211610139578063b187bd26116100b6578063db4568e21161007a578063db4568e214610872578063e640cf7d1461089d578063e7572230146108c8578063e985e9c514610905578063f2fde38b14610942578063fa62884c1461096b57610246565b8063b187bd261461078d578063b88d4fde146107b8578063c87b56dd146107e1578063cd3293de1461081e578063d031370b1461084957610246565b80639d38fd21116100fd5780639d38fd21146106b75780639e21dabb146106e0578063a035b1fe1461071d578063a0712d6814610748578063a22cb4651461076457610246565b80637d7eee42146105d25780638462151c146105fb5780638da5cb5b1461063857806391b7f5ed1461066357806395d89b411461068c57610246565b80633e343865116101c75780636352211e1161018b5780636352211e146104ed57806367f8ccb81461052a5780636a44e1731461054157806370a082311461056a578063743976a0146105a757610246565b80633e3438651461041757806342842e0e146104335780634f6ccce71461045c578063558da2e31461049957806355f804b3146104c457610246565b806323b872dd1161020e57806323b872dd146103445780632e055bcc1461036d5780632e280e32146103985780632f745c59146103c35780633ccfd60b1461040057610246565b806301ffc9a71461024b57806306fdde0314610288578063081812fc146102b3578063095ea7b3146102f057806318160ddd14610319575b600080fd5b34801561025757600080fd5b50610272600480360381019061026d9190613500565b610982565b60405161027f9190613b60565b60405180910390f35b34801561029457600080fd5b5061029d6109fc565b6040516102aa9190613b7b565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d591906135a3565b610a8e565b6040516102e79190613ad7565b60405180910390f35b3480156102fc57600080fd5b50610317600480360381019061031291906134c0565b610b13565b005b34801561032557600080fd5b5061032e610c2b565b60405161033b9190613edd565b60405180910390f35b34801561035057600080fd5b5061036b600480360381019061036691906133aa565b610c38565b005b34801561037957600080fd5b50610382610c98565b60405161038f9190613edd565b60405180910390f35b3480156103a457600080fd5b506103ad610c9e565b6040516103ba9190613b60565b60405180910390f35b3480156103cf57600080fd5b506103ea60048036038101906103e591906134c0565b610cb1565b6040516103f79190613edd565b60405180910390f35b34801561040c57600080fd5b50610415610d56565b005b610431600480360381019061042c91906135a3565b610e21565b005b34801561043f57600080fd5b5061045a600480360381019061045591906133aa565b6110a0565b005b34801561046857600080fd5b50610483600480360381019061047e91906135a3565b6110c0565b6040516104909190613edd565b60405180910390f35b3480156104a557600080fd5b506104ae611131565b6040516104bb9190613edd565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e6919061355a565b611137565b005b3480156104f957600080fd5b50610514600480360381019061050f91906135a3565b6111cd565b6040516105219190613ad7565b60405180910390f35b34801561053657600080fd5b5061053f61127f565b005b34801561054d57600080fd5b50610568600480360381019061056391906135a3565b611327565b005b34801561057657600080fd5b50610591600480360381019061058c919061333d565b6113ad565b60405161059e9190613edd565b60405180910390f35b3480156105b357600080fd5b506105bc611465565b6040516105c99190613b7b565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f491906135a3565b6114f3565b005b34801561060757600080fd5b50610622600480360381019061061d919061333d565b611579565b60405161062f9190613b3e565b60405180910390f35b34801561064457600080fd5b5061064d611627565b60405161065a9190613ad7565b60405180910390f35b34801561066f57600080fd5b5061068a600480360381019061068591906135a3565b611651565b005b34801561069857600080fd5b506106a16116d7565b6040516106ae9190613b7b565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d991906135a3565b611769565b005b3480156106ec57600080fd5b50610707600480360381019061070291906135a3565b6117ef565b6040516107149190613edd565b60405180910390f35b34801561072957600080fd5b50610732611806565b60405161073f9190613edd565b60405180910390f35b610762600480360381019061075d91906135a3565b61180c565b005b34801561077057600080fd5b5061078b60048036038101906107869190613480565b611a3a565b005b34801561079957600080fd5b506107a2611bbb565b6040516107af9190613b60565b60405180910390f35b3480156107c457600080fd5b506107df60048036038101906107da91906133fd565b611bce565b005b3480156107ed57600080fd5b50610808600480360381019061080391906135a3565b611c30565b6040516108159190613b7b565b60405180910390f35b34801561082a57600080fd5b50610833611cd7565b6040516108409190613edd565b60405180910390f35b34801561085557600080fd5b50610870600480360381019061086b91906135a3565b611cdd565b005b34801561087e57600080fd5b50610887611e02565b6040516108949190613edd565b60405180910390f35b3480156108a957600080fd5b506108b2611e08565b6040516108bf9190613edd565b60405180910390f35b3480156108d457600080fd5b506108ef60048036038101906108ea91906135a3565b611e0e565b6040516108fc9190613edd565b60405180910390f35b34801561091157600080fd5b5061092c6004803603810190610927919061336a565b611e25565b6040516109399190613b60565b60405180910390f35b34801561094e57600080fd5b506109696004803603810190610964919061333d565b611eb9565b005b34801561097757600080fd5b50610980611fb1565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109f557506109f482612059565b5b9050919050565b606060008054610a0b906141c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a37906141c6565b8015610a845780601f10610a5957610100808354040283529160200191610a84565b820191906000526020600020905b815481529060010190602001808311610a6757829003601f168201915b5050505050905090565b6000610a998261213b565b610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90613dbd565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b1e826111cd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690613e5d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610bae6121a7565b73ffffffffffffffffffffffffffffffffffffffff161480610bdd5750610bdc81610bd76121a7565b611e25565b5b610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1390613cdd565b60405180910390fd5b610c2683836121af565b505050565b6000600980549050905090565b610c49610c436121a7565b82612268565b610c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f90613e7d565b60405180910390fd5b610c93838383612346565b505050565b60105481565b600f60019054906101000a900460ff1681565b6000610cbc836113ad565b8210610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490613bbd565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d5e6121a7565b73ffffffffffffffffffffffffffffffffffffffff16610d7c611627565b73ffffffffffffffffffffffffffffffffffffffff1614610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990613ddd565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e1d573d6000803e3d6000fd5b5050565b612710610e2c610c2b565b10610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390613d7d565b60405180910390fd5b60001515600f60019054906101000a900460ff16151514610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613ebd565b60405180910390fd5b61271081610ece610c2b565b610ed89190613ffb565b1115610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1090613dfd565b60405180910390fd5b60008111610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390613b9d565b60405180910390fd5b600c54811115610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890613d9d565b60405180910390fd5b600060105411610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd90613c1d565b60405180910390fd5b34610ffc82600e546125a290919063ffffffff16565b1461103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103390613d3d565b60405180910390fd5b60005b8181101561108357611058336110536125b8565b6125c2565b6012600081548092919061106b90614229565b9190505550808061107b90614229565b91505061103f565b50806010600082825461109691906140dc565b9250508190555050565b6110bb83838360405180602001604052806000815250611bce565b505050565b60006110ca610c2b565b821061110b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110290613e9d565b60405180910390fd5b6009828154811061111f5761111e61435f565b5b90600052602060002001549050919050565b600e5481565b61113f6121a7565b73ffffffffffffffffffffffffffffffffffffffff1661115d611627565b73ffffffffffffffffffffffffffffffffffffffff16146111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90613ddd565b60405180910390fd5b80600690805190602001906111c9929190613151565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d90613d1d565b60405180910390fd5b80915050919050565b6112876121a7565b73ffffffffffffffffffffffffffffffffffffffff166112a5611627565b73ffffffffffffffffffffffffffffffffffffffff16146112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290613ddd565b60405180910390fd5b600f60019054906101000a900460ff1615600f60016101000a81548160ff021916908315150217905550565b61132f6121a7565b73ffffffffffffffffffffffffffffffffffffffff1661134d611627565b73ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90613ddd565b60405180910390fd5b8060118190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561141e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141590613cfd565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60068054611472906141c6565b80601f016020809104026020016040519081016040528092919081815260200182805461149e906141c6565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b505050505081565b6114fb6121a7565b73ffffffffffffffffffffffffffffffffffffffff16611519611627565b73ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690613ddd565b60405180910390fd5b80600e8190555050565b60606000611586836113ad565b905060008167ffffffffffffffff8111156115a4576115a361438e565b5b6040519080825280602002602001820160405280156115d25781602001602082028036833780820191505090505b50905060005b8281101561161c576115ea8582610cb1565b8282815181106115fd576115fc61435f565b5b602002602001018181525050808061161490614229565b9150506115d8565b508092505050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116596121a7565b73ffffffffffffffffffffffffffffffffffffffff16611677611627565b73ffffffffffffffffffffffffffffffffffffffff16146116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c490613ddd565b60405180910390fd5b80600d8190555050565b6060600180546116e6906141c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611712906141c6565b801561175f5780601f106117345761010080835404028352916020019161175f565b820191906000526020600020905b81548152906001019060200180831161174257829003601f168201915b5050505050905090565b6117716121a7565b73ffffffffffffffffffffffffffffffffffffffff1661178f611627565b73ffffffffffffffffffffffffffffffffffffffff16146117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90613ddd565b60405180910390fd5b80600c8190555050565b6000600e54826117ff9190614082565b9050919050565b600d5481565b612710611817610c2b565b10611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90613d7d565b60405180910390fd5b60001515600f60009054906101000a900460ff161515146118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490613ebd565b60405180910390fd5b6011546127106118bd91906140dc565b816118c6610c2b565b6118d09190613ffb565b1115611911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190890613dfd565b60405180910390fd5b60008111611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b90613b9d565b60405180910390fd5b600c54811115611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090613d9d565b60405180910390fd5b346119af82600d546125a290919063ffffffff16565b146119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e690613d3d565b60405180910390fd5b60005b81811015611a3657611a0b33611a066125b8565b6125c2565b60126000815480929190611a1e90614229565b91905055508080611a2e90614229565b9150506119f2565b5050565b611a426121a7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613c9d565b60405180910390fd5b8060056000611abd6121a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611b6a6121a7565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611baf9190613b60565b60405180910390a35050565b600f60009054906101000a900460ff1681565b611bdf611bd96121a7565b83612268565b611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1590613e7d565b60405180910390fd5b611c2a848484846125e0565b50505050565b6060611c3b8261213b565b611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613e3d565b60405180910390fd5b6000611c8461263c565b90506000815111611ca45760405180602001604052806000815250611ccf565b80611cae846126ce565b604051602001611cbf929190613ab3565b6040516020818303038152906040525b915050919050565b60115481565b611ce56121a7565b73ffffffffffffffffffffffffffffffffffffffff16611d03611627565b73ffffffffffffffffffffffffffffffffffffffff1614611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613ddd565b60405180910390fd5b601154811115611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613c5d565b60405180910390fd5b8060116000828254611db091906140dc565b9250508190555060005b81811015611dfe57611dd333611dce6125b8565b6125c2565b60126000815480929190611de690614229565b91905055508080611df690614229565b915050611dba565b5050565b61271081565b600c5481565b6000600d5482611e1e9190614082565b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ec16121a7565b73ffffffffffffffffffffffffffffffffffffffff16611edf611627565b73ffffffffffffffffffffffffffffffffffffffff1614611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c90613ddd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613bfd565b60405180910390fd5b611fae8161282f565b50565b611fb96121a7565b73ffffffffffffffffffffffffffffffffffffffff16611fd7611627565b73ffffffffffffffffffffffffffffffffffffffff161461202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490613ddd565b60405180910390fd5b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061212457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806121345750612133826128f5565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612222836111cd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006122738261213b565b6122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990613cbd565b60405180910390fd5b60006122bd836111cd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061232c57508373ffffffffffffffffffffffffffffffffffffffff1661231484610a8e565b73ffffffffffffffffffffffffffffffffffffffff16145b8061233d575061233c8185611e25565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612366826111cd565b73ffffffffffffffffffffffffffffffffffffffff16146123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b390613e1d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561242c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242390613c7d565b60405180910390fd5b61243783838361295f565b6124426000826121af565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461249291906140dc565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124e99190613ffb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600081836125b09190614082565b905092915050565b6000601254905090565b6125dc828260405180602001604052806000815250612a73565b5050565b6125eb848484612346565b6125f784848484612ace565b612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d90613bdd565b60405180910390fd5b50505050565b60606006805461264b906141c6565b80601f0160208091040260200160405190810160405280929190818152602001828054612677906141c6565b80156126c45780601f10612699576101008083540402835291602001916126c4565b820191906000526020600020905b8154815290600101906020018083116126a757829003601f168201915b5050505050905090565b60606000821415612716576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061282a565b600082905060005b6000821461274857808061273190614229565b915050600a826127419190614051565b915061271e565b60008167ffffffffffffffff8111156127645761276361438e565b5b6040519080825280601f01601f1916602001820160405280156127965781602001600182028036833780820191505090505b5090505b60008514612823576001826127af91906140dc565b9150600a856127be9190614272565b60306127ca9190613ffb565b60f81b8183815181106127e0576127df61435f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561281c9190614051565b945061279a565b8093505050505b919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61296a838383612c65565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129ad576129a881612c6a565b6129ec565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146129eb576129ea8382612cb3565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a2f57612a2a81612e20565b612a6e565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612a6d57612a6c8282612ef1565b5b5b505050565b612a7d8383612f70565b612a8a6000848484612ace565b612ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac090613bdd565b60405180910390fd5b505050565b6000612aef8473ffffffffffffffffffffffffffffffffffffffff1661313e565b15612c58578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b186121a7565b8786866040518563ffffffff1660e01b8152600401612b3a9493929190613af2565b602060405180830381600087803b158015612b5457600080fd5b505af1925050508015612b8557506040513d601f19601f82011682018060405250810190612b82919061352d565b60015b612c08573d8060008114612bb5576040519150601f19603f3d011682016040523d82523d6000602084013e612bba565b606091505b50600081511415612c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf790613bdd565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c5d565b600190505b949350505050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612cc0846113ad565b612cca91906140dc565b9050600060086000848152602001908152602001600020549050818114612daf576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600980549050612e3491906140dc565b90506000600a6000848152602001908152602001600020549050600060098381548110612e6457612e6361435f565b5b906000526020600020015490508060098381548110612e8657612e8561435f565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480612ed557612ed4614330565b5b6001900381819060005260206000200160009055905550505050565b6000612efc836113ad565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd790613d5d565b60405180910390fd5b612fe98161213b565b15613029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302090613c3d565b60405180910390fd5b6130356000838361295f565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130859190613ffb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b82805461315d906141c6565b90600052602060002090601f01602090048101928261317f57600085556131c6565b82601f1061319857805160ff19168380011785556131c6565b828001600101855582156131c6579182015b828111156131c55782518255916020019190600101906131aa565b5b5090506131d391906131d7565b5090565b5b808211156131f05760008160009055506001016131d8565b5090565b600061320761320284613f1d565b613ef8565b905082815260208101848484011115613223576132226143c2565b5b61322e848285614184565b509392505050565b600061324961324484613f4e565b613ef8565b905082815260208101848484011115613265576132646143c2565b5b613270848285614184565b509392505050565b60008135905061328781614ab8565b92915050565b60008135905061329c81614acf565b92915050565b6000813590506132b181614ae6565b92915050565b6000815190506132c681614ae6565b92915050565b600082601f8301126132e1576132e06143bd565b5b81356132f18482602086016131f4565b91505092915050565b600082601f83011261330f5761330e6143bd565b5b813561331f848260208601613236565b91505092915050565b60008135905061333781614afd565b92915050565b600060208284031215613353576133526143cc565b5b600061336184828501613278565b91505092915050565b60008060408385031215613381576133806143cc565b5b600061338f85828601613278565b92505060206133a085828601613278565b9150509250929050565b6000806000606084860312156133c3576133c26143cc565b5b60006133d186828701613278565b93505060206133e286828701613278565b92505060406133f386828701613328565b9150509250925092565b60008060008060808587031215613417576134166143cc565b5b600061342587828801613278565b945050602061343687828801613278565b935050604061344787828801613328565b925050606085013567ffffffffffffffff811115613468576134676143c7565b5b613474878288016132cc565b91505092959194509250565b60008060408385031215613497576134966143cc565b5b60006134a585828601613278565b92505060206134b68582860161328d565b9150509250929050565b600080604083850312156134d7576134d66143cc565b5b60006134e585828601613278565b92505060206134f685828601613328565b9150509250929050565b600060208284031215613516576135156143cc565b5b6000613524848285016132a2565b91505092915050565b600060208284031215613543576135426143cc565b5b6000613551848285016132b7565b91505092915050565b6000602082840312156135705761356f6143cc565b5b600082013567ffffffffffffffff81111561358e5761358d6143c7565b5b61359a848285016132fa565b91505092915050565b6000602082840312156135b9576135b86143cc565b5b60006135c784828501613328565b91505092915050565b60006135dc8383613a95565b60208301905092915050565b6135f181614110565b82525050565b600061360282613f8f565b61360c8185613fbd565b935061361783613f7f565b8060005b8381101561364857815161362f88826135d0565b975061363a83613fb0565b92505060018101905061361b565b5085935050505092915050565b61365e81614122565b82525050565b600061366f82613f9a565b6136798185613fce565b9350613689818560208601614193565b613692816143d1565b840191505092915050565b60006136a882613fa5565b6136b28185613fdf565b93506136c2818560208601614193565b6136cb816143d1565b840191505092915050565b60006136e182613fa5565b6136eb8185613ff0565b93506136fb818560208601614193565b80840191505092915050565b6000613714603383613fdf565b915061371f826143e2565b604082019050919050565b6000613737602b83613fdf565b915061374282614431565b604082019050919050565b600061375a603283613fdf565b915061376582614480565b604082019050919050565b600061377d602683613fdf565b9150613788826144cf565b604082019050919050565b60006137a0601783613fdf565b91506137ab8261451e565b602082019050919050565b60006137c3601c83613fdf565b91506137ce82614547565b602082019050919050565b60006137e6602183613fdf565b91506137f182614570565b604082019050919050565b6000613809602483613fdf565b9150613814826145bf565b604082019050919050565b600061382c601983613fdf565b91506138378261460e565b602082019050919050565b600061384f602c83613fdf565b915061385a82614637565b604082019050919050565b6000613872603883613fdf565b915061387d82614686565b604082019050919050565b6000613895602a83613fdf565b91506138a0826146d5565b604082019050919050565b60006138b8602983613fdf565b91506138c382614724565b604082019050919050565b60006138db601d83613fdf565b91506138e682614773565b602082019050919050565b60006138fe602083613fdf565b91506139098261479c565b602082019050919050565b6000613921600883613fdf565b915061392c826147c5565b602082019050919050565b6000613944602183613fdf565b915061394f826147ee565b604082019050919050565b6000613967602c83613fdf565b91506139728261483d565b604082019050919050565b600061398a602083613fdf565b91506139958261488c565b602082019050919050565b60006139ad602683613fdf565b91506139b8826148b5565b604082019050919050565b60006139d0602983613fdf565b91506139db82614904565b604082019050919050565b60006139f3602f83613fdf565b91506139fe82614953565b604082019050919050565b6000613a16602183613fdf565b9150613a21826149a2565b604082019050919050565b6000613a39603183613fdf565b9150613a44826149f1565b604082019050919050565b6000613a5c602c83613fdf565b9150613a6782614a40565b604082019050919050565b6000613a7f602083613fdf565b9150613a8a82614a8f565b602082019050919050565b613a9e8161417a565b82525050565b613aad8161417a565b82525050565b6000613abf82856136d6565b9150613acb82846136d6565b91508190509392505050565b6000602082019050613aec60008301846135e8565b92915050565b6000608082019050613b0760008301876135e8565b613b1460208301866135e8565b613b216040830185613aa4565b8181036060830152613b338184613664565b905095945050505050565b60006020820190508181036000830152613b5881846135f7565b905092915050565b6000602082019050613b756000830184613655565b92915050565b60006020820190508181036000830152613b95818461369d565b905092915050565b60006020820190508181036000830152613bb681613707565b9050919050565b60006020820190508181036000830152613bd68161372a565b9050919050565b60006020820190508181036000830152613bf68161374d565b9050919050565b60006020820190508181036000830152613c1681613770565b9050919050565b60006020820190508181036000830152613c3681613793565b9050919050565b60006020820190508181036000830152613c56816137b6565b9050919050565b60006020820190508181036000830152613c76816137d9565b9050919050565b60006020820190508181036000830152613c96816137fc565b9050919050565b60006020820190508181036000830152613cb68161381f565b9050919050565b60006020820190508181036000830152613cd681613842565b9050919050565b60006020820190508181036000830152613cf681613865565b9050919050565b60006020820190508181036000830152613d1681613888565b9050919050565b60006020820190508181036000830152613d36816138ab565b9050919050565b60006020820190508181036000830152613d56816138ce565b9050919050565b60006020820190508181036000830152613d76816138f1565b9050919050565b60006020820190508181036000830152613d9681613914565b9050919050565b60006020820190508181036000830152613db681613937565b9050919050565b60006020820190508181036000830152613dd68161395a565b9050919050565b60006020820190508181036000830152613df68161397d565b9050919050565b60006020820190508181036000830152613e16816139a0565b9050919050565b60006020820190508181036000830152613e36816139c3565b9050919050565b60006020820190508181036000830152613e56816139e6565b9050919050565b60006020820190508181036000830152613e7681613a09565b9050919050565b60006020820190508181036000830152613e9681613a2c565b9050919050565b60006020820190508181036000830152613eb681613a4f565b9050919050565b60006020820190508181036000830152613ed681613a72565b9050919050565b6000602082019050613ef26000830184613aa4565b92915050565b6000613f02613f13565b9050613f0e82826141f8565b919050565b6000604051905090565b600067ffffffffffffffff821115613f3857613f3761438e565b5b613f41826143d1565b9050602081019050919050565b600067ffffffffffffffff821115613f6957613f6861438e565b5b613f72826143d1565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006140068261417a565b91506140118361417a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614046576140456142a3565b5b828201905092915050565b600061405c8261417a565b91506140678361417a565b925082614077576140766142d2565b5b828204905092915050565b600061408d8261417a565b91506140988361417a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140d1576140d06142a3565b5b828202905092915050565b60006140e78261417a565b91506140f28361417a565b925082821015614105576141046142a3565b5b828203905092915050565b600061411b8261415a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156141b1578082015181840152602081019050614196565b838111156141c0576000848401525b50505050565b600060028204905060018216806141de57607f821691505b602082108114156141f2576141f1614301565b5b50919050565b614201826143d1565b810181811067ffffffffffffffff821117156142205761421f61438e565b5b80604052505050565b60006142348261417a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614267576142666142a3565b5b600182019050919050565b600061427d8261417a565b91506142888361417a565b925082614298576142976142d2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e756d626572206f6620746f6b656e732063616e206e6f74206265206c65737360008201527f207468616e206f7220657175616c20746f203000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5072652053616c6520737570706c79206973207a65726f000000000000000000600082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f546865207175616e74697479206578636565647320746865207265736572766560008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f53656e742065746865722076616c756520697320696e636f7272656374000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f53616c6520656e64000000000000000000000000000000000000000000000000600082015250565b7f43686f73656e20416d6f756e742065786365656473204d61785175616e74697460008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5175616e74697479206d757374206265206c6573736572207468656e204d617860008201527f537570706c790000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f53616c65206973206e6f742061637469766520617420746865206d6f6d656e74600082015250565b614ac181614110565b8114614acc57600080fd5b50565b614ad881614122565b8114614ae357600080fd5b50565b614aef8161412e565b8114614afa57600080fd5b50565b614b068161417a565b8114614b1157600080fd5b5056fea2646970667358221220ffdba2ad1c4fff08ea2c55ef4355e003a3e390b389b9903fae7b38a4b53e700a64736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003468747470733a2f2f6c6164796c696f6e2d6261636b656e642e6865726f6b756170702e636f6d2f6e66742f6d657461646174612f000000000000000000000000

-----Decoded View---------------
Arg [0] : baseURI (string): https://ladylion-backend.herokuapp.com/nft/metadata/

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000034
Arg [2] : 68747470733a2f2f6c6164796c696f6e2d6261636b656e642e6865726f6b7561
Arg [3] : 70702e636f6d2f6e66742f6d657461646174612f000000000000000000000000


Deployed Bytecode Sourcemap

49090:4009:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42915:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30897:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32451:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31974:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43555:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33341:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49426:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49387:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43223:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52857:140;;;;;;;;;;;;;:::i;:::-;;51061:768;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33751:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43745:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49306:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49643:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30591:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50369:104;;;;;;;;;;;;;:::i;:::-;;50065:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30321:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29619:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49846:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52498:351;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27487:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49748:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31066:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49958:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50607:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49266:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51837:652;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32744:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49353:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34007:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31241:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49463:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50750:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49185:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49232:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50479:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33110:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28287:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50280:83;;;;;;;;;;;;;:::i;:::-;;42915:224;43017:4;43056:35;43041:50;;;:11;:50;;;;:90;;;;43095:36;43119:11;43095:23;:36::i;:::-;43041:90;43034:97;;42915:224;;;:::o;30897:100::-;30951:13;30984:5;30977:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30897:100;:::o;32451:221::-;32527:7;32555:16;32563:7;32555;:16::i;:::-;32547:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;32640:15;:24;32656:7;32640:24;;;;;;;;;;;;;;;;;;;;;32633:31;;32451:221;;;:::o;31974:411::-;32055:13;32071:23;32086:7;32071:14;:23::i;:::-;32055:39;;32119:5;32113:11;;:2;:11;;;;32105:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;32213:5;32197:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;32222:37;32239:5;32246:12;:10;:12::i;:::-;32222:16;:37::i;:::-;32197:62;32175:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;32356:21;32365:2;32369:7;32356:8;:21::i;:::-;32044:341;31974:411;;:::o;43555:113::-;43616:7;43643:10;:17;;;;43636:24;;43555:113;:::o;33341:339::-;33536:41;33555:12;:10;:12::i;:::-;33569:7;33536:18;:41::i;:::-;33528:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;33644:28;33654:4;33660:2;33664:7;33644:9;:28::i;:::-;33341:339;;;:::o;49426:30::-;;;;:::o;49387:32::-;;;;;;;;;;;;;:::o;43223:256::-;43320:7;43356:23;43373:5;43356:16;:23::i;:::-;43348:5;:31;43340:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;43445:12;:19;43458:5;43445:19;;;;;;;;;;;;;;;:26;43465:5;43445:26;;;;;;;;;;;;43438:33;;43223:256;;;;:::o;52857:140::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52905:12:::1;52920:21;52905:36;;52960:10;52952:28;;:37;52981:7;52952:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;52894:103;52857:140::o:0;51061:768::-;49220:5;50213:13;:11;:13::i;:::-;:28;50205:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;51164:5:::1;51145:24;;:15;;;;;;;;;;;:24;;;51137:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;49220:5;51239:12;51225:13;:11;:13::i;:::-;:26;;;;:::i;:::-;:40;;51217:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;51341:1;51326:12;:16;51318:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;51433:11;;51417:12;:27;;51409:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;51514:1;51500:13;;:15;51492:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;51595:9;51561:30;51578:12;51561;;:16;;:30;;;;:::i;:::-;:43;51553:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;51654:6;51649:131;51670:12;51666:1;:16;51649:131;;;51704:36;51714:10;51726:13;:11;:13::i;:::-;51704:9;:36::i;:::-;51755:7;;:9;;;;;;;;;:::i;:::-;;;;;;51684:3;;;;;:::i;:::-;;;;51649:131;;;;51809:12;51794:13;;:27;;;;;;;:::i;:::-;;;;;;;;51061:768:::0;:::o;33751:185::-;33889:39;33906:4;33912:2;33916:7;33889:39;;;;;;;;;;;;:16;:39::i;:::-;33751:185;;;:::o;43745:233::-;43820:7;43856:30;:28;:30::i;:::-;43848:5;:38;43840:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;43953:10;43964:5;43953:17;;;;;;;;:::i;:::-;;;;;;;;;;43946:24;;43745:233;;;:::o;49306:40::-;;;;:::o;49643:97::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49725:7:::1;49714:8;:18;;;;;;;;;;;;:::i;:::-;;49643:97:::0;:::o;30591:239::-;30663:7;30683:13;30699:7;:16;30707:7;30699:16;;;;;;;;;;;;;;;;;;;;;30683:32;;30751:1;30734:19;;:5;:19;;;;30726:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30817:5;30810:12;;;30591:239;;;:::o;50369:104::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50450:15:::1;;;;;;;;;;;50449:16;50431:15;;:34;;;;;;;;;;;;;;;;;;50369:104::o:0;50065:98::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50146:9:::1;50138:7;:17;;;;50065:98:::0;:::o;30321:208::-;30393:7;30438:1;30421:19;;:5;:19;;;;30413:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;30505:9;:16;30515:5;30505:16;;;;;;;;;;;;;;;;30498:23;;30321:208;;;:::o;29619:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;49846:106::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49935:9:::1;49920:12;:24;;;;49846:106:::0;:::o;52498:351::-;52558:16;52592:13;52608:17;52618:6;52608:9;:17::i;:::-;52592:33;;52636:23;52676:5;52662:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52636:46;;52698:13;52693:125;52725:5;52717;:13;52693:125;;;52772:34;52792:6;52800:5;52772:19;:34::i;:::-;52756:6;52763:5;52756:13;;;;;;;;:::i;:::-;;;;;;;:50;;;;;52732:7;;;;;:::i;:::-;;;;52693:125;;;;52835:6;52828:13;;;;52498:351;;;:::o;27487:87::-;27533:7;27560:6;;;;;;;;;;;27553:13;;27487:87;:::o;49748:92::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49823:9:::1;49815:5;:17;;;;49748:92:::0;:::o;31066:104::-;31122:13;31155:7;31148:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31066:104;:::o;49958:100::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50041:9:::1;50029:11;:21;;;;49958:100:::0;:::o;50607:136::-;50672:7;50721:12;;50711:9;:22;;;;:::i;:::-;50704:29;;50607:136;;;:::o;49266:33::-;;;;:::o;51837:652::-;49220:5;50213:13;:11;:13::i;:::-;:28;50205:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;51926:5:::1;51914:17;;:8;;;;;;;;;;;:17;;;51906:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;52028:7;;49220:5;52015:20;;;;:::i;:::-;52001:12;51987:13;:11;:13::i;:::-;:26;;;;:::i;:::-;:48;;51979:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;52111:1;52096:12;:16;52088:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;52203:11;;52187:12;:27;;52179:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;52297:9;52270:23;52280:12;52270:5;;:9;;:23;;;;:::i;:::-;:36;52262:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;52356:6;52351:131;52372:12;52368:1;:16;52351:131;;;52406:36;52416:10;52428:13;:11;:13::i;:::-;52406:9;:36::i;:::-;52457:7;;:9;;;;;;;;;:::i;:::-;;;;;;52386:3;;;;;:::i;:::-;;;;52351:131;;;;51837:652:::0;:::o;32744:295::-;32859:12;:10;:12::i;:::-;32847:24;;:8;:24;;;;32839:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32959:8;32914:18;:32;32933:12;:10;:12::i;:::-;32914:32;;;;;;;;;;;;;;;:42;32947:8;32914:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;33012:8;32983:48;;32998:12;:10;:12::i;:::-;32983:48;;;33022:8;32983:48;;;;;;:::i;:::-;;;;;;;;32744:295;;:::o;49353:27::-;;;;;;;;;;;;;:::o;34007:328::-;34182:41;34201:12;:10;:12::i;:::-;34215:7;34182:18;:41::i;:::-;34174:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;34288:39;34302:4;34308:2;34312:7;34321:5;34288:13;:39::i;:::-;34007:328;;;;:::o;31241:324::-;31314:13;31348:16;31356:7;31348;:16::i;:::-;31340:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;31429:18;31450:9;:7;:9::i;:::-;31429:30;;31498:1;31483:4;31477:18;:22;:80;;;;;;;;;;;;;;;;;31526:4;31532:18;:7;:16;:18::i;:::-;31509:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;31477:80;31470:87;;;31241:324;;;:::o;49463:25::-;;;;:::o;50750:301::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50836:7:::1;;50824:8;:19;;50816:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;50903:8;50892:7;;:19;;;;;;;:::i;:::-;;;;;;;;50927:6;50922:122;50943:8;50939:1;:12;50922:122;;;50973:35;50983:10;50994:13;:11;:13::i;:::-;50973:9;:35::i;:::-;51023:7;;:9;;;;;;;;;:::i;:::-;;;;;;50953:3;;;;;:::i;:::-;;;;50922:122;;;;50750:301:::0;:::o;49185:40::-;49220:5;49185:40;:::o;49232:27::-;;;;:::o;50479:122::-;50537:7;50586:5;;50576:9;:15;;;;:::i;:::-;50569:22;;50479:122;;;:::o;33110:164::-;33207:4;33231:18;:25;33250:5;33231:25;;;;;;;;;;;;;;;:35;33257:8;33231:35;;;;;;;;;;;;;;;;;;;;;;;;;33224:42;;33110:164;;;;:::o;28287:192::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28396:1:::1;28376:22;;:8;:22;;;;28368:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28452:19;28462:8;28452:9;:19::i;:::-;28287:192:::0;:::o;50280:83::-;27718:12;:10;:12::i;:::-;27707:23;;:7;:5;:7::i;:::-;:23;;;27699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50347:8:::1;;;;;;;;;;;50346:9;50335:8;;:20;;;;;;;;;;;;;;;;;;50280:83::o:0;29952:305::-;30054:4;30106:25;30091:40;;;:11;:40;;;;:105;;;;30163:33;30148:48;;;:11;:48;;;;30091:105;:158;;;;30213:36;30237:11;30213:23;:36::i;:::-;30091:158;30071:178;;29952:305;;;:::o;35845:127::-;35910:4;35962:1;35934:30;;:7;:16;35942:7;35934:16;;;;;;;;;;;;;;;;;;;;;:30;;;;35927:37;;35845:127;;;:::o;26238:98::-;26291:7;26318:10;26311:17;;26238:98;:::o;39827:174::-;39929:2;39902:15;:24;39918:7;39902:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;39985:7;39981:2;39947:46;;39956:23;39971:7;39956:14;:23::i;:::-;39947:46;;;;;;;;;;;;39827:174;;:::o;36139:348::-;36232:4;36257:16;36265:7;36257;:16::i;:::-;36249:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;36333:13;36349:23;36364:7;36349:14;:23::i;:::-;36333:39;;36402:5;36391:16;;:7;:16;;;:51;;;;36435:7;36411:31;;:20;36423:7;36411:11;:20::i;:::-;:31;;;36391:51;:87;;;;36446:32;36463:5;36470:7;36446:16;:32::i;:::-;36391:87;36383:96;;;36139:348;;;;:::o;39131:578::-;39290:4;39263:31;;:23;39278:7;39263:14;:23::i;:::-;:31;;;39255:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;39373:1;39359:16;;:2;:16;;;;39351:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;39429:39;39450:4;39456:2;39460:7;39429:20;:39::i;:::-;39533:29;39550:1;39554:7;39533:8;:29::i;:::-;39594:1;39575:9;:15;39585:4;39575:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;39623:1;39606:9;:13;39616:2;39606:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;39654:2;39635:7;:16;39643:7;39635:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;39693:7;39689:2;39674:27;;39683:4;39674:27;;;;;;;;;;;;39131:578;;;:::o;3572:98::-;3630:7;3661:1;3657;:5;;;;:::i;:::-;3650:12;;3572:98;;;;:::o;53007:89::-;53052:4;53081:7;;53074:14;;53007:89;:::o;36829:110::-;36905:26;36915:2;36919:7;36905:26;;;;;;;;;;;;:9;:26::i;:::-;36829:110;;:::o;35217:315::-;35374:28;35384:4;35390:2;35394:7;35374:9;:28::i;:::-;35421:48;35444:4;35450:2;35454:7;35463:5;35421:22;:48::i;:::-;35413:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;35217:315;;;;:::o;31813:99::-;31863:13;31896:8;31889:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31813:99;:::o;7252:723::-;7308:13;7538:1;7529:5;:10;7525:53;;;7556:10;;;;;;;;;;;;;;;;;;;;;7525:53;7588:12;7603:5;7588:20;;7619:14;7644:78;7659:1;7651:4;:9;7644:78;;7677:8;;;;;:::i;:::-;;;;7708:2;7700:10;;;;;:::i;:::-;;;7644:78;;;7732:19;7764:6;7754:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7732:39;;7782:154;7798:1;7789:5;:10;7782:154;;7826:1;7816:11;;;;;:::i;:::-;;;7893:2;7885:5;:10;;;;:::i;:::-;7872:2;:24;;;;:::i;:::-;7859:39;;7842:6;7849;7842:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;7922:2;7913:11;;;;;:::i;:::-;;;7782:154;;;7960:6;7946:21;;;;;7252:723;;;;:::o;28487:173::-;28543:16;28562:6;;;;;;;;;;;28543:25;;28588:8;28579:6;;:17;;;;;;;;;;;;;;;;;;28643:8;28612:40;;28633:8;28612:40;;;;;;;;;;;;28532:128;28487:173;:::o;19224:157::-;19309:4;19348:25;19333:40;;;:11;:40;;;;19326:47;;19224:157;;;:::o;44591:589::-;44735:45;44762:4;44768:2;44772:7;44735:26;:45::i;:::-;44813:1;44797:18;;:4;:18;;;44793:187;;;44832:40;44864:7;44832:31;:40::i;:::-;44793:187;;;44902:2;44894:10;;:4;:10;;;44890:90;;44921:47;44954:4;44960:7;44921:32;:47::i;:::-;44890:90;44793:187;45008:1;44994:16;;:2;:16;;;44990:183;;;45027:45;45064:7;45027:36;:45::i;:::-;44990:183;;;45100:4;45094:10;;:2;:10;;;45090:83;;45121:40;45149:2;45153:7;45121:27;:40::i;:::-;45090:83;44990:183;44591:589;;;:::o;37166:321::-;37296:18;37302:2;37306:7;37296:5;:18::i;:::-;37347:54;37378:1;37382:2;37386:7;37395:5;37347:22;:54::i;:::-;37325:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;37166:321;;;:::o;40566:803::-;40721:4;40742:15;:2;:13;;;:15::i;:::-;40738:624;;;40794:2;40778:36;;;40815:12;:10;:12::i;:::-;40829:4;40835:7;40844:5;40778:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;40774:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41041:1;41024:6;:13;:18;41020:272;;;41067:60;;;;;;;;;;:::i;:::-;;;;;;;;41020:272;41242:6;41236:13;41227:6;41223:2;41219:15;41212:38;40774:533;40911:45;;;40901:55;;;:6;:55;;;;40894:62;;;;;40738:624;41346:4;41339:11;;40566:803;;;;;;;:::o;41941:126::-;;;;:::o;45903:164::-;46007:10;:17;;;;45980:15;:24;45996:7;45980:24;;;;;;;;;;;:44;;;;46035:10;46051:7;46035:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45903:164;:::o;46694:988::-;46960:22;47010:1;46985:22;47002:4;46985:16;:22::i;:::-;:26;;;;:::i;:::-;46960:51;;47022:18;47043:17;:26;47061:7;47043:26;;;;;;;;;;;;47022:47;;47190:14;47176:10;:28;47172:328;;47221:19;47243:12;:18;47256:4;47243:18;;;;;;;;;;;;;;;:34;47262:14;47243:34;;;;;;;;;;;;47221:56;;47327:11;47294:12;:18;47307:4;47294:18;;;;;;;;;;;;;;;:30;47313:10;47294:30;;;;;;;;;;;:44;;;;47444:10;47411:17;:30;47429:11;47411:30;;;;;;;;;;;:43;;;;47206:294;47172:328;47596:17;:26;47614:7;47596:26;;;;;;;;;;;47589:33;;;47640:12;:18;47653:4;47640:18;;;;;;;;;;;;;;;:34;47659:14;47640:34;;;;;;;;;;;47633:41;;;46775:907;;46694:988;;:::o;47977:1079::-;48230:22;48275:1;48255:10;:17;;;;:21;;;;:::i;:::-;48230:46;;48287:18;48308:15;:24;48324:7;48308:24;;;;;;;;;;;;48287:45;;48659:19;48681:10;48692:14;48681:26;;;;;;;;:::i;:::-;;;;;;;;;;48659:48;;48745:11;48720:10;48731;48720:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;48856:10;48825:15;:28;48841:11;48825:28;;;;;;;;;;;:41;;;;48997:15;:24;49013:7;48997:24;;;;;;;;;;;48990:31;;;49032:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48048:1008;;;47977:1079;:::o;45481:221::-;45566:14;45583:20;45600:2;45583:16;:20::i;:::-;45566:37;;45641:7;45614:12;:16;45627:2;45614:16;;;;;;;;;;;;;;;:24;45631:6;45614:24;;;;;;;;;;;:34;;;;45688:6;45659:17;:26;45677:7;45659:26;;;;;;;;;;;:35;;;;45555:147;45481:221;;:::o;37823:382::-;37917:1;37903:16;;:2;:16;;;;37895:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;37976:16;37984:7;37976;:16::i;:::-;37975:17;37967:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;38038:45;38067:1;38071:2;38075:7;38038:20;:45::i;:::-;38113:1;38096:9;:13;38106:2;38096:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;38144:2;38125:7;:16;38133:7;38125:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;38189:7;38185:2;38164:33;;38181:1;38164:33;;;;;;;;;;;;37823:382;;:::o;9719:387::-;9779:4;9987:12;10054:7;10042:20;10034:28;;10097:1;10090:4;:8;10083:15;;;9719:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:474::-;2680:6;2688;2737:2;2725:9;2716:7;2712:23;2708:32;2705:119;;;2743:79;;:::i;:::-;2705:119;2863:1;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2834:117;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2612:474;;;;;:::o;3092:619::-;3169:6;3177;3185;3234:2;3222:9;3213:7;3209:23;3205:32;3202:119;;;3240:79;;:::i;:::-;3202:119;3360:1;3385:53;3430:7;3421:6;3410:9;3406:22;3385:53;:::i;:::-;3375:63;;3331:117;3487:2;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;:::i;:::-;3503:63;;3458:118;3615:2;3641:53;3686:7;3677:6;3666:9;3662:22;3641:53;:::i;:::-;3631:63;;3586:118;3092:619;;;;;:::o;3717:943::-;3812:6;3820;3828;3836;3885:3;3873:9;3864:7;3860:23;3856:33;3853:120;;;3892:79;;:::i;:::-;3853:120;4012:1;4037:53;4082:7;4073:6;4062:9;4058:22;4037:53;:::i;:::-;4027:63;;3983:117;4139:2;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;:::i;:::-;4155:63;;4110:118;4267:2;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4238:118;4423:2;4412:9;4408:18;4395:32;4454:18;4446:6;4443:30;4440:117;;;4476:79;;:::i;:::-;4440:117;4581:62;4635:7;4626:6;4615:9;4611:22;4581:62;:::i;:::-;4571:72;;4366:287;3717:943;;;;;;;:::o;4666:468::-;4731:6;4739;4788:2;4776:9;4767:7;4763:23;4759:32;4756:119;;;4794:79;;:::i;:::-;4756:119;4914:1;4939:53;4984:7;4975:6;4964:9;4960:22;4939:53;:::i;:::-;4929:63;;4885:117;5041:2;5067:50;5109:7;5100:6;5089:9;5085:22;5067:50;:::i;:::-;5057:60;;5012:115;4666:468;;;;;:::o;5140:474::-;5208:6;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5140:474;;;;;:::o;5620:327::-;5678:6;5727:2;5715:9;5706:7;5702:23;5698:32;5695:119;;;5733:79;;:::i;:::-;5695:119;5853:1;5878:52;5922:7;5913:6;5902:9;5898:22;5878:52;:::i;:::-;5868:62;;5824:116;5620:327;;;;:::o;5953:349::-;6022:6;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:63;6277:7;6268:6;6257:9;6253:22;6222:63;:::i;:::-;6212:73;;6168:127;5953:349;;;;:::o;6308:509::-;6377:6;6426:2;6414:9;6405:7;6401:23;6397:32;6394:119;;;6432:79;;:::i;:::-;6394:119;6580:1;6569:9;6565:17;6552:31;6610:18;6602:6;6599:30;6596:117;;;6632:79;;:::i;:::-;6596:117;6737:63;6792:7;6783:6;6772:9;6768:22;6737:63;:::i;:::-;6727:73;;6523:287;6308:509;;;;:::o;6823:329::-;6882:6;6931:2;6919:9;6910:7;6906:23;6902:32;6899:119;;;6937:79;;:::i;:::-;6899:119;7057:1;7082:53;7127:7;7118:6;7107:9;7103:22;7082:53;:::i;:::-;7072:63;;7028:117;6823:329;;;;:::o;7158:179::-;7227:10;7248:46;7290:3;7282:6;7248:46;:::i;:::-;7326:4;7321:3;7317:14;7303:28;;7158:179;;;;:::o;7343:118::-;7430:24;7448:5;7430:24;:::i;:::-;7425:3;7418:37;7343:118;;:::o;7497:732::-;7616:3;7645:54;7693:5;7645:54;:::i;:::-;7715:86;7794:6;7789:3;7715:86;:::i;:::-;7708:93;;7825:56;7875:5;7825:56;:::i;:::-;7904:7;7935:1;7920:284;7945:6;7942:1;7939:13;7920:284;;;8021:6;8015:13;8048:63;8107:3;8092:13;8048:63;:::i;:::-;8041:70;;8134:60;8187:6;8134:60;:::i;:::-;8124:70;;7980:224;7967:1;7964;7960:9;7955:14;;7920:284;;;7924:14;8220:3;8213:10;;7621:608;;;7497:732;;;;:::o;8235:109::-;8316:21;8331:5;8316:21;:::i;:::-;8311:3;8304:34;8235:109;;:::o;8350:360::-;8436:3;8464:38;8496:5;8464:38;:::i;:::-;8518:70;8581:6;8576:3;8518:70;:::i;:::-;8511:77;;8597:52;8642:6;8637:3;8630:4;8623:5;8619:16;8597:52;:::i;:::-;8674:29;8696:6;8674:29;:::i;:::-;8669:3;8665:39;8658:46;;8440:270;8350:360;;;;:::o;8716:364::-;8804:3;8832:39;8865:5;8832:39;:::i;:::-;8887:71;8951:6;8946:3;8887:71;:::i;:::-;8880:78;;8967:52;9012:6;9007:3;9000:4;8993:5;8989:16;8967:52;:::i;:::-;9044:29;9066:6;9044:29;:::i;:::-;9039:3;9035:39;9028:46;;8808:272;8716:364;;;;:::o;9086:377::-;9192:3;9220:39;9253:5;9220:39;:::i;:::-;9275:89;9357:6;9352:3;9275:89;:::i;:::-;9268:96;;9373:52;9418:6;9413:3;9406:4;9399:5;9395:16;9373:52;:::i;:::-;9450:6;9445:3;9441:16;9434:23;;9196:267;9086:377;;;;:::o;9469:366::-;9611:3;9632:67;9696:2;9691:3;9632:67;:::i;:::-;9625:74;;9708:93;9797:3;9708:93;:::i;:::-;9826:2;9821:3;9817:12;9810:19;;9469:366;;;:::o;9841:::-;9983:3;10004:67;10068:2;10063:3;10004:67;:::i;:::-;9997:74;;10080:93;10169:3;10080:93;:::i;:::-;10198:2;10193:3;10189:12;10182:19;;9841:366;;;:::o;10213:::-;10355:3;10376:67;10440:2;10435:3;10376:67;:::i;:::-;10369:74;;10452:93;10541:3;10452:93;:::i;:::-;10570:2;10565:3;10561:12;10554:19;;10213:366;;;:::o;10585:::-;10727:3;10748:67;10812:2;10807:3;10748:67;:::i;:::-;10741:74;;10824:93;10913:3;10824:93;:::i;:::-;10942:2;10937:3;10933:12;10926:19;;10585:366;;;:::o;10957:::-;11099:3;11120:67;11184:2;11179:3;11120:67;:::i;:::-;11113:74;;11196:93;11285:3;11196:93;:::i;:::-;11314:2;11309:3;11305:12;11298:19;;10957:366;;;:::o;11329:::-;11471:3;11492:67;11556:2;11551:3;11492:67;:::i;:::-;11485:74;;11568:93;11657:3;11568:93;:::i;:::-;11686:2;11681:3;11677:12;11670:19;;11329:366;;;:::o;11701:::-;11843:3;11864:67;11928:2;11923:3;11864:67;:::i;:::-;11857:74;;11940:93;12029:3;11940:93;:::i;:::-;12058:2;12053:3;12049:12;12042:19;;11701:366;;;:::o;12073:::-;12215:3;12236:67;12300:2;12295:3;12236:67;:::i;:::-;12229:74;;12312:93;12401:3;12312:93;:::i;:::-;12430:2;12425:3;12421:12;12414:19;;12073:366;;;:::o;12445:::-;12587:3;12608:67;12672:2;12667:3;12608:67;:::i;:::-;12601:74;;12684:93;12773:3;12684:93;:::i;:::-;12802:2;12797:3;12793:12;12786:19;;12445:366;;;:::o;12817:::-;12959:3;12980:67;13044:2;13039:3;12980:67;:::i;:::-;12973:74;;13056:93;13145:3;13056:93;:::i;:::-;13174:2;13169:3;13165:12;13158:19;;12817:366;;;:::o;13189:::-;13331:3;13352:67;13416:2;13411:3;13352:67;:::i;:::-;13345:74;;13428:93;13517:3;13428:93;:::i;:::-;13546:2;13541:3;13537:12;13530:19;;13189:366;;;:::o;13561:::-;13703:3;13724:67;13788:2;13783:3;13724:67;:::i;:::-;13717:74;;13800:93;13889:3;13800:93;:::i;:::-;13918:2;13913:3;13909:12;13902:19;;13561:366;;;:::o;13933:::-;14075:3;14096:67;14160:2;14155:3;14096:67;:::i;:::-;14089:74;;14172:93;14261:3;14172:93;:::i;:::-;14290:2;14285:3;14281:12;14274:19;;13933:366;;;:::o;14305:::-;14447:3;14468:67;14532:2;14527:3;14468:67;:::i;:::-;14461:74;;14544:93;14633:3;14544:93;:::i;:::-;14662:2;14657:3;14653:12;14646:19;;14305:366;;;:::o;14677:::-;14819:3;14840:67;14904:2;14899:3;14840:67;:::i;:::-;14833:74;;14916:93;15005:3;14916:93;:::i;:::-;15034:2;15029:3;15025:12;15018:19;;14677:366;;;:::o;15049:365::-;15191:3;15212:66;15276:1;15271:3;15212:66;:::i;:::-;15205:73;;15287:93;15376:3;15287:93;:::i;:::-;15405:2;15400:3;15396:12;15389:19;;15049:365;;;:::o;15420:366::-;15562:3;15583:67;15647:2;15642:3;15583:67;:::i;:::-;15576:74;;15659:93;15748:3;15659:93;:::i;:::-;15777:2;15772:3;15768:12;15761:19;;15420:366;;;:::o;15792:::-;15934:3;15955:67;16019:2;16014:3;15955:67;:::i;:::-;15948:74;;16031:93;16120:3;16031:93;:::i;:::-;16149:2;16144:3;16140:12;16133:19;;15792:366;;;:::o;16164:::-;16306:3;16327:67;16391:2;16386:3;16327:67;:::i;:::-;16320:74;;16403:93;16492:3;16403:93;:::i;:::-;16521:2;16516:3;16512:12;16505:19;;16164:366;;;:::o;16536:::-;16678:3;16699:67;16763:2;16758:3;16699:67;:::i;:::-;16692:74;;16775:93;16864:3;16775:93;:::i;:::-;16893:2;16888:3;16884:12;16877:19;;16536:366;;;:::o;16908:::-;17050:3;17071:67;17135:2;17130:3;17071:67;:::i;:::-;17064:74;;17147:93;17236:3;17147:93;:::i;:::-;17265:2;17260:3;17256:12;17249:19;;16908:366;;;:::o;17280:::-;17422:3;17443:67;17507:2;17502:3;17443:67;:::i;:::-;17436:74;;17519:93;17608:3;17519:93;:::i;:::-;17637:2;17632:3;17628:12;17621:19;;17280:366;;;:::o;17652:::-;17794:3;17815:67;17879:2;17874:3;17815:67;:::i;:::-;17808:74;;17891:93;17980:3;17891:93;:::i;:::-;18009:2;18004:3;18000:12;17993:19;;17652:366;;;:::o;18024:::-;18166:3;18187:67;18251:2;18246:3;18187:67;:::i;:::-;18180:74;;18263:93;18352:3;18263:93;:::i;:::-;18381:2;18376:3;18372:12;18365:19;;18024:366;;;:::o;18396:::-;18538:3;18559:67;18623:2;18618:3;18559:67;:::i;:::-;18552:74;;18635:93;18724:3;18635:93;:::i;:::-;18753:2;18748:3;18744:12;18737:19;;18396:366;;;:::o;18768:::-;18910:3;18931:67;18995:2;18990:3;18931:67;:::i;:::-;18924:74;;19007:93;19096:3;19007:93;:::i;:::-;19125:2;19120:3;19116:12;19109:19;;18768:366;;;:::o;19140:108::-;19217:24;19235:5;19217:24;:::i;:::-;19212:3;19205:37;19140:108;;:::o;19254:118::-;19341:24;19359:5;19341:24;:::i;:::-;19336:3;19329:37;19254:118;;:::o;19378:435::-;19558:3;19580:95;19671:3;19662:6;19580:95;:::i;:::-;19573:102;;19692:95;19783:3;19774:6;19692:95;:::i;:::-;19685:102;;19804:3;19797:10;;19378:435;;;;;:::o;19819:222::-;19912:4;19950:2;19939:9;19935:18;19927:26;;19963:71;20031:1;20020:9;20016:17;20007:6;19963:71;:::i;:::-;19819:222;;;;:::o;20047:640::-;20242:4;20280:3;20269:9;20265:19;20257:27;;20294:71;20362:1;20351:9;20347:17;20338:6;20294:71;:::i;:::-;20375:72;20443:2;20432:9;20428:18;20419:6;20375:72;:::i;:::-;20457;20525:2;20514:9;20510:18;20501:6;20457:72;:::i;:::-;20576:9;20570:4;20566:20;20561:2;20550:9;20546:18;20539:48;20604:76;20675:4;20666:6;20604:76;:::i;:::-;20596:84;;20047:640;;;;;;;:::o;20693:373::-;20836:4;20874:2;20863:9;20859:18;20851:26;;20923:9;20917:4;20913:20;20909:1;20898:9;20894:17;20887:47;20951:108;21054:4;21045:6;20951:108;:::i;:::-;20943:116;;20693:373;;;;:::o;21072:210::-;21159:4;21197:2;21186:9;21182:18;21174:26;;21210:65;21272:1;21261:9;21257:17;21248:6;21210:65;:::i;:::-;21072:210;;;;:::o;21288:313::-;21401:4;21439:2;21428:9;21424:18;21416:26;;21488:9;21482:4;21478:20;21474:1;21463:9;21459:17;21452:47;21516:78;21589:4;21580:6;21516:78;:::i;:::-;21508:86;;21288:313;;;;:::o;21607:419::-;21773:4;21811:2;21800:9;21796:18;21788:26;;21860:9;21854:4;21850:20;21846:1;21835:9;21831:17;21824:47;21888:131;22014:4;21888:131;:::i;:::-;21880:139;;21607:419;;;:::o;22032:::-;22198:4;22236:2;22225:9;22221:18;22213:26;;22285:9;22279:4;22275:20;22271:1;22260:9;22256:17;22249:47;22313:131;22439:4;22313:131;:::i;:::-;22305:139;;22032:419;;;:::o;22457:::-;22623:4;22661:2;22650:9;22646:18;22638:26;;22710:9;22704:4;22700:20;22696:1;22685:9;22681:17;22674:47;22738:131;22864:4;22738:131;:::i;:::-;22730:139;;22457:419;;;:::o;22882:::-;23048:4;23086:2;23075:9;23071:18;23063:26;;23135:9;23129:4;23125:20;23121:1;23110:9;23106:17;23099:47;23163:131;23289:4;23163:131;:::i;:::-;23155:139;;22882:419;;;:::o;23307:::-;23473:4;23511:2;23500:9;23496:18;23488:26;;23560:9;23554:4;23550:20;23546:1;23535:9;23531:17;23524:47;23588:131;23714:4;23588:131;:::i;:::-;23580:139;;23307:419;;;:::o;23732:::-;23898:4;23936:2;23925:9;23921:18;23913:26;;23985:9;23979:4;23975:20;23971:1;23960:9;23956:17;23949:47;24013:131;24139:4;24013:131;:::i;:::-;24005:139;;23732:419;;;:::o;24157:::-;24323:4;24361:2;24350:9;24346:18;24338:26;;24410:9;24404:4;24400:20;24396:1;24385:9;24381:17;24374:47;24438:131;24564:4;24438:131;:::i;:::-;24430:139;;24157:419;;;:::o;24582:::-;24748:4;24786:2;24775:9;24771:18;24763:26;;24835:9;24829:4;24825:20;24821:1;24810:9;24806:17;24799:47;24863:131;24989:4;24863:131;:::i;:::-;24855:139;;24582:419;;;:::o;25007:::-;25173:4;25211:2;25200:9;25196:18;25188:26;;25260:9;25254:4;25250:20;25246:1;25235:9;25231:17;25224:47;25288:131;25414:4;25288:131;:::i;:::-;25280:139;;25007:419;;;:::o;25432:::-;25598:4;25636:2;25625:9;25621:18;25613:26;;25685:9;25679:4;25675:20;25671:1;25660:9;25656:17;25649:47;25713:131;25839:4;25713:131;:::i;:::-;25705:139;;25432:419;;;:::o;25857:::-;26023:4;26061:2;26050:9;26046:18;26038:26;;26110:9;26104:4;26100:20;26096:1;26085:9;26081:17;26074:47;26138:131;26264:4;26138:131;:::i;:::-;26130:139;;25857:419;;;:::o;26282:::-;26448:4;26486:2;26475:9;26471:18;26463:26;;26535:9;26529:4;26525:20;26521:1;26510:9;26506:17;26499:47;26563:131;26689:4;26563:131;:::i;:::-;26555:139;;26282:419;;;:::o;26707:::-;26873:4;26911:2;26900:9;26896:18;26888:26;;26960:9;26954:4;26950:20;26946:1;26935:9;26931:17;26924:47;26988:131;27114:4;26988:131;:::i;:::-;26980:139;;26707:419;;;:::o;27132:::-;27298:4;27336:2;27325:9;27321:18;27313:26;;27385:9;27379:4;27375:20;27371:1;27360:9;27356:17;27349:47;27413:131;27539:4;27413:131;:::i;:::-;27405:139;;27132:419;;;:::o;27557:::-;27723:4;27761:2;27750:9;27746:18;27738:26;;27810:9;27804:4;27800:20;27796:1;27785:9;27781:17;27774:47;27838:131;27964:4;27838:131;:::i;:::-;27830:139;;27557:419;;;:::o;27982:::-;28148:4;28186:2;28175:9;28171:18;28163:26;;28235:9;28229:4;28225:20;28221:1;28210:9;28206:17;28199:47;28263:131;28389:4;28263:131;:::i;:::-;28255:139;;27982:419;;;:::o;28407:::-;28573:4;28611:2;28600:9;28596:18;28588:26;;28660:9;28654:4;28650:20;28646:1;28635:9;28631:17;28624:47;28688:131;28814:4;28688:131;:::i;:::-;28680:139;;28407:419;;;:::o;28832:::-;28998:4;29036:2;29025:9;29021:18;29013:26;;29085:9;29079:4;29075:20;29071:1;29060:9;29056:17;29049:47;29113:131;29239:4;29113:131;:::i;:::-;29105:139;;28832:419;;;:::o;29257:::-;29423:4;29461:2;29450:9;29446:18;29438:26;;29510:9;29504:4;29500:20;29496:1;29485:9;29481:17;29474:47;29538:131;29664:4;29538:131;:::i;:::-;29530:139;;29257:419;;;:::o;29682:::-;29848:4;29886:2;29875:9;29871:18;29863:26;;29935:9;29929:4;29925:20;29921:1;29910:9;29906:17;29899:47;29963:131;30089:4;29963:131;:::i;:::-;29955:139;;29682:419;;;:::o;30107:::-;30273:4;30311:2;30300:9;30296:18;30288:26;;30360:9;30354:4;30350:20;30346:1;30335:9;30331:17;30324:47;30388:131;30514:4;30388:131;:::i;:::-;30380:139;;30107:419;;;:::o;30532:::-;30698:4;30736:2;30725:9;30721:18;30713:26;;30785:9;30779:4;30775:20;30771:1;30760:9;30756:17;30749:47;30813:131;30939:4;30813:131;:::i;:::-;30805:139;;30532:419;;;:::o;30957:::-;31123:4;31161:2;31150:9;31146:18;31138:26;;31210:9;31204:4;31200:20;31196:1;31185:9;31181:17;31174:47;31238:131;31364:4;31238:131;:::i;:::-;31230:139;;30957:419;;;:::o;31382:::-;31548:4;31586:2;31575:9;31571:18;31563:26;;31635:9;31629:4;31625:20;31621:1;31610:9;31606:17;31599:47;31663:131;31789:4;31663:131;:::i;:::-;31655:139;;31382:419;;;:::o;31807:::-;31973:4;32011:2;32000:9;31996:18;31988:26;;32060:9;32054:4;32050:20;32046:1;32035:9;32031:17;32024:47;32088:131;32214:4;32088:131;:::i;:::-;32080:139;;31807:419;;;:::o;32232:::-;32398:4;32436:2;32425:9;32421:18;32413:26;;32485:9;32479:4;32475:20;32471:1;32460:9;32456:17;32449:47;32513:131;32639:4;32513:131;:::i;:::-;32505:139;;32232:419;;;:::o;32657:222::-;32750:4;32788:2;32777:9;32773:18;32765:26;;32801:71;32869:1;32858:9;32854:17;32845:6;32801:71;:::i;:::-;32657:222;;;;:::o;32885:129::-;32919:6;32946:20;;:::i;:::-;32936:30;;32975:33;33003:4;32995:6;32975:33;:::i;:::-;32885:129;;;:::o;33020:75::-;33053:6;33086:2;33080:9;33070:19;;33020:75;:::o;33101:307::-;33162:4;33252:18;33244:6;33241:30;33238:56;;;33274:18;;:::i;:::-;33238:56;33312:29;33334:6;33312:29;:::i;:::-;33304:37;;33396:4;33390;33386:15;33378:23;;33101:307;;;:::o;33414:308::-;33476:4;33566:18;33558:6;33555:30;33552:56;;;33588:18;;:::i;:::-;33552:56;33626:29;33648:6;33626:29;:::i;:::-;33618:37;;33710:4;33704;33700:15;33692:23;;33414:308;;;:::o;33728:132::-;33795:4;33818:3;33810:11;;33848:4;33843:3;33839:14;33831:22;;33728:132;;;:::o;33866:114::-;33933:6;33967:5;33961:12;33951:22;;33866:114;;;:::o;33986:98::-;34037:6;34071:5;34065:12;34055:22;;33986:98;;;:::o;34090:99::-;34142:6;34176:5;34170:12;34160:22;;34090:99;;;:::o;34195:113::-;34265:4;34297;34292:3;34288:14;34280:22;;34195:113;;;:::o;34314:184::-;34413:11;34447:6;34442:3;34435:19;34487:4;34482:3;34478:14;34463:29;;34314:184;;;;:::o;34504:168::-;34587:11;34621:6;34616:3;34609:19;34661:4;34656:3;34652:14;34637:29;;34504:168;;;;:::o;34678:169::-;34762:11;34796:6;34791:3;34784:19;34836:4;34831:3;34827:14;34812:29;;34678:169;;;;:::o;34853:148::-;34955:11;34992:3;34977:18;;34853:148;;;;:::o;35007:305::-;35047:3;35066:20;35084:1;35066:20;:::i;:::-;35061:25;;35100:20;35118:1;35100:20;:::i;:::-;35095:25;;35254:1;35186:66;35182:74;35179:1;35176:81;35173:107;;;35260:18;;:::i;:::-;35173:107;35304:1;35301;35297:9;35290:16;;35007:305;;;;:::o;35318:185::-;35358:1;35375:20;35393:1;35375:20;:::i;:::-;35370:25;;35409:20;35427:1;35409:20;:::i;:::-;35404:25;;35448:1;35438:35;;35453:18;;:::i;:::-;35438:35;35495:1;35492;35488:9;35483:14;;35318:185;;;;:::o;35509:348::-;35549:7;35572:20;35590:1;35572:20;:::i;:::-;35567:25;;35606:20;35624:1;35606:20;:::i;:::-;35601:25;;35794:1;35726:66;35722:74;35719:1;35716:81;35711:1;35704:9;35697:17;35693:105;35690:131;;;35801:18;;:::i;:::-;35690:131;35849:1;35846;35842:9;35831:20;;35509:348;;;;:::o;35863:191::-;35903:4;35923:20;35941:1;35923:20;:::i;:::-;35918:25;;35957:20;35975:1;35957:20;:::i;:::-;35952:25;;35996:1;35993;35990:8;35987:34;;;36001:18;;:::i;:::-;35987:34;36046:1;36043;36039:9;36031:17;;35863:191;;;;:::o;36060:96::-;36097:7;36126:24;36144:5;36126:24;:::i;:::-;36115:35;;36060:96;;;:::o;36162:90::-;36196:7;36239:5;36232:13;36225:21;36214:32;;36162:90;;;:::o;36258:149::-;36294:7;36334:66;36327:5;36323:78;36312:89;;36258:149;;;:::o;36413:126::-;36450:7;36490:42;36483:5;36479:54;36468:65;;36413:126;;;:::o;36545:77::-;36582:7;36611:5;36600:16;;36545:77;;;:::o;36628:154::-;36712:6;36707:3;36702;36689:30;36774:1;36765:6;36760:3;36756:16;36749:27;36628:154;;;:::o;36788:307::-;36856:1;36866:113;36880:6;36877:1;36874:13;36866:113;;;36965:1;36960:3;36956:11;36950:18;36946:1;36941:3;36937:11;36930:39;36902:2;36899:1;36895:10;36890:15;;36866:113;;;36997:6;36994:1;36991:13;36988:101;;;37077:1;37068:6;37063:3;37059:16;37052:27;36988:101;36837:258;36788:307;;;:::o;37101:320::-;37145:6;37182:1;37176:4;37172:12;37162:22;;37229:1;37223:4;37219:12;37250:18;37240:81;;37306:4;37298:6;37294:17;37284:27;;37240:81;37368:2;37360:6;37357:14;37337:18;37334:38;37331:84;;;37387:18;;:::i;:::-;37331:84;37152:269;37101:320;;;:::o;37427:281::-;37510:27;37532:4;37510:27;:::i;:::-;37502:6;37498:40;37640:6;37628:10;37625:22;37604:18;37592:10;37589:34;37586:62;37583:88;;;37651:18;;:::i;:::-;37583:88;37691:10;37687:2;37680:22;37470:238;37427:281;;:::o;37714:233::-;37753:3;37776:24;37794:5;37776:24;:::i;:::-;37767:33;;37822:66;37815:5;37812:77;37809:103;;;37892:18;;:::i;:::-;37809:103;37939:1;37932:5;37928:13;37921:20;;37714:233;;;:::o;37953:176::-;37985:1;38002:20;38020:1;38002:20;:::i;:::-;37997:25;;38036:20;38054:1;38036:20;:::i;:::-;38031:25;;38075:1;38065:35;;38080:18;;:::i;:::-;38065:35;38121:1;38118;38114:9;38109:14;;37953:176;;;;:::o;38135:180::-;38183:77;38180:1;38173:88;38280:4;38277:1;38270:15;38304:4;38301:1;38294:15;38321:180;38369:77;38366:1;38359:88;38466:4;38463:1;38456:15;38490:4;38487:1;38480:15;38507:180;38555:77;38552:1;38545:88;38652:4;38649:1;38642:15;38676:4;38673:1;38666:15;38693:180;38741:77;38738:1;38731:88;38838:4;38835:1;38828:15;38862:4;38859:1;38852:15;38879:180;38927:77;38924:1;38917:88;39024:4;39021:1;39014:15;39048:4;39045:1;39038:15;39065:180;39113:77;39110:1;39103:88;39210:4;39207:1;39200:15;39234:4;39231:1;39224:15;39251:117;39360:1;39357;39350:12;39374:117;39483:1;39480;39473:12;39497:117;39606:1;39603;39596:12;39620:117;39729:1;39726;39719:12;39743:102;39784:6;39835:2;39831:7;39826:2;39819:5;39815:14;39811:28;39801:38;;39743:102;;;:::o;39851:238::-;39991:34;39987:1;39979:6;39975:14;39968:58;40060:21;40055:2;40047:6;40043:15;40036:46;39851:238;:::o;40095:230::-;40235:34;40231:1;40223:6;40219:14;40212:58;40304:13;40299:2;40291:6;40287:15;40280:38;40095:230;:::o;40331:237::-;40471:34;40467:1;40459:6;40455:14;40448:58;40540:20;40535:2;40527:6;40523:15;40516:45;40331:237;:::o;40574:225::-;40714:34;40710:1;40702:6;40698:14;40691:58;40783:8;40778:2;40770:6;40766:15;40759:33;40574:225;:::o;40805:173::-;40945:25;40941:1;40933:6;40929:14;40922:49;40805:173;:::o;40984:178::-;41124:30;41120:1;41112:6;41108:14;41101:54;40984:178;:::o;41168:220::-;41308:34;41304:1;41296:6;41292:14;41285:58;41377:3;41372:2;41364:6;41360:15;41353:28;41168:220;:::o;41394:223::-;41534:34;41530:1;41522:6;41518:14;41511:58;41603:6;41598:2;41590:6;41586:15;41579:31;41394:223;:::o;41623:175::-;41763:27;41759:1;41751:6;41747:14;41740:51;41623:175;:::o;41804:231::-;41944:34;41940:1;41932:6;41928:14;41921:58;42013:14;42008:2;42000:6;41996:15;41989:39;41804:231;:::o;42041:243::-;42181:34;42177:1;42169:6;42165:14;42158:58;42250:26;42245:2;42237:6;42233:15;42226:51;42041:243;:::o;42290:229::-;42430:34;42426:1;42418:6;42414:14;42407:58;42499:12;42494:2;42486:6;42482:15;42475:37;42290:229;:::o;42525:228::-;42665:34;42661:1;42653:6;42649:14;42642:58;42734:11;42729:2;42721:6;42717:15;42710:36;42525:228;:::o;42759:179::-;42899:31;42895:1;42887:6;42883:14;42876:55;42759:179;:::o;42944:182::-;43084:34;43080:1;43072:6;43068:14;43061:58;42944:182;:::o;43132:158::-;43272:10;43268:1;43260:6;43256:14;43249:34;43132:158;:::o;43296:220::-;43436:34;43432:1;43424:6;43420:14;43413:58;43505:3;43500:2;43492:6;43488:15;43481:28;43296:220;:::o;43522:231::-;43662:34;43658:1;43650:6;43646:14;43639:58;43731:14;43726:2;43718:6;43714:15;43707:39;43522:231;:::o;43759:182::-;43899:34;43895:1;43887:6;43883:14;43876:58;43759:182;:::o;43947:225::-;44087:34;44083:1;44075:6;44071:14;44064:58;44156:8;44151:2;44143:6;44139:15;44132:33;43947:225;:::o;44178:228::-;44318:34;44314:1;44306:6;44302:14;44295:58;44387:11;44382:2;44374:6;44370:15;44363:36;44178:228;:::o;44412:234::-;44552:34;44548:1;44540:6;44536:14;44529:58;44621:17;44616:2;44608:6;44604:15;44597:42;44412:234;:::o;44652:220::-;44792:34;44788:1;44780:6;44776:14;44769:58;44861:3;44856:2;44848:6;44844:15;44837:28;44652:220;:::o;44878:236::-;45018:34;45014:1;45006:6;45002:14;44995:58;45087:19;45082:2;45074:6;45070:15;45063:44;44878:236;:::o;45120:231::-;45260:34;45256:1;45248:6;45244:14;45237:58;45329:14;45324:2;45316:6;45312:15;45305:39;45120:231;:::o;45357:182::-;45497:34;45493:1;45485:6;45481:14;45474:58;45357:182;:::o;45545:122::-;45618:24;45636:5;45618:24;:::i;:::-;45611:5;45608:35;45598:63;;45657:1;45654;45647:12;45598:63;45545:122;:::o;45673:116::-;45743:21;45758:5;45743:21;:::i;:::-;45736:5;45733:32;45723:60;;45779:1;45776;45769:12;45723:60;45673:116;:::o;45795:120::-;45867:23;45884:5;45867:23;:::i;:::-;45860:5;45857:34;45847:62;;45905:1;45902;45895:12;45847:62;45795:120;:::o;45921:122::-;45994:24;46012:5;45994:24;:::i;:::-;45987:5;45984:35;45974:63;;46033:1;46030;46023:12;45974:63;45921:122;:::o

Swarm Source

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