ETH Price: $2,271.13 (-0.07%)

Token

CombatGorillas (CGOR)
 

Overview

Max Total Supply

21 CGOR

Holders

2

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
20 CGOR
0x19d0fb6d325d9d29bc7ef6396f07843290932a76
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:
CombatGorillas

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// File: @openzeppelin/contracts/security/ReentrancyGuard.sol


// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

// File: @openzeppelin/contracts/utils/cryptography/MerkleProof.sol


// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

// File: @openzeppelin/contracts/utils/Counters.sol


// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)

pragma solidity ^0.8.0;

/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 */
library Counters {
    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

// File: @openzeppelin/contracts/utils/Strings.sol


// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

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

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

// File: @openzeppelin/contracts/access/Ownable.sol


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

pragma solidity ^0.8.0;


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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/utils/Address.sol


// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @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
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)

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

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

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

// File: @openzeppelin/contracts/utils/introspection/ERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

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

// File: @openzeppelin/contracts/token/ERC721/IERC721.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)

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

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)

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

// File: @openzeppelin/contracts/token/ERC721/ERC721.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)

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;

    /**
     * @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 baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, 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 "";
    }

    /**
     * @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 {
        _setApprovalForAll(_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);

        _afterTokenTransfer(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);

        _afterTokenTransfer(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 from incorrect owner");
        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);

        _afterTokenTransfer(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 Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @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.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 {}

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

// File: contracts/COMBAT.sol



pragma solidity >=0.8.9 <0.9.0;






contract CombatGorillas is ERC721, Ownable, ReentrancyGuard {
    using Strings for uint256;
    using Counters for Counters.Counter;

    Counters.Counter private supply;

    bytes32 public merkleRoot;
    mapping(address => bool) public whitelistClaimed;
    mapping(address => uint256) public addressMintedBalance;
    string public uriPrefix = "";
    string public uriSuffix = ".json";
    string public hiddenMetadataUri;

    uint256 public cost;
    uint256 public maxSupply;
    uint256 public maxMintAmountPerTx;
    uint256 public nftPerAddressLimit = 5;
    bool public paused = true;
    bool public whitelistMintEnabled = false;
    bool public revealed = false;
 

    constructor(
        string memory _tokenName,
        string memory _tokenSymbol,
        uint256 _cost,
        uint256 _maxSupply,
        uint256 _maxMintAmountPerTx,
        string memory _hiddenMetadataUri
    ) ERC721(_tokenName, _tokenSymbol) {
        cost = _cost;
        maxSupply = _maxSupply;
        maxMintAmountPerTx = _maxMintAmountPerTx;
        setHiddenMetadataUri(_hiddenMetadataUri);
    }

    fallback() external payable {}

    receive() external payable {}

    modifier mintCompliance(uint256 _mintAmount) {
          uint256 ownerMintedCount = addressMintedBalance[msg.sender];
          require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "max NFT per address exceeded" );
          require( _mintAmount > 0 && _mintAmount <= maxMintAmountPerTx, "Invalid mint amount!");
          _;
    }

    modifier mintPriceCompliance(uint256 _mintAmount) {
        uint256 ownerMintedCount = addressMintedBalance[msg.sender];
        require(msg.value >= cost * _mintAmount, "Insufficient funds!");
        require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "max NFT per address exceeded");
        _;
    }

    function totalSupply() public view returns (uint256) {
        return supply.current();
    }

    function whitelistMint(uint256 _mintAmount, bytes32[] calldata _merkleProof)
        public
        payable
        mintCompliance(_mintAmount)
        mintPriceCompliance(_mintAmount)
    {
        // Verify whitelist requirements
        require(whitelistMintEnabled, "The whitelist sale is not enabled!");
        require(!whitelistClaimed[msg.sender], "Address already claimed!");
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        require(
            MerkleProof.verify(_merkleProof, merkleRoot, leaf),
            "Invalid proof!"
        );

        whitelistClaimed[msg.sender] = true;
        _mintLoop(msg.sender, _mintAmount);
    }

    function mint(uint256 _mintAmount)
        public
        payable
        mintCompliance(_mintAmount)
        mintPriceCompliance(_mintAmount)
    {
        require(!paused, "The contract is paused!");
        _mintLoop(msg.sender, _mintAmount);
    }

    function mintForAddress(uint256 _mintAmount, address _receiver)
        external
        onlyOwner
    {
        _mintLoop(_receiver, _mintAmount);
    }

    function walletOfOwner(address _owner)
        public
        view
        returns (uint256[] memory)
    {
        uint256 ownerTokenCount = balanceOf(_owner);
        uint256[] memory ownedTokenIds = new uint256[](ownerTokenCount);
        uint256 currentTokenId = 1;
        uint256 ownedTokenIndex = 0;

        while (
            ownedTokenIndex < ownerTokenCount && currentTokenId <= maxSupply
        ) {
            address currentTokenOwner = ownerOf(currentTokenId);

            if (currentTokenOwner == _owner) {
                ownedTokenIds[ownedTokenIndex] = currentTokenId;
                ownedTokenIndex++;
            }
            currentTokenId++;
        }
        return ownedTokenIds;
    }

    function tokenURI(uint256 _tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(_tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

        if (revealed == false) {
            return hiddenMetadataUri;
        }

        string memory currentBaseURI = _baseURI();
        return
            bytes(currentBaseURI).length > 0
                ? string(
                    abi.encodePacked(
                        currentBaseURI,
                        _tokenId.toString(),
                        uriSuffix
                    )
                )
                : "";
    }

    function setRevealed(bool _state) public onlyOwner {
        revealed = _state;
    }

    function setCost(uint256 _cost) public onlyOwner {
        cost = _cost;
    }

    function setMaxMintAmountPerTx(uint256 _maxMintAmountPerTx)
        public
        onlyOwner
    {
        maxMintAmountPerTx = _maxMintAmountPerTx;
    }

    function setHiddenMetadataUri(string memory _hiddenMetadataUri)
        public
        onlyOwner
    {
        hiddenMetadataUri = _hiddenMetadataUri;
    }

    function setUriPrefix(string memory _uriPrefix) public onlyOwner {
        uriPrefix = _uriPrefix;
    }

    function setUriSuffix(string memory _uriSuffix) public onlyOwner {
        uriSuffix = _uriSuffix;
    }

    function setPaused(bool _state) public onlyOwner {
        paused = _state;
    }

    function setMerkleRoot(bytes32 _merkleRoot) public onlyOwner {
        merkleRoot = _merkleRoot;
    }

    function setWhitelistMintEnabled(bool _state) public onlyOwner {
        whitelistMintEnabled = _state;
    }

    function withdraw() public onlyOwner nonReentrant {
     uint256 contractBalance = address(this).balance;
     require(contractBalance > 0, "there is nothing in here");


    // marketing  wallet- 20% of balance
        (bool mkt, ) = payable(0x9919D3EC4e39Fc03B99dEBC7d46A0fEDa8EEe1D0).call{value: contractBalance * 20  / 100}("");
        require(mkt);

    // wildlife fund - 5% of balance 
        (bool wf, ) = payable(0xe55dbd4A71Be822be00B33481A99a880D18D716b).call{value: contractBalance * 5  / 100}("");
         require(wf);

           // dev wallet - 75% of balance
        (bool dev, ) = payable(0x19d0FB6d325d9d29Bc7ef6396F07843290932a76).call{value: address(this).balance }("");
        require(dev);


  }


    function _mintLoop(address _receiver, uint256 _mintAmount) internal {
        for (uint256 i = 0; i < _mintAmount; i++) {
            supply.increment();
            addressMintedBalance[msg.sender]++;
            _safeMint(_receiver, supply.current());
        }
    }

    function _baseURI() internal view virtual override returns (string memory) {
        return uriPrefix;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_tokenName","type":"string"},{"internalType":"string","name":"_tokenSymbol","type":"string"},{"internalType":"uint256","name":"_cost","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_maxMintAmountPerTx","type":"uint256"},{"internalType":"string","name":"_hiddenMetadataUri","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hiddenMetadataUri","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"maxMintAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"mintForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uint256","name":"_cost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_hiddenMetadataUri","type":"string"}],"name":"setHiddenMetadataUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmountPerTx","type":"uint256"}],"name":"setMaxMintAmountPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"setUriPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriSuffix","type":"string"}],"name":"setUriSuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setWhitelistMintEnabled","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":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"whitelistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"whitelistMintEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260405180602001604052806000815250600c90805190602001906200002b92919062000336565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600d90805190602001906200007992919062000336565b5060056012556001601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff0219169083151502179055506000601360026101000a81548160ff021916908315150217905550348015620000dd57600080fd5b50604051620057a8380380620057a88339818101604052810190620001039190620005be565b858581600090805190602001906200011d92919062000336565b5080600190805190602001906200013692919062000336565b505050620001596200014d6200019360201b60201c565b6200019b60201b60201c565b600160078190555083600f81905550826010819055508160118190555062000187816200026160201b60201c565b5050505050506200079f565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002716200019360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002976200030c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e79062000718565b60405180910390fd5b80600e90805190602001906200030892919062000336565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003449062000769565b90600052602060002090601f016020900481019282620003685760008555620003b4565b82601f106200038357805160ff1916838001178555620003b4565b82800160010185558215620003b4579182015b82811115620003b357825182559160200191906001019062000396565b5b509050620003c39190620003c7565b5090565b5b80821115620003e2576000816000905550600101620003c8565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200044f8262000404565b810181811067ffffffffffffffff8211171562000471576200047062000415565b5b80604052505050565b600062000486620003e6565b905062000494828262000444565b919050565b600067ffffffffffffffff821115620004b757620004b662000415565b5b620004c28262000404565b9050602081019050919050565b60005b83811015620004ef578082015181840152602081019050620004d2565b83811115620004ff576000848401525b50505050565b60006200051c620005168462000499565b6200047a565b9050828152602081018484840111156200053b576200053a620003ff565b5b62000548848285620004cf565b509392505050565b600082601f830112620005685762000567620003fa565b5b81516200057a84826020860162000505565b91505092915050565b6000819050919050565b620005988162000583565b8114620005a457600080fd5b50565b600081519050620005b8816200058d565b92915050565b60008060008060008060c08789031215620005de57620005dd620003f0565b5b600087015167ffffffffffffffff811115620005ff57620005fe620003f5565b5b6200060d89828a0162000550565b965050602087015167ffffffffffffffff811115620006315762000630620003f5565b5b6200063f89828a0162000550565b95505060406200065289828a01620005a7565b94505060606200066589828a01620005a7565b93505060806200067889828a01620005a7565b92505060a087015167ffffffffffffffff8111156200069c576200069b620003f5565b5b620006aa89828a0162000550565b9150509295509295509295565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000700602083620006b7565b91506200070d82620006c8565b602082019050919050565b600060208201905081810360008301526200073381620006f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200078257607f821691505b602082108114156200079957620007986200073a565b5b50919050565b614ff980620007af6000396000f3fe60806040526004361061026b5760003560e01c806370a0823111610144578063b767a098116100b6578063d5abeb011161007a578063d5abeb01146108f4578063db4bec441461091f578063e0a808531461095c578063e985e9c514610985578063efbd73f4146109c2578063f2fde38b146109eb57610272565b8063b767a0981461081e578063b88d4fde14610847578063ba7d2c7614610870578063c87b56dd1461089b578063d2cab056146108d857610272565b806394354fd01161010857806394354fd01461072f57806395d89b411461075a578063a0712d6814610785578063a22cb465146107a1578063a45ba8e7146107ca578063b071401b146107f557610272565b806370a082311461065e578063715018a61461069b5780637cb64759146106b25780637ec4a659146106db5780638da5cb5b1461070457610272565b80633ccfd60b116101dd57806351830227116101a1578063518302271461054a5780635503a0e8146105755780635c975abb146105a057806362b99ad4146105cb5780636352211e146105f65780636caede3d1461063357610272565b80633ccfd60b1461047b57806342842e0e14610492578063438b6300146104bb57806344a0d68a146104f85780634fdd43cb1461052157610272565b806316ba10e01161022f57806316ba10e01461036d57806316c38b3c1461039657806318160ddd146103bf57806318cae269146103ea57806323b872dd146104275780632eb4a7ab1461045057610272565b806301ffc9a71461027457806306fdde03146102b1578063081812fc146102dc578063095ea7b31461031957806313faede61461034257610272565b3661027257005b005b34801561028057600080fd5b5061029b60048036038101906102969190613564565b610a14565b6040516102a891906135ac565b60405180910390f35b3480156102bd57600080fd5b506102c6610af6565b6040516102d39190613660565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe91906136b8565b610b88565b6040516103109190613726565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b919061376d565b610c0d565b005b34801561034e57600080fd5b50610357610d25565b60405161036491906137bc565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f919061390c565b610d2b565b005b3480156103a257600080fd5b506103bd60048036038101906103b89190613981565b610dc1565b005b3480156103cb57600080fd5b506103d4610e5a565b6040516103e191906137bc565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c91906139ae565b610e6b565b60405161041e91906137bc565b60405180910390f35b34801561043357600080fd5b5061044e600480360381019061044991906139db565b610e83565b005b34801561045c57600080fd5b50610465610ee3565b6040516104729190613a47565b60405180910390f35b34801561048757600080fd5b50610490610ee9565b005b34801561049e57600080fd5b506104b960048036038101906104b491906139db565b6111d7565b005b3480156104c757600080fd5b506104e260048036038101906104dd91906139ae565b6111f7565b6040516104ef9190613b20565b60405180910390f35b34801561050457600080fd5b5061051f600480360381019061051a91906136b8565b611302565b005b34801561052d57600080fd5b506105486004803603810190610543919061390c565b611388565b005b34801561055657600080fd5b5061055f61141e565b60405161056c91906135ac565b60405180910390f35b34801561058157600080fd5b5061058a611431565b6040516105979190613660565b60405180910390f35b3480156105ac57600080fd5b506105b56114bf565b6040516105c291906135ac565b60405180910390f35b3480156105d757600080fd5b506105e06114d2565b6040516105ed9190613660565b60405180910390f35b34801561060257600080fd5b5061061d600480360381019061061891906136b8565b611560565b60405161062a9190613726565b60405180910390f35b34801561063f57600080fd5b50610648611612565b60405161065591906135ac565b60405180910390f35b34801561066a57600080fd5b50610685600480360381019061068091906139ae565b611625565b60405161069291906137bc565b60405180910390f35b3480156106a757600080fd5b506106b06116dd565b005b3480156106be57600080fd5b506106d960048036038101906106d49190613b6e565b611765565b005b3480156106e757600080fd5b5061070260048036038101906106fd919061390c565b6117eb565b005b34801561071057600080fd5b50610719611881565b6040516107269190613726565b60405180910390f35b34801561073b57600080fd5b506107446118ab565b60405161075191906137bc565b60405180910390f35b34801561076657600080fd5b5061076f6118b1565b60405161077c9190613660565b60405180910390f35b61079f600480360381019061079a91906136b8565b611943565b005b3480156107ad57600080fd5b506107c860048036038101906107c39190613b9b565b611b6f565b005b3480156107d657600080fd5b506107df611b85565b6040516107ec9190613660565b60405180910390f35b34801561080157600080fd5b5061081c600480360381019061081791906136b8565b611c13565b005b34801561082a57600080fd5b5061084560048036038101906108409190613981565b611c99565b005b34801561085357600080fd5b5061086e60048036038101906108699190613c7c565b611d32565b005b34801561087c57600080fd5b50610885611d94565b60405161089291906137bc565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd91906136b8565b611d9a565b6040516108cf9190613660565b60405180910390f35b6108f260048036038101906108ed9190613d5f565b611ef3565b005b34801561090057600080fd5b506109096122be565b60405161091691906137bc565b60405180910390f35b34801561092b57600080fd5b50610946600480360381019061094191906139ae565b6122c4565b60405161095391906135ac565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e9190613981565b6122e4565b005b34801561099157600080fd5b506109ac60048036038101906109a79190613dbf565b61237d565b6040516109b991906135ac565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e49190613dff565b612411565b005b3480156109f757600080fd5b50610a126004803603810190610a0d91906139ae565b61249b565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610adf57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610aef5750610aee82612593565b5b9050919050565b606060008054610b0590613e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3190613e6e565b8015610b7e5780601f10610b5357610100808354040283529160200191610b7e565b820191906000526020600020905b815481529060010190602001808311610b6157829003601f168201915b5050505050905090565b6000610b93826125fd565b610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc990613f12565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c1882611560565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8090613fa4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ca8612669565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd681610cd1612669565b61237d565b5b610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90614036565b60405180910390fd5b610d208383612671565b505050565b600f5481565b610d33612669565b73ffffffffffffffffffffffffffffffffffffffff16610d51611881565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e906140a2565b60405180910390fd5b80600d9080519060200190610dbd929190613455565b5050565b610dc9612669565b73ffffffffffffffffffffffffffffffffffffffff16610de7611881565b73ffffffffffffffffffffffffffffffffffffffff1614610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e34906140a2565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6000610e66600861272a565b905090565b600b6020528060005260406000206000915090505481565b610e94610e8e612669565b82612738565b610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90614134565b60405180910390fd5b610ede838383612816565b505050565b60095481565b610ef1612669565b73ffffffffffffffffffffffffffffffffffffffff16610f0f611881565b73ffffffffffffffffffffffffffffffffffffffff1614610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c906140a2565b60405180910390fd5b60026007541415610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa2906141a0565b60405180910390fd5b6002600781905550600047905060008111610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff29061420c565b60405180910390fd5b6000739919d3ec4e39fc03b99debc7d46a0feda8eee1d073ffffffffffffffffffffffffffffffffffffffff166064601484611037919061425b565b61104191906142e4565b60405161104d90614346565b60006040518083038185875af1925050503d806000811461108a576040519150601f19603f3d011682016040523d82523d6000602084013e61108f565b606091505b505090508061109d57600080fd5b600073e55dbd4a71be822be00b33481a99a880d18d716b73ffffffffffffffffffffffffffffffffffffffff1660646005856110d9919061425b565b6110e391906142e4565b6040516110ef90614346565b60006040518083038185875af1925050503d806000811461112c576040519150601f19603f3d011682016040523d82523d6000602084013e611131565b606091505b505090508061113f57600080fd5b60007319d0fb6d325d9d29bc7ef6396f07843290932a7673ffffffffffffffffffffffffffffffffffffffff164760405161117990614346565b60006040518083038185875af1925050503d80600081146111b6576040519150601f19603f3d011682016040523d82523d6000602084013e6111bb565b606091505b50509050806111c957600080fd5b505050506001600781905550565b6111f283838360405180602001604052806000815250611d32565b505050565b6060600061120483611625565b905060008167ffffffffffffffff811115611222576112216137e1565b5b6040519080825280602002602001820160405280156112505781602001602082028036833780820191505090505b50905060006001905060005b838110801561126d57506010548211155b156112f657600061127d83611560565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112e257828483815181106112c7576112c661435b565b5b60200260200101818152505081806112de9061438a565b9250505b82806112ed9061438a565b9350505061125c565b82945050505050919050565b61130a612669565b73ffffffffffffffffffffffffffffffffffffffff16611328611881565b73ffffffffffffffffffffffffffffffffffffffff161461137e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611375906140a2565b60405180910390fd5b80600f8190555050565b611390612669565b73ffffffffffffffffffffffffffffffffffffffff166113ae611881565b73ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb906140a2565b60405180910390fd5b80600e908051906020019061141a929190613455565b5050565b601360029054906101000a900460ff1681565b600d805461143e90613e6e565b80601f016020809104026020016040519081016040528092919081815260200182805461146a90613e6e565b80156114b75780601f1061148c576101008083540402835291602001916114b7565b820191906000526020600020905b81548152906001019060200180831161149a57829003601f168201915b505050505081565b601360009054906101000a900460ff1681565b600c80546114df90613e6e565b80601f016020809104026020016040519081016040528092919081815260200182805461150b90613e6e565b80156115585780601f1061152d57610100808354040283529160200191611558565b820191906000526020600020905b81548152906001019060200180831161153b57829003601f168201915b505050505081565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160090614445565b60405180910390fd5b80915050919050565b601360019054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d906144d7565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116e5612669565b73ffffffffffffffffffffffffffffffffffffffff16611703611881565b73ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611750906140a2565b60405180910390fd5b6117636000612a7d565b565b61176d612669565b73ffffffffffffffffffffffffffffffffffffffff1661178b611881565b73ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d8906140a2565b60405180910390fd5b8060098190555050565b6117f3612669565b73ffffffffffffffffffffffffffffffffffffffff16611811611881565b73ffffffffffffffffffffffffffffffffffffffff1614611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e906140a2565b60405180910390fd5b80600c908051906020019061187d929190613455565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b6060600180546118c090613e6e565b80601f01602080910402602001604051908101604052809291908181526020018280546118ec90613e6e565b80156119395780601f1061190e57610100808354040283529160200191611939565b820191906000526020600020905b81548152906001019060200180831161191c57829003601f168201915b5050505050905090565b806000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601254828261199791906144f7565b11156119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90614599565b60405180910390fd5b6000821180156119ea57506011548211155b611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2090614605565b60405180910390fd5b826000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081600f54611a7c919061425b565b341015611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab590614671565b60405180910390fd5b6012548282611acd91906144f7565b1115611b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0590614599565b60405180910390fd5b601360009054906101000a900460ff1615611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b55906146dd565b60405180910390fd5b611b683386612b43565b5050505050565b611b81611b7a612669565b8383612bd8565b5050565b600e8054611b9290613e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbe90613e6e565b8015611c0b5780601f10611be057610100808354040283529160200191611c0b565b820191906000526020600020905b815481529060010190602001808311611bee57829003601f168201915b505050505081565b611c1b612669565b73ffffffffffffffffffffffffffffffffffffffff16611c39611881565b73ffffffffffffffffffffffffffffffffffffffff1614611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c86906140a2565b60405180910390fd5b8060118190555050565b611ca1612669565b73ffffffffffffffffffffffffffffffffffffffff16611cbf611881565b73ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c906140a2565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b611d43611d3d612669565b83612738565b611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7990614134565b60405180910390fd5b611d8e84848484612d45565b50505050565b60125481565b6060611da5826125fd565b611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb9061476f565b60405180910390fd5b60001515601360029054906101000a900460ff1615151415611e9257600e8054611e0d90613e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3990613e6e565b8015611e865780601f10611e5b57610100808354040283529160200191611e86565b820191906000526020600020905b815481529060010190602001808311611e6957829003601f168201915b50505050509050611eee565b6000611e9c612da1565b90506000815111611ebc5760405180602001604052806000815250611eea565b80611ec684612e33565b600d604051602001611eda9392919061485f565b6040516020818303038152906040525b9150505b919050565b826000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506012548282611f4791906144f7565b1115611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f90614599565b60405180910390fd5b600082118015611f9a57506011548211155b611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd090614605565b60405180910390fd5b846000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081600f5461202c919061425b565b34101561206e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206590614671565b60405180910390fd5b601254828261207d91906144f7565b11156120be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b590614599565b60405180910390fd5b601360019054906101000a900460ff1661210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490614902565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561219a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121919061496e565b60405180910390fd5b6000336040516020016121ad91906149d6565b604051602081830303815290604052805190602001209050612213878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060095483612f94565b612252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224990614a3d565b60405180910390fd5b6001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122b43389612b43565b5050505050505050565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b6122ec612669565b73ffffffffffffffffffffffffffffffffffffffff1661230a611881565b73ffffffffffffffffffffffffffffffffffffffff1614612360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612357906140a2565b60405180910390fd5b80601360026101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612419612669565b73ffffffffffffffffffffffffffffffffffffffff16612437611881565b73ffffffffffffffffffffffffffffffffffffffff161461248d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612484906140a2565b60405180910390fd5b6124978183612b43565b5050565b6124a3612669565b73ffffffffffffffffffffffffffffffffffffffff166124c1611881565b73ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e906140a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257e90614acf565b60405180910390fd5b61259081612a7d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166126e483611560565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6000612743826125fd565b612782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277990614b61565b60405180910390fd5b600061278d83611560565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806127fc57508373ffffffffffffffffffffffffffffffffffffffff166127e484610b88565b73ffffffffffffffffffffffffffffffffffffffff16145b8061280d575061280c818561237d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661283682611560565b73ffffffffffffffffffffffffffffffffffffffff161461288c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288390614bf3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f390614c85565b60405180910390fd5b612907838383612fab565b612912600082612671565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129629190614ca5565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129b991906144f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a78838383612fb0565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b81811015612bd357612b586008612fb5565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612ba89061438a565b9190505550612bc083612bbb600861272a565b612fcb565b8080612bcb9061438a565b915050612b46565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3e90614d25565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612d3891906135ac565b60405180910390a3505050565b612d50848484612816565b612d5c84848484612fe9565b612d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9290614db7565b60405180910390fd5b50505050565b6060600c8054612db090613e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054612ddc90613e6e565b8015612e295780601f10612dfe57610100808354040283529160200191612e29565b820191906000526020600020905b815481529060010190602001808311612e0c57829003601f168201915b5050505050905090565b60606000821415612e7b576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612f8f565b600082905060005b60008214612ead578080612e969061438a565b915050600a82612ea691906142e4565b9150612e83565b60008167ffffffffffffffff811115612ec957612ec86137e1565b5b6040519080825280601f01601f191660200182016040528015612efb5781602001600182028036833780820191505090505b5090505b60008514612f8857600182612f149190614ca5565b9150600a85612f239190614dd7565b6030612f2f91906144f7565b60f81b818381518110612f4557612f4461435b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612f8191906142e4565b9450612eff565b8093505050505b919050565b600082612fa18584613171565b1490509392505050565b505050565b505050565b6001816000016000828254019250508190555050565b612fe58282604051806020016040528060008152506131e6565b5050565b600061300a8473ffffffffffffffffffffffffffffffffffffffff16613241565b15613164578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613033612669565b8786866040518563ffffffff1660e01b81526004016130559493929190614e5d565b6020604051808303816000875af192505050801561309157506040513d601f19601f8201168201806040525081019061308e9190614ebe565b60015b613114573d80600081146130c1576040519150601f19603f3d011682016040523d82523d6000602084013e6130c6565b606091505b5060008151141561310c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310390614db7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613169565b600190505b949350505050565b60008082905060005b84518110156131db5760008582815181106131985761319761435b565b5b602002602001015190508083116131ba576131b38382613264565b92506131c7565b6131c48184613264565b92505b5080806131d39061438a565b91505061317a565b508091505092915050565b6131f0838361327b565b6131fd6000848484612fe9565b61323c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323390614db7565b60405180910390fd5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082600052816020526040600020905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e290614f37565b60405180910390fd5b6132f4816125fd565b15613334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332b90614fa3565b60405180910390fd5b61334060008383612fab565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461339091906144f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461345160008383612fb0565b5050565b82805461346190613e6e565b90600052602060002090601f01602090048101928261348357600085556134ca565b82601f1061349c57805160ff19168380011785556134ca565b828001600101855582156134ca579182015b828111156134c95782518255916020019190600101906134ae565b5b5090506134d791906134db565b5090565b5b808211156134f45760008160009055506001016134dc565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6135418161350c565b811461354c57600080fd5b50565b60008135905061355e81613538565b92915050565b60006020828403121561357a57613579613502565b5b60006135888482850161354f565b91505092915050565b60008115159050919050565b6135a681613591565b82525050565b60006020820190506135c1600083018461359d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136015780820151818401526020810190506135e6565b83811115613610576000848401525b50505050565b6000601f19601f8301169050919050565b6000613632826135c7565b61363c81856135d2565b935061364c8185602086016135e3565b61365581613616565b840191505092915050565b6000602082019050818103600083015261367a8184613627565b905092915050565b6000819050919050565b61369581613682565b81146136a057600080fd5b50565b6000813590506136b28161368c565b92915050565b6000602082840312156136ce576136cd613502565b5b60006136dc848285016136a3565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613710826136e5565b9050919050565b61372081613705565b82525050565b600060208201905061373b6000830184613717565b92915050565b61374a81613705565b811461375557600080fd5b50565b60008135905061376781613741565b92915050565b6000806040838503121561378457613783613502565b5b600061379285828601613758565b92505060206137a3858286016136a3565b9150509250929050565b6137b681613682565b82525050565b60006020820190506137d160008301846137ad565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61381982613616565b810181811067ffffffffffffffff82111715613838576138376137e1565b5b80604052505050565b600061384b6134f8565b90506138578282613810565b919050565b600067ffffffffffffffff821115613877576138766137e1565b5b61388082613616565b9050602081019050919050565b82818337600083830152505050565b60006138af6138aa8461385c565b613841565b9050828152602081018484840111156138cb576138ca6137dc565b5b6138d684828561388d565b509392505050565b600082601f8301126138f3576138f26137d7565b5b813561390384826020860161389c565b91505092915050565b60006020828403121561392257613921613502565b5b600082013567ffffffffffffffff8111156139405761393f613507565b5b61394c848285016138de565b91505092915050565b61395e81613591565b811461396957600080fd5b50565b60008135905061397b81613955565b92915050565b60006020828403121561399757613996613502565b5b60006139a58482850161396c565b91505092915050565b6000602082840312156139c4576139c3613502565b5b60006139d284828501613758565b91505092915050565b6000806000606084860312156139f4576139f3613502565b5b6000613a0286828701613758565b9350506020613a1386828701613758565b9250506040613a24868287016136a3565b9150509250925092565b6000819050919050565b613a4181613a2e565b82525050565b6000602082019050613a5c6000830184613a38565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9781613682565b82525050565b6000613aa98383613a8e565b60208301905092915050565b6000602082019050919050565b6000613acd82613a62565b613ad78185613a6d565b9350613ae283613a7e565b8060005b83811015613b13578151613afa8882613a9d565b9750613b0583613ab5565b925050600181019050613ae6565b5085935050505092915050565b60006020820190508181036000830152613b3a8184613ac2565b905092915050565b613b4b81613a2e565b8114613b5657600080fd5b50565b600081359050613b6881613b42565b92915050565b600060208284031215613b8457613b83613502565b5b6000613b9284828501613b59565b91505092915050565b60008060408385031215613bb257613bb1613502565b5b6000613bc085828601613758565b9250506020613bd18582860161396c565b9150509250929050565b600067ffffffffffffffff821115613bf657613bf56137e1565b5b613bff82613616565b9050602081019050919050565b6000613c1f613c1a84613bdb565b613841565b905082815260208101848484011115613c3b57613c3a6137dc565b5b613c4684828561388d565b509392505050565b600082601f830112613c6357613c626137d7565b5b8135613c73848260208601613c0c565b91505092915050565b60008060008060808587031215613c9657613c95613502565b5b6000613ca487828801613758565b9450506020613cb587828801613758565b9350506040613cc6878288016136a3565b925050606085013567ffffffffffffffff811115613ce757613ce6613507565b5b613cf387828801613c4e565b91505092959194509250565b600080fd5b600080fd5b60008083601f840112613d1f57613d1e6137d7565b5b8235905067ffffffffffffffff811115613d3c57613d3b613cff565b5b602083019150836020820283011115613d5857613d57613d04565b5b9250929050565b600080600060408486031215613d7857613d77613502565b5b6000613d86868287016136a3565b935050602084013567ffffffffffffffff811115613da757613da6613507565b5b613db386828701613d09565b92509250509250925092565b60008060408385031215613dd657613dd5613502565b5b6000613de485828601613758565b9250506020613df585828601613758565b9150509250929050565b60008060408385031215613e1657613e15613502565b5b6000613e24858286016136a3565b9250506020613e3585828601613758565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e8657607f821691505b60208210811415613e9a57613e99613e3f565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613efc602c836135d2565b9150613f0782613ea0565b604082019050919050565b60006020820190508181036000830152613f2b81613eef565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f8e6021836135d2565b9150613f9982613f32565b604082019050919050565b60006020820190508181036000830152613fbd81613f81565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006140206038836135d2565b915061402b82613fc4565b604082019050919050565b6000602082019050818103600083015261404f81614013565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061408c6020836135d2565b915061409782614056565b602082019050919050565b600060208201905081810360008301526140bb8161407f565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061411e6031836135d2565b9150614129826140c2565b604082019050919050565b6000602082019050818103600083015261414d81614111565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061418a601f836135d2565b915061419582614154565b602082019050919050565b600060208201905081810360008301526141b98161417d565b9050919050565b7f7468657265206973206e6f7468696e6720696e20686572650000000000000000600082015250565b60006141f66018836135d2565b9150614201826141c0565b602082019050919050565b60006020820190508181036000830152614225816141e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061426682613682565b915061427183613682565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142aa576142a961422c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142ef82613682565b91506142fa83613682565b92508261430a576143096142b5565b5b828204905092915050565b600081905092915050565b50565b6000614330600083614315565b915061433b82614320565b600082019050919050565b600061435182614323565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061439582613682565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156143c8576143c761422c565b5b600182019050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061442f6029836135d2565b915061443a826143d3565b604082019050919050565b6000602082019050818103600083015261445e81614422565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006144c1602a836135d2565b91506144cc82614465565b604082019050919050565b600060208201905081810360008301526144f0816144b4565b9050919050565b600061450282613682565b915061450d83613682565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145425761454161422c565b5b828201905092915050565b7f6d6178204e465420706572206164647265737320657863656564656400000000600082015250565b6000614583601c836135d2565b915061458e8261454d565b602082019050919050565b600060208201905081810360008301526145b281614576565b9050919050565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b60006145ef6014836135d2565b91506145fa826145b9565b602082019050919050565b6000602082019050818103600083015261461e816145e2565b9050919050565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b600061465b6013836135d2565b915061466682614625565b602082019050919050565b6000602082019050818103600083015261468a8161464e565b9050919050565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b60006146c76017836135d2565b91506146d282614691565b602082019050919050565b600060208201905081810360008301526146f6816146ba565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614759602f836135d2565b9150614764826146fd565b604082019050919050565b600060208201905081810360008301526147888161474c565b9050919050565b600081905092915050565b60006147a5826135c7565b6147af818561478f565b93506147bf8185602086016135e3565b80840191505092915050565b60008190508160005260206000209050919050565b600081546147ed81613e6e565b6147f7818661478f565b94506001821660008114614812576001811461482357614856565b60ff19831686528186019350614856565b61482c856147cb565b60005b8381101561484e5781548189015260018201915060208101905061482f565b838801955050505b50505092915050565b600061486b828661479a565b9150614877828561479a565b915061488382846147e0565b9150819050949350505050565b7f5468652077686974656c6973742073616c65206973206e6f7420656e61626c6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b60006148ec6022836135d2565b91506148f782614890565b604082019050919050565b6000602082019050818103600083015261491b816148df565b9050919050565b7f4164647265737320616c726561647920636c61696d6564210000000000000000600082015250565b60006149586018836135d2565b915061496382614922565b602082019050919050565b600060208201905081810360008301526149878161494b565b9050919050565b60008160601b9050919050565b60006149a68261498e565b9050919050565b60006149b88261499b565b9050919050565b6149d06149cb82613705565b6149ad565b82525050565b60006149e282846149bf565b60148201915081905092915050565b7f496e76616c69642070726f6f6621000000000000000000000000000000000000600082015250565b6000614a27600e836135d2565b9150614a32826149f1565b602082019050919050565b60006020820190508181036000830152614a5681614a1a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ab96026836135d2565b9150614ac482614a5d565b604082019050919050565b60006020820190508181036000830152614ae881614aac565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614b4b602c836135d2565b9150614b5682614aef565b604082019050919050565b60006020820190508181036000830152614b7a81614b3e565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614bdd6025836135d2565b9150614be882614b81565b604082019050919050565b60006020820190508181036000830152614c0c81614bd0565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c6f6024836135d2565b9150614c7a82614c13565b604082019050919050565b60006020820190508181036000830152614c9e81614c62565b9050919050565b6000614cb082613682565b9150614cbb83613682565b925082821015614cce57614ccd61422c565b5b828203905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614d0f6019836135d2565b9150614d1a82614cd9565b602082019050919050565b60006020820190508181036000830152614d3e81614d02565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614da16032836135d2565b9150614dac82614d45565b604082019050919050565b60006020820190508181036000830152614dd081614d94565b9050919050565b6000614de282613682565b9150614ded83613682565b925082614dfd57614dfc6142b5565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000614e2f82614e08565b614e398185614e13565b9350614e498185602086016135e3565b614e5281613616565b840191505092915050565b6000608082019050614e726000830187613717565b614e7f6020830186613717565b614e8c60408301856137ad565b8181036060830152614e9e8184614e24565b905095945050505050565b600081519050614eb881613538565b92915050565b600060208284031215614ed457614ed3613502565b5b6000614ee284828501614ea9565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614f216020836135d2565b9150614f2c82614eeb565b602082019050919050565b60006020820190508181036000830152614f5081614f14565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614f8d601c836135d2565b9150614f9882614f57565b602082019050919050565b60006020820190508181036000830152614fbc81614f80565b905091905056fea2646970667358221220c9223575db2648c45fce51e9c0e27221245218b765b84d5d7d3bcf02ee743eaf64736f6c634300080c003300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000f8b0a10e470000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000e436f6d626174476f72696c6c6173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443474f52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d504c623974534b41696b7969546f63396453654850425047556e363457774657513942336f556359466b71340000000000000000000000

Deployed Bytecode

0x60806040526004361061026b5760003560e01c806370a0823111610144578063b767a098116100b6578063d5abeb011161007a578063d5abeb01146108f4578063db4bec441461091f578063e0a808531461095c578063e985e9c514610985578063efbd73f4146109c2578063f2fde38b146109eb57610272565b8063b767a0981461081e578063b88d4fde14610847578063ba7d2c7614610870578063c87b56dd1461089b578063d2cab056146108d857610272565b806394354fd01161010857806394354fd01461072f57806395d89b411461075a578063a0712d6814610785578063a22cb465146107a1578063a45ba8e7146107ca578063b071401b146107f557610272565b806370a082311461065e578063715018a61461069b5780637cb64759146106b25780637ec4a659146106db5780638da5cb5b1461070457610272565b80633ccfd60b116101dd57806351830227116101a1578063518302271461054a5780635503a0e8146105755780635c975abb146105a057806362b99ad4146105cb5780636352211e146105f65780636caede3d1461063357610272565b80633ccfd60b1461047b57806342842e0e14610492578063438b6300146104bb57806344a0d68a146104f85780634fdd43cb1461052157610272565b806316ba10e01161022f57806316ba10e01461036d57806316c38b3c1461039657806318160ddd146103bf57806318cae269146103ea57806323b872dd146104275780632eb4a7ab1461045057610272565b806301ffc9a71461027457806306fdde03146102b1578063081812fc146102dc578063095ea7b31461031957806313faede61461034257610272565b3661027257005b005b34801561028057600080fd5b5061029b60048036038101906102969190613564565b610a14565b6040516102a891906135ac565b60405180910390f35b3480156102bd57600080fd5b506102c6610af6565b6040516102d39190613660565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe91906136b8565b610b88565b6040516103109190613726565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b919061376d565b610c0d565b005b34801561034e57600080fd5b50610357610d25565b60405161036491906137bc565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f919061390c565b610d2b565b005b3480156103a257600080fd5b506103bd60048036038101906103b89190613981565b610dc1565b005b3480156103cb57600080fd5b506103d4610e5a565b6040516103e191906137bc565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c91906139ae565b610e6b565b60405161041e91906137bc565b60405180910390f35b34801561043357600080fd5b5061044e600480360381019061044991906139db565b610e83565b005b34801561045c57600080fd5b50610465610ee3565b6040516104729190613a47565b60405180910390f35b34801561048757600080fd5b50610490610ee9565b005b34801561049e57600080fd5b506104b960048036038101906104b491906139db565b6111d7565b005b3480156104c757600080fd5b506104e260048036038101906104dd91906139ae565b6111f7565b6040516104ef9190613b20565b60405180910390f35b34801561050457600080fd5b5061051f600480360381019061051a91906136b8565b611302565b005b34801561052d57600080fd5b506105486004803603810190610543919061390c565b611388565b005b34801561055657600080fd5b5061055f61141e565b60405161056c91906135ac565b60405180910390f35b34801561058157600080fd5b5061058a611431565b6040516105979190613660565b60405180910390f35b3480156105ac57600080fd5b506105b56114bf565b6040516105c291906135ac565b60405180910390f35b3480156105d757600080fd5b506105e06114d2565b6040516105ed9190613660565b60405180910390f35b34801561060257600080fd5b5061061d600480360381019061061891906136b8565b611560565b60405161062a9190613726565b60405180910390f35b34801561063f57600080fd5b50610648611612565b60405161065591906135ac565b60405180910390f35b34801561066a57600080fd5b50610685600480360381019061068091906139ae565b611625565b60405161069291906137bc565b60405180910390f35b3480156106a757600080fd5b506106b06116dd565b005b3480156106be57600080fd5b506106d960048036038101906106d49190613b6e565b611765565b005b3480156106e757600080fd5b5061070260048036038101906106fd919061390c565b6117eb565b005b34801561071057600080fd5b50610719611881565b6040516107269190613726565b60405180910390f35b34801561073b57600080fd5b506107446118ab565b60405161075191906137bc565b60405180910390f35b34801561076657600080fd5b5061076f6118b1565b60405161077c9190613660565b60405180910390f35b61079f600480360381019061079a91906136b8565b611943565b005b3480156107ad57600080fd5b506107c860048036038101906107c39190613b9b565b611b6f565b005b3480156107d657600080fd5b506107df611b85565b6040516107ec9190613660565b60405180910390f35b34801561080157600080fd5b5061081c600480360381019061081791906136b8565b611c13565b005b34801561082a57600080fd5b5061084560048036038101906108409190613981565b611c99565b005b34801561085357600080fd5b5061086e60048036038101906108699190613c7c565b611d32565b005b34801561087c57600080fd5b50610885611d94565b60405161089291906137bc565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd91906136b8565b611d9a565b6040516108cf9190613660565b60405180910390f35b6108f260048036038101906108ed9190613d5f565b611ef3565b005b34801561090057600080fd5b506109096122be565b60405161091691906137bc565b60405180910390f35b34801561092b57600080fd5b50610946600480360381019061094191906139ae565b6122c4565b60405161095391906135ac565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e9190613981565b6122e4565b005b34801561099157600080fd5b506109ac60048036038101906109a79190613dbf565b61237d565b6040516109b991906135ac565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e49190613dff565b612411565b005b3480156109f757600080fd5b50610a126004803603810190610a0d91906139ae565b61249b565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610adf57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610aef5750610aee82612593565b5b9050919050565b606060008054610b0590613e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3190613e6e565b8015610b7e5780601f10610b5357610100808354040283529160200191610b7e565b820191906000526020600020905b815481529060010190602001808311610b6157829003601f168201915b5050505050905090565b6000610b93826125fd565b610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc990613f12565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c1882611560565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8090613fa4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ca8612669565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd681610cd1612669565b61237d565b5b610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90614036565b60405180910390fd5b610d208383612671565b505050565b600f5481565b610d33612669565b73ffffffffffffffffffffffffffffffffffffffff16610d51611881565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e906140a2565b60405180910390fd5b80600d9080519060200190610dbd929190613455565b5050565b610dc9612669565b73ffffffffffffffffffffffffffffffffffffffff16610de7611881565b73ffffffffffffffffffffffffffffffffffffffff1614610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e34906140a2565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6000610e66600861272a565b905090565b600b6020528060005260406000206000915090505481565b610e94610e8e612669565b82612738565b610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90614134565b60405180910390fd5b610ede838383612816565b505050565b60095481565b610ef1612669565b73ffffffffffffffffffffffffffffffffffffffff16610f0f611881565b73ffffffffffffffffffffffffffffffffffffffff1614610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c906140a2565b60405180910390fd5b60026007541415610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa2906141a0565b60405180910390fd5b6002600781905550600047905060008111610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff29061420c565b60405180910390fd5b6000739919d3ec4e39fc03b99debc7d46a0feda8eee1d073ffffffffffffffffffffffffffffffffffffffff166064601484611037919061425b565b61104191906142e4565b60405161104d90614346565b60006040518083038185875af1925050503d806000811461108a576040519150601f19603f3d011682016040523d82523d6000602084013e61108f565b606091505b505090508061109d57600080fd5b600073e55dbd4a71be822be00b33481a99a880d18d716b73ffffffffffffffffffffffffffffffffffffffff1660646005856110d9919061425b565b6110e391906142e4565b6040516110ef90614346565b60006040518083038185875af1925050503d806000811461112c576040519150601f19603f3d011682016040523d82523d6000602084013e611131565b606091505b505090508061113f57600080fd5b60007319d0fb6d325d9d29bc7ef6396f07843290932a7673ffffffffffffffffffffffffffffffffffffffff164760405161117990614346565b60006040518083038185875af1925050503d80600081146111b6576040519150601f19603f3d011682016040523d82523d6000602084013e6111bb565b606091505b50509050806111c957600080fd5b505050506001600781905550565b6111f283838360405180602001604052806000815250611d32565b505050565b6060600061120483611625565b905060008167ffffffffffffffff811115611222576112216137e1565b5b6040519080825280602002602001820160405280156112505781602001602082028036833780820191505090505b50905060006001905060005b838110801561126d57506010548211155b156112f657600061127d83611560565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112e257828483815181106112c7576112c661435b565b5b60200260200101818152505081806112de9061438a565b9250505b82806112ed9061438a565b9350505061125c565b82945050505050919050565b61130a612669565b73ffffffffffffffffffffffffffffffffffffffff16611328611881565b73ffffffffffffffffffffffffffffffffffffffff161461137e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611375906140a2565b60405180910390fd5b80600f8190555050565b611390612669565b73ffffffffffffffffffffffffffffffffffffffff166113ae611881565b73ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb906140a2565b60405180910390fd5b80600e908051906020019061141a929190613455565b5050565b601360029054906101000a900460ff1681565b600d805461143e90613e6e565b80601f016020809104026020016040519081016040528092919081815260200182805461146a90613e6e565b80156114b75780601f1061148c576101008083540402835291602001916114b7565b820191906000526020600020905b81548152906001019060200180831161149a57829003601f168201915b505050505081565b601360009054906101000a900460ff1681565b600c80546114df90613e6e565b80601f016020809104026020016040519081016040528092919081815260200182805461150b90613e6e565b80156115585780601f1061152d57610100808354040283529160200191611558565b820191906000526020600020905b81548152906001019060200180831161153b57829003601f168201915b505050505081565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160090614445565b60405180910390fd5b80915050919050565b601360019054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d906144d7565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116e5612669565b73ffffffffffffffffffffffffffffffffffffffff16611703611881565b73ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611750906140a2565b60405180910390fd5b6117636000612a7d565b565b61176d612669565b73ffffffffffffffffffffffffffffffffffffffff1661178b611881565b73ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d8906140a2565b60405180910390fd5b8060098190555050565b6117f3612669565b73ffffffffffffffffffffffffffffffffffffffff16611811611881565b73ffffffffffffffffffffffffffffffffffffffff1614611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e906140a2565b60405180910390fd5b80600c908051906020019061187d929190613455565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b6060600180546118c090613e6e565b80601f01602080910402602001604051908101604052809291908181526020018280546118ec90613e6e565b80156119395780601f1061190e57610100808354040283529160200191611939565b820191906000526020600020905b81548152906001019060200180831161191c57829003601f168201915b5050505050905090565b806000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601254828261199791906144f7565b11156119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90614599565b60405180910390fd5b6000821180156119ea57506011548211155b611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2090614605565b60405180910390fd5b826000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081600f54611a7c919061425b565b341015611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab590614671565b60405180910390fd5b6012548282611acd91906144f7565b1115611b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0590614599565b60405180910390fd5b601360009054906101000a900460ff1615611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b55906146dd565b60405180910390fd5b611b683386612b43565b5050505050565b611b81611b7a612669565b8383612bd8565b5050565b600e8054611b9290613e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbe90613e6e565b8015611c0b5780601f10611be057610100808354040283529160200191611c0b565b820191906000526020600020905b815481529060010190602001808311611bee57829003601f168201915b505050505081565b611c1b612669565b73ffffffffffffffffffffffffffffffffffffffff16611c39611881565b73ffffffffffffffffffffffffffffffffffffffff1614611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c86906140a2565b60405180910390fd5b8060118190555050565b611ca1612669565b73ffffffffffffffffffffffffffffffffffffffff16611cbf611881565b73ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c906140a2565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b611d43611d3d612669565b83612738565b611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7990614134565b60405180910390fd5b611d8e84848484612d45565b50505050565b60125481565b6060611da5826125fd565b611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb9061476f565b60405180910390fd5b60001515601360029054906101000a900460ff1615151415611e9257600e8054611e0d90613e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3990613e6e565b8015611e865780601f10611e5b57610100808354040283529160200191611e86565b820191906000526020600020905b815481529060010190602001808311611e6957829003601f168201915b50505050509050611eee565b6000611e9c612da1565b90506000815111611ebc5760405180602001604052806000815250611eea565b80611ec684612e33565b600d604051602001611eda9392919061485f565b6040516020818303038152906040525b9150505b919050565b826000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506012548282611f4791906144f7565b1115611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f90614599565b60405180910390fd5b600082118015611f9a57506011548211155b611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd090614605565b60405180910390fd5b846000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081600f5461202c919061425b565b34101561206e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206590614671565b60405180910390fd5b601254828261207d91906144f7565b11156120be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b590614599565b60405180910390fd5b601360019054906101000a900460ff1661210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490614902565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561219a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121919061496e565b60405180910390fd5b6000336040516020016121ad91906149d6565b604051602081830303815290604052805190602001209050612213878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060095483612f94565b612252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224990614a3d565b60405180910390fd5b6001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122b43389612b43565b5050505050505050565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b6122ec612669565b73ffffffffffffffffffffffffffffffffffffffff1661230a611881565b73ffffffffffffffffffffffffffffffffffffffff1614612360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612357906140a2565b60405180910390fd5b80601360026101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612419612669565b73ffffffffffffffffffffffffffffffffffffffff16612437611881565b73ffffffffffffffffffffffffffffffffffffffff161461248d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612484906140a2565b60405180910390fd5b6124978183612b43565b5050565b6124a3612669565b73ffffffffffffffffffffffffffffffffffffffff166124c1611881565b73ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e906140a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257e90614acf565b60405180910390fd5b61259081612a7d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166126e483611560565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6000612743826125fd565b612782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277990614b61565b60405180910390fd5b600061278d83611560565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806127fc57508373ffffffffffffffffffffffffffffffffffffffff166127e484610b88565b73ffffffffffffffffffffffffffffffffffffffff16145b8061280d575061280c818561237d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661283682611560565b73ffffffffffffffffffffffffffffffffffffffff161461288c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288390614bf3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f390614c85565b60405180910390fd5b612907838383612fab565b612912600082612671565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129629190614ca5565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129b991906144f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a78838383612fb0565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b81811015612bd357612b586008612fb5565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612ba89061438a565b9190505550612bc083612bbb600861272a565b612fcb565b8080612bcb9061438a565b915050612b46565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3e90614d25565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612d3891906135ac565b60405180910390a3505050565b612d50848484612816565b612d5c84848484612fe9565b612d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9290614db7565b60405180910390fd5b50505050565b6060600c8054612db090613e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054612ddc90613e6e565b8015612e295780601f10612dfe57610100808354040283529160200191612e29565b820191906000526020600020905b815481529060010190602001808311612e0c57829003601f168201915b5050505050905090565b60606000821415612e7b576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612f8f565b600082905060005b60008214612ead578080612e969061438a565b915050600a82612ea691906142e4565b9150612e83565b60008167ffffffffffffffff811115612ec957612ec86137e1565b5b6040519080825280601f01601f191660200182016040528015612efb5781602001600182028036833780820191505090505b5090505b60008514612f8857600182612f149190614ca5565b9150600a85612f239190614dd7565b6030612f2f91906144f7565b60f81b818381518110612f4557612f4461435b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612f8191906142e4565b9450612eff565b8093505050505b919050565b600082612fa18584613171565b1490509392505050565b505050565b505050565b6001816000016000828254019250508190555050565b612fe58282604051806020016040528060008152506131e6565b5050565b600061300a8473ffffffffffffffffffffffffffffffffffffffff16613241565b15613164578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613033612669565b8786866040518563ffffffff1660e01b81526004016130559493929190614e5d565b6020604051808303816000875af192505050801561309157506040513d601f19601f8201168201806040525081019061308e9190614ebe565b60015b613114573d80600081146130c1576040519150601f19603f3d011682016040523d82523d6000602084013e6130c6565b606091505b5060008151141561310c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310390614db7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613169565b600190505b949350505050565b60008082905060005b84518110156131db5760008582815181106131985761319761435b565b5b602002602001015190508083116131ba576131b38382613264565b92506131c7565b6131c48184613264565b92505b5080806131d39061438a565b91505061317a565b508091505092915050565b6131f0838361327b565b6131fd6000848484612fe9565b61323c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323390614db7565b60405180910390fd5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082600052816020526040600020905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e290614f37565b60405180910390fd5b6132f4816125fd565b15613334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332b90614fa3565b60405180910390fd5b61334060008383612fab565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461339091906144f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461345160008383612fb0565b5050565b82805461346190613e6e565b90600052602060002090601f01602090048101928261348357600085556134ca565b82601f1061349c57805160ff19168380011785556134ca565b828001600101855582156134ca579182015b828111156134c95782518255916020019190600101906134ae565b5b5090506134d791906134db565b5090565b5b808211156134f45760008160009055506001016134dc565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6135418161350c565b811461354c57600080fd5b50565b60008135905061355e81613538565b92915050565b60006020828403121561357a57613579613502565b5b60006135888482850161354f565b91505092915050565b60008115159050919050565b6135a681613591565b82525050565b60006020820190506135c1600083018461359d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136015780820151818401526020810190506135e6565b83811115613610576000848401525b50505050565b6000601f19601f8301169050919050565b6000613632826135c7565b61363c81856135d2565b935061364c8185602086016135e3565b61365581613616565b840191505092915050565b6000602082019050818103600083015261367a8184613627565b905092915050565b6000819050919050565b61369581613682565b81146136a057600080fd5b50565b6000813590506136b28161368c565b92915050565b6000602082840312156136ce576136cd613502565b5b60006136dc848285016136a3565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613710826136e5565b9050919050565b61372081613705565b82525050565b600060208201905061373b6000830184613717565b92915050565b61374a81613705565b811461375557600080fd5b50565b60008135905061376781613741565b92915050565b6000806040838503121561378457613783613502565b5b600061379285828601613758565b92505060206137a3858286016136a3565b9150509250929050565b6137b681613682565b82525050565b60006020820190506137d160008301846137ad565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61381982613616565b810181811067ffffffffffffffff82111715613838576138376137e1565b5b80604052505050565b600061384b6134f8565b90506138578282613810565b919050565b600067ffffffffffffffff821115613877576138766137e1565b5b61388082613616565b9050602081019050919050565b82818337600083830152505050565b60006138af6138aa8461385c565b613841565b9050828152602081018484840111156138cb576138ca6137dc565b5b6138d684828561388d565b509392505050565b600082601f8301126138f3576138f26137d7565b5b813561390384826020860161389c565b91505092915050565b60006020828403121561392257613921613502565b5b600082013567ffffffffffffffff8111156139405761393f613507565b5b61394c848285016138de565b91505092915050565b61395e81613591565b811461396957600080fd5b50565b60008135905061397b81613955565b92915050565b60006020828403121561399757613996613502565b5b60006139a58482850161396c565b91505092915050565b6000602082840312156139c4576139c3613502565b5b60006139d284828501613758565b91505092915050565b6000806000606084860312156139f4576139f3613502565b5b6000613a0286828701613758565b9350506020613a1386828701613758565b9250506040613a24868287016136a3565b9150509250925092565b6000819050919050565b613a4181613a2e565b82525050565b6000602082019050613a5c6000830184613a38565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9781613682565b82525050565b6000613aa98383613a8e565b60208301905092915050565b6000602082019050919050565b6000613acd82613a62565b613ad78185613a6d565b9350613ae283613a7e565b8060005b83811015613b13578151613afa8882613a9d565b9750613b0583613ab5565b925050600181019050613ae6565b5085935050505092915050565b60006020820190508181036000830152613b3a8184613ac2565b905092915050565b613b4b81613a2e565b8114613b5657600080fd5b50565b600081359050613b6881613b42565b92915050565b600060208284031215613b8457613b83613502565b5b6000613b9284828501613b59565b91505092915050565b60008060408385031215613bb257613bb1613502565b5b6000613bc085828601613758565b9250506020613bd18582860161396c565b9150509250929050565b600067ffffffffffffffff821115613bf657613bf56137e1565b5b613bff82613616565b9050602081019050919050565b6000613c1f613c1a84613bdb565b613841565b905082815260208101848484011115613c3b57613c3a6137dc565b5b613c4684828561388d565b509392505050565b600082601f830112613c6357613c626137d7565b5b8135613c73848260208601613c0c565b91505092915050565b60008060008060808587031215613c9657613c95613502565b5b6000613ca487828801613758565b9450506020613cb587828801613758565b9350506040613cc6878288016136a3565b925050606085013567ffffffffffffffff811115613ce757613ce6613507565b5b613cf387828801613c4e565b91505092959194509250565b600080fd5b600080fd5b60008083601f840112613d1f57613d1e6137d7565b5b8235905067ffffffffffffffff811115613d3c57613d3b613cff565b5b602083019150836020820283011115613d5857613d57613d04565b5b9250929050565b600080600060408486031215613d7857613d77613502565b5b6000613d86868287016136a3565b935050602084013567ffffffffffffffff811115613da757613da6613507565b5b613db386828701613d09565b92509250509250925092565b60008060408385031215613dd657613dd5613502565b5b6000613de485828601613758565b9250506020613df585828601613758565b9150509250929050565b60008060408385031215613e1657613e15613502565b5b6000613e24858286016136a3565b9250506020613e3585828601613758565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e8657607f821691505b60208210811415613e9a57613e99613e3f565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613efc602c836135d2565b9150613f0782613ea0565b604082019050919050565b60006020820190508181036000830152613f2b81613eef565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f8e6021836135d2565b9150613f9982613f32565b604082019050919050565b60006020820190508181036000830152613fbd81613f81565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006140206038836135d2565b915061402b82613fc4565b604082019050919050565b6000602082019050818103600083015261404f81614013565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061408c6020836135d2565b915061409782614056565b602082019050919050565b600060208201905081810360008301526140bb8161407f565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061411e6031836135d2565b9150614129826140c2565b604082019050919050565b6000602082019050818103600083015261414d81614111565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061418a601f836135d2565b915061419582614154565b602082019050919050565b600060208201905081810360008301526141b98161417d565b9050919050565b7f7468657265206973206e6f7468696e6720696e20686572650000000000000000600082015250565b60006141f66018836135d2565b9150614201826141c0565b602082019050919050565b60006020820190508181036000830152614225816141e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061426682613682565b915061427183613682565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142aa576142a961422c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142ef82613682565b91506142fa83613682565b92508261430a576143096142b5565b5b828204905092915050565b600081905092915050565b50565b6000614330600083614315565b915061433b82614320565b600082019050919050565b600061435182614323565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061439582613682565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156143c8576143c761422c565b5b600182019050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061442f6029836135d2565b915061443a826143d3565b604082019050919050565b6000602082019050818103600083015261445e81614422565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006144c1602a836135d2565b91506144cc82614465565b604082019050919050565b600060208201905081810360008301526144f0816144b4565b9050919050565b600061450282613682565b915061450d83613682565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145425761454161422c565b5b828201905092915050565b7f6d6178204e465420706572206164647265737320657863656564656400000000600082015250565b6000614583601c836135d2565b915061458e8261454d565b602082019050919050565b600060208201905081810360008301526145b281614576565b9050919050565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b60006145ef6014836135d2565b91506145fa826145b9565b602082019050919050565b6000602082019050818103600083015261461e816145e2565b9050919050565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b600061465b6013836135d2565b915061466682614625565b602082019050919050565b6000602082019050818103600083015261468a8161464e565b9050919050565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b60006146c76017836135d2565b91506146d282614691565b602082019050919050565b600060208201905081810360008301526146f6816146ba565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614759602f836135d2565b9150614764826146fd565b604082019050919050565b600060208201905081810360008301526147888161474c565b9050919050565b600081905092915050565b60006147a5826135c7565b6147af818561478f565b93506147bf8185602086016135e3565b80840191505092915050565b60008190508160005260206000209050919050565b600081546147ed81613e6e565b6147f7818661478f565b94506001821660008114614812576001811461482357614856565b60ff19831686528186019350614856565b61482c856147cb565b60005b8381101561484e5781548189015260018201915060208101905061482f565b838801955050505b50505092915050565b600061486b828661479a565b9150614877828561479a565b915061488382846147e0565b9150819050949350505050565b7f5468652077686974656c6973742073616c65206973206e6f7420656e61626c6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b60006148ec6022836135d2565b91506148f782614890565b604082019050919050565b6000602082019050818103600083015261491b816148df565b9050919050565b7f4164647265737320616c726561647920636c61696d6564210000000000000000600082015250565b60006149586018836135d2565b915061496382614922565b602082019050919050565b600060208201905081810360008301526149878161494b565b9050919050565b60008160601b9050919050565b60006149a68261498e565b9050919050565b60006149b88261499b565b9050919050565b6149d06149cb82613705565b6149ad565b82525050565b60006149e282846149bf565b60148201915081905092915050565b7f496e76616c69642070726f6f6621000000000000000000000000000000000000600082015250565b6000614a27600e836135d2565b9150614a32826149f1565b602082019050919050565b60006020820190508181036000830152614a5681614a1a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ab96026836135d2565b9150614ac482614a5d565b604082019050919050565b60006020820190508181036000830152614ae881614aac565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614b4b602c836135d2565b9150614b5682614aef565b604082019050919050565b60006020820190508181036000830152614b7a81614b3e565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614bdd6025836135d2565b9150614be882614b81565b604082019050919050565b60006020820190508181036000830152614c0c81614bd0565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c6f6024836135d2565b9150614c7a82614c13565b604082019050919050565b60006020820190508181036000830152614c9e81614c62565b9050919050565b6000614cb082613682565b9150614cbb83613682565b925082821015614cce57614ccd61422c565b5b828203905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614d0f6019836135d2565b9150614d1a82614cd9565b602082019050919050565b60006020820190508181036000830152614d3e81614d02565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614da16032836135d2565b9150614dac82614d45565b604082019050919050565b60006020820190508181036000830152614dd081614d94565b9050919050565b6000614de282613682565b9150614ded83613682565b925082614dfd57614dfc6142b5565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000614e2f82614e08565b614e398185614e13565b9350614e498185602086016135e3565b614e5281613616565b840191505092915050565b6000608082019050614e726000830187613717565b614e7f6020830186613717565b614e8c60408301856137ad565b8181036060830152614e9e8184614e24565b905095945050505050565b600081519050614eb881613538565b92915050565b600060208284031215614ed457614ed3613502565b5b6000614ee284828501614ea9565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614f216020836135d2565b9150614f2c82614eeb565b602082019050919050565b60006020820190508181036000830152614f5081614f14565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614f8d601c836135d2565b9150614f9882614f57565b602082019050919050565b60006020820190508181036000830152614fbc81614f80565b905091905056fea2646970667358221220c9223575db2648c45fce51e9c0e27221245218b765b84d5d7d3bcf02ee743eaf64736f6c634300080c0033

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

00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000f8b0a10e470000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000e436f6d626174476f72696c6c6173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443474f52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d504c623974534b41696b7969546f63396453654850425047556e363457774657513942336f556359466b71340000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenName (string): CombatGorillas
Arg [1] : _tokenSymbol (string): CGOR
Arg [2] : _cost (uint256): 70000000000000000
Arg [3] : _maxSupply (uint256): 10000
Arg [4] : _maxMintAmountPerTx (uint256): 3
Arg [5] : _hiddenMetadataUri (string): ipfs://QmPLb9tSKAikyiToc9dSeHPBPGUn64WwFWQ9B3oUcYFkq4

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 00000000000000000000000000000000000000000000000000f8b0a10e470000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [7] : 436f6d626174476f72696c6c6173000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 43474f5200000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [11] : 697066733a2f2f516d504c623974534b41696b7969546f633964536548504250
Arg [12] : 47556e363457774657513942336f556359466b71340000000000000000000000


Deployed Bytecode Sourcemap

43918:6813:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30722:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31667:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33226:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32749:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44365:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49150:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49264:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45811:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44188:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33976:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44101:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49586:739;;;;;;;;;;;;;:::i;:::-;;34386:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47037:737;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48612:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48867:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44585:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44285:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44506:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44250:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31361:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44538:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31091:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11343:103;;;;;;;;;;;;;:::i;:::-;;49355:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49036:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10692:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44422:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31836:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46604:259;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33519:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44325:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48700:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49467:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34642:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44462:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47782:727;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45914:682;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44391:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44133:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48517:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33745:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46871:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11601:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30722:305;30824:4;30876:25;30861:40;;;:11;:40;;;;:105;;;;30933:33;30918:48;;;:11;:48;;;;30861:105;:158;;;;30983:36;31007:11;30983:23;:36::i;:::-;30861:158;30841:178;;30722:305;;;:::o;31667:100::-;31721:13;31754:5;31747:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31667:100;:::o;33226:221::-;33302:7;33330:16;33338:7;33330;:16::i;:::-;33322:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;33415:15;:24;33431:7;33415:24;;;;;;;;;;;;;;;;;;;;;33408:31;;33226:221;;;:::o;32749:411::-;32830:13;32846:23;32861:7;32846:14;:23::i;:::-;32830:39;;32894:5;32888:11;;:2;:11;;;;32880:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;32988:5;32972:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;32997:37;33014:5;33021:12;:10;:12::i;:::-;32997:16;:37::i;:::-;32972:62;32950:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;33131:21;33140:2;33144:7;33131:8;:21::i;:::-;32819:341;32749:411;;:::o;44365:19::-;;;;:::o;49150:106::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49238:10:::1;49226:9;:22;;;;;;;;;;;;:::i;:::-;;49150:106:::0;:::o;49264:83::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49333:6:::1;49324;;:15;;;;;;;;;;;;;;;;;;49264:83:::0;:::o;45811:95::-;45855:7;45882:16;:6;:14;:16::i;:::-;45875:23;;45811:95;:::o;44188:55::-;;;;;;;;;;;;;;;;;:::o;33976:339::-;34171:41;34190:12;:10;:12::i;:::-;34204:7;34171:18;:41::i;:::-;34163:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;34279:28;34289:4;34295:2;34299:7;34279:9;:28::i;:::-;33976:339;;;:::o;44101:25::-;;;;:::o;49586:739::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1812:1:::1;2410:7;;:19;;2402:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1812:1;2543:7;:18;;;;49644:23:::2;49670:21;49644:47;;49725:1;49707:15;:19;49699:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;49813:8;49835:42;49827:56;;49915:3;49909:2;49891:15;:20;;;;:::i;:::-;:27;;;;:::i;:::-;49827:96;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49812:111;;;49942:3;49934:12;;;::::0;::::2;;49999:7;50020:42;50012:56;;50099:3;50094:1;50076:15;:19;;;;:::i;:::-;:26;;;;:::i;:::-;50012:95;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49998:109;;;50127:2;50119:11;;;::::0;::::2;;50187:8;50209:42;50201:56;;50265:21;50201:91;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50186:106;;;50311:3;50303:12;;;::::0;::::2;;49636:689;;;;1768:1:::1;2722:7;:22;;;;49586:739::o:0;34386:185::-;34524:39;34541:4;34547:2;34551:7;34524:39;;;;;;;;;;;;:16;:39::i;:::-;34386:185;;;:::o;47037:737::-;47124:16;47158:23;47184:17;47194:6;47184:9;:17::i;:::-;47158:43;;47212:30;47259:15;47245:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47212:63;;47286:22;47311:1;47286:26;;47323:23;47363:373;47402:15;47384;:33;:64;;;;;47439:9;;47421:14;:27;;47384:64;47363:373;;;47475:25;47503:23;47511:14;47503:7;:23::i;:::-;47475:51;;47568:6;47547:27;;:17;:27;;;47543:151;;;47628:14;47595:13;47609:15;47595:30;;;;;;;;:::i;:::-;;;;;;;:47;;;;;47661:17;;;;;:::i;:::-;;;;47543:151;47708:16;;;;;:::i;:::-;;;;47460:276;47363:373;;;47753:13;47746:20;;;;;;47037:737;;;:::o;48612:80::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48679:5:::1;48672:4;:12;;;;48612:80:::0;:::o;48867:161::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49002:18:::1;48982:17;:38;;;;;;;;;;;;:::i;:::-;;48867:161:::0;:::o;44585:28::-;;;;;;;;;;;;;:::o;44285:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;44506:25::-;;;;;;;;;;;;;:::o;44250:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31361:239::-;31433:7;31453:13;31469:7;:16;31477:7;31469:16;;;;;;;;;;;;;;;;;;;;;31453:32;;31521:1;31504:19;;:5;:19;;;;31496:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31587:5;31580:12;;;31361:239;;;:::o;44538:40::-;;;;;;;;;;;;;:::o;31091:208::-;31163:7;31208:1;31191:19;;:5;:19;;;;31183:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;31275:9;:16;31285:5;31275:16;;;;;;;;;;;;;;;;31268:23;;31091:208;;;:::o;11343:103::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11408:30:::1;11435:1;11408:18;:30::i;:::-;11343:103::o:0;49355:104::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49440:11:::1;49427:10;:24;;;;49355:104:::0;:::o;49036:106::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49124:10:::1;49112:9;:22;;;;;;;;;;;;:::i;:::-;;49036:106:::0;:::o;10692:87::-;10738:7;10765:6;;;;;;;;;;;10758:13;;10692:87;:::o;44422:33::-;;;;:::o;31836:104::-;31892:13;31925:7;31918:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31836:104;:::o;46604:259::-;46696:11;45190:24;45217:20;:32;45238:10;45217:32;;;;;;;;;;;;;;;;45190:59;;45304:18;;45289:11;45270:16;:30;;;;:::i;:::-;:52;;45262:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;45392:1;45378:11;:15;:52;;;;;45412:18;;45397:11;:33;;45378:52;45369:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;46738:11:::1;45546:24;45573:20;:32;45594:10;45573:32;;;;;;;;;;;;;;;;45546:59;;45644:11;45637:4;;:18;;;;:::i;:::-;45624:9;:31;;45616:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;45732:18;;45717:11;45698:16;:30;;;;:::i;:::-;:52;;45690:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;46776:6:::2;;;;;;;;;;;46775:7;46767:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;46821:34;46831:10;46843:11;46821:9;:34::i;:::-;45535:268:::1;45468:1;45177:300:::0;46604:259;;:::o;33519:155::-;33614:52;33633:12;:10;:12::i;:::-;33647:8;33657;33614:18;:52::i;:::-;33519:155;;:::o;44325:31::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;48700:159::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48832:19:::1;48811:18;:40;;;;48700:159:::0;:::o;49467:111::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49564:6:::1;49541:20;;:29;;;;;;;;;;;;;;;;;;49467:111:::0;:::o;34642:328::-;34817:41;34836:12;:10;:12::i;:::-;34850:7;34817:18;:41::i;:::-;34809:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;34923:39;34937:4;34943:2;34947:7;34956:5;34923:13;:39::i;:::-;34642:328;;;;:::o;44462:37::-;;;;:::o;47782:727::-;47901:13;47954:17;47962:8;47954:7;:17::i;:::-;47932:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;48075:5;48063:17;;:8;;;;;;;;;;;:17;;;48059:74;;;48104:17;48097:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48059:74;48145:28;48176:10;:8;:10::i;:::-;48145:41;;48248:1;48223:14;48217:28;:32;:284;;;;;;;;;;;;;;;;;48341:14;48382:19;:8;:17;:19::i;:::-;48428:9;48298:162;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;48217:284;48197:304;;;47782:727;;;;:::o;45914:682::-;46048:11;45190:24;45217:20;:32;45238:10;45217:32;;;;;;;;;;;;;;;;45190:59;;45304:18;;45289:11;45270:16;:30;;;;:::i;:::-;:52;;45262:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;45392:1;45378:11;:15;:52;;;;;45412:18;;45397:11;:33;;45378:52;45369:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;46090:11:::1;45546:24;45573:20;:32;45594:10;45573:32;;;;;;;;;;;;;;;;45546:59;;45644:11;45637:4;;:18;;;;:::i;:::-;45624:9;:31;;45616:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;45732:18;;45717:11;45698:16;:30;;;;:::i;:::-;:52;;45690:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;46169:20:::2;;;;;;;;;;;46161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;46248:16;:28;46265:10;46248:28;;;;;;;;;;;;;;;;;;;;;;;;;46247:29;46239:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;46316:12;46358:10;46341:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;46331:39;;;;;;46316:54;;46403:50;46422:12;;46403:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46436:10;;46448:4;46403:18;:50::i;:::-;46381:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;46539:4;46508:16;:28;46525:10;46508:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;46554:34;46564:10;46576:11;46554:9;:34::i;:::-;46108:488;45535:268:::1;45468:1;45177:300:::0;45914:682;;;;:::o;44391:24::-;;;;:::o;44133:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;48517:87::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48590:6:::1;48579:8;;:17;;;;;;;;;;;;;;;;;;48517:87:::0;:::o;33745:164::-;33842:4;33866:18;:25;33885:5;33866:25;;;;;;;;;;;;;;;:35;33892:8;33866:35;;;;;;;;;;;;;;;;;;;;;;;;;33859:42;;33745:164;;;;:::o;46871:158::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46988:33:::1;46998:9;47009:11;46988:9;:33::i;:::-;46871:158:::0;;:::o;11601:201::-;10923:12;:10;:12::i;:::-;10912:23;;:7;:5;:7::i;:::-;:23;;;10904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11710:1:::1;11690:22;;:8;:22;;;;11682:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11766:28;11785:8;11766:18;:28::i;:::-;11601:201:::0;:::o;23476:157::-;23561:4;23600:25;23585:40;;;:11;:40;;;;23578:47;;23476:157;;;:::o;36480:127::-;36545:4;36597:1;36569:30;;:7;:16;36577:7;36569:16;;;;;;;;;;;;;;;;;;;;;:30;;;;36562:37;;36480:127;;;:::o;9416:98::-;9469:7;9496:10;9489:17;;9416:98;:::o;40626:174::-;40728:2;40701:15;:24;40717:7;40701:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;40784:7;40780:2;40746:46;;40755:23;40770:7;40755:14;:23::i;:::-;40746:46;;;;;;;;;;;;40626:174;;:::o;6020:114::-;6085:7;6112;:14;;;6105:21;;6020:114;;;:::o;36774:348::-;36867:4;36892:16;36900:7;36892;:16::i;:::-;36884:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;36968:13;36984:23;36999:7;36984:14;:23::i;:::-;36968:39;;37037:5;37026:16;;:7;:16;;;:51;;;;37070:7;37046:31;;:20;37058:7;37046:11;:20::i;:::-;:31;;;37026:51;:87;;;;37081:32;37098:5;37105:7;37081:16;:32::i;:::-;37026:87;37018:96;;;36774:348;;;;:::o;39883:625::-;40042:4;40015:31;;:23;40030:7;40015:14;:23::i;:::-;:31;;;40007:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;40121:1;40107:16;;:2;:16;;;;40099:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;40177:39;40198:4;40204:2;40208:7;40177:20;:39::i;:::-;40281:29;40298:1;40302:7;40281:8;:29::i;:::-;40342:1;40323:9;:15;40333:4;40323:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;40371:1;40354:9;:13;40364:2;40354:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;40402:2;40383:7;:16;40391:7;40383:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;40441:7;40437:2;40422:27;;40431:4;40422:27;;;;;;;;;;;;40462:38;40482:4;40488:2;40492:7;40462:19;:38::i;:::-;39883:625;;;:::o;11962:191::-;12036:16;12055:6;;;;;;;;;;;12036:25;;12081:8;12072:6;;:17;;;;;;;;;;;;;;;;;;12136:8;12105:40;;12126:8;12105:40;;;;;;;;;;;;12025:128;11962:191;:::o;50335:275::-;50419:9;50414:189;50438:11;50434:1;:15;50414:189;;;50471:18;:6;:16;:18::i;:::-;50504:20;:32;50525:10;50504:32;;;;;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;50553:38;50563:9;50574:16;:6;:14;:16::i;:::-;50553:9;:38::i;:::-;50451:3;;;;;:::i;:::-;;;;50414:189;;;;50335:275;;:::o;40942:315::-;41097:8;41088:17;;:5;:17;;;;41080:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;41184:8;41146:18;:25;41165:5;41146:25;;;;;;;;;;;;;;;:35;41172:8;41146:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;41230:8;41208:41;;41223:5;41208:41;;;41240:8;41208:41;;;;;;:::i;:::-;;;;;;;;40942:315;;;:::o;35852:::-;36009:28;36019:4;36025:2;36029:7;36009:9;:28::i;:::-;36056:48;36079:4;36085:2;36089:7;36098:5;36056:22;:48::i;:::-;36048:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;35852:315;;;;:::o;50618:110::-;50678:13;50711:9;50704:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50618:110;:::o;6978:723::-;7034:13;7264:1;7255:5;:10;7251:53;;;7282:10;;;;;;;;;;;;;;;;;;;;;7251:53;7314:12;7329:5;7314:20;;7345:14;7370:78;7385:1;7377:4;:9;7370:78;;7403:8;;;;;:::i;:::-;;;;7434:2;7426:10;;;;;:::i;:::-;;;7370:78;;;7458:19;7490:6;7480:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7458:39;;7508:154;7524:1;7515:5;:10;7508:154;;7552:1;7542:11;;;;;:::i;:::-;;;7619:2;7611:5;:10;;;;:::i;:::-;7598:2;:24;;;;:::i;:::-;7585:39;;7568:6;7575;7568:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;7648:2;7639:11;;;;;:::i;:::-;;;7508:154;;;7686:6;7672:21;;;;;6978:723;;;;:::o;3682:190::-;3807:4;3860;3831:25;3844:5;3851:4;3831:12;:25::i;:::-;:33;3824:40;;3682:190;;;;;:::o;43193:126::-;;;;:::o;43704:125::-;;;;:::o;6142:127::-;6249:1;6231:7;:14;;;:19;;;;;;;;;;;6142:127;:::o;37464:110::-;37540:26;37550:2;37554:7;37540:26;;;;;;;;;;;;:9;:26::i;:::-;37464:110;;:::o;41822:799::-;41977:4;41998:15;:2;:13;;;:15::i;:::-;41994:620;;;42050:2;42034:36;;;42071:12;:10;:12::i;:::-;42085:4;42091:7;42100:5;42034:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;42030:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42293:1;42276:6;:13;:18;42272:272;;;42319:60;;;;;;;;;;:::i;:::-;;;;;;;;42272:272;42494:6;42488:13;42479:6;42475:2;42471:15;42464:38;42030:529;42167:41;;;42157:51;;;:6;:51;;;;42150:58;;;;;41994:620;42598:4;42591:11;;41822:799;;;;;;;:::o;4234:675::-;4317:7;4337:20;4360:4;4337:27;;4380:9;4375:497;4399:5;:12;4395:1;:16;4375:497;;;4433:20;4456:5;4462:1;4456:8;;;;;;;;:::i;:::-;;;;;;;;4433:31;;4499:12;4483;:28;4479:382;;4626:42;4641:12;4655;4626:14;:42::i;:::-;4611:57;;4479:382;;;4803:42;4818:12;4832;4803:14;:42::i;:::-;4788:57;;4479:382;4418:454;4413:3;;;;;:::i;:::-;;;;4375:497;;;;4889:12;4882:19;;;4234:675;;;;:::o;37801:321::-;37931:18;37937:2;37941:7;37931:5;:18::i;:::-;37982:54;38013:1;38017:2;38021:7;38030:5;37982:22;:54::i;:::-;37960:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;37801:321;;;:::o;13393:326::-;13453:4;13710:1;13688:7;:19;;;:23;13681:30;;13393:326;;;:::o;4917:224::-;4985:13;5048:1;5042:4;5035:15;5077:1;5071:4;5064:15;5118:4;5112;5102:21;5093:30;;4917:224;;;;:::o;38458:439::-;38552:1;38538:16;;:2;:16;;;;38530:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;38611:16;38619:7;38611;:16::i;:::-;38610:17;38602:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;38673:45;38702:1;38706:2;38710:7;38673:20;:45::i;:::-;38748:1;38731:9;:13;38741:2;38731:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;38779:2;38760:7;:16;38768:7;38760:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;38824:7;38820:2;38799:33;;38816:1;38799:33;;;;;;;;;;;;38845:44;38873:1;38877:2;38881:7;38845:19;:44::i;:::-;38458:439;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:117::-;5399:1;5396;5389:12;5413:117;5522:1;5519;5512:12;5536:180;5584:77;5581:1;5574:88;5681:4;5678:1;5671:15;5705:4;5702:1;5695:15;5722:281;5805:27;5827:4;5805:27;:::i;:::-;5797:6;5793:40;5935:6;5923:10;5920:22;5899:18;5887:10;5884:34;5881:62;5878:88;;;5946:18;;:::i;:::-;5878:88;5986:10;5982:2;5975:22;5765:238;5722:281;;:::o;6009:129::-;6043:6;6070:20;;:::i;:::-;6060:30;;6099:33;6127:4;6119:6;6099:33;:::i;:::-;6009:129;;;:::o;6144:308::-;6206:4;6296:18;6288:6;6285:30;6282:56;;;6318:18;;:::i;:::-;6282:56;6356:29;6378:6;6356:29;:::i;:::-;6348:37;;6440:4;6434;6430:15;6422:23;;6144:308;;;:::o;6458:154::-;6542:6;6537:3;6532;6519:30;6604:1;6595:6;6590:3;6586:16;6579:27;6458:154;;;:::o;6618:412::-;6696:5;6721:66;6737:49;6779:6;6737:49;:::i;:::-;6721:66;:::i;:::-;6712:75;;6810:6;6803:5;6796:21;6848:4;6841:5;6837:16;6886:3;6877:6;6872:3;6868:16;6865:25;6862:112;;;6893:79;;:::i;:::-;6862:112;6983:41;7017:6;7012:3;7007;6983:41;:::i;:::-;6702:328;6618:412;;;;;:::o;7050:340::-;7106:5;7155:3;7148:4;7140:6;7136:17;7132:27;7122:122;;7163:79;;:::i;:::-;7122:122;7280:6;7267:20;7305:79;7380:3;7372:6;7365:4;7357:6;7353:17;7305:79;:::i;:::-;7296:88;;7112:278;7050:340;;;;:::o;7396:509::-;7465:6;7514:2;7502:9;7493:7;7489:23;7485:32;7482:119;;;7520:79;;:::i;:::-;7482:119;7668:1;7657:9;7653:17;7640:31;7698:18;7690:6;7687:30;7684:117;;;7720:79;;:::i;:::-;7684:117;7825:63;7880:7;7871:6;7860:9;7856:22;7825:63;:::i;:::-;7815:73;;7611:287;7396:509;;;;:::o;7911:116::-;7981:21;7996:5;7981:21;:::i;:::-;7974:5;7971:32;7961:60;;8017:1;8014;8007:12;7961:60;7911:116;:::o;8033:133::-;8076:5;8114:6;8101:20;8092:29;;8130:30;8154:5;8130:30;:::i;:::-;8033:133;;;;:::o;8172:323::-;8228:6;8277:2;8265:9;8256:7;8252:23;8248:32;8245:119;;;8283:79;;:::i;:::-;8245:119;8403:1;8428:50;8470:7;8461:6;8450:9;8446:22;8428:50;:::i;:::-;8418:60;;8374:114;8172:323;;;;:::o;8501:329::-;8560:6;8609:2;8597:9;8588:7;8584:23;8580:32;8577:119;;;8615:79;;:::i;:::-;8577:119;8735:1;8760:53;8805:7;8796:6;8785:9;8781:22;8760:53;:::i;:::-;8750:63;;8706:117;8501:329;;;;:::o;8836:619::-;8913:6;8921;8929;8978:2;8966:9;8957:7;8953:23;8949:32;8946:119;;;8984:79;;:::i;:::-;8946:119;9104:1;9129:53;9174:7;9165:6;9154:9;9150:22;9129:53;:::i;:::-;9119:63;;9075:117;9231:2;9257:53;9302:7;9293:6;9282:9;9278:22;9257:53;:::i;:::-;9247:63;;9202:118;9359:2;9385:53;9430:7;9421:6;9410:9;9406:22;9385:53;:::i;:::-;9375:63;;9330:118;8836:619;;;;;:::o;9461:77::-;9498:7;9527:5;9516:16;;9461:77;;;:::o;9544:118::-;9631:24;9649:5;9631:24;:::i;:::-;9626:3;9619:37;9544:118;;:::o;9668:222::-;9761:4;9799:2;9788:9;9784:18;9776:26;;9812:71;9880:1;9869:9;9865:17;9856:6;9812:71;:::i;:::-;9668:222;;;;:::o;9896:114::-;9963:6;9997:5;9991:12;9981:22;;9896:114;;;:::o;10016:184::-;10115:11;10149:6;10144:3;10137:19;10189:4;10184:3;10180:14;10165:29;;10016:184;;;;:::o;10206:132::-;10273:4;10296:3;10288:11;;10326:4;10321:3;10317:14;10309:22;;10206:132;;;:::o;10344:108::-;10421:24;10439:5;10421:24;:::i;:::-;10416:3;10409:37;10344:108;;:::o;10458:179::-;10527:10;10548:46;10590:3;10582:6;10548:46;:::i;:::-;10626:4;10621:3;10617:14;10603:28;;10458:179;;;;:::o;10643:113::-;10713:4;10745;10740:3;10736:14;10728:22;;10643:113;;;:::o;10792:732::-;10911:3;10940:54;10988:5;10940:54;:::i;:::-;11010:86;11089:6;11084:3;11010:86;:::i;:::-;11003:93;;11120:56;11170:5;11120:56;:::i;:::-;11199:7;11230:1;11215:284;11240:6;11237:1;11234:13;11215:284;;;11316:6;11310:13;11343:63;11402:3;11387:13;11343:63;:::i;:::-;11336:70;;11429:60;11482:6;11429:60;:::i;:::-;11419:70;;11275:224;11262:1;11259;11255:9;11250:14;;11215:284;;;11219:14;11515:3;11508:10;;10916:608;;;10792:732;;;;:::o;11530:373::-;11673:4;11711:2;11700:9;11696:18;11688:26;;11760:9;11754:4;11750:20;11746:1;11735:9;11731:17;11724:47;11788:108;11891:4;11882:6;11788:108;:::i;:::-;11780:116;;11530:373;;;;:::o;11909:122::-;11982:24;12000:5;11982:24;:::i;:::-;11975:5;11972:35;11962:63;;12021:1;12018;12011:12;11962:63;11909:122;:::o;12037:139::-;12083:5;12121:6;12108:20;12099:29;;12137:33;12164:5;12137:33;:::i;:::-;12037:139;;;;:::o;12182:329::-;12241:6;12290:2;12278:9;12269:7;12265:23;12261:32;12258:119;;;12296:79;;:::i;:::-;12258:119;12416:1;12441:53;12486:7;12477:6;12466:9;12462:22;12441:53;:::i;:::-;12431:63;;12387:117;12182:329;;;;:::o;12517:468::-;12582:6;12590;12639:2;12627:9;12618:7;12614:23;12610:32;12607:119;;;12645:79;;:::i;:::-;12607:119;12765:1;12790:53;12835:7;12826:6;12815:9;12811:22;12790:53;:::i;:::-;12780:63;;12736:117;12892:2;12918:50;12960:7;12951:6;12940:9;12936:22;12918:50;:::i;:::-;12908:60;;12863:115;12517:468;;;;;:::o;12991:307::-;13052:4;13142:18;13134:6;13131:30;13128:56;;;13164:18;;:::i;:::-;13128:56;13202:29;13224:6;13202:29;:::i;:::-;13194:37;;13286:4;13280;13276:15;13268:23;;12991:307;;;:::o;13304:410::-;13381:5;13406:65;13422:48;13463:6;13422:48;:::i;:::-;13406:65;:::i;:::-;13397:74;;13494:6;13487:5;13480:21;13532:4;13525:5;13521:16;13570:3;13561:6;13556:3;13552:16;13549:25;13546:112;;;13577:79;;:::i;:::-;13546:112;13667:41;13701:6;13696:3;13691;13667:41;:::i;:::-;13387:327;13304:410;;;;;:::o;13733:338::-;13788:5;13837:3;13830:4;13822:6;13818:17;13814:27;13804:122;;13845:79;;:::i;:::-;13804:122;13962:6;13949:20;13987:78;14061:3;14053:6;14046:4;14038:6;14034:17;13987:78;:::i;:::-;13978:87;;13794:277;13733:338;;;;:::o;14077:943::-;14172:6;14180;14188;14196;14245:3;14233:9;14224:7;14220:23;14216:33;14213:120;;;14252:79;;:::i;:::-;14213:120;14372:1;14397:53;14442:7;14433:6;14422:9;14418:22;14397:53;:::i;:::-;14387:63;;14343:117;14499:2;14525:53;14570:7;14561:6;14550:9;14546:22;14525:53;:::i;:::-;14515:63;;14470:118;14627:2;14653:53;14698:7;14689:6;14678:9;14674:22;14653:53;:::i;:::-;14643:63;;14598:118;14783:2;14772:9;14768:18;14755:32;14814:18;14806:6;14803:30;14800:117;;;14836:79;;:::i;:::-;14800:117;14941:62;14995:7;14986:6;14975:9;14971:22;14941:62;:::i;:::-;14931:72;;14726:287;14077:943;;;;;;;:::o;15026:117::-;15135:1;15132;15125:12;15149:117;15258:1;15255;15248:12;15289:568;15362:8;15372:6;15422:3;15415:4;15407:6;15403:17;15399:27;15389:122;;15430:79;;:::i;:::-;15389:122;15543:6;15530:20;15520:30;;15573:18;15565:6;15562:30;15559:117;;;15595:79;;:::i;:::-;15559:117;15709:4;15701:6;15697:17;15685:29;;15763:3;15755:4;15747:6;15743:17;15733:8;15729:32;15726:41;15723:128;;;15770:79;;:::i;:::-;15723:128;15289:568;;;;;:::o;15863:704::-;15958:6;15966;15974;16023:2;16011:9;16002:7;15998:23;15994:32;15991:119;;;16029:79;;:::i;:::-;15991:119;16149:1;16174:53;16219:7;16210:6;16199:9;16195:22;16174:53;:::i;:::-;16164:63;;16120:117;16304:2;16293:9;16289:18;16276:32;16335:18;16327:6;16324:30;16321:117;;;16357:79;;:::i;:::-;16321:117;16470:80;16542:7;16533:6;16522:9;16518:22;16470:80;:::i;:::-;16452:98;;;;16247:313;15863:704;;;;;:::o;16573:474::-;16641:6;16649;16698:2;16686:9;16677:7;16673:23;16669:32;16666:119;;;16704:79;;:::i;:::-;16666:119;16824:1;16849:53;16894:7;16885:6;16874:9;16870:22;16849:53;:::i;:::-;16839:63;;16795:117;16951:2;16977:53;17022:7;17013:6;17002:9;16998:22;16977:53;:::i;:::-;16967:63;;16922:118;16573:474;;;;;:::o;17053:::-;17121:6;17129;17178:2;17166:9;17157:7;17153:23;17149:32;17146:119;;;17184:79;;:::i;:::-;17146:119;17304:1;17329:53;17374:7;17365:6;17354:9;17350:22;17329:53;:::i;:::-;17319:63;;17275:117;17431:2;17457:53;17502:7;17493:6;17482:9;17478:22;17457:53;:::i;:::-;17447:63;;17402:118;17053:474;;;;;:::o;17533:180::-;17581:77;17578:1;17571:88;17678:4;17675:1;17668:15;17702:4;17699:1;17692:15;17719:320;17763:6;17800:1;17794:4;17790:12;17780:22;;17847:1;17841:4;17837:12;17868:18;17858:81;;17924:4;17916:6;17912:17;17902:27;;17858:81;17986:2;17978:6;17975:14;17955:18;17952:38;17949:84;;;18005:18;;:::i;:::-;17949:84;17770:269;17719:320;;;:::o;18045:231::-;18185:34;18181:1;18173:6;18169:14;18162:58;18254:14;18249:2;18241:6;18237:15;18230:39;18045:231;:::o;18282:366::-;18424:3;18445:67;18509:2;18504:3;18445:67;:::i;:::-;18438:74;;18521:93;18610:3;18521:93;:::i;:::-;18639:2;18634:3;18630:12;18623:19;;18282:366;;;:::o;18654:419::-;18820:4;18858:2;18847:9;18843:18;18835:26;;18907:9;18901:4;18897:20;18893:1;18882:9;18878:17;18871:47;18935:131;19061:4;18935:131;:::i;:::-;18927:139;;18654:419;;;:::o;19079:220::-;19219:34;19215:1;19207:6;19203:14;19196:58;19288:3;19283:2;19275:6;19271:15;19264:28;19079:220;:::o;19305:366::-;19447:3;19468:67;19532:2;19527:3;19468:67;:::i;:::-;19461:74;;19544:93;19633:3;19544:93;:::i;:::-;19662:2;19657:3;19653:12;19646:19;;19305:366;;;:::o;19677:419::-;19843:4;19881:2;19870:9;19866:18;19858:26;;19930:9;19924:4;19920:20;19916:1;19905:9;19901:17;19894:47;19958:131;20084:4;19958:131;:::i;:::-;19950:139;;19677:419;;;:::o;20102:243::-;20242:34;20238:1;20230:6;20226:14;20219:58;20311:26;20306:2;20298:6;20294:15;20287:51;20102:243;:::o;20351:366::-;20493:3;20514:67;20578:2;20573:3;20514:67;:::i;:::-;20507:74;;20590:93;20679:3;20590:93;:::i;:::-;20708:2;20703:3;20699:12;20692:19;;20351:366;;;:::o;20723:419::-;20889:4;20927:2;20916:9;20912:18;20904:26;;20976:9;20970:4;20966:20;20962:1;20951:9;20947:17;20940:47;21004:131;21130:4;21004:131;:::i;:::-;20996:139;;20723:419;;;:::o;21148:182::-;21288:34;21284:1;21276:6;21272:14;21265:58;21148:182;:::o;21336:366::-;21478:3;21499:67;21563:2;21558:3;21499:67;:::i;:::-;21492:74;;21575:93;21664:3;21575:93;:::i;:::-;21693:2;21688:3;21684:12;21677:19;;21336:366;;;:::o;21708:419::-;21874:4;21912:2;21901:9;21897:18;21889:26;;21961:9;21955:4;21951:20;21947:1;21936:9;21932:17;21925:47;21989:131;22115:4;21989:131;:::i;:::-;21981:139;;21708:419;;;:::o;22133:236::-;22273:34;22269:1;22261:6;22257:14;22250:58;22342:19;22337:2;22329:6;22325:15;22318:44;22133:236;:::o;22375:366::-;22517:3;22538:67;22602:2;22597:3;22538:67;:::i;:::-;22531:74;;22614:93;22703:3;22614:93;:::i;:::-;22732:2;22727:3;22723:12;22716:19;;22375:366;;;:::o;22747:419::-;22913:4;22951:2;22940:9;22936:18;22928:26;;23000:9;22994:4;22990:20;22986:1;22975:9;22971:17;22964:47;23028:131;23154:4;23028:131;:::i;:::-;23020:139;;22747:419;;;:::o;23172:181::-;23312:33;23308:1;23300:6;23296:14;23289:57;23172:181;:::o;23359:366::-;23501:3;23522:67;23586:2;23581:3;23522:67;:::i;:::-;23515:74;;23598:93;23687:3;23598:93;:::i;:::-;23716:2;23711:3;23707:12;23700:19;;23359:366;;;:::o;23731:419::-;23897:4;23935:2;23924:9;23920:18;23912:26;;23984:9;23978:4;23974:20;23970:1;23959:9;23955:17;23948:47;24012:131;24138:4;24012:131;:::i;:::-;24004:139;;23731:419;;;:::o;24156:174::-;24296:26;24292:1;24284:6;24280:14;24273:50;24156:174;:::o;24336:366::-;24478:3;24499:67;24563:2;24558:3;24499:67;:::i;:::-;24492:74;;24575:93;24664:3;24575:93;:::i;:::-;24693:2;24688:3;24684:12;24677:19;;24336:366;;;:::o;24708:419::-;24874:4;24912:2;24901:9;24897:18;24889:26;;24961:9;24955:4;24951:20;24947:1;24936:9;24932:17;24925:47;24989:131;25115:4;24989:131;:::i;:::-;24981:139;;24708:419;;;:::o;25133:180::-;25181:77;25178:1;25171:88;25278:4;25275:1;25268:15;25302:4;25299:1;25292:15;25319:348;25359:7;25382:20;25400:1;25382:20;:::i;:::-;25377:25;;25416:20;25434:1;25416:20;:::i;:::-;25411:25;;25604:1;25536:66;25532:74;25529:1;25526:81;25521:1;25514:9;25507:17;25503:105;25500:131;;;25611:18;;:::i;:::-;25500:131;25659:1;25656;25652:9;25641:20;;25319:348;;;;:::o;25673:180::-;25721:77;25718:1;25711:88;25818:4;25815:1;25808:15;25842:4;25839:1;25832:15;25859:185;25899:1;25916:20;25934:1;25916:20;:::i;:::-;25911:25;;25950:20;25968:1;25950:20;:::i;:::-;25945:25;;25989:1;25979:35;;25994:18;;:::i;:::-;25979:35;26036:1;26033;26029:9;26024:14;;25859:185;;;;:::o;26050:147::-;26151:11;26188:3;26173:18;;26050:147;;;;:::o;26203:114::-;;:::o;26323:398::-;26482:3;26503:83;26584:1;26579:3;26503:83;:::i;:::-;26496:90;;26595:93;26684:3;26595:93;:::i;:::-;26713:1;26708:3;26704:11;26697:18;;26323:398;;;:::o;26727:379::-;26911:3;26933:147;27076:3;26933:147;:::i;:::-;26926:154;;27097:3;27090:10;;26727:379;;;:::o;27112:180::-;27160:77;27157:1;27150:88;27257:4;27254:1;27247:15;27281:4;27278:1;27271:15;27298:233;27337:3;27360:24;27378:5;27360:24;:::i;:::-;27351:33;;27406:66;27399:5;27396:77;27393:103;;;27476:18;;:::i;:::-;27393:103;27523:1;27516:5;27512:13;27505:20;;27298:233;;;:::o;27537:228::-;27677:34;27673:1;27665:6;27661:14;27654:58;27746:11;27741:2;27733:6;27729:15;27722:36;27537:228;:::o;27771:366::-;27913:3;27934:67;27998:2;27993:3;27934:67;:::i;:::-;27927:74;;28010:93;28099:3;28010:93;:::i;:::-;28128:2;28123:3;28119:12;28112:19;;27771:366;;;:::o;28143:419::-;28309:4;28347:2;28336:9;28332:18;28324:26;;28396:9;28390:4;28386:20;28382:1;28371:9;28367:17;28360:47;28424:131;28550:4;28424:131;:::i;:::-;28416:139;;28143:419;;;:::o;28568:229::-;28708:34;28704:1;28696:6;28692:14;28685:58;28777:12;28772:2;28764:6;28760:15;28753:37;28568:229;:::o;28803:366::-;28945:3;28966:67;29030:2;29025:3;28966:67;:::i;:::-;28959:74;;29042:93;29131:3;29042:93;:::i;:::-;29160:2;29155:3;29151:12;29144:19;;28803:366;;;:::o;29175:419::-;29341:4;29379:2;29368:9;29364:18;29356:26;;29428:9;29422:4;29418:20;29414:1;29403:9;29399:17;29392:47;29456:131;29582:4;29456:131;:::i;:::-;29448:139;;29175:419;;;:::o;29600:305::-;29640:3;29659:20;29677:1;29659:20;:::i;:::-;29654:25;;29693:20;29711:1;29693:20;:::i;:::-;29688:25;;29847:1;29779:66;29775:74;29772:1;29769:81;29766:107;;;29853:18;;:::i;:::-;29766:107;29897:1;29894;29890:9;29883:16;;29600:305;;;;:::o;29911:178::-;30051:30;30047:1;30039:6;30035:14;30028:54;29911:178;:::o;30095:366::-;30237:3;30258:67;30322:2;30317:3;30258:67;:::i;:::-;30251:74;;30334:93;30423:3;30334:93;:::i;:::-;30452:2;30447:3;30443:12;30436:19;;30095:366;;;:::o;30467:419::-;30633:4;30671:2;30660:9;30656:18;30648:26;;30720:9;30714:4;30710:20;30706:1;30695:9;30691:17;30684:47;30748:131;30874:4;30748:131;:::i;:::-;30740:139;;30467:419;;;:::o;30892:170::-;31032:22;31028:1;31020:6;31016:14;31009:46;30892:170;:::o;31068:366::-;31210:3;31231:67;31295:2;31290:3;31231:67;:::i;:::-;31224:74;;31307:93;31396:3;31307:93;:::i;:::-;31425:2;31420:3;31416:12;31409:19;;31068:366;;;:::o;31440:419::-;31606:4;31644:2;31633:9;31629:18;31621:26;;31693:9;31687:4;31683:20;31679:1;31668:9;31664:17;31657:47;31721:131;31847:4;31721:131;:::i;:::-;31713:139;;31440:419;;;:::o;31865:169::-;32005:21;32001:1;31993:6;31989:14;31982:45;31865:169;:::o;32040:366::-;32182:3;32203:67;32267:2;32262:3;32203:67;:::i;:::-;32196:74;;32279:93;32368:3;32279:93;:::i;:::-;32397:2;32392:3;32388:12;32381:19;;32040:366;;;:::o;32412:419::-;32578:4;32616:2;32605:9;32601:18;32593:26;;32665:9;32659:4;32655:20;32651:1;32640:9;32636:17;32629:47;32693:131;32819:4;32693:131;:::i;:::-;32685:139;;32412:419;;;:::o;32837:173::-;32977:25;32973:1;32965:6;32961:14;32954:49;32837:173;:::o;33016:366::-;33158:3;33179:67;33243:2;33238:3;33179:67;:::i;:::-;33172:74;;33255:93;33344:3;33255:93;:::i;:::-;33373:2;33368:3;33364:12;33357:19;;33016:366;;;:::o;33388:419::-;33554:4;33592:2;33581:9;33577:18;33569:26;;33641:9;33635:4;33631:20;33627:1;33616:9;33612:17;33605:47;33669:131;33795:4;33669:131;:::i;:::-;33661:139;;33388:419;;;:::o;33813:234::-;33953:34;33949:1;33941:6;33937:14;33930:58;34022:17;34017:2;34009:6;34005:15;33998:42;33813:234;:::o;34053:366::-;34195:3;34216:67;34280:2;34275:3;34216:67;:::i;:::-;34209:74;;34292:93;34381:3;34292:93;:::i;:::-;34410:2;34405:3;34401:12;34394:19;;34053:366;;;:::o;34425:419::-;34591:4;34629:2;34618:9;34614:18;34606:26;;34678:9;34672:4;34668:20;34664:1;34653:9;34649:17;34642:47;34706:131;34832:4;34706:131;:::i;:::-;34698:139;;34425:419;;;:::o;34850:148::-;34952:11;34989:3;34974:18;;34850:148;;;;:::o;35004:377::-;35110:3;35138:39;35171:5;35138:39;:::i;:::-;35193:89;35275:6;35270:3;35193:89;:::i;:::-;35186:96;;35291:52;35336:6;35331:3;35324:4;35317:5;35313:16;35291:52;:::i;:::-;35368:6;35363:3;35359:16;35352:23;;35114:267;35004:377;;;;:::o;35387:141::-;35436:4;35459:3;35451:11;;35482:3;35479:1;35472:14;35516:4;35513:1;35503:18;35495:26;;35387:141;;;:::o;35558:845::-;35661:3;35698:5;35692:12;35727:36;35753:9;35727:36;:::i;:::-;35779:89;35861:6;35856:3;35779:89;:::i;:::-;35772:96;;35899:1;35888:9;35884:17;35915:1;35910:137;;;;36061:1;36056:341;;;;35877:520;;35910:137;35994:4;35990:9;35979;35975:25;35970:3;35963:38;36030:6;36025:3;36021:16;36014:23;;35910:137;;36056:341;36123:38;36155:5;36123:38;:::i;:::-;36183:1;36197:154;36211:6;36208:1;36205:13;36197:154;;;36285:7;36279:14;36275:1;36270:3;36266:11;36259:35;36335:1;36326:7;36322:15;36311:26;;36233:4;36230:1;36226:12;36221:17;;36197:154;;;36380:6;36375:3;36371:16;36364:23;;36063:334;;35877:520;;35665:738;;35558:845;;;;:::o;36409:589::-;36634:3;36656:95;36747:3;36738:6;36656:95;:::i;:::-;36649:102;;36768:95;36859:3;36850:6;36768:95;:::i;:::-;36761:102;;36880:92;36968:3;36959:6;36880:92;:::i;:::-;36873:99;;36989:3;36982:10;;36409:589;;;;;;:::o;37004:221::-;37144:34;37140:1;37132:6;37128:14;37121:58;37213:4;37208:2;37200:6;37196:15;37189:29;37004:221;:::o;37231:366::-;37373:3;37394:67;37458:2;37453:3;37394:67;:::i;:::-;37387:74;;37470:93;37559:3;37470:93;:::i;:::-;37588:2;37583:3;37579:12;37572:19;;37231:366;;;:::o;37603:419::-;37769:4;37807:2;37796:9;37792:18;37784:26;;37856:9;37850:4;37846:20;37842:1;37831:9;37827:17;37820:47;37884:131;38010:4;37884:131;:::i;:::-;37876:139;;37603:419;;;:::o;38028:174::-;38168:26;38164:1;38156:6;38152:14;38145:50;38028:174;:::o;38208:366::-;38350:3;38371:67;38435:2;38430:3;38371:67;:::i;:::-;38364:74;;38447:93;38536:3;38447:93;:::i;:::-;38565:2;38560:3;38556:12;38549:19;;38208:366;;;:::o;38580:419::-;38746:4;38784:2;38773:9;38769:18;38761:26;;38833:9;38827:4;38823:20;38819:1;38808:9;38804:17;38797:47;38861:131;38987:4;38861:131;:::i;:::-;38853:139;;38580:419;;;:::o;39005:94::-;39038:8;39086:5;39082:2;39078:14;39057:35;;39005:94;;;:::o;39105:::-;39144:7;39173:20;39187:5;39173:20;:::i;:::-;39162:31;;39105:94;;;:::o;39205:100::-;39244:7;39273:26;39293:5;39273:26;:::i;:::-;39262:37;;39205:100;;;:::o;39311:157::-;39416:45;39436:24;39454:5;39436:24;:::i;:::-;39416:45;:::i;:::-;39411:3;39404:58;39311:157;;:::o;39474:256::-;39586:3;39601:75;39672:3;39663:6;39601:75;:::i;:::-;39701:2;39696:3;39692:12;39685:19;;39721:3;39714:10;;39474:256;;;;:::o;39736:164::-;39876:16;39872:1;39864:6;39860:14;39853:40;39736:164;:::o;39906:366::-;40048:3;40069:67;40133:2;40128:3;40069:67;:::i;:::-;40062:74;;40145:93;40234:3;40145:93;:::i;:::-;40263:2;40258:3;40254:12;40247:19;;39906:366;;;:::o;40278:419::-;40444:4;40482:2;40471:9;40467:18;40459:26;;40531:9;40525:4;40521:20;40517:1;40506:9;40502:17;40495:47;40559:131;40685:4;40559:131;:::i;:::-;40551:139;;40278:419;;;:::o;40703:225::-;40843:34;40839:1;40831:6;40827:14;40820:58;40912:8;40907:2;40899:6;40895:15;40888:33;40703:225;:::o;40934:366::-;41076:3;41097:67;41161:2;41156:3;41097:67;:::i;:::-;41090:74;;41173:93;41262:3;41173:93;:::i;:::-;41291:2;41286:3;41282:12;41275:19;;40934:366;;;:::o;41306:419::-;41472:4;41510:2;41499:9;41495:18;41487:26;;41559:9;41553:4;41549:20;41545:1;41534:9;41530:17;41523:47;41587:131;41713:4;41587:131;:::i;:::-;41579:139;;41306:419;;;:::o;41731:231::-;41871:34;41867:1;41859:6;41855:14;41848:58;41940:14;41935:2;41927:6;41923:15;41916:39;41731:231;:::o;41968:366::-;42110:3;42131:67;42195:2;42190:3;42131:67;:::i;:::-;42124:74;;42207:93;42296:3;42207:93;:::i;:::-;42325:2;42320:3;42316:12;42309:19;;41968:366;;;:::o;42340:419::-;42506:4;42544:2;42533:9;42529:18;42521:26;;42593:9;42587:4;42583:20;42579:1;42568:9;42564:17;42557:47;42621:131;42747:4;42621:131;:::i;:::-;42613:139;;42340:419;;;:::o;42765:224::-;42905:34;42901:1;42893:6;42889:14;42882:58;42974:7;42969:2;42961:6;42957:15;42950:32;42765:224;:::o;42995:366::-;43137:3;43158:67;43222:2;43217:3;43158:67;:::i;:::-;43151:74;;43234:93;43323:3;43234:93;:::i;:::-;43352:2;43347:3;43343:12;43336:19;;42995:366;;;:::o;43367:419::-;43533:4;43571:2;43560:9;43556:18;43548:26;;43620:9;43614:4;43610:20;43606:1;43595:9;43591:17;43584:47;43648:131;43774:4;43648:131;:::i;:::-;43640:139;;43367:419;;;:::o;43792:223::-;43932:34;43928:1;43920:6;43916:14;43909:58;44001:6;43996:2;43988:6;43984:15;43977:31;43792:223;:::o;44021:366::-;44163:3;44184:67;44248:2;44243:3;44184:67;:::i;:::-;44177:74;;44260:93;44349:3;44260:93;:::i;:::-;44378:2;44373:3;44369:12;44362:19;;44021:366;;;:::o;44393:419::-;44559:4;44597:2;44586:9;44582:18;44574:26;;44646:9;44640:4;44636:20;44632:1;44621:9;44617:17;44610:47;44674:131;44800:4;44674:131;:::i;:::-;44666:139;;44393:419;;;:::o;44818:191::-;44858:4;44878:20;44896:1;44878:20;:::i;:::-;44873:25;;44912:20;44930:1;44912:20;:::i;:::-;44907:25;;44951:1;44948;44945:8;44942:34;;;44956:18;;:::i;:::-;44942:34;45001:1;44998;44994:9;44986:17;;44818:191;;;;:::o;45015:175::-;45155:27;45151:1;45143:6;45139:14;45132:51;45015:175;:::o;45196:366::-;45338:3;45359:67;45423:2;45418:3;45359:67;:::i;:::-;45352:74;;45435:93;45524:3;45435:93;:::i;:::-;45553:2;45548:3;45544:12;45537:19;;45196:366;;;:::o;45568:419::-;45734:4;45772:2;45761:9;45757:18;45749:26;;45821:9;45815:4;45811:20;45807:1;45796:9;45792:17;45785:47;45849:131;45975:4;45849:131;:::i;:::-;45841:139;;45568:419;;;:::o;45993:237::-;46133:34;46129:1;46121:6;46117:14;46110:58;46202:20;46197:2;46189:6;46185:15;46178:45;45993:237;:::o;46236:366::-;46378:3;46399:67;46463:2;46458:3;46399:67;:::i;:::-;46392:74;;46475:93;46564:3;46475:93;:::i;:::-;46593:2;46588:3;46584:12;46577:19;;46236:366;;;:::o;46608:419::-;46774:4;46812:2;46801:9;46797:18;46789:26;;46861:9;46855:4;46851:20;46847:1;46836:9;46832:17;46825:47;46889:131;47015:4;46889:131;:::i;:::-;46881:139;;46608:419;;;:::o;47033:176::-;47065:1;47082:20;47100:1;47082:20;:::i;:::-;47077:25;;47116:20;47134:1;47116:20;:::i;:::-;47111:25;;47155:1;47145:35;;47160:18;;:::i;:::-;47145:35;47201:1;47198;47194:9;47189:14;;47033:176;;;;:::o;47215:98::-;47266:6;47300:5;47294:12;47284:22;;47215:98;;;:::o;47319:168::-;47402:11;47436:6;47431:3;47424:19;47476:4;47471:3;47467:14;47452:29;;47319:168;;;;:::o;47493:360::-;47579:3;47607:38;47639:5;47607:38;:::i;:::-;47661:70;47724:6;47719:3;47661:70;:::i;:::-;47654:77;;47740:52;47785:6;47780:3;47773:4;47766:5;47762:16;47740:52;:::i;:::-;47817:29;47839:6;47817:29;:::i;:::-;47812:3;47808:39;47801:46;;47583:270;47493:360;;;;:::o;47859:640::-;48054:4;48092:3;48081:9;48077:19;48069:27;;48106:71;48174:1;48163:9;48159:17;48150:6;48106:71;:::i;:::-;48187:72;48255:2;48244:9;48240:18;48231:6;48187:72;:::i;:::-;48269;48337:2;48326:9;48322:18;48313:6;48269:72;:::i;:::-;48388:9;48382:4;48378:20;48373:2;48362:9;48358:18;48351:48;48416:76;48487:4;48478:6;48416:76;:::i;:::-;48408:84;;47859:640;;;;;;;:::o;48505:141::-;48561:5;48592:6;48586:13;48577:22;;48608:32;48634:5;48608:32;:::i;:::-;48505:141;;;;:::o;48652:349::-;48721:6;48770:2;48758:9;48749:7;48745:23;48741:32;48738:119;;;48776:79;;:::i;:::-;48738:119;48896:1;48921:63;48976:7;48967:6;48956:9;48952:22;48921:63;:::i;:::-;48911:73;;48867:127;48652:349;;;;:::o;49007:182::-;49147:34;49143:1;49135:6;49131:14;49124:58;49007:182;:::o;49195:366::-;49337:3;49358:67;49422:2;49417:3;49358:67;:::i;:::-;49351:74;;49434:93;49523:3;49434:93;:::i;:::-;49552:2;49547:3;49543:12;49536:19;;49195:366;;;:::o;49567:419::-;49733:4;49771:2;49760:9;49756:18;49748:26;;49820:9;49814:4;49810:20;49806:1;49795:9;49791:17;49784:47;49848:131;49974:4;49848:131;:::i;:::-;49840:139;;49567:419;;;:::o;49992:178::-;50132:30;50128:1;50120:6;50116:14;50109:54;49992:178;:::o;50176:366::-;50318:3;50339:67;50403:2;50398:3;50339:67;:::i;:::-;50332:74;;50415:93;50504:3;50415:93;:::i;:::-;50533:2;50528:3;50524:12;50517:19;;50176:366;;;:::o;50548:419::-;50714:4;50752:2;50741:9;50737:18;50729:26;;50801:9;50795:4;50791:20;50787:1;50776:9;50772:17;50765:47;50829:131;50955:4;50829:131;:::i;:::-;50821:139;;50548:419;;;:::o

Swarm Source

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