ETH Price: $2,426.71 (+0.07%)

Token

PowerfulMamacita (PWRFL)
 

Overview

Max Total Supply

47 PWRFL

Holders

30

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
nicknamed.eth
Balance
1 PWRFL
0x6f4e4664e9b519deab043676d9aafe6c9621c088
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:
PowerfulMamacita

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-21
*/

// Sources flattened with hardhat v2.9.1 https://hardhat.org

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

// SPDX-License-Identifier: MIT
// 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/token/ERC721/[email protected]


// 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/[email protected]


// 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/token/ERC721/extensions/[email protected]


// 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/utils/[email protected]


// 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/utils/[email protected]


// 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/utils/[email protected]


// 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/introspection/[email protected]


// 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/[email protected]


// 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 @openzeppelin/contracts/token/ERC721/extensions/[email protected]


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

pragma solidity ^0.8.0;

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

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

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


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


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

pragma solidity ^0.8.0;


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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


// File contracts/PowerfulMamacita.sol


/**
 *
 *
███████╗████████╗ █████╗ ██╗   ██╗
██╔════╝╚══██╔══╝██╔══██╗╚██╗ ██╔╝
███████╗   ██║   ███████║ ╚████╔╝
╚════██║   ██║   ██╔══██║  ╚██╔╝
███████║   ██║   ██║  ██║   ██║
╚══════╝   ╚═╝   ╚═╝  ╚═╝   ╚═╝

██████╗  ██████╗ ██╗    ██╗███████╗██████╗ ███████╗██╗   ██╗██╗
██╔══██╗██╔═══██╗██║    ██║██╔════╝██╔══██╗██╔════╝██║   ██║██║
██████╔╝██║   ██║██║ █╗ ██║█████╗  ██████╔╝█████╗  ██║   ██║██║
██╔═══╝ ██║   ██║██║███╗██║██╔══╝  ██╔══██╗██╔══╝  ██║   ██║██║
██║     ╚██████╔╝╚███╔███╔╝███████╗██║  ██║██║     ╚██████╔╝███████╗
╚═╝      ╚═════╝  ╚══╝╚══╝ ╚══════╝╚═╝  ╚═╝╚═╝      ╚═════╝ ╚══════╝

              Non generative hand drawn PFPs, were holders are invited to reflect and mirror the energy they get from the character.
        All of this characters will be present in Cariberse 1/1 artworks as they become avatars to navigate our Caribbean Metaverse.
 *
 */

pragma solidity ^0.8.7;



contract PowerfulMamacita is ERC721Enumerable, Ownable {
    using Strings for uint256;

    uint256 private constant TOKEN_MAX = 111; // @dev 111 powerfulmamacitas

    bool public isActive = false;
    string public proof;

    string private _contractURI = '';
    string private _tokenBaseURI = '';
    string private _tokenRevealedBaseURI = '';
    string private _dataExtension = '';

    //EVENTS

    event contractURIUpdated(address indexed _account);

    constructor(string memory name, string memory symbol) ERC721(name, symbol) {}

    /**
     *
     * @dev mint tokens with the owner
     * @param init // the init batch
     * @param qty // qty for the batch
     **/

    function mintTokens(uint256 init, uint256 qty) external onlyOwner {
        require(isActive, 'Contract is not active');
        require(totalSupply() < TOKEN_MAX, 'All tokens have been minted');
        require(init >= totalSupply() + 1, 'Must start from the last mint batch');
        uint256 i = init;
        do{
            _safeMint(msg.sender, i);
        unchecked { ++i; }
        }while(i <= qty);
    }


    function setIsActive(bool _isActive) external onlyOwner {
        isActive = _isActive;
    }

    function setDataExtension (string calldata dataExtension) external onlyOwner {
        _dataExtension = dataExtension;
    }

    function setProof(string calldata proofString) external onlyOwner {
        proof = proofString;
    }

    function withdraw() external onlyOwner {
        uint256 balance = address(this).balance;

        payable(msg.sender).transfer(balance);
    }

    function setContractURI(string calldata URI) external onlyOwner {
        _contractURI = URI;

        emit contractURIUpdated(msg.sender);
    }

    function setBaseURI(string calldata URI) external onlyOwner {
        _tokenBaseURI = URI;
    }

    function setRevealedBaseURI(string calldata revealedBaseURI) external onlyOwner {
        _tokenRevealedBaseURI = revealedBaseURI;
    }

    function contractURI() public view returns (string memory) {
        return _contractURI;
    }

    function tokenURI(uint256 tokenId) public view override(ERC721) returns (string memory) {
        require(_exists(tokenId), 'Token does not exist');

        /// @dev Convert string to bytes so we can check if it's empty or not.
        string memory revealedBaseURI = _tokenRevealedBaseURI;
        return bytes(revealedBaseURI).length > 0 ?
        string(abi.encodePacked(revealedBaseURI, tokenId.toString(), _dataExtension)) :
        _tokenBaseURI;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"}],"name":"contractURIUpdated","type":"event"},{"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":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"init","type":"uint256"},{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"mintTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proof","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"URI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"URI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"dataExtension","type":"string"}],"name":"setDataExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setIsActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"proofString","type":"string"}],"name":"setProof","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"revealedBaseURI","type":"string"}],"name":"setRevealedBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600a60146101000a81548160ff02191690831515021790555060405180602001604052806000815250600c9080519060200190620000469291906200021e565b5060405180602001604052806000815250600d90805190602001906200006e9291906200021e565b5060405180602001604052806000815250600e9080519060200190620000969291906200021e565b5060405180602001604052806000815250600f9080519060200190620000be9291906200021e565b50348015620000cc57600080fd5b50604051620045b9380380620045b98339818101604052810190620000f291906200034c565b818181600090805190602001906200010c9291906200021e565b508060019080519060200190620001259291906200021e565b505050620001486200013c6200015060201b60201c565b6200015860201b60201c565b505062000555565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200022c9062000466565b90600052602060002090601f0160209004810192826200025057600085556200029c565b82601f106200026b57805160ff19168380011785556200029c565b828001600101855582156200029c579182015b828111156200029b5782518255916020019190600101906200027e565b5b509050620002ab9190620002af565b5090565b5b80821115620002ca576000816000905550600101620002b0565b5090565b6000620002e5620002df84620003fa565b620003d1565b90508281526020810184848401111562000304576200030362000535565b5b6200031184828562000430565b509392505050565b600082601f83011262000331576200033062000530565b5b815162000343848260208601620002ce565b91505092915050565b600080604083850312156200036657620003656200053f565b5b600083015167ffffffffffffffff8111156200038757620003866200053a565b5b620003958582860162000319565b925050602083015167ffffffffffffffff811115620003b957620003b86200053a565b5b620003c78582860162000319565b9150509250929050565b6000620003dd620003f0565b9050620003eb82826200049c565b919050565b6000604051905090565b600067ffffffffffffffff82111562000418576200041762000501565b5b620004238262000544565b9050602081019050919050565b60005b838110156200045057808201518184015260208101905062000433565b8381111562000460576000848401525b50505050565b600060028204905060018216806200047f57607f821691505b60208210811415620004965762000495620004d2565b5b50919050565b620004a78262000544565b810181811067ffffffffffffffff82111715620004c957620004c862000501565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61405480620005656000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636352211e11610104578063a22cb465116100a2578063e985e9c511610071578063e985e9c51461052b578063f24191b01461055b578063f2fde38b14610577578063faf924cf14610593576101da565b8063a22cb465146104a5578063b88d4fde146104c1578063c87b56dd146104dd578063e8a3d4851461050d576101da565b8063715018a6116100de578063715018a6146104435780638da5cb5b1461044d578063938e3d7b1461046b57806395d89b4114610487576101da565b80636352211e146103c75780636e83843a146103f757806370a0823114610413576101da565b806323b872dd1161017c5780633ccfd60b1161014b5780633ccfd60b1461035557806342842e0e1461035f5780634f6ccce71461037b57806355f804b3146103ab576101da565b806323b872dd146102d15780632750fc78146102ed5780632f745c591461030957806334a7c2e714610339576101da565b8063095ea7b3116101b8578063095ea7b31461025d57806315336f801461027957806318160ddd1461029557806322f3e2d4146102b3576101da565b806301ffc9a7146101df57806306fdde031461020f578063081812fc1461022d575b600080fd5b6101f960048036038101906101f49190612d3a565b6105b1565b6040516102069190613314565b60405180910390f35b61021761062b565b604051610224919061332f565b60405180910390f35b61024760048036038101906102429190612de1565b6106bd565b60405161025491906132ad565b60405180910390f35b61027760048036038101906102729190612ccd565b610742565b005b610293600480360381019061028e9190612d94565b61085a565b005b61029d6108ec565b6040516102aa91906135f1565b60405180910390f35b6102bb6108f9565b6040516102c89190613314565b60405180910390f35b6102eb60048036038101906102e69190612bb7565b61090c565b005b61030760048036038101906103029190612d0d565b61096c565b005b610323600480360381019061031e9190612ccd565b610a05565b60405161033091906135f1565b60405180910390f35b610353600480360381019061034e9190612e0e565b610aaa565b005b61035d610c38565b005b61037960048036038101906103749190612bb7565b610d03565b005b61039560048036038101906103909190612de1565b610d23565b6040516103a291906135f1565b60405180910390f35b6103c560048036038101906103c09190612d94565b610d94565b005b6103e160048036038101906103dc9190612de1565b610e26565b6040516103ee91906132ad565b60405180910390f35b610411600480360381019061040c9190612d94565b610ed8565b005b61042d60048036038101906104289190612b4a565b610f6a565b60405161043a91906135f1565b60405180910390f35b61044b611022565b005b6104556110aa565b60405161046291906132ad565b60405180910390f35b61048560048036038101906104809190612d94565b6110d4565b005b61048f6111a9565b60405161049c919061332f565b60405180910390f35b6104bf60048036038101906104ba9190612c8d565b61123b565b005b6104db60048036038101906104d69190612c0a565b611251565b005b6104f760048036038101906104f29190612de1565b6112b3565b604051610504919061332f565b60405180910390f35b61051561145b565b604051610522919061332f565b60405180910390f35b61054560048036038101906105409190612b77565b6114ed565b6040516105529190613314565b60405180910390f35b61057560048036038101906105709190612d94565b611581565b005b610591600480360381019061058c9190612b4a565b611613565b005b61059b61170b565b6040516105a8919061332f565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610624575061062382611799565b5b9050919050565b60606000805461063a9061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546106669061382b565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050905090565b60006106c88261187b565b610707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fe90613511565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061074d82610e26565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590613571565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107dd6118e7565b73ffffffffffffffffffffffffffffffffffffffff16148061080c575061080b816108066118e7565b6114ed565b5b61084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084290613471565b60405180910390fd5b61085583836118ef565b505050565b6108626118e7565b73ffffffffffffffffffffffffffffffffffffffff166108806110aa565b73ffffffffffffffffffffffffffffffffffffffff16146108d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cd90613531565b60405180910390fd5b8181600b91906108e7929190612978565b505050565b6000600880549050905090565b600a60149054906101000a900460ff1681565b61091d6109176118e7565b826119a8565b61095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390613591565b60405180910390fd5b610967838383611a86565b505050565b6109746118e7565b73ffffffffffffffffffffffffffffffffffffffff166109926110aa565b73ffffffffffffffffffffffffffffffffffffffff16146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90613531565b60405180910390fd5b80600a60146101000a81548160ff02191690831515021790555050565b6000610a1083610f6a565b8210610a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4890613351565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610ab26118e7565b73ffffffffffffffffffffffffffffffffffffffff16610ad06110aa565b73ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90613531565b60405180910390fd5b600a60149054906101000a900460ff16610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c906134f1565b60405180910390fd5b606f610b7f6108ec565b10610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb6906135d1565b60405180910390fd5b6001610bc96108ec565b610bd391906136ba565b821015610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0c90613551565b60405180910390fd5b60008290505b610c253382611ced565b80600101905081811115610c1b57505050565b610c406118e7565b73ffffffffffffffffffffffffffffffffffffffff16610c5e6110aa565b73ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90613531565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cff573d6000803e3d6000fd5b5050565b610d1e83838360405180602001604052806000815250611251565b505050565b6000610d2d6108ec565b8210610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d65906135b1565b60405180910390fd5b60088281548110610d8257610d816139c4565b5b90600052602060002001549050919050565b610d9c6118e7565b73ffffffffffffffffffffffffffffffffffffffff16610dba6110aa565b73ffffffffffffffffffffffffffffffffffffffff1614610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790613531565b60405180910390fd5b8181600d9190610e21929190612978565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec6906134b1565b60405180910390fd5b80915050919050565b610ee06118e7565b73ffffffffffffffffffffffffffffffffffffffff16610efe6110aa565b73ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90613531565b60405180910390fd5b8181600e9190610f65929190612978565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290613491565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61102a6118e7565b73ffffffffffffffffffffffffffffffffffffffff166110486110aa565b73ffffffffffffffffffffffffffffffffffffffff161461109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590613531565b60405180910390fd5b6110a86000611d0b565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110dc6118e7565b73ffffffffffffffffffffffffffffffffffffffff166110fa6110aa565b73ffffffffffffffffffffffffffffffffffffffff1614611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790613531565b60405180910390fd5b8181600c9190611161929190612978565b503373ffffffffffffffffffffffffffffffffffffffff167fef3a19841c5daf8605d9a6c265371c4bb03075204df6bb0f9173b36afd70dccc60405160405180910390a25050565b6060600180546111b89061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546111e49061382b565b80156112315780601f1061120657610100808354040283529160200191611231565b820191906000526020600020905b81548152906001019060200180831161121457829003601f168201915b5050505050905090565b61124d6112466118e7565b8383611dd1565b5050565b61126261125c6118e7565b836119a8565b6112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890613591565b60405180910390fd5b6112ad84848484611f3e565b50505050565b60606112be8261187b565b6112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490613431565b60405180910390fd5b6000600e805461130c9061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546113389061382b565b80156113855780601f1061135a57610100808354040283529160200191611385565b820191906000526020600020905b81548152906001019060200180831161136857829003601f168201915b50505050509050600081511161142557600d80546113a29061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546113ce9061382b565b801561141b5780601f106113f05761010080835404028352916020019161141b565b820191906000526020600020905b8154815290600101906020018083116113fe57829003601f168201915b5050505050611453565b8061142f84611f9a565b600f6040516020016114439392919061327c565b6040516020818303038152906040525b915050919050565b6060600c805461146a9061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546114969061382b565b80156114e35780601f106114b8576101008083540402835291602001916114e3565b820191906000526020600020905b8154815290600101906020018083116114c657829003601f168201915b5050505050905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6115896118e7565b73ffffffffffffffffffffffffffffffffffffffff166115a76110aa565b73ffffffffffffffffffffffffffffffffffffffff16146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490613531565b60405180910390fd5b8181600f919061160e929190612978565b505050565b61161b6118e7565b73ffffffffffffffffffffffffffffffffffffffff166116396110aa565b73ffffffffffffffffffffffffffffffffffffffff161461168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690613531565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690613391565b60405180910390fd5b61170881611d0b565b50565b600b80546117189061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546117449061382b565b80156117915780601f1061176657610100808354040283529160200191611791565b820191906000526020600020905b81548152906001019060200180831161177457829003601f168201915b505050505081565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061186457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806118745750611873826120fb565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661196283610e26565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006119b38261187b565b6119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e990613451565b60405180910390fd5b60006119fd83610e26565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a6c57508373ffffffffffffffffffffffffffffffffffffffff16611a54846106bd565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a7d5750611a7c81856114ed565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611aa682610e26565b73ffffffffffffffffffffffffffffffffffffffff1614611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af3906133b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b63906133f1565b60405180910390fd5b611b77838383612165565b611b826000826118ef565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bd29190613741565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c2991906136ba565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611ce8838383612279565b505050565b611d0782826040518060200160405280600081525061227e565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3790613411565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611f319190613314565b60405180910390a3505050565b611f49848484611a86565b611f55848484846122d9565b611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90613371565b60405180910390fd5b50505050565b60606000821415611fe2576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506120f6565b600082905060005b60008214612014578080611ffd9061388e565b915050600a8261200d9190613710565b9150611fea565b60008167ffffffffffffffff8111156120305761202f6139f3565b5b6040519080825280601f01601f1916602001820160405280156120625781602001600182028036833780820191505090505b5090505b600085146120ef5760018261207b9190613741565b9150600a8561208a91906138d7565b603061209691906136ba565b60f81b8183815181106120ac576120ab6139c4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120e89190613710565b9450612066565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612170838383612470565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121b3576121ae81612475565b6121f2565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146121f1576121f083826124be565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612235576122308161262b565b612274565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122735761227282826126fc565b5b5b505050565b505050565b612288838361277b565b61229560008484846122d9565b6122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb90613371565b60405180910390fd5b505050565b60006122fa8473ffffffffffffffffffffffffffffffffffffffff16612955565b15612463578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026123236118e7565b8786866040518563ffffffff1660e01b815260040161234594939291906132c8565b602060405180830381600087803b15801561235f57600080fd5b505af192505050801561239057506040513d601f19601f8201168201806040525081019061238d9190612d67565b60015b612413573d80600081146123c0576040519150601f19603f3d011682016040523d82523d6000602084013e6123c5565b606091505b5060008151141561240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613371565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612468565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016124cb84610f6a565b6124d59190613741565b90506000600760008481526020019081526020016000205490508181146125ba576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061263f9190613741565b905060006009600084815260200190815260200160002054905060006008838154811061266f5761266e6139c4565b5b906000526020600020015490508060088381548110612691576126906139c4565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806126e0576126df613995565b5b6001900381819060005260206000200160009055905550505050565b600061270783610f6a565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e2906134d1565b60405180910390fd5b6127f48161187b565b15612834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282b906133d1565b60405180910390fd5b61284060008383612165565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461289091906136ba565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461295160008383612279565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546129849061382b565b90600052602060002090601f0160209004810192826129a657600085556129ed565b82601f106129bf57803560ff19168380011785556129ed565b828001600101855582156129ed579182015b828111156129ec5782358255916020019190600101906129d1565b5b5090506129fa91906129fe565b5090565b5b80821115612a175760008160009055506001016129ff565b5090565b6000612a2e612a2984613631565b61360c565b905082815260208101848484011115612a4a57612a49613a31565b5b612a558482856137e9565b509392505050565b600081359050612a6c81613fc2565b92915050565b600081359050612a8181613fd9565b92915050565b600081359050612a9681613ff0565b92915050565b600081519050612aab81613ff0565b92915050565b600082601f830112612ac657612ac5613a27565b5b8135612ad6848260208601612a1b565b91505092915050565b60008083601f840112612af557612af4613a27565b5b8235905067ffffffffffffffff811115612b1257612b11613a22565b5b602083019150836001820283011115612b2e57612b2d613a2c565b5b9250929050565b600081359050612b4481614007565b92915050565b600060208284031215612b6057612b5f613a3b565b5b6000612b6e84828501612a5d565b91505092915050565b60008060408385031215612b8e57612b8d613a3b565b5b6000612b9c85828601612a5d565b9250506020612bad85828601612a5d565b9150509250929050565b600080600060608486031215612bd057612bcf613a3b565b5b6000612bde86828701612a5d565b9350506020612bef86828701612a5d565b9250506040612c0086828701612b35565b9150509250925092565b60008060008060808587031215612c2457612c23613a3b565b5b6000612c3287828801612a5d565b9450506020612c4387828801612a5d565b9350506040612c5487828801612b35565b925050606085013567ffffffffffffffff811115612c7557612c74613a36565b5b612c8187828801612ab1565b91505092959194509250565b60008060408385031215612ca457612ca3613a3b565b5b6000612cb285828601612a5d565b9250506020612cc385828601612a72565b9150509250929050565b60008060408385031215612ce457612ce3613a3b565b5b6000612cf285828601612a5d565b9250506020612d0385828601612b35565b9150509250929050565b600060208284031215612d2357612d22613a3b565b5b6000612d3184828501612a72565b91505092915050565b600060208284031215612d5057612d4f613a3b565b5b6000612d5e84828501612a87565b91505092915050565b600060208284031215612d7d57612d7c613a3b565b5b6000612d8b84828501612a9c565b91505092915050565b60008060208385031215612dab57612daa613a3b565b5b600083013567ffffffffffffffff811115612dc957612dc8613a36565b5b612dd585828601612adf565b92509250509250929050565b600060208284031215612df757612df6613a3b565b5b6000612e0584828501612b35565b91505092915050565b60008060408385031215612e2557612e24613a3b565b5b6000612e3385828601612b35565b9250506020612e4485828601612b35565b9150509250929050565b612e5781613775565b82525050565b612e6681613787565b82525050565b6000612e7782613677565b612e81818561368d565b9350612e918185602086016137f8565b612e9a81613a40565b840191505092915050565b6000612eb082613682565b612eba818561369e565b9350612eca8185602086016137f8565b612ed381613a40565b840191505092915050565b6000612ee982613682565b612ef381856136af565b9350612f038185602086016137f8565b80840191505092915050565b60008154612f1c8161382b565b612f2681866136af565b94506001821660008114612f415760018114612f5257612f85565b60ff19831686528186019350612f85565b612f5b85613662565b60005b83811015612f7d57815481890152600182019150602081019050612f5e565b838801955050505b50505092915050565b6000612f9b602b8361369e565b9150612fa682613a51565b604082019050919050565b6000612fbe60328361369e565b9150612fc982613aa0565b604082019050919050565b6000612fe160268361369e565b9150612fec82613aef565b604082019050919050565b600061300460258361369e565b915061300f82613b3e565b604082019050919050565b6000613027601c8361369e565b915061303282613b8d565b602082019050919050565b600061304a60248361369e565b915061305582613bb6565b604082019050919050565b600061306d60198361369e565b915061307882613c05565b602082019050919050565b600061309060148361369e565b915061309b82613c2e565b602082019050919050565b60006130b3602c8361369e565b91506130be82613c57565b604082019050919050565b60006130d660388361369e565b91506130e182613ca6565b604082019050919050565b60006130f9602a8361369e565b915061310482613cf5565b604082019050919050565b600061311c60298361369e565b915061312782613d44565b604082019050919050565b600061313f60208361369e565b915061314a82613d93565b602082019050919050565b600061316260168361369e565b915061316d82613dbc565b602082019050919050565b6000613185602c8361369e565b915061319082613de5565b604082019050919050565b60006131a860208361369e565b91506131b382613e34565b602082019050919050565b60006131cb60238361369e565b91506131d682613e5d565b604082019050919050565b60006131ee60218361369e565b91506131f982613eac565b604082019050919050565b600061321160318361369e565b915061321c82613efb565b604082019050919050565b6000613234602c8361369e565b915061323f82613f4a565b604082019050919050565b6000613257601b8361369e565b915061326282613f99565b602082019050919050565b613276816137df565b82525050565b60006132888286612ede565b91506132948285612ede565b91506132a08284612f0f565b9150819050949350505050565b60006020820190506132c26000830184612e4e565b92915050565b60006080820190506132dd6000830187612e4e565b6132ea6020830186612e4e565b6132f7604083018561326d565b81810360608301526133098184612e6c565b905095945050505050565b60006020820190506133296000830184612e5d565b92915050565b600060208201905081810360008301526133498184612ea5565b905092915050565b6000602082019050818103600083015261336a81612f8e565b9050919050565b6000602082019050818103600083015261338a81612fb1565b9050919050565b600060208201905081810360008301526133aa81612fd4565b9050919050565b600060208201905081810360008301526133ca81612ff7565b9050919050565b600060208201905081810360008301526133ea8161301a565b9050919050565b6000602082019050818103600083015261340a8161303d565b9050919050565b6000602082019050818103600083015261342a81613060565b9050919050565b6000602082019050818103600083015261344a81613083565b9050919050565b6000602082019050818103600083015261346a816130a6565b9050919050565b6000602082019050818103600083015261348a816130c9565b9050919050565b600060208201905081810360008301526134aa816130ec565b9050919050565b600060208201905081810360008301526134ca8161310f565b9050919050565b600060208201905081810360008301526134ea81613132565b9050919050565b6000602082019050818103600083015261350a81613155565b9050919050565b6000602082019050818103600083015261352a81613178565b9050919050565b6000602082019050818103600083015261354a8161319b565b9050919050565b6000602082019050818103600083015261356a816131be565b9050919050565b6000602082019050818103600083015261358a816131e1565b9050919050565b600060208201905081810360008301526135aa81613204565b9050919050565b600060208201905081810360008301526135ca81613227565b9050919050565b600060208201905081810360008301526135ea8161324a565b9050919050565b6000602082019050613606600083018461326d565b92915050565b6000613616613627565b9050613622828261385d565b919050565b6000604051905090565b600067ffffffffffffffff82111561364c5761364b6139f3565b5b61365582613a40565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006136c5826137df565b91506136d0836137df565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561370557613704613908565b5b828201905092915050565b600061371b826137df565b9150613726836137df565b92508261373657613735613937565b5b828204905092915050565b600061374c826137df565b9150613757836137df565b92508282101561376a57613769613908565b5b828203905092915050565b6000613780826137bf565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156138165780820151818401526020810190506137fb565b83811115613825576000848401525b50505050565b6000600282049050600182168061384357607f821691505b6020821081141561385757613856613966565b5b50919050565b61386682613a40565b810181811067ffffffffffffffff82111715613885576138846139f3565b5b80604052505050565b6000613899826137df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138cc576138cb613908565b5b600182019050919050565b60006138e2826137df565b91506138ed836137df565b9250826138fd576138fc613937565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f436f6e7472616374206973206e6f742061637469766500000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d7573742073746172742066726f6d20746865206c617374206d696e7420626160008201527f7463680000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f416c6c20746f6b656e732068617665206265656e206d696e7465640000000000600082015250565b613fcb81613775565b8114613fd657600080fd5b50565b613fe281613787565b8114613fed57600080fd5b50565b613ff981613793565b811461400457600080fd5b50565b614010816137df565b811461401b57600080fd5b5056fea26469706673582212208d93571c259670f8c591e1d316349369af1b12c340e51bdbbe9bcbb666d2866264736f6c63430008070033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010506f77657266756c4d616d6163697461000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005505752464c000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636352211e11610104578063a22cb465116100a2578063e985e9c511610071578063e985e9c51461052b578063f24191b01461055b578063f2fde38b14610577578063faf924cf14610593576101da565b8063a22cb465146104a5578063b88d4fde146104c1578063c87b56dd146104dd578063e8a3d4851461050d576101da565b8063715018a6116100de578063715018a6146104435780638da5cb5b1461044d578063938e3d7b1461046b57806395d89b4114610487576101da565b80636352211e146103c75780636e83843a146103f757806370a0823114610413576101da565b806323b872dd1161017c5780633ccfd60b1161014b5780633ccfd60b1461035557806342842e0e1461035f5780634f6ccce71461037b57806355f804b3146103ab576101da565b806323b872dd146102d15780632750fc78146102ed5780632f745c591461030957806334a7c2e714610339576101da565b8063095ea7b3116101b8578063095ea7b31461025d57806315336f801461027957806318160ddd1461029557806322f3e2d4146102b3576101da565b806301ffc9a7146101df57806306fdde031461020f578063081812fc1461022d575b600080fd5b6101f960048036038101906101f49190612d3a565b6105b1565b6040516102069190613314565b60405180910390f35b61021761062b565b604051610224919061332f565b60405180910390f35b61024760048036038101906102429190612de1565b6106bd565b60405161025491906132ad565b60405180910390f35b61027760048036038101906102729190612ccd565b610742565b005b610293600480360381019061028e9190612d94565b61085a565b005b61029d6108ec565b6040516102aa91906135f1565b60405180910390f35b6102bb6108f9565b6040516102c89190613314565b60405180910390f35b6102eb60048036038101906102e69190612bb7565b61090c565b005b61030760048036038101906103029190612d0d565b61096c565b005b610323600480360381019061031e9190612ccd565b610a05565b60405161033091906135f1565b60405180910390f35b610353600480360381019061034e9190612e0e565b610aaa565b005b61035d610c38565b005b61037960048036038101906103749190612bb7565b610d03565b005b61039560048036038101906103909190612de1565b610d23565b6040516103a291906135f1565b60405180910390f35b6103c560048036038101906103c09190612d94565b610d94565b005b6103e160048036038101906103dc9190612de1565b610e26565b6040516103ee91906132ad565b60405180910390f35b610411600480360381019061040c9190612d94565b610ed8565b005b61042d60048036038101906104289190612b4a565b610f6a565b60405161043a91906135f1565b60405180910390f35b61044b611022565b005b6104556110aa565b60405161046291906132ad565b60405180910390f35b61048560048036038101906104809190612d94565b6110d4565b005b61048f6111a9565b60405161049c919061332f565b60405180910390f35b6104bf60048036038101906104ba9190612c8d565b61123b565b005b6104db60048036038101906104d69190612c0a565b611251565b005b6104f760048036038101906104f29190612de1565b6112b3565b604051610504919061332f565b60405180910390f35b61051561145b565b604051610522919061332f565b60405180910390f35b61054560048036038101906105409190612b77565b6114ed565b6040516105529190613314565b60405180910390f35b61057560048036038101906105709190612d94565b611581565b005b610591600480360381019061058c9190612b4a565b611613565b005b61059b61170b565b6040516105a8919061332f565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610624575061062382611799565b5b9050919050565b60606000805461063a9061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546106669061382b565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050905090565b60006106c88261187b565b610707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fe90613511565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061074d82610e26565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590613571565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107dd6118e7565b73ffffffffffffffffffffffffffffffffffffffff16148061080c575061080b816108066118e7565b6114ed565b5b61084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084290613471565b60405180910390fd5b61085583836118ef565b505050565b6108626118e7565b73ffffffffffffffffffffffffffffffffffffffff166108806110aa565b73ffffffffffffffffffffffffffffffffffffffff16146108d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cd90613531565b60405180910390fd5b8181600b91906108e7929190612978565b505050565b6000600880549050905090565b600a60149054906101000a900460ff1681565b61091d6109176118e7565b826119a8565b61095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390613591565b60405180910390fd5b610967838383611a86565b505050565b6109746118e7565b73ffffffffffffffffffffffffffffffffffffffff166109926110aa565b73ffffffffffffffffffffffffffffffffffffffff16146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90613531565b60405180910390fd5b80600a60146101000a81548160ff02191690831515021790555050565b6000610a1083610f6a565b8210610a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4890613351565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610ab26118e7565b73ffffffffffffffffffffffffffffffffffffffff16610ad06110aa565b73ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90613531565b60405180910390fd5b600a60149054906101000a900460ff16610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c906134f1565b60405180910390fd5b606f610b7f6108ec565b10610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb6906135d1565b60405180910390fd5b6001610bc96108ec565b610bd391906136ba565b821015610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0c90613551565b60405180910390fd5b60008290505b610c253382611ced565b80600101905081811115610c1b57505050565b610c406118e7565b73ffffffffffffffffffffffffffffffffffffffff16610c5e6110aa565b73ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90613531565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cff573d6000803e3d6000fd5b5050565b610d1e83838360405180602001604052806000815250611251565b505050565b6000610d2d6108ec565b8210610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d65906135b1565b60405180910390fd5b60088281548110610d8257610d816139c4565b5b90600052602060002001549050919050565b610d9c6118e7565b73ffffffffffffffffffffffffffffffffffffffff16610dba6110aa565b73ffffffffffffffffffffffffffffffffffffffff1614610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790613531565b60405180910390fd5b8181600d9190610e21929190612978565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec6906134b1565b60405180910390fd5b80915050919050565b610ee06118e7565b73ffffffffffffffffffffffffffffffffffffffff16610efe6110aa565b73ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90613531565b60405180910390fd5b8181600e9190610f65929190612978565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290613491565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61102a6118e7565b73ffffffffffffffffffffffffffffffffffffffff166110486110aa565b73ffffffffffffffffffffffffffffffffffffffff161461109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590613531565b60405180910390fd5b6110a86000611d0b565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110dc6118e7565b73ffffffffffffffffffffffffffffffffffffffff166110fa6110aa565b73ffffffffffffffffffffffffffffffffffffffff1614611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790613531565b60405180910390fd5b8181600c9190611161929190612978565b503373ffffffffffffffffffffffffffffffffffffffff167fef3a19841c5daf8605d9a6c265371c4bb03075204df6bb0f9173b36afd70dccc60405160405180910390a25050565b6060600180546111b89061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546111e49061382b565b80156112315780601f1061120657610100808354040283529160200191611231565b820191906000526020600020905b81548152906001019060200180831161121457829003601f168201915b5050505050905090565b61124d6112466118e7565b8383611dd1565b5050565b61126261125c6118e7565b836119a8565b6112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890613591565b60405180910390fd5b6112ad84848484611f3e565b50505050565b60606112be8261187b565b6112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490613431565b60405180910390fd5b6000600e805461130c9061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546113389061382b565b80156113855780601f1061135a57610100808354040283529160200191611385565b820191906000526020600020905b81548152906001019060200180831161136857829003601f168201915b50505050509050600081511161142557600d80546113a29061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546113ce9061382b565b801561141b5780601f106113f05761010080835404028352916020019161141b565b820191906000526020600020905b8154815290600101906020018083116113fe57829003601f168201915b5050505050611453565b8061142f84611f9a565b600f6040516020016114439392919061327c565b6040516020818303038152906040525b915050919050565b6060600c805461146a9061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546114969061382b565b80156114e35780601f106114b8576101008083540402835291602001916114e3565b820191906000526020600020905b8154815290600101906020018083116114c657829003601f168201915b5050505050905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6115896118e7565b73ffffffffffffffffffffffffffffffffffffffff166115a76110aa565b73ffffffffffffffffffffffffffffffffffffffff16146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490613531565b60405180910390fd5b8181600f919061160e929190612978565b505050565b61161b6118e7565b73ffffffffffffffffffffffffffffffffffffffff166116396110aa565b73ffffffffffffffffffffffffffffffffffffffff161461168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690613531565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690613391565b60405180910390fd5b61170881611d0b565b50565b600b80546117189061382b565b80601f01602080910402602001604051908101604052809291908181526020018280546117449061382b565b80156117915780601f1061176657610100808354040283529160200191611791565b820191906000526020600020905b81548152906001019060200180831161177457829003601f168201915b505050505081565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061186457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806118745750611873826120fb565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661196283610e26565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006119b38261187b565b6119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e990613451565b60405180910390fd5b60006119fd83610e26565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a6c57508373ffffffffffffffffffffffffffffffffffffffff16611a54846106bd565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a7d5750611a7c81856114ed565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611aa682610e26565b73ffffffffffffffffffffffffffffffffffffffff1614611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af3906133b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b63906133f1565b60405180910390fd5b611b77838383612165565b611b826000826118ef565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bd29190613741565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c2991906136ba565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611ce8838383612279565b505050565b611d0782826040518060200160405280600081525061227e565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3790613411565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611f319190613314565b60405180910390a3505050565b611f49848484611a86565b611f55848484846122d9565b611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90613371565b60405180910390fd5b50505050565b60606000821415611fe2576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506120f6565b600082905060005b60008214612014578080611ffd9061388e565b915050600a8261200d9190613710565b9150611fea565b60008167ffffffffffffffff8111156120305761202f6139f3565b5b6040519080825280601f01601f1916602001820160405280156120625781602001600182028036833780820191505090505b5090505b600085146120ef5760018261207b9190613741565b9150600a8561208a91906138d7565b603061209691906136ba565b60f81b8183815181106120ac576120ab6139c4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120e89190613710565b9450612066565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612170838383612470565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121b3576121ae81612475565b6121f2565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146121f1576121f083826124be565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612235576122308161262b565b612274565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122735761227282826126fc565b5b5b505050565b505050565b612288838361277b565b61229560008484846122d9565b6122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb90613371565b60405180910390fd5b505050565b60006122fa8473ffffffffffffffffffffffffffffffffffffffff16612955565b15612463578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026123236118e7565b8786866040518563ffffffff1660e01b815260040161234594939291906132c8565b602060405180830381600087803b15801561235f57600080fd5b505af192505050801561239057506040513d601f19601f8201168201806040525081019061238d9190612d67565b60015b612413573d80600081146123c0576040519150601f19603f3d011682016040523d82523d6000602084013e6123c5565b606091505b5060008151141561240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613371565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612468565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016124cb84610f6a565b6124d59190613741565b90506000600760008481526020019081526020016000205490508181146125ba576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061263f9190613741565b905060006009600084815260200190815260200160002054905060006008838154811061266f5761266e6139c4565b5b906000526020600020015490508060088381548110612691576126906139c4565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806126e0576126df613995565b5b6001900381819060005260206000200160009055905550505050565b600061270783610f6a565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e2906134d1565b60405180910390fd5b6127f48161187b565b15612834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282b906133d1565b60405180910390fd5b61284060008383612165565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461289091906136ba565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461295160008383612279565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546129849061382b565b90600052602060002090601f0160209004810192826129a657600085556129ed565b82601f106129bf57803560ff19168380011785556129ed565b828001600101855582156129ed579182015b828111156129ec5782358255916020019190600101906129d1565b5b5090506129fa91906129fe565b5090565b5b80821115612a175760008160009055506001016129ff565b5090565b6000612a2e612a2984613631565b61360c565b905082815260208101848484011115612a4a57612a49613a31565b5b612a558482856137e9565b509392505050565b600081359050612a6c81613fc2565b92915050565b600081359050612a8181613fd9565b92915050565b600081359050612a9681613ff0565b92915050565b600081519050612aab81613ff0565b92915050565b600082601f830112612ac657612ac5613a27565b5b8135612ad6848260208601612a1b565b91505092915050565b60008083601f840112612af557612af4613a27565b5b8235905067ffffffffffffffff811115612b1257612b11613a22565b5b602083019150836001820283011115612b2e57612b2d613a2c565b5b9250929050565b600081359050612b4481614007565b92915050565b600060208284031215612b6057612b5f613a3b565b5b6000612b6e84828501612a5d565b91505092915050565b60008060408385031215612b8e57612b8d613a3b565b5b6000612b9c85828601612a5d565b9250506020612bad85828601612a5d565b9150509250929050565b600080600060608486031215612bd057612bcf613a3b565b5b6000612bde86828701612a5d565b9350506020612bef86828701612a5d565b9250506040612c0086828701612b35565b9150509250925092565b60008060008060808587031215612c2457612c23613a3b565b5b6000612c3287828801612a5d565b9450506020612c4387828801612a5d565b9350506040612c5487828801612b35565b925050606085013567ffffffffffffffff811115612c7557612c74613a36565b5b612c8187828801612ab1565b91505092959194509250565b60008060408385031215612ca457612ca3613a3b565b5b6000612cb285828601612a5d565b9250506020612cc385828601612a72565b9150509250929050565b60008060408385031215612ce457612ce3613a3b565b5b6000612cf285828601612a5d565b9250506020612d0385828601612b35565b9150509250929050565b600060208284031215612d2357612d22613a3b565b5b6000612d3184828501612a72565b91505092915050565b600060208284031215612d5057612d4f613a3b565b5b6000612d5e84828501612a87565b91505092915050565b600060208284031215612d7d57612d7c613a3b565b5b6000612d8b84828501612a9c565b91505092915050565b60008060208385031215612dab57612daa613a3b565b5b600083013567ffffffffffffffff811115612dc957612dc8613a36565b5b612dd585828601612adf565b92509250509250929050565b600060208284031215612df757612df6613a3b565b5b6000612e0584828501612b35565b91505092915050565b60008060408385031215612e2557612e24613a3b565b5b6000612e3385828601612b35565b9250506020612e4485828601612b35565b9150509250929050565b612e5781613775565b82525050565b612e6681613787565b82525050565b6000612e7782613677565b612e81818561368d565b9350612e918185602086016137f8565b612e9a81613a40565b840191505092915050565b6000612eb082613682565b612eba818561369e565b9350612eca8185602086016137f8565b612ed381613a40565b840191505092915050565b6000612ee982613682565b612ef381856136af565b9350612f038185602086016137f8565b80840191505092915050565b60008154612f1c8161382b565b612f2681866136af565b94506001821660008114612f415760018114612f5257612f85565b60ff19831686528186019350612f85565b612f5b85613662565b60005b83811015612f7d57815481890152600182019150602081019050612f5e565b838801955050505b50505092915050565b6000612f9b602b8361369e565b9150612fa682613a51565b604082019050919050565b6000612fbe60328361369e565b9150612fc982613aa0565b604082019050919050565b6000612fe160268361369e565b9150612fec82613aef565b604082019050919050565b600061300460258361369e565b915061300f82613b3e565b604082019050919050565b6000613027601c8361369e565b915061303282613b8d565b602082019050919050565b600061304a60248361369e565b915061305582613bb6565b604082019050919050565b600061306d60198361369e565b915061307882613c05565b602082019050919050565b600061309060148361369e565b915061309b82613c2e565b602082019050919050565b60006130b3602c8361369e565b91506130be82613c57565b604082019050919050565b60006130d660388361369e565b91506130e182613ca6565b604082019050919050565b60006130f9602a8361369e565b915061310482613cf5565b604082019050919050565b600061311c60298361369e565b915061312782613d44565b604082019050919050565b600061313f60208361369e565b915061314a82613d93565b602082019050919050565b600061316260168361369e565b915061316d82613dbc565b602082019050919050565b6000613185602c8361369e565b915061319082613de5565b604082019050919050565b60006131a860208361369e565b91506131b382613e34565b602082019050919050565b60006131cb60238361369e565b91506131d682613e5d565b604082019050919050565b60006131ee60218361369e565b91506131f982613eac565b604082019050919050565b600061321160318361369e565b915061321c82613efb565b604082019050919050565b6000613234602c8361369e565b915061323f82613f4a565b604082019050919050565b6000613257601b8361369e565b915061326282613f99565b602082019050919050565b613276816137df565b82525050565b60006132888286612ede565b91506132948285612ede565b91506132a08284612f0f565b9150819050949350505050565b60006020820190506132c26000830184612e4e565b92915050565b60006080820190506132dd6000830187612e4e565b6132ea6020830186612e4e565b6132f7604083018561326d565b81810360608301526133098184612e6c565b905095945050505050565b60006020820190506133296000830184612e5d565b92915050565b600060208201905081810360008301526133498184612ea5565b905092915050565b6000602082019050818103600083015261336a81612f8e565b9050919050565b6000602082019050818103600083015261338a81612fb1565b9050919050565b600060208201905081810360008301526133aa81612fd4565b9050919050565b600060208201905081810360008301526133ca81612ff7565b9050919050565b600060208201905081810360008301526133ea8161301a565b9050919050565b6000602082019050818103600083015261340a8161303d565b9050919050565b6000602082019050818103600083015261342a81613060565b9050919050565b6000602082019050818103600083015261344a81613083565b9050919050565b6000602082019050818103600083015261346a816130a6565b9050919050565b6000602082019050818103600083015261348a816130c9565b9050919050565b600060208201905081810360008301526134aa816130ec565b9050919050565b600060208201905081810360008301526134ca8161310f565b9050919050565b600060208201905081810360008301526134ea81613132565b9050919050565b6000602082019050818103600083015261350a81613155565b9050919050565b6000602082019050818103600083015261352a81613178565b9050919050565b6000602082019050818103600083015261354a8161319b565b9050919050565b6000602082019050818103600083015261356a816131be565b9050919050565b6000602082019050818103600083015261358a816131e1565b9050919050565b600060208201905081810360008301526135aa81613204565b9050919050565b600060208201905081810360008301526135ca81613227565b9050919050565b600060208201905081810360008301526135ea8161324a565b9050919050565b6000602082019050613606600083018461326d565b92915050565b6000613616613627565b9050613622828261385d565b919050565b6000604051905090565b600067ffffffffffffffff82111561364c5761364b6139f3565b5b61365582613a40565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006136c5826137df565b91506136d0836137df565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561370557613704613908565b5b828201905092915050565b600061371b826137df565b9150613726836137df565b92508261373657613735613937565b5b828204905092915050565b600061374c826137df565b9150613757836137df565b92508282101561376a57613769613908565b5b828203905092915050565b6000613780826137bf565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156138165780820151818401526020810190506137fb565b83811115613825576000848401525b50505050565b6000600282049050600182168061384357607f821691505b6020821081141561385757613856613966565b5b50919050565b61386682613a40565b810181811067ffffffffffffffff82111715613885576138846139f3565b5b80604052505050565b6000613899826137df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138cc576138cb613908565b5b600182019050919050565b60006138e2826137df565b91506138ed836137df565b9250826138fd576138fc613937565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f436f6e7472616374206973206e6f742061637469766500000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d7573742073746172742066726f6d20746865206c617374206d696e7420626160008201527f7463680000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f416c6c20746f6b656e732068617665206265656e206d696e7465640000000000600082015250565b613fcb81613775565b8114613fd657600080fd5b50565b613fe281613787565b8114613fed57600080fd5b50565b613ff981613793565b811461400457600080fd5b50565b614010816137df565b811461401b57600080fd5b5056fea26469706673582212208d93571c259670f8c591e1d316349369af1b12c340e51bdbbe9bcbb666d2866264736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010506f77657266756c4d616d6163697461000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005505752464c000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): PowerfulMamacita
Arg [1] : symbol (string): PWRFL

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [3] : 506f77657266756c4d616d616369746100000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 505752464c000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

47555:2635:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36953:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22681:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24240:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23763:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48939:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37593:113;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47730:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24990:339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48702:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37261:256;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48270:422;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49051:147;;;:::i;:::-;;25400:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37783:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49363:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22375:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49469:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22105:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44820:103;;;:::i;:::-;;44169:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49206:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22850:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24533:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25656:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49720:467;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49615:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24759:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48805:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45078:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47765:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36953:224;37055:4;37094:35;37079:50;;;:11;:50;;;;:90;;;;37133:36;37157:11;37133:23;:36::i;:::-;37079:90;37072:97;;36953:224;;;:::o;22681:100::-;22735:13;22768:5;22761:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22681:100;:::o;24240:221::-;24316:7;24344:16;24352:7;24344;:16::i;:::-;24336:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24429:15;:24;24445:7;24429:24;;;;;;;;;;;;;;;;;;;;;24422:31;;24240:221;;;:::o;23763:411::-;23844:13;23860:23;23875:7;23860:14;:23::i;:::-;23844:39;;23908:5;23902:11;;:2;:11;;;;23894:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24002:5;23986:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;24011:37;24028:5;24035:12;:10;:12::i;:::-;24011:16;:37::i;:::-;23986:62;23964:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;24145:21;24154:2;24158:7;24145:8;:21::i;:::-;23833:341;23763:411;;:::o;48939:104::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49024:11:::1;;49016:5;:19;;;;;;;:::i;:::-;;48939:104:::0;;:::o;37593:113::-;37654:7;37681:10;:17;;;;37674:24;;37593:113;:::o;47730:28::-;;;;;;;;;;;;;:::o;24990:339::-;25185:41;25204:12;:10;:12::i;:::-;25218:7;25185:18;:41::i;:::-;25177:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25293:28;25303:4;25309:2;25313:7;25293:9;:28::i;:::-;24990:339;;;:::o;48702:95::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48780:9:::1;48769:8;;:20;;;;;;;;;;;;;;;;;;48702:95:::0;:::o;37261:256::-;37358:7;37394:23;37411:5;37394:16;:23::i;:::-;37386:5;:31;37378:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;37483:12;:19;37496:5;37483:19;;;;;;;;;;;;;;;:26;37503:5;37483:26;;;;;;;;;;;;37476:33;;37261:256;;;;:::o;48270:422::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48355:8:::1;;;;;;;;;;;48347:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;47688:3;48409:13;:11;:13::i;:::-;:25;48401:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;48509:1;48493:13;:11;:13::i;:::-;:17;;;;:::i;:::-;48485:4;:25;;48477:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;48561:9;48573:4;48561:16;;48588:97;48605:24;48615:10;48627:1;48605:9;:24::i;:::-;48652:3;;;;;48680;48675:1;:8;;48588:97;;48336:356;48270:422:::0;;:::o;49051:147::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49101:15:::1;49119:21;49101:39;;49161:10;49153:28;;:37;49182:7;49153:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;49090:108;49051:147::o:0;25400:185::-;25538:39;25555:4;25561:2;25565:7;25538:39;;;;;;;;;;;;:16;:39::i;:::-;25400:185;;;:::o;37783:233::-;37858:7;37894:30;:28;:30::i;:::-;37886:5;:38;37878:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;37991:10;38002:5;37991:17;;;;;;;;:::i;:::-;;;;;;;;;;37984:24;;37783:233;;;:::o;49363:98::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49450:3:::1;;49434:13;:19;;;;;;;:::i;:::-;;49363:98:::0;;:::o;22375:239::-;22447:7;22467:13;22483:7;:16;22491:7;22483:16;;;;;;;;;;;;;;;;;;;;;22467:32;;22535:1;22518:19;;:5;:19;;;;22510:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22601:5;22594:12;;;22375:239;;;:::o;49469:138::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49584:15:::1;;49560:21;:39;;;;;;;:::i;:::-;;49469:138:::0;;:::o;22105:208::-;22177:7;22222:1;22205:19;;:5;:19;;;;22197:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22289:9;:16;22299:5;22289:16;;;;;;;;;;;;;;;;22282:23;;22105:208;;;:::o;44820:103::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44885:30:::1;44912:1;44885:18;:30::i;:::-;44820:103::o:0;44169:87::-;44215:7;44242:6;;;;;;;;;;;44235:13;;44169:87;:::o;49206:149::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49296:3:::1;;49281:12;:18;;;;;;;:::i;:::-;;49336:10;49317:30;;;;;;;;;;;;49206:149:::0;;:::o;22850:104::-;22906:13;22939:7;22932:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22850:104;:::o;24533:155::-;24628:52;24647:12;:10;:12::i;:::-;24661:8;24671;24628:18;:52::i;:::-;24533:155;;:::o;25656:328::-;25831:41;25850:12;:10;:12::i;:::-;25864:7;25831:18;:41::i;:::-;25823:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25937:39;25951:4;25957:2;25961:7;25970:5;25937:13;:39::i;:::-;25656:328;;;;:::o;49720:467::-;49793:13;49827:16;49835:7;49827;:16::i;:::-;49819:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;49961:29;49993:21;49961:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50064:1;50038:15;50032:29;:33;:147;;50166:13;50032:147;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50101:15;50118:18;:7;:16;:18::i;:::-;50138:14;50084:69;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;50032:147;50025:154;;;49720:467;;;:::o;49615:97::-;49659:13;49692:12;49685:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49615:97;:::o;24759:164::-;24856:4;24880:18;:25;24899:5;24880:25;;;;;;;;;;;;;;;:35;24906:8;24880:35;;;;;;;;;;;;;;;;;;;;;;;;;24873:42;;24759:164;;;;:::o;48805:126::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48910:13:::1;;48893:14;:30;;;;;;;:::i;:::-;;48805:126:::0;;:::o;45078:201::-;44400:12;:10;:12::i;:::-;44389:23;;:7;:5;:7::i;:::-;:23;;;44381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45187:1:::1;45167:22;;:8;:22;;;;45159:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;45243:28;45262:8;45243:18;:28::i;:::-;45078:201:::0;:::o;47765:19::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21736:305::-;21838:4;21890:25;21875:40;;;:11;:40;;;;:105;;;;21947:33;21932:48;;;:11;:48;;;;21875:105;:158;;;;21997:36;22021:11;21997:23;:36::i;:::-;21875:158;21855:178;;21736:305;;;:::o;27494:127::-;27559:4;27611:1;27583:30;;:7;:16;27591:7;27583:16;;;;;;;;;;;;;;;;;;;;;:30;;;;27576:37;;27494:127;;;:::o;16942:98::-;16995:7;17022:10;17015:17;;16942:98;:::o;31640:174::-;31742:2;31715:15;:24;31731:7;31715:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;31798:7;31794:2;31760:46;;31769:23;31784:7;31769:14;:23::i;:::-;31760:46;;;;;;;;;;;;31640:174;;:::o;27788:348::-;27881:4;27906:16;27914:7;27906;:16::i;:::-;27898:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27982:13;27998:23;28013:7;27998:14;:23::i;:::-;27982:39;;28051:5;28040:16;;:7;:16;;;:51;;;;28084:7;28060:31;;:20;28072:7;28060:11;:20::i;:::-;:31;;;28040:51;:87;;;;28095:32;28112:5;28119:7;28095:16;:32::i;:::-;28040:87;28032:96;;;27788:348;;;;:::o;30897:625::-;31056:4;31029:31;;:23;31044:7;31029:14;:23::i;:::-;:31;;;31021:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31135:1;31121:16;;:2;:16;;;;31113:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;31191:39;31212:4;31218:2;31222:7;31191:20;:39::i;:::-;31295:29;31312:1;31316:7;31295:8;:29::i;:::-;31356:1;31337:9;:15;31347:4;31337:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;31385:1;31368:9;:13;31378:2;31368:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;31416:2;31397:7;:16;31405:7;31397:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;31455:7;31451:2;31436:27;;31445:4;31436:27;;;;;;;;;;;;31476:38;31496:4;31502:2;31506:7;31476:19;:38::i;:::-;30897:625;;;:::o;28478:110::-;28554:26;28564:2;28568:7;28554:26;;;;;;;;;;;;:9;:26::i;:::-;28478:110;;:::o;45439:191::-;45513:16;45532:6;;;;;;;;;;;45513:25;;45558:8;45549:6;;:17;;;;;;;;;;;;;;;;;;45613:8;45582:40;;45603:8;45582:40;;;;;;;;;;;;45502:128;45439:191;:::o;31956:315::-;32111:8;32102:17;;:5;:17;;;;32094:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;32198:8;32160:18;:25;32179:5;32160:25;;;;;;;;;;;;;;;:35;32186:8;32160:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;32244:8;32222:41;;32237:5;32222:41;;;32254:8;32222:41;;;;;;:::i;:::-;;;;;;;;31956:315;;;:::o;26866:::-;27023:28;27033:4;27039:2;27043:7;27023:9;:28::i;:::-;27070:48;27093:4;27099:2;27103:7;27112:5;27070:22;:48::i;:::-;27062:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;26866:315;;;;:::o;17529:723::-;17585:13;17815:1;17806:5;:10;17802:53;;;17833:10;;;;;;;;;;;;;;;;;;;;;17802:53;17865:12;17880:5;17865:20;;17896:14;17921:78;17936:1;17928:4;:9;17921:78;;17954:8;;;;;:::i;:::-;;;;17985:2;17977:10;;;;;:::i;:::-;;;17921:78;;;18009:19;18041:6;18031:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18009:39;;18059:154;18075:1;18066:5;:10;18059:154;;18103:1;18093:11;;;;;:::i;:::-;;;18170:2;18162:5;:10;;;;:::i;:::-;18149:2;:24;;;;:::i;:::-;18136:39;;18119:6;18126;18119:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;18199:2;18190:11;;;;;:::i;:::-;;;18059:154;;;18237:6;18223:21;;;;;17529:723;;;;:::o;20159:157::-;20244:4;20283:25;20268:40;;;:11;:40;;;;20261:47;;20159:157;;;:::o;38629:589::-;38773:45;38800:4;38806:2;38810:7;38773:26;:45::i;:::-;38851:1;38835:18;;:4;:18;;;38831:187;;;38870:40;38902:7;38870:31;:40::i;:::-;38831:187;;;38940:2;38932:10;;:4;:10;;;38928:90;;38959:47;38992:4;38998:7;38959:32;:47::i;:::-;38928:90;38831:187;39046:1;39032:16;;:2;:16;;;39028:183;;;39065:45;39102:7;39065:36;:45::i;:::-;39028:183;;;39138:4;39132:10;;:2;:10;;;39128:83;;39159:40;39187:2;39191:7;39159:27;:40::i;:::-;39128:83;39028:183;38629:589;;;:::o;34718:125::-;;;;:::o;28815:321::-;28945:18;28951:2;28955:7;28945:5;:18::i;:::-;28996:54;29027:1;29031:2;29035:7;29044:5;28996:22;:54::i;:::-;28974:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;28815:321;;;:::o;32836:799::-;32991:4;33012:15;:2;:13;;;:15::i;:::-;33008:620;;;33064:2;33048:36;;;33085:12;:10;:12::i;:::-;33099:4;33105:7;33114:5;33048:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33044:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33307:1;33290:6;:13;:18;33286:272;;;33333:60;;;;;;;;;;:::i;:::-;;;;;;;;33286:272;33508:6;33502:13;33493:6;33489:2;33485:15;33478:38;33044:529;33181:41;;;33171:51;;;:6;:51;;;;33164:58;;;;;33008:620;33612:4;33605:11;;32836:799;;;;;;;:::o;34207:126::-;;;;:::o;39941:164::-;40045:10;:17;;;;40018:15;:24;40034:7;40018:24;;;;;;;;;;;:44;;;;40073:10;40089:7;40073:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39941:164;:::o;40732:988::-;40998:22;41048:1;41023:22;41040:4;41023:16;:22::i;:::-;:26;;;;:::i;:::-;40998:51;;41060:18;41081:17;:26;41099:7;41081:26;;;;;;;;;;;;41060:47;;41228:14;41214:10;:28;41210:328;;41259:19;41281:12;:18;41294:4;41281:18;;;;;;;;;;;;;;;:34;41300:14;41281:34;;;;;;;;;;;;41259:56;;41365:11;41332:12;:18;41345:4;41332:18;;;;;;;;;;;;;;;:30;41351:10;41332:30;;;;;;;;;;;:44;;;;41482:10;41449:17;:30;41467:11;41449:30;;;;;;;;;;;:43;;;;41244:294;41210:328;41634:17;:26;41652:7;41634:26;;;;;;;;;;;41627:33;;;41678:12;:18;41691:4;41678:18;;;;;;;;;;;;;;;:34;41697:14;41678:34;;;;;;;;;;;41671:41;;;40813:907;;40732:988;;:::o;42015:1079::-;42268:22;42313:1;42293:10;:17;;;;:21;;;;:::i;:::-;42268:46;;42325:18;42346:15;:24;42362:7;42346:24;;;;;;;;;;;;42325:45;;42697:19;42719:10;42730:14;42719:26;;;;;;;;:::i;:::-;;;;;;;;;;42697:48;;42783:11;42758:10;42769;42758:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;42894:10;42863:15;:28;42879:11;42863:28;;;;;;;;;;;:41;;;;43035:15;:24;43051:7;43035:24;;;;;;;;;;;43028:31;;;43070:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;42086:1008;;;42015:1079;:::o;39519:221::-;39604:14;39621:20;39638:2;39621:16;:20::i;:::-;39604:37;;39679:7;39652:12;:16;39665:2;39652:16;;;;;;;;;;;;;;;:24;39669:6;39652:24;;;;;;;;;;;:34;;;;39726:6;39697:17;:26;39715:7;39697:26;;;;;;;;;;;:35;;;;39593:147;39519:221;;:::o;29472:439::-;29566:1;29552:16;;:2;:16;;;;29544:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29625:16;29633:7;29625;:16::i;:::-;29624:17;29616:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29687:45;29716:1;29720:2;29724:7;29687:20;:45::i;:::-;29762:1;29745:9;:13;29755:2;29745:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;29793:2;29774:7;:16;29782:7;29774:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29838:7;29834:2;29813:33;;29830:1;29813:33;;;;;;;;;;;;29859:44;29887:1;29891:2;29895:7;29859:19;:44::i;:::-;29472:439;;:::o;8985:326::-;9045:4;9302:1;9280:7;:19;;;:23;9273:30;;8985:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;568:133::-;611:5;649:6;636:20;627:29;;665:30;689:5;665:30;:::i;:::-;568:133;;;;:::o;707:137::-;752:5;790:6;777:20;768:29;;806:32;832:5;806:32;:::i;:::-;707:137;;;;:::o;850:141::-;906:5;937:6;931:13;922:22;;953:32;979:5;953:32;:::i;:::-;850:141;;;;:::o;1010:338::-;1065:5;1114:3;1107:4;1099:6;1095:17;1091:27;1081:122;;1122:79;;:::i;:::-;1081:122;1239:6;1226:20;1264:78;1338:3;1330:6;1323:4;1315:6;1311:17;1264:78;:::i;:::-;1255:87;;1071:277;1010:338;;;;:::o;1368:553::-;1426:8;1436:6;1486:3;1479:4;1471:6;1467:17;1463:27;1453:122;;1494:79;;:::i;:::-;1453:122;1607:6;1594:20;1584:30;;1637:18;1629:6;1626:30;1623:117;;;1659:79;;:::i;:::-;1623:117;1773:4;1765:6;1761:17;1749:29;;1827:3;1819:4;1811:6;1807:17;1797:8;1793:32;1790:41;1787:128;;;1834:79;;:::i;:::-;1787:128;1368:553;;;;;:::o;1927:139::-;1973:5;2011:6;1998:20;1989:29;;2027:33;2054:5;2027:33;:::i;:::-;1927:139;;;;:::o;2072:329::-;2131:6;2180:2;2168:9;2159:7;2155:23;2151:32;2148:119;;;2186:79;;:::i;:::-;2148:119;2306:1;2331:53;2376:7;2367:6;2356:9;2352:22;2331:53;:::i;:::-;2321:63;;2277:117;2072:329;;;;:::o;2407:474::-;2475:6;2483;2532:2;2520:9;2511:7;2507:23;2503:32;2500:119;;;2538:79;;:::i;:::-;2500:119;2658:1;2683:53;2728:7;2719:6;2708:9;2704:22;2683:53;:::i;:::-;2673:63;;2629:117;2785:2;2811:53;2856:7;2847:6;2836:9;2832:22;2811:53;:::i;:::-;2801:63;;2756:118;2407:474;;;;;:::o;2887:619::-;2964:6;2972;2980;3029:2;3017:9;3008:7;3004:23;3000:32;2997:119;;;3035:79;;:::i;:::-;2997:119;3155:1;3180:53;3225:7;3216:6;3205:9;3201:22;3180:53;:::i;:::-;3170:63;;3126:117;3282:2;3308:53;3353:7;3344:6;3333:9;3329:22;3308:53;:::i;:::-;3298:63;;3253:118;3410:2;3436:53;3481:7;3472:6;3461:9;3457:22;3436:53;:::i;:::-;3426:63;;3381:118;2887:619;;;;;:::o;3512:943::-;3607:6;3615;3623;3631;3680:3;3668:9;3659:7;3655:23;3651:33;3648:120;;;3687:79;;:::i;:::-;3648:120;3807:1;3832:53;3877:7;3868:6;3857:9;3853:22;3832:53;:::i;:::-;3822:63;;3778:117;3934:2;3960:53;4005:7;3996:6;3985:9;3981:22;3960:53;:::i;:::-;3950:63;;3905:118;4062:2;4088:53;4133:7;4124:6;4113:9;4109:22;4088:53;:::i;:::-;4078:63;;4033:118;4218:2;4207:9;4203:18;4190:32;4249:18;4241:6;4238:30;4235:117;;;4271:79;;:::i;:::-;4235:117;4376:62;4430:7;4421:6;4410:9;4406:22;4376:62;:::i;:::-;4366:72;;4161:287;3512:943;;;;;;;:::o;4461:468::-;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:50;4904:7;4895:6;4884:9;4880:22;4862:50;:::i;:::-;4852:60;;4807:115;4461:468;;;;;:::o;4935:474::-;5003:6;5011;5060:2;5048:9;5039:7;5035:23;5031:32;5028:119;;;5066:79;;:::i;:::-;5028:119;5186:1;5211:53;5256:7;5247:6;5236:9;5232:22;5211:53;:::i;:::-;5201:63;;5157:117;5313:2;5339:53;5384:7;5375:6;5364:9;5360:22;5339:53;:::i;:::-;5329:63;;5284:118;4935:474;;;;;:::o;5415:323::-;5471:6;5520:2;5508:9;5499:7;5495:23;5491:32;5488:119;;;5526:79;;:::i;:::-;5488:119;5646:1;5671:50;5713:7;5704:6;5693:9;5689:22;5671:50;:::i;:::-;5661:60;;5617:114;5415:323;;;;:::o;5744:327::-;5802:6;5851:2;5839:9;5830:7;5826:23;5822:32;5819:119;;;5857:79;;:::i;:::-;5819:119;5977:1;6002:52;6046:7;6037:6;6026:9;6022:22;6002:52;:::i;:::-;5992:62;;5948:116;5744:327;;;;:::o;6077:349::-;6146:6;6195:2;6183:9;6174:7;6170:23;6166:32;6163:119;;;6201:79;;:::i;:::-;6163:119;6321:1;6346:63;6401:7;6392:6;6381:9;6377:22;6346:63;:::i;:::-;6336:73;;6292:127;6077:349;;;;:::o;6432:529::-;6503:6;6511;6560:2;6548:9;6539:7;6535:23;6531:32;6528:119;;;6566:79;;:::i;:::-;6528:119;6714:1;6703:9;6699:17;6686:31;6744:18;6736:6;6733:30;6730:117;;;6766:79;;:::i;:::-;6730:117;6879:65;6936:7;6927:6;6916:9;6912:22;6879:65;:::i;:::-;6861:83;;;;6657:297;6432:529;;;;;:::o;6967:329::-;7026:6;7075:2;7063:9;7054:7;7050:23;7046:32;7043:119;;;7081:79;;:::i;:::-;7043:119;7201:1;7226:53;7271:7;7262:6;7251:9;7247:22;7226:53;:::i;:::-;7216:63;;7172:117;6967:329;;;;:::o;7302:474::-;7370:6;7378;7427:2;7415:9;7406:7;7402:23;7398:32;7395:119;;;7433:79;;:::i;:::-;7395:119;7553:1;7578:53;7623:7;7614:6;7603:9;7599:22;7578:53;:::i;:::-;7568:63;;7524:117;7680:2;7706:53;7751:7;7742:6;7731:9;7727:22;7706:53;:::i;:::-;7696:63;;7651:118;7302:474;;;;;:::o;7782:118::-;7869:24;7887:5;7869:24;:::i;:::-;7864:3;7857:37;7782:118;;:::o;7906:109::-;7987:21;8002:5;7987:21;:::i;:::-;7982:3;7975:34;7906:109;;:::o;8021:360::-;8107:3;8135:38;8167:5;8135:38;:::i;:::-;8189:70;8252:6;8247:3;8189:70;:::i;:::-;8182:77;;8268:52;8313:6;8308:3;8301:4;8294:5;8290:16;8268:52;:::i;:::-;8345:29;8367:6;8345:29;:::i;:::-;8340:3;8336:39;8329:46;;8111:270;8021:360;;;;:::o;8387:364::-;8475:3;8503:39;8536:5;8503:39;:::i;:::-;8558:71;8622:6;8617:3;8558:71;:::i;:::-;8551:78;;8638:52;8683:6;8678:3;8671:4;8664:5;8660:16;8638:52;:::i;:::-;8715:29;8737:6;8715:29;:::i;:::-;8710:3;8706:39;8699:46;;8479:272;8387:364;;;;:::o;8757:377::-;8863:3;8891:39;8924:5;8891:39;:::i;:::-;8946:89;9028:6;9023:3;8946:89;:::i;:::-;8939:96;;9044:52;9089:6;9084:3;9077:4;9070:5;9066:16;9044:52;:::i;:::-;9121:6;9116:3;9112:16;9105:23;;8867:267;8757:377;;;;:::o;9164:845::-;9267:3;9304:5;9298:12;9333:36;9359:9;9333:36;:::i;:::-;9385:89;9467:6;9462:3;9385:89;:::i;:::-;9378:96;;9505:1;9494:9;9490:17;9521:1;9516:137;;;;9667:1;9662:341;;;;9483:520;;9516:137;9600:4;9596:9;9585;9581:25;9576:3;9569:38;9636:6;9631:3;9627:16;9620:23;;9516:137;;9662:341;9729:38;9761:5;9729:38;:::i;:::-;9789:1;9803:154;9817:6;9814:1;9811:13;9803:154;;;9891:7;9885:14;9881:1;9876:3;9872:11;9865:35;9941:1;9932:7;9928:15;9917:26;;9839:4;9836:1;9832:12;9827:17;;9803:154;;;9986:6;9981:3;9977:16;9970:23;;9669:334;;9483:520;;9271:738;;9164:845;;;;:::o;10015:366::-;10157:3;10178:67;10242:2;10237:3;10178:67;:::i;:::-;10171:74;;10254:93;10343:3;10254:93;:::i;:::-;10372:2;10367:3;10363:12;10356:19;;10015:366;;;:::o;10387:::-;10529:3;10550:67;10614:2;10609:3;10550:67;:::i;:::-;10543:74;;10626:93;10715:3;10626:93;:::i;:::-;10744:2;10739:3;10735:12;10728:19;;10387:366;;;:::o;10759:::-;10901:3;10922:67;10986:2;10981:3;10922:67;:::i;:::-;10915:74;;10998:93;11087:3;10998:93;:::i;:::-;11116:2;11111:3;11107:12;11100:19;;10759:366;;;:::o;11131:::-;11273:3;11294:67;11358:2;11353:3;11294:67;:::i;:::-;11287:74;;11370:93;11459:3;11370:93;:::i;:::-;11488:2;11483:3;11479:12;11472:19;;11131:366;;;:::o;11503:::-;11645:3;11666:67;11730:2;11725:3;11666:67;:::i;:::-;11659:74;;11742:93;11831:3;11742:93;:::i;:::-;11860:2;11855:3;11851:12;11844:19;;11503:366;;;:::o;11875:::-;12017:3;12038:67;12102:2;12097:3;12038:67;:::i;:::-;12031:74;;12114:93;12203:3;12114:93;:::i;:::-;12232:2;12227:3;12223:12;12216:19;;11875:366;;;:::o;12247:::-;12389:3;12410:67;12474:2;12469:3;12410:67;:::i;:::-;12403:74;;12486:93;12575:3;12486:93;:::i;:::-;12604:2;12599:3;12595:12;12588:19;;12247:366;;;:::o;12619:::-;12761:3;12782:67;12846:2;12841:3;12782:67;:::i;:::-;12775:74;;12858:93;12947:3;12858:93;:::i;:::-;12976:2;12971:3;12967:12;12960:19;;12619:366;;;:::o;12991:::-;13133:3;13154:67;13218:2;13213:3;13154:67;:::i;:::-;13147:74;;13230:93;13319:3;13230:93;:::i;:::-;13348:2;13343:3;13339:12;13332:19;;12991:366;;;:::o;13363:::-;13505:3;13526:67;13590:2;13585:3;13526:67;:::i;:::-;13519:74;;13602:93;13691:3;13602:93;:::i;:::-;13720:2;13715:3;13711:12;13704:19;;13363:366;;;:::o;13735:::-;13877:3;13898:67;13962:2;13957:3;13898:67;:::i;:::-;13891:74;;13974:93;14063:3;13974:93;:::i;:::-;14092:2;14087:3;14083:12;14076:19;;13735:366;;;:::o;14107:::-;14249:3;14270:67;14334:2;14329:3;14270:67;:::i;:::-;14263:74;;14346:93;14435:3;14346:93;:::i;:::-;14464:2;14459:3;14455:12;14448:19;;14107:366;;;:::o;14479:::-;14621:3;14642:67;14706:2;14701:3;14642:67;:::i;:::-;14635:74;;14718:93;14807:3;14718:93;:::i;:::-;14836:2;14831:3;14827:12;14820:19;;14479:366;;;:::o;14851:::-;14993:3;15014:67;15078:2;15073:3;15014:67;:::i;:::-;15007:74;;15090:93;15179:3;15090:93;:::i;:::-;15208:2;15203:3;15199:12;15192:19;;14851:366;;;:::o;15223:::-;15365:3;15386:67;15450:2;15445:3;15386:67;:::i;:::-;15379:74;;15462:93;15551:3;15462:93;:::i;:::-;15580:2;15575:3;15571:12;15564:19;;15223:366;;;:::o;15595:::-;15737:3;15758:67;15822:2;15817:3;15758:67;:::i;:::-;15751:74;;15834:93;15923:3;15834:93;:::i;:::-;15952:2;15947:3;15943:12;15936:19;;15595:366;;;:::o;15967:::-;16109:3;16130:67;16194:2;16189:3;16130:67;:::i;:::-;16123:74;;16206:93;16295:3;16206:93;:::i;:::-;16324:2;16319:3;16315:12;16308:19;;15967:366;;;:::o;16339:::-;16481:3;16502:67;16566:2;16561:3;16502:67;:::i;:::-;16495:74;;16578:93;16667:3;16578:93;:::i;:::-;16696:2;16691:3;16687:12;16680:19;;16339:366;;;:::o;16711:::-;16853:3;16874:67;16938:2;16933:3;16874:67;:::i;:::-;16867:74;;16950:93;17039:3;16950:93;:::i;:::-;17068:2;17063:3;17059:12;17052:19;;16711:366;;;:::o;17083:::-;17225:3;17246:67;17310:2;17305:3;17246:67;:::i;:::-;17239:74;;17322:93;17411:3;17322:93;:::i;:::-;17440:2;17435:3;17431:12;17424:19;;17083:366;;;:::o;17455:::-;17597:3;17618:67;17682:2;17677:3;17618:67;:::i;:::-;17611:74;;17694:93;17783:3;17694:93;:::i;:::-;17812:2;17807:3;17803:12;17796:19;;17455:366;;;:::o;17827:118::-;17914:24;17932:5;17914:24;:::i;:::-;17909:3;17902:37;17827:118;;:::o;17951:589::-;18176:3;18198:95;18289:3;18280:6;18198:95;:::i;:::-;18191:102;;18310:95;18401:3;18392:6;18310:95;:::i;:::-;18303:102;;18422:92;18510:3;18501:6;18422:92;:::i;:::-;18415:99;;18531:3;18524:10;;17951:589;;;;;;:::o;18546:222::-;18639:4;18677:2;18666:9;18662:18;18654:26;;18690:71;18758:1;18747:9;18743:17;18734:6;18690:71;:::i;:::-;18546:222;;;;:::o;18774:640::-;18969:4;19007:3;18996:9;18992:19;18984:27;;19021:71;19089:1;19078:9;19074:17;19065:6;19021:71;:::i;:::-;19102:72;19170:2;19159:9;19155:18;19146:6;19102:72;:::i;:::-;19184;19252:2;19241:9;19237:18;19228:6;19184:72;:::i;:::-;19303:9;19297:4;19293:20;19288:2;19277:9;19273:18;19266:48;19331:76;19402:4;19393:6;19331:76;:::i;:::-;19323:84;;18774:640;;;;;;;:::o;19420:210::-;19507:4;19545:2;19534:9;19530:18;19522:26;;19558:65;19620:1;19609:9;19605:17;19596:6;19558:65;:::i;:::-;19420:210;;;;:::o;19636:313::-;19749:4;19787:2;19776:9;19772:18;19764:26;;19836:9;19830:4;19826:20;19822:1;19811:9;19807:17;19800:47;19864:78;19937:4;19928:6;19864:78;:::i;:::-;19856:86;;19636:313;;;;:::o;19955:419::-;20121:4;20159:2;20148:9;20144:18;20136:26;;20208:9;20202:4;20198:20;20194:1;20183:9;20179:17;20172:47;20236:131;20362:4;20236:131;:::i;:::-;20228:139;;19955:419;;;:::o;20380:::-;20546:4;20584:2;20573:9;20569:18;20561:26;;20633:9;20627:4;20623:20;20619:1;20608:9;20604:17;20597:47;20661:131;20787:4;20661:131;:::i;:::-;20653:139;;20380:419;;;:::o;20805:::-;20971:4;21009:2;20998:9;20994:18;20986:26;;21058:9;21052:4;21048:20;21044:1;21033:9;21029:17;21022:47;21086:131;21212:4;21086:131;:::i;:::-;21078:139;;20805:419;;;:::o;21230:::-;21396:4;21434:2;21423:9;21419:18;21411:26;;21483:9;21477:4;21473:20;21469:1;21458:9;21454:17;21447:47;21511:131;21637:4;21511:131;:::i;:::-;21503:139;;21230:419;;;:::o;21655:::-;21821:4;21859:2;21848:9;21844:18;21836:26;;21908:9;21902:4;21898:20;21894:1;21883:9;21879:17;21872:47;21936:131;22062:4;21936:131;:::i;:::-;21928:139;;21655:419;;;:::o;22080:::-;22246:4;22284:2;22273:9;22269:18;22261:26;;22333:9;22327:4;22323:20;22319:1;22308:9;22304:17;22297:47;22361:131;22487:4;22361:131;:::i;:::-;22353:139;;22080:419;;;:::o;22505:::-;22671:4;22709:2;22698:9;22694:18;22686:26;;22758:9;22752:4;22748:20;22744:1;22733:9;22729:17;22722:47;22786:131;22912:4;22786:131;:::i;:::-;22778:139;;22505:419;;;:::o;22930:::-;23096:4;23134:2;23123:9;23119:18;23111:26;;23183:9;23177:4;23173:20;23169:1;23158:9;23154:17;23147:47;23211:131;23337:4;23211:131;:::i;:::-;23203:139;;22930:419;;;:::o;23355:::-;23521:4;23559:2;23548:9;23544:18;23536:26;;23608:9;23602:4;23598:20;23594:1;23583:9;23579:17;23572:47;23636:131;23762:4;23636:131;:::i;:::-;23628:139;;23355:419;;;:::o;23780:::-;23946:4;23984:2;23973:9;23969:18;23961:26;;24033:9;24027:4;24023:20;24019:1;24008:9;24004:17;23997:47;24061:131;24187:4;24061:131;:::i;:::-;24053:139;;23780:419;;;:::o;24205:::-;24371:4;24409:2;24398:9;24394:18;24386:26;;24458:9;24452:4;24448:20;24444:1;24433:9;24429:17;24422:47;24486:131;24612:4;24486:131;:::i;:::-;24478:139;;24205:419;;;:::o;24630:::-;24796:4;24834:2;24823:9;24819:18;24811:26;;24883:9;24877:4;24873:20;24869:1;24858:9;24854:17;24847:47;24911:131;25037:4;24911:131;:::i;:::-;24903:139;;24630:419;;;:::o;25055:::-;25221:4;25259:2;25248:9;25244:18;25236:26;;25308:9;25302:4;25298:20;25294:1;25283:9;25279:17;25272:47;25336:131;25462:4;25336:131;:::i;:::-;25328:139;;25055:419;;;:::o;25480:::-;25646:4;25684:2;25673:9;25669:18;25661:26;;25733:9;25727:4;25723:20;25719:1;25708:9;25704:17;25697:47;25761:131;25887:4;25761:131;:::i;:::-;25753:139;;25480:419;;;:::o;25905:::-;26071:4;26109:2;26098:9;26094:18;26086:26;;26158:9;26152:4;26148:20;26144:1;26133:9;26129:17;26122:47;26186:131;26312:4;26186:131;:::i;:::-;26178:139;;25905:419;;;:::o;26330:::-;26496:4;26534:2;26523:9;26519:18;26511:26;;26583:9;26577:4;26573:20;26569:1;26558:9;26554:17;26547:47;26611:131;26737:4;26611:131;:::i;:::-;26603:139;;26330:419;;;:::o;26755:::-;26921:4;26959:2;26948:9;26944:18;26936:26;;27008:9;27002:4;26998:20;26994:1;26983:9;26979:17;26972:47;27036:131;27162:4;27036:131;:::i;:::-;27028:139;;26755:419;;;:::o;27180:::-;27346:4;27384:2;27373:9;27369:18;27361:26;;27433:9;27427:4;27423:20;27419:1;27408:9;27404:17;27397:47;27461:131;27587:4;27461:131;:::i;:::-;27453:139;;27180:419;;;:::o;27605:::-;27771:4;27809:2;27798:9;27794:18;27786:26;;27858:9;27852:4;27848:20;27844:1;27833:9;27829:17;27822:47;27886:131;28012:4;27886:131;:::i;:::-;27878:139;;27605:419;;;:::o;28030:::-;28196:4;28234:2;28223:9;28219:18;28211:26;;28283:9;28277:4;28273:20;28269:1;28258:9;28254:17;28247:47;28311:131;28437:4;28311:131;:::i;:::-;28303:139;;28030:419;;;:::o;28455:::-;28621:4;28659:2;28648:9;28644:18;28636:26;;28708:9;28702:4;28698:20;28694:1;28683:9;28679:17;28672:47;28736:131;28862:4;28736:131;:::i;:::-;28728:139;;28455:419;;;:::o;28880:222::-;28973:4;29011:2;29000:9;28996:18;28988:26;;29024:71;29092:1;29081:9;29077:17;29068:6;29024:71;:::i;:::-;28880:222;;;;:::o;29108:129::-;29142:6;29169:20;;:::i;:::-;29159:30;;29198:33;29226:4;29218:6;29198:33;:::i;:::-;29108:129;;;:::o;29243:75::-;29276:6;29309:2;29303:9;29293:19;;29243:75;:::o;29324:307::-;29385:4;29475:18;29467:6;29464:30;29461:56;;;29497:18;;:::i;:::-;29461:56;29535:29;29557:6;29535:29;:::i;:::-;29527:37;;29619:4;29613;29609:15;29601:23;;29324:307;;;:::o;29637:141::-;29686:4;29709:3;29701:11;;29732:3;29729:1;29722:14;29766:4;29763:1;29753:18;29745:26;;29637:141;;;:::o;29784:98::-;29835:6;29869:5;29863:12;29853:22;;29784:98;;;:::o;29888:99::-;29940:6;29974:5;29968:12;29958:22;;29888:99;;;:::o;29993:168::-;30076:11;30110:6;30105:3;30098:19;30150:4;30145:3;30141:14;30126:29;;29993:168;;;;:::o;30167:169::-;30251:11;30285:6;30280:3;30273:19;30325:4;30320:3;30316:14;30301:29;;30167:169;;;;:::o;30342:148::-;30444:11;30481:3;30466:18;;30342:148;;;;:::o;30496:305::-;30536:3;30555:20;30573:1;30555:20;:::i;:::-;30550:25;;30589:20;30607:1;30589:20;:::i;:::-;30584:25;;30743:1;30675:66;30671:74;30668:1;30665:81;30662:107;;;30749:18;;:::i;:::-;30662:107;30793:1;30790;30786:9;30779:16;;30496:305;;;;:::o;30807:185::-;30847:1;30864:20;30882:1;30864:20;:::i;:::-;30859:25;;30898:20;30916:1;30898:20;:::i;:::-;30893:25;;30937:1;30927:35;;30942:18;;:::i;:::-;30927:35;30984:1;30981;30977:9;30972:14;;30807:185;;;;:::o;30998:191::-;31038:4;31058:20;31076:1;31058:20;:::i;:::-;31053:25;;31092:20;31110:1;31092:20;:::i;:::-;31087:25;;31131:1;31128;31125:8;31122:34;;;31136:18;;:::i;:::-;31122:34;31181:1;31178;31174:9;31166:17;;30998:191;;;;:::o;31195:96::-;31232:7;31261:24;31279:5;31261:24;:::i;:::-;31250:35;;31195:96;;;:::o;31297:90::-;31331:7;31374:5;31367:13;31360:21;31349:32;;31297:90;;;:::o;31393:149::-;31429:7;31469:66;31462:5;31458:78;31447:89;;31393:149;;;:::o;31548:126::-;31585:7;31625:42;31618:5;31614:54;31603:65;;31548:126;;;:::o;31680:77::-;31717:7;31746:5;31735:16;;31680:77;;;:::o;31763:154::-;31847:6;31842:3;31837;31824:30;31909:1;31900:6;31895:3;31891:16;31884:27;31763:154;;;:::o;31923:307::-;31991:1;32001:113;32015:6;32012:1;32009:13;32001:113;;;32100:1;32095:3;32091:11;32085:18;32081:1;32076:3;32072:11;32065:39;32037:2;32034:1;32030:10;32025:15;;32001:113;;;32132:6;32129:1;32126:13;32123:101;;;32212:1;32203:6;32198:3;32194:16;32187:27;32123:101;31972:258;31923:307;;;:::o;32236:320::-;32280:6;32317:1;32311:4;32307:12;32297:22;;32364:1;32358:4;32354:12;32385:18;32375:81;;32441:4;32433:6;32429:17;32419:27;;32375:81;32503:2;32495:6;32492:14;32472:18;32469:38;32466:84;;;32522:18;;:::i;:::-;32466:84;32287:269;32236:320;;;:::o;32562:281::-;32645:27;32667:4;32645:27;:::i;:::-;32637:6;32633:40;32775:6;32763:10;32760:22;32739:18;32727:10;32724:34;32721:62;32718:88;;;32786:18;;:::i;:::-;32718:88;32826:10;32822:2;32815:22;32605:238;32562:281;;:::o;32849:233::-;32888:3;32911:24;32929:5;32911:24;:::i;:::-;32902:33;;32957:66;32950:5;32947:77;32944:103;;;33027:18;;:::i;:::-;32944:103;33074:1;33067:5;33063:13;33056:20;;32849:233;;;:::o;33088:176::-;33120:1;33137:20;33155:1;33137:20;:::i;:::-;33132:25;;33171:20;33189:1;33171:20;:::i;:::-;33166:25;;33210:1;33200:35;;33215:18;;:::i;:::-;33200:35;33256:1;33253;33249:9;33244:14;;33088:176;;;;:::o;33270:180::-;33318:77;33315:1;33308:88;33415:4;33412:1;33405:15;33439:4;33436:1;33429:15;33456:180;33504:77;33501:1;33494:88;33601:4;33598:1;33591:15;33625:4;33622:1;33615:15;33642:180;33690:77;33687:1;33680:88;33787:4;33784:1;33777:15;33811:4;33808:1;33801:15;33828:180;33876:77;33873:1;33866:88;33973:4;33970:1;33963:15;33997:4;33994:1;33987:15;34014:180;34062:77;34059:1;34052:88;34159:4;34156:1;34149:15;34183:4;34180:1;34173:15;34200:180;34248:77;34245:1;34238:88;34345:4;34342:1;34335:15;34369:4;34366:1;34359:15;34386:117;34495:1;34492;34485:12;34509:117;34618:1;34615;34608:12;34632:117;34741:1;34738;34731:12;34755:117;34864:1;34861;34854:12;34878:117;34987:1;34984;34977:12;35001:117;35110:1;35107;35100:12;35124:102;35165:6;35216:2;35212:7;35207:2;35200:5;35196:14;35192:28;35182:38;;35124:102;;;:::o;35232:230::-;35372:34;35368:1;35360:6;35356:14;35349:58;35441:13;35436:2;35428:6;35424:15;35417:38;35232:230;:::o;35468:237::-;35608:34;35604:1;35596:6;35592:14;35585:58;35677:20;35672:2;35664:6;35660:15;35653:45;35468:237;:::o;35711:225::-;35851:34;35847:1;35839:6;35835:14;35828:58;35920:8;35915:2;35907:6;35903:15;35896:33;35711:225;:::o;35942:224::-;36082:34;36078:1;36070:6;36066:14;36059:58;36151:7;36146:2;36138:6;36134:15;36127:32;35942:224;:::o;36172:178::-;36312:30;36308:1;36300:6;36296:14;36289:54;36172:178;:::o;36356:223::-;36496:34;36492:1;36484:6;36480:14;36473:58;36565:6;36560:2;36552:6;36548:15;36541:31;36356:223;:::o;36585:175::-;36725:27;36721:1;36713:6;36709:14;36702:51;36585:175;:::o;36766:170::-;36906:22;36902:1;36894:6;36890:14;36883:46;36766:170;:::o;36942:231::-;37082:34;37078:1;37070:6;37066:14;37059:58;37151:14;37146:2;37138:6;37134:15;37127:39;36942:231;:::o;37179:243::-;37319:34;37315:1;37307:6;37303:14;37296:58;37388:26;37383:2;37375:6;37371:15;37364:51;37179:243;:::o;37428:229::-;37568:34;37564:1;37556:6;37552:14;37545:58;37637:12;37632:2;37624:6;37620:15;37613:37;37428:229;:::o;37663:228::-;37803:34;37799:1;37791:6;37787:14;37780:58;37872:11;37867:2;37859:6;37855:15;37848:36;37663:228;:::o;37897:182::-;38037:34;38033:1;38025:6;38021:14;38014:58;37897:182;:::o;38085:172::-;38225:24;38221:1;38213:6;38209:14;38202:48;38085:172;:::o;38263:231::-;38403:34;38399:1;38391:6;38387:14;38380:58;38472:14;38467:2;38459:6;38455:15;38448:39;38263:231;:::o;38500:182::-;38640:34;38636:1;38628:6;38624:14;38617:58;38500:182;:::o;38688:222::-;38828:34;38824:1;38816:6;38812:14;38805:58;38897:5;38892:2;38884:6;38880:15;38873:30;38688:222;:::o;38916:220::-;39056:34;39052:1;39044:6;39040:14;39033:58;39125:3;39120:2;39112:6;39108:15;39101:28;38916:220;:::o;39142:236::-;39282:34;39278:1;39270:6;39266:14;39259:58;39351:19;39346:2;39338:6;39334:15;39327:44;39142:236;:::o;39384:231::-;39524:34;39520:1;39512:6;39508:14;39501:58;39593:14;39588:2;39580:6;39576:15;39569:39;39384:231;:::o;39621:177::-;39761:29;39757:1;39749:6;39745:14;39738:53;39621:177;:::o;39804:122::-;39877:24;39895:5;39877:24;:::i;:::-;39870:5;39867:35;39857:63;;39916:1;39913;39906:12;39857:63;39804:122;:::o;39932:116::-;40002:21;40017:5;40002:21;:::i;:::-;39995:5;39992:32;39982:60;;40038:1;40035;40028:12;39982:60;39932:116;:::o;40054:120::-;40126:23;40143:5;40126:23;:::i;:::-;40119:5;40116:34;40106:62;;40164:1;40161;40154:12;40106:62;40054:120;:::o;40180:122::-;40253:24;40271:5;40253:24;:::i;:::-;40246:5;40243:35;40233:63;;40292:1;40289;40282:12;40233:63;40180:122;:::o

Swarm Source

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