ETH Price: $3,086.65 (-2.07%)

Token

GODDESS POWER (GPNFT)
 

Overview

Max Total Supply

304 GPNFT

Holders

59

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
fuck-no.eth
Balance
5 GPNFT
0x06f9d88ddef658a4491e46078feedb0e3c18cbf1
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:
GoddessPower

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT


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

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

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

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

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

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


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

pragma solidity ^0.8.0;

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

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

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


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

pragma solidity ^0.8.0;


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

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

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

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

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

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

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

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

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


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

pragma solidity ^0.8.0;

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

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


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

pragma solidity ^0.8.0;

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

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


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

pragma solidity ^0.8.0;


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

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


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

pragma solidity ^0.8.0;


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

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

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

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

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

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

   
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

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

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

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

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

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

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


// OpenZeppelin Contracts v4.4.1 (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 tokenId);

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

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


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

pragma solidity ^0.8.0;


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

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

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

// File: ERC2000000.sol



pragma solidity ^0.8.7;










library Address {
    function isContract(address account) internal view returns (bool) {
        uint size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
}

abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;
    
    string private _name;
    string private _symbol;

    // Mapping from token ID to owner address
    address[] internal _owners;

    mapping(uint256 => address) private _tokenApprovals;
    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 (uint) 
    {
        require(owner != address(0), "ERC721: balance query for the zero address");

        uint count;
        uint length= _owners.length;
        for( uint i; i < length; ++i ){
          if( owner == _owners[i] )
            ++count;
        }
        delete length;
        return count;
    }

    /**
     * @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 {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

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

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

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

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

        _transfer(from, to, tokenId);
    }

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

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

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

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return tokenId < _owners.length && _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"
        );
    }

  
    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);
        _owners.push(to);

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

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

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

        // Clear approvals
        _approve(address(0), tokenId);
        _owners[tokenId] = address(0);

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

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

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

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

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

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


pragma solidity ^0.8.7;


/**
 * @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 but rips out the core of the gas-wasting processing that comes from OpenZeppelin.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    /**
     * @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-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _owners.length;
    }

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

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

        uint count;
        for(uint i; i < _owners.length; i++){
            if(owner == _owners[i]){
                if(count == index) return i;
                else count++;
            }
        }

        revert("ERC721Enumerable: owner index out of bounds");
    }
}
    pragma solidity ^0.8.7;
    contract GoddessPower is ERC721Enumerable,  Ownable {
    using Strings for uint256;


  string public uriPrefix = "";
  string public uriSuffix = ".json";

  

  uint256 public cost = 0.03 ether;
 
  uint256 public maxSupply = 11111; 
  uint256 public maxMintAmountPerTx = 20;  
 

  bool public paused = true;
  

  constructor() ERC721("GODDESS POWER", "GPNFT") {
    
  }
 
  function mint(uint256 _mintAmount) external payable  {
    uint256 totalSupply = _owners.length;
    require(totalSupply + _mintAmount <= maxSupply, "Excedes max supply.");
    require(_mintAmount <= maxMintAmountPerTx, "Exceeds max per transaction.");

    require(!paused, "The contract is paused!");
    require(msg.value == cost * _mintAmount, "Insufficient funds!");
     for(uint i; i < _mintAmount; i++) {
    _mint(msg.sender, totalSupply + i);
     }
     delete totalSupply;
     delete _mintAmount;
  }
  
  function adminMint(uint256 _mintAmount, address _receiver) external onlyOwner {
    uint256 totalSupply = _owners.length;
    require(totalSupply + _mintAmount <= maxSupply, "Excedes max supply.");
    for(uint i; i < _mintAmount; i++) {
    _mint(_receiver , totalSupply + i);
     }
     delete _mintAmount;
     delete _receiver;
     delete totalSupply;
  }


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

    

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

 function setMaxSupply(uint256 _supply) external onlyOwner {
   maxSupply = _supply;
    delete _supply;
  }

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

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

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


  function setPaused() external onlyOwner {
    paused = !paused;
  }

 

  function withdraw() external onlyOwner {
  uint _balance = address(this).balance;
     payable(msg.sender).transfer(_balance ); 
       
  }

   function _mint(address to, uint256 tokenId) internal virtual override {
        _owners.push(to);
        emit Transfer(address(0), to, tokenId);
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"adminMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"_cost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmountPerTx","type":"uint256"}],"name":"setMaxMintAmountPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"setUriPrefix","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":"tokenId","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":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040819052600060808190526200001b916006916200015d565b5060408051808201909152600580825264173539b7b760d91b60209092019182526200004a916007916200015d565b50666a94d74f430000600855612b676009556014600a55600b805460ff191660011790553480156200007b57600080fd5b50604080518082018252600d81526c23a7a22222a9a9902827aba2a960991b60208083019182528351808501909452600584526411d413919560da1b908401528151919291620000ce916000916200015d565b508051620000e49060019060208401906200015d565b50505062000101620000fb6200010760201b60201c565b6200010b565b62000240565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200016b9062000203565b90600052602060002090601f0160209004810192826200018f5760008555620001da565b82601f10620001aa57805160ff1916838001178555620001da565b82800160010185558215620001da579182015b82811115620001da578251825591602001919060010190620001bd565b50620001e8929150620001ec565b5090565b5b80821115620001e85760008155600101620001ed565b600181811c908216806200021857607f821691505b602082108114156200023a57634e487b7160e01b600052602260045260246000fd5b50919050565b611fa380620002506000396000f3fe6080604052600436106101ee5760003560e01c806362b99ad41161010d57806395d89b41116100a0578063b88d4fde1161006f578063b88d4fde1461053c578063c87b56dd1461055c578063d5abeb011461057c578063e985e9c514610592578063f2fde38b146105db57600080fd5b806395d89b41146104d4578063a0712d68146104e9578063a22cb465146104fc578063b071401b1461051c57600080fd5b8063715018a6116100dc578063715018a61461046b5780637ec4a659146104805780638da5cb5b146104a057806394354fd0146104be57600080fd5b806362b99ad4146103f65780636352211e1461040b5780636f8b44b01461042b57806370a082311461044b57600080fd5b80632f745c591161018557806344a0d68a1161015457806344a0d68a146103875780634f6ccce7146103a75780635503a0e8146103c75780635c975abb146103dc57600080fd5b80632f745c591461031d57806337a66d851461033d5780633ccfd60b1461035257806342842e0e1461036757600080fd5b80630dc28efe116101c15780630dc28efe146102a457806313faede6146102c457806318160ddd146102e857806323b872dd146102fd57600080fd5b806301ffc9a7146101f357806306fdde0314610228578063081812fc1461024a578063095ea7b314610282575b600080fd5b3480156101ff57600080fd5b5061021361020e366004611ae5565b6105fb565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b5061023d610626565b60405161021f9190611cd1565b34801561025657600080fd5b5061026a610265366004611b68565b6106b8565b6040516001600160a01b03909116815260200161021f565b34801561028e57600080fd5b506102a261029d366004611abb565b610745565b005b3480156102b057600080fd5b506102a26102bf366004611b81565b61085b565b3480156102d057600080fd5b506102da60085481565b60405190815260200161021f565b3480156102f457600080fd5b506002546102da565b34801561030957600080fd5b506102a26103183660046119c7565b61090f565b34801561032957600080fd5b506102da610338366004611abb565b610940565b34801561034957600080fd5b506102a26109f3565b34801561035e57600080fd5b506102a2610a31565b34801561037357600080fd5b506102a26103823660046119c7565b610a8e565b34801561039357600080fd5b506102a26103a2366004611b68565b610aa9565b3480156103b357600080fd5b506102da6103c2366004611b68565b610ad8565b3480156103d357600080fd5b5061023d610b45565b3480156103e857600080fd5b50600b546102139060ff1681565b34801561040257600080fd5b5061023d610bd3565b34801561041757600080fd5b5061026a610426366004611b68565b610be0565b34801561043757600080fd5b506102a2610446366004611b68565b610c6c565b34801561045757600080fd5b506102da610466366004611979565b610c9b565b34801561047757600080fd5b506102a2610d6d565b34801561048c57600080fd5b506102a261049b366004611b1f565b610da3565b3480156104ac57600080fd5b506005546001600160a01b031661026a565b3480156104ca57600080fd5b506102da600a5481565b3480156104e057600080fd5b5061023d610de0565b6102a26104f7366004611b68565b610def565b34801561050857600080fd5b506102a2610517366004611a7f565b610f65565b34801561052857600080fd5b506102a2610537366004611b68565b61102a565b34801561054857600080fd5b506102a2610557366004611a03565b611059565b34801561056857600080fd5b5061023d610577366004611b68565b61108b565b34801561058857600080fd5b506102da60095481565b34801561059e57600080fd5b506102136105ad366004611994565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b3480156105e757600080fd5b506102a26105f6366004611979565b611159565b60006001600160e01b0319821663780e9d6360e01b14806106205750610620826111f4565b92915050565b60606000805461063590611e95565b80601f016020809104026020016040519081016040528092919081815260200182805461066190611e95565b80156106ae5780601f10610683576101008083540402835291602001916106ae565b820191906000526020600020905b81548152906001019060200180831161069157829003601f168201915b5050505050905090565b60006106c382611244565b6107295760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600360205260409020546001600160a01b031690565b600061075082610be0565b9050806001600160a01b0316836001600160a01b031614156107be5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610720565b336001600160a01b03821614806107da57506107da81336105ad565b61084c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610720565b610856838361128e565b505050565b6005546001600160a01b031633146108855760405162461bcd60e51b815260040161072090611d81565b6002546009546108958483611e07565b11156108d95760405162461bcd60e51b815260206004820152601360248201527222bc31b2b232b99036b0bc1039bab838363c9760691b6044820152606401610720565b60005b83811015610909576108f7836108f28385611e07565b6112fc565b8061090181611ed0565b9150506108dc565b50505050565b6109193382611378565b6109355760405162461bcd60e51b815260040161072090611db6565b610856838383611462565b600061094b83610c9b565b82106109695760405162461bcd60e51b815260040161072090611ce4565b6000805b6002548110156109da576002818154811061098a5761098a611f2b565b6000918252602090912001546001600160a01b03868116911614156109c857838214156109ba5791506106209050565b816109c481611ed0565b9250505b806109d281611ed0565b91505061096d565b5060405162461bcd60e51b815260040161072090611ce4565b6005546001600160a01b03163314610a1d5760405162461bcd60e51b815260040161072090611d81565b600b805460ff19811660ff90911615179055565b6005546001600160a01b03163314610a5b5760405162461bcd60e51b815260040161072090611d81565b6040514790339082156108fc029083906000818181858888f19350505050158015610a8a573d6000803e3d6000fd5b5050565b61085683838360405180602001604052806000815250611059565b6005546001600160a01b03163314610ad35760405162461bcd60e51b815260040161072090611d81565b600855565b6002546000908210610b415760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610720565b5090565b60078054610b5290611e95565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7e90611e95565b8015610bcb5780601f10610ba057610100808354040283529160200191610bcb565b820191906000526020600020905b815481529060010190602001808311610bae57829003601f168201915b505050505081565b60068054610b5290611e95565b60008060028381548110610bf657610bf6611f2b565b6000918252602090912001546001600160a01b03169050806106205760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610720565b6005546001600160a01b03163314610c965760405162461bcd60e51b815260040161072090611d81565b600955565b60006001600160a01b038216610d065760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610720565b600254600090815b81811015610d645760028181548110610d2957610d29611f2b565b6000918252602090912001546001600160a01b0386811691161415610d5457610d5183611ed0565b92505b610d5d81611ed0565b9050610d0e565b50909392505050565b6005546001600160a01b03163314610d975760405162461bcd60e51b815260040161072090611d81565b610da160006115b8565b565b6005546001600160a01b03163314610dcd5760405162461bcd60e51b815260040161072090611d81565b8051610a8a906006906020840190611857565b60606001805461063590611e95565b600254600954610dff8383611e07565b1115610e435760405162461bcd60e51b815260206004820152601360248201527222bc31b2b232b99036b0bc1039bab838363c9760691b6044820152606401610720565b600a54821115610e955760405162461bcd60e51b815260206004820152601c60248201527f45786365656473206d617820706572207472616e73616374696f6e2e000000006044820152606401610720565b600b5460ff1615610ee85760405162461bcd60e51b815260206004820152601760248201527f54686520636f6e747261637420697320706175736564210000000000000000006044820152606401610720565b81600854610ef69190611e33565b3414610f3a5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610720565b60005b8281101561085657610f53336108f28385611e07565b80610f5d81611ed0565b915050610f3d565b6001600160a01b038216331415610fbe5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610720565b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6005546001600160a01b031633146110545760405162461bcd60e51b815260040161072090611d81565b600a55565b6110633383611378565b61107f5760405162461bcd60e51b815260040161072090611db6565b6109098484848461160a565b606061109682611244565b6110fa5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610720565b600061110461163d565b905060008151116111245760405180602001604052806000815250611152565b8061112e8461164c565b600760405160200161114293929190611bd0565b6040516020818303038152906040525b9392505050565b6005546001600160a01b031633146111835760405162461bcd60e51b815260040161072090611d81565b6001600160a01b0381166111e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610720565b6111f1816115b8565b50565b60006001600160e01b031982166380ac58cd60e01b148061122557506001600160e01b03198216635b5e139f60e01b145b8061062057506301ffc9a760e01b6001600160e01b0319831614610620565b60025460009082108015610620575060006001600160a01b03166002838154811061127157611271611f2b565b6000918252602090912001546001600160a01b0316141592915050565b600081815260036020526040902080546001600160a01b0319166001600160a01b03841690811790915581906112c382610be0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0385169081179091556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600061138382611244565b6113e45760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610720565b60006113ef83610be0565b9050806001600160a01b0316846001600160a01b0316148061142a5750836001600160a01b031661141f846106b8565b6001600160a01b0316145b8061145a57506001600160a01b0380821660009081526004602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661147582610be0565b6001600160a01b0316146114dd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610720565b6001600160a01b03821661153f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610720565b61154a60008261128e565b816002828154811061155e5761155e611f2b565b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611615848484611462565b6116218484848461174a565b6109095760405162461bcd60e51b815260040161072090611d2f565b60606006805461063590611e95565b6060816116705750506040805180820190915260018152600360fc1b602082015290565b8160005b811561169a578061168481611ed0565b91506116939050600a83611e1f565b9150611674565b60008167ffffffffffffffff8111156116b5576116b5611f41565b6040519080825280601f01601f1916602001820160405280156116df576020820181803683370190505b5090505b841561145a576116f4600183611e52565b9150611701600a86611eeb565b61170c906030611e07565b60f81b81838151811061172157611721611f2b565b60200101906001600160f81b031916908160001a905350611743600a86611e1f565b94506116e3565b60006001600160a01b0384163b1561184c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061178e903390899088908890600401611c94565b602060405180830381600087803b1580156117a857600080fd5b505af19250505080156117d8575060408051601f3d908101601f191682019092526117d591810190611b02565b60015b611832573d808015611806576040519150601f19603f3d011682016040523d82523d6000602084013e61180b565b606091505b50805161182a5760405162461bcd60e51b815260040161072090611d2f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061145a565b506001949350505050565b82805461186390611e95565b90600052602060002090601f01602090048101928261188557600085556118cb565b82601f1061189e57805160ff19168380011785556118cb565b828001600101855582156118cb579182015b828111156118cb5782518255916020019190600101906118b0565b50610b419291505b80821115610b4157600081556001016118d3565b600067ffffffffffffffff8084111561190257611902611f41565b604051601f8501601f19908116603f0116810190828211818310171561192a5761192a611f41565b8160405280935085815286868601111561194357600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461197457600080fd5b919050565b60006020828403121561198b57600080fd5b6111528261195d565b600080604083850312156119a757600080fd5b6119b08361195d565b91506119be6020840161195d565b90509250929050565b6000806000606084860312156119dc57600080fd5b6119e58461195d565b92506119f36020850161195d565b9150604084013590509250925092565b60008060008060808587031215611a1957600080fd5b611a228561195d565b9350611a306020860161195d565b925060408501359150606085013567ffffffffffffffff811115611a5357600080fd5b8501601f81018713611a6457600080fd5b611a73878235602084016118e7565b91505092959194509250565b60008060408385031215611a9257600080fd5b611a9b8361195d565b915060208301358015158114611ab057600080fd5b809150509250929050565b60008060408385031215611ace57600080fd5b611ad78361195d565b946020939093013593505050565b600060208284031215611af757600080fd5b813561115281611f57565b600060208284031215611b1457600080fd5b815161115281611f57565b600060208284031215611b3157600080fd5b813567ffffffffffffffff811115611b4857600080fd5b8201601f81018413611b5957600080fd5b61145a848235602084016118e7565b600060208284031215611b7a57600080fd5b5035919050565b60008060408385031215611b9457600080fd5b823591506119be6020840161195d565b60008151808452611bbc816020860160208601611e69565b601f01601f19169290920160200192915050565b600084516020611be38285838a01611e69565b855191840191611bf68184848a01611e69565b8554920191600090600181811c9080831680611c1357607f831692505b858310811415611c3157634e487b7160e01b85526022600452602485fd5b808015611c455760018114611c5657611c83565b60ff19851688528388019550611c83565b60008b81526020902060005b85811015611c7b5781548a820152908401908801611c62565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611cc790830184611ba4565b9695505050505050565b6020815260006111526020830184611ba4565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115611e1a57611e1a611eff565b500190565b600082611e2e57611e2e611f15565b500490565b6000816000190483118215151615611e4d57611e4d611eff565b500290565b600082821015611e6457611e64611eff565b500390565b60005b83811015611e84578181015183820152602001611e6c565b838111156109095750506000910152565b600181811c90821680611ea957607f821691505b60208210811415611eca57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611ee457611ee4611eff565b5060010190565b600082611efa57611efa611f15565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146111f157600080fdfea26469706673582212205f500b61e9400386f3dbeff2c5b75691d945382cdb80f3d1b6e67d3ce37f177264736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101ee5760003560e01c806362b99ad41161010d57806395d89b41116100a0578063b88d4fde1161006f578063b88d4fde1461053c578063c87b56dd1461055c578063d5abeb011461057c578063e985e9c514610592578063f2fde38b146105db57600080fd5b806395d89b41146104d4578063a0712d68146104e9578063a22cb465146104fc578063b071401b1461051c57600080fd5b8063715018a6116100dc578063715018a61461046b5780637ec4a659146104805780638da5cb5b146104a057806394354fd0146104be57600080fd5b806362b99ad4146103f65780636352211e1461040b5780636f8b44b01461042b57806370a082311461044b57600080fd5b80632f745c591161018557806344a0d68a1161015457806344a0d68a146103875780634f6ccce7146103a75780635503a0e8146103c75780635c975abb146103dc57600080fd5b80632f745c591461031d57806337a66d851461033d5780633ccfd60b1461035257806342842e0e1461036757600080fd5b80630dc28efe116101c15780630dc28efe146102a457806313faede6146102c457806318160ddd146102e857806323b872dd146102fd57600080fd5b806301ffc9a7146101f357806306fdde0314610228578063081812fc1461024a578063095ea7b314610282575b600080fd5b3480156101ff57600080fd5b5061021361020e366004611ae5565b6105fb565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b5061023d610626565b60405161021f9190611cd1565b34801561025657600080fd5b5061026a610265366004611b68565b6106b8565b6040516001600160a01b03909116815260200161021f565b34801561028e57600080fd5b506102a261029d366004611abb565b610745565b005b3480156102b057600080fd5b506102a26102bf366004611b81565b61085b565b3480156102d057600080fd5b506102da60085481565b60405190815260200161021f565b3480156102f457600080fd5b506002546102da565b34801561030957600080fd5b506102a26103183660046119c7565b61090f565b34801561032957600080fd5b506102da610338366004611abb565b610940565b34801561034957600080fd5b506102a26109f3565b34801561035e57600080fd5b506102a2610a31565b34801561037357600080fd5b506102a26103823660046119c7565b610a8e565b34801561039357600080fd5b506102a26103a2366004611b68565b610aa9565b3480156103b357600080fd5b506102da6103c2366004611b68565b610ad8565b3480156103d357600080fd5b5061023d610b45565b3480156103e857600080fd5b50600b546102139060ff1681565b34801561040257600080fd5b5061023d610bd3565b34801561041757600080fd5b5061026a610426366004611b68565b610be0565b34801561043757600080fd5b506102a2610446366004611b68565b610c6c565b34801561045757600080fd5b506102da610466366004611979565b610c9b565b34801561047757600080fd5b506102a2610d6d565b34801561048c57600080fd5b506102a261049b366004611b1f565b610da3565b3480156104ac57600080fd5b506005546001600160a01b031661026a565b3480156104ca57600080fd5b506102da600a5481565b3480156104e057600080fd5b5061023d610de0565b6102a26104f7366004611b68565b610def565b34801561050857600080fd5b506102a2610517366004611a7f565b610f65565b34801561052857600080fd5b506102a2610537366004611b68565b61102a565b34801561054857600080fd5b506102a2610557366004611a03565b611059565b34801561056857600080fd5b5061023d610577366004611b68565b61108b565b34801561058857600080fd5b506102da60095481565b34801561059e57600080fd5b506102136105ad366004611994565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b3480156105e757600080fd5b506102a26105f6366004611979565b611159565b60006001600160e01b0319821663780e9d6360e01b14806106205750610620826111f4565b92915050565b60606000805461063590611e95565b80601f016020809104026020016040519081016040528092919081815260200182805461066190611e95565b80156106ae5780601f10610683576101008083540402835291602001916106ae565b820191906000526020600020905b81548152906001019060200180831161069157829003601f168201915b5050505050905090565b60006106c382611244565b6107295760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600360205260409020546001600160a01b031690565b600061075082610be0565b9050806001600160a01b0316836001600160a01b031614156107be5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610720565b336001600160a01b03821614806107da57506107da81336105ad565b61084c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610720565b610856838361128e565b505050565b6005546001600160a01b031633146108855760405162461bcd60e51b815260040161072090611d81565b6002546009546108958483611e07565b11156108d95760405162461bcd60e51b815260206004820152601360248201527222bc31b2b232b99036b0bc1039bab838363c9760691b6044820152606401610720565b60005b83811015610909576108f7836108f28385611e07565b6112fc565b8061090181611ed0565b9150506108dc565b50505050565b6109193382611378565b6109355760405162461bcd60e51b815260040161072090611db6565b610856838383611462565b600061094b83610c9b565b82106109695760405162461bcd60e51b815260040161072090611ce4565b6000805b6002548110156109da576002818154811061098a5761098a611f2b565b6000918252602090912001546001600160a01b03868116911614156109c857838214156109ba5791506106209050565b816109c481611ed0565b9250505b806109d281611ed0565b91505061096d565b5060405162461bcd60e51b815260040161072090611ce4565b6005546001600160a01b03163314610a1d5760405162461bcd60e51b815260040161072090611d81565b600b805460ff19811660ff90911615179055565b6005546001600160a01b03163314610a5b5760405162461bcd60e51b815260040161072090611d81565b6040514790339082156108fc029083906000818181858888f19350505050158015610a8a573d6000803e3d6000fd5b5050565b61085683838360405180602001604052806000815250611059565b6005546001600160a01b03163314610ad35760405162461bcd60e51b815260040161072090611d81565b600855565b6002546000908210610b415760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610720565b5090565b60078054610b5290611e95565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7e90611e95565b8015610bcb5780601f10610ba057610100808354040283529160200191610bcb565b820191906000526020600020905b815481529060010190602001808311610bae57829003601f168201915b505050505081565b60068054610b5290611e95565b60008060028381548110610bf657610bf6611f2b565b6000918252602090912001546001600160a01b03169050806106205760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610720565b6005546001600160a01b03163314610c965760405162461bcd60e51b815260040161072090611d81565b600955565b60006001600160a01b038216610d065760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610720565b600254600090815b81811015610d645760028181548110610d2957610d29611f2b565b6000918252602090912001546001600160a01b0386811691161415610d5457610d5183611ed0565b92505b610d5d81611ed0565b9050610d0e565b50909392505050565b6005546001600160a01b03163314610d975760405162461bcd60e51b815260040161072090611d81565b610da160006115b8565b565b6005546001600160a01b03163314610dcd5760405162461bcd60e51b815260040161072090611d81565b8051610a8a906006906020840190611857565b60606001805461063590611e95565b600254600954610dff8383611e07565b1115610e435760405162461bcd60e51b815260206004820152601360248201527222bc31b2b232b99036b0bc1039bab838363c9760691b6044820152606401610720565b600a54821115610e955760405162461bcd60e51b815260206004820152601c60248201527f45786365656473206d617820706572207472616e73616374696f6e2e000000006044820152606401610720565b600b5460ff1615610ee85760405162461bcd60e51b815260206004820152601760248201527f54686520636f6e747261637420697320706175736564210000000000000000006044820152606401610720565b81600854610ef69190611e33565b3414610f3a5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610720565b60005b8281101561085657610f53336108f28385611e07565b80610f5d81611ed0565b915050610f3d565b6001600160a01b038216331415610fbe5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610720565b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6005546001600160a01b031633146110545760405162461bcd60e51b815260040161072090611d81565b600a55565b6110633383611378565b61107f5760405162461bcd60e51b815260040161072090611db6565b6109098484848461160a565b606061109682611244565b6110fa5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610720565b600061110461163d565b905060008151116111245760405180602001604052806000815250611152565b8061112e8461164c565b600760405160200161114293929190611bd0565b6040516020818303038152906040525b9392505050565b6005546001600160a01b031633146111835760405162461bcd60e51b815260040161072090611d81565b6001600160a01b0381166111e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610720565b6111f1816115b8565b50565b60006001600160e01b031982166380ac58cd60e01b148061122557506001600160e01b03198216635b5e139f60e01b145b8061062057506301ffc9a760e01b6001600160e01b0319831614610620565b60025460009082108015610620575060006001600160a01b03166002838154811061127157611271611f2b565b6000918252602090912001546001600160a01b0316141592915050565b600081815260036020526040902080546001600160a01b0319166001600160a01b03841690811790915581906112c382610be0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0385169081179091556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600061138382611244565b6113e45760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610720565b60006113ef83610be0565b9050806001600160a01b0316846001600160a01b0316148061142a5750836001600160a01b031661141f846106b8565b6001600160a01b0316145b8061145a57506001600160a01b0380821660009081526004602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661147582610be0565b6001600160a01b0316146114dd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610720565b6001600160a01b03821661153f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610720565b61154a60008261128e565b816002828154811061155e5761155e611f2b565b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611615848484611462565b6116218484848461174a565b6109095760405162461bcd60e51b815260040161072090611d2f565b60606006805461063590611e95565b6060816116705750506040805180820190915260018152600360fc1b602082015290565b8160005b811561169a578061168481611ed0565b91506116939050600a83611e1f565b9150611674565b60008167ffffffffffffffff8111156116b5576116b5611f41565b6040519080825280601f01601f1916602001820160405280156116df576020820181803683370190505b5090505b841561145a576116f4600183611e52565b9150611701600a86611eeb565b61170c906030611e07565b60f81b81838151811061172157611721611f2b565b60200101906001600160f81b031916908160001a905350611743600a86611e1f565b94506116e3565b60006001600160a01b0384163b1561184c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061178e903390899088908890600401611c94565b602060405180830381600087803b1580156117a857600080fd5b505af19250505080156117d8575060408051601f3d908101601f191682019092526117d591810190611b02565b60015b611832573d808015611806576040519150601f19603f3d011682016040523d82523d6000602084013e61180b565b606091505b50805161182a5760405162461bcd60e51b815260040161072090611d2f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061145a565b506001949350505050565b82805461186390611e95565b90600052602060002090601f01602090048101928261188557600085556118cb565b82601f1061189e57805160ff19168380011785556118cb565b828001600101855582156118cb579182015b828111156118cb5782518255916020019190600101906118b0565b50610b419291505b80821115610b4157600081556001016118d3565b600067ffffffffffffffff8084111561190257611902611f41565b604051601f8501601f19908116603f0116810190828211818310171561192a5761192a611f41565b8160405280935085815286868601111561194357600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461197457600080fd5b919050565b60006020828403121561198b57600080fd5b6111528261195d565b600080604083850312156119a757600080fd5b6119b08361195d565b91506119be6020840161195d565b90509250929050565b6000806000606084860312156119dc57600080fd5b6119e58461195d565b92506119f36020850161195d565b9150604084013590509250925092565b60008060008060808587031215611a1957600080fd5b611a228561195d565b9350611a306020860161195d565b925060408501359150606085013567ffffffffffffffff811115611a5357600080fd5b8501601f81018713611a6457600080fd5b611a73878235602084016118e7565b91505092959194509250565b60008060408385031215611a9257600080fd5b611a9b8361195d565b915060208301358015158114611ab057600080fd5b809150509250929050565b60008060408385031215611ace57600080fd5b611ad78361195d565b946020939093013593505050565b600060208284031215611af757600080fd5b813561115281611f57565b600060208284031215611b1457600080fd5b815161115281611f57565b600060208284031215611b3157600080fd5b813567ffffffffffffffff811115611b4857600080fd5b8201601f81018413611b5957600080fd5b61145a848235602084016118e7565b600060208284031215611b7a57600080fd5b5035919050565b60008060408385031215611b9457600080fd5b823591506119be6020840161195d565b60008151808452611bbc816020860160208601611e69565b601f01601f19169290920160200192915050565b600084516020611be38285838a01611e69565b855191840191611bf68184848a01611e69565b8554920191600090600181811c9080831680611c1357607f831692505b858310811415611c3157634e487b7160e01b85526022600452602485fd5b808015611c455760018114611c5657611c83565b60ff19851688528388019550611c83565b60008b81526020902060005b85811015611c7b5781548a820152908401908801611c62565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611cc790830184611ba4565b9695505050505050565b6020815260006111526020830184611ba4565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115611e1a57611e1a611eff565b500190565b600082611e2e57611e2e611f15565b500490565b6000816000190483118215151615611e4d57611e4d611eff565b500290565b600082821015611e6457611e64611eff565b500390565b60005b83811015611e84578181015183820152602001611e6c565b838111156109095750506000910152565b600181811c90821680611ea957607f821691505b60208210811415611eca57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611ee457611ee4611eff565b5060010190565b600082611efa57611efa611f15565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146111f157600080fdfea26469706673582212205f500b61e9400386f3dbeff2c5b75691d945382cdb80f3d1b6e67d3ce37f177264736f6c63430008070033

Deployed Bytecode Sourcemap

29392:2743:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28088:224;;;;;;;;;;-1:-1:-1;28088:224:0;;;;;:::i;:::-;;:::i;:::-;;;6962:14:1;;6955:22;6937:41;;6925:2;6910:18;28088:224:0;;;;;;;;17025:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17837:308::-;;;;;;;;;;-1:-1:-1;17837:308:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6260:32:1;;;6242:51;;6230:2;6215:18;17837:308:0;6096:203:1;17360:411:0;;;;;;;;;;-1:-1:-1;17360:411:0;;;;;:::i;:::-;;:::i;:::-;;30327:370;;;;;;;;;;-1:-1:-1;30327:370:0;;;;;:::i;:::-;;:::i;29564:32::-;;;;;;;;;;;;;;;;;;;15253:25:1;;;15241:2;15226:18;29564:32:0;15107:177:1;28388:110:0;;;;;;;;;;-1:-1:-1;28476:7:0;:14;28388:110;;18896:376;;;;;;;;;;-1:-1:-1;18896:376:0;;;;;:::i;:::-;;:::i;28864:490::-;;;;;;;;;;-1:-1:-1;28864:490:0;;;;;:::i;:::-;;:::i;31653:69::-;;;;;;;;;;;;;:::i;31733:144::-;;;;;;;;;;;;;:::i;19343:185::-;;;;;;;;;;-1:-1:-1;19343:185:0;;;;;:::i;:::-;;:::i;31261:95::-;;;;;;;;;;-1:-1:-1;31261:95:0;;;;;:::i;:::-;;:::i;28575:205::-;;;;;;;;;;-1:-1:-1;28575:205:0;;;;;:::i;:::-;;:::i;29518:33::-;;;;;;;;;;;;;:::i;29692:25::-;;;;;;;;;;-1:-1:-1;29692:25:0;;;;;;;;29485:28;;;;;;;;;;;;;:::i;16632:326::-;;;;;;;;;;-1:-1:-1;16632:326:0;;;;;:::i;:::-;;:::i;31145:110::-;;;;;;;;;;-1:-1:-1;31145:110:0;;;;;:::i;:::-;;:::i;16124:446::-;;;;;;;;;;-1:-1:-1;16124:446:0;;;;;:::i;:::-;;:::i;4653:103::-;;;;;;;;;;;;;:::i;31543:102::-;;;;;;;;;;-1:-1:-1;31543:102:0;;;;;:::i;:::-;;:::i;4002:87::-;;;;;;;;;;-1:-1:-1;4075:6:0;;-1:-1:-1;;;;;4075:6:0;4002:87;;29642:38;;;;;;;;;;;;;;;;17194:104;;;;;;;;;;;;;:::i;29794:525::-;;;;;;:::i;:::-;;:::i;18217:327::-;;;;;;;;;;-1:-1:-1;18217:327:0;;;;;:::i;:::-;;:::i;31365:165::-;;;;;;;;;;-1:-1:-1;31365:165:0;;;;;:::i;:::-;;:::i;19599:365::-;;;;;;;;;;-1:-1:-1;19599:365:0;;;;;:::i;:::-;;:::i;30710:430::-;;;;;;;;;;-1:-1:-1;30710:430:0;;;;;:::i;:::-;;:::i;29604:32::-;;;;;;;;;;;;;;;;18615:214;;;;;;;;;;-1:-1:-1;18615:214:0;;;;;:::i;:::-;-1:-1:-1;;;;;18786:25:0;;;18757:4;18786:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;18615:214;4911:201;;;;;;;;;;-1:-1:-1;4911:201:0;;;;;:::i;:::-;;:::i;28088:224::-;28190:4;-1:-1:-1;;;;;;28214:50:0;;-1:-1:-1;;;28214:50:0;;:90;;;28268:36;28292:11;28268:23;:36::i;:::-;28207:97;28088:224;-1:-1:-1;;28088:224:0:o;17025:100::-;17079:13;17112:5;17105:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17025:100;:::o;17837:308::-;17958:7;18005:16;18013:7;18005;:16::i;:::-;17983:110;;;;-1:-1:-1;;;17983:110:0;;11419:2:1;17983:110:0;;;11401:21:1;11458:2;11438:18;;;11431:30;11497:34;11477:18;;;11470:62;-1:-1:-1;;;11548:18:1;;;11541:42;11600:19;;17983:110:0;;;;;;;;;-1:-1:-1;18113:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;18113:24:0;;17837:308::o;17360:411::-;17441:13;17457:23;17472:7;17457:14;:23::i;:::-;17441:39;;17505:5;-1:-1:-1;;;;;17499:11:0;:2;-1:-1:-1;;;;;17499:11:0;;;17491:57;;;;-1:-1:-1;;;17491:57:0;;13371:2:1;17491:57:0;;;13353:21:1;13410:2;13390:18;;;13383:30;13449:34;13429:18;;;13422:62;-1:-1:-1;;;13500:18:1;;;13493:31;13541:19;;17491:57:0;13169:397:1;17491:57:0;2806:10;-1:-1:-1;;;;;17583:21:0;;;;:62;;-1:-1:-1;17608:37:0;17625:5;2806:10;18615:214;:::i;17608:37::-;17561:168;;;;-1:-1:-1;;;17561:168:0;;10173:2:1;17561:168:0;;;10155:21:1;10212:2;10192:18;;;10185:30;10251:34;10231:18;;;10224:62;10322:26;10302:18;;;10295:54;10366:19;;17561:168:0;9971:420:1;17561:168:0;17742:21;17751:2;17755:7;17742:8;:21::i;:::-;17430:341;17360:411;;:::o;30327:370::-;4075:6;;-1:-1:-1;;;;;4075:6:0;2806:10;4222:23;4214:68;;;;-1:-1:-1;;;4214:68:0;;;;;;;:::i;:::-;30434:7:::1;:14:::0;30492:9:::1;::::0;30463:25:::1;30477:11:::0;30434:14;30463:25:::1;:::i;:::-;:38;;30455:70;;;::::0;-1:-1:-1;;;30455:70:0;;7415:2:1;30455:70:0::1;::::0;::::1;7397:21:1::0;7454:2;7434:18;;;7427:30;-1:-1:-1;;;7473:18:1;;;7466:49;7532:18;;30455:70:0::1;7213:343:1::0;30455:70:0::1;30536:6;30532:84;30548:11;30544:1;:15;30532:84;;;30573:34;30579:9:::0;30591:15:::1;30605:1:::0;30591:11;:15:::1;:::i;:::-;30573:5;:34::i;:::-;30561:3:::0;::::1;::::0;::::1;:::i;:::-;;;;30532:84;;;-1:-1:-1::0;;;;30327:370:0:o;18896:376::-;19105:41;2806:10;19138:7;19105:18;:41::i;:::-;19083:140;;;;-1:-1:-1;;;19083:140:0;;;;;;;:::i;:::-;19236:28;19246:4;19252:2;19256:7;19236:9;:28::i;28864:490::-;28961:15;29005:16;29015:5;29005:9;:16::i;:::-;28997:5;:24;28989:80;;;;-1:-1:-1;;;28989:80:0;;;;;;;:::i;:::-;29082:10;29107:6;29103:178;29119:7;:14;29115:18;;29103:178;;;29166:7;29174:1;29166:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;29157:19:0;;;29166:10;;29157:19;29154:116;;;29208:5;29199;:14;29196:58;;;29222:1;-1:-1:-1;29215:8:0;;-1:-1:-1;29215:8:0;29196:58;29247:7;;;;:::i;:::-;;;;29196:58;29135:3;;;;:::i;:::-;;;;29103:178;;;;29293:53;;-1:-1:-1;;;29293:53:0;;;;;;;:::i;31653:69::-;4075:6;;-1:-1:-1;;;;;4075:6:0;2806:10;4222:23;4214:68;;;;-1:-1:-1;;;4214:68:0;;;;;;;:::i;:::-;31710:6:::1;::::0;;-1:-1:-1;;31700:16:0;::::1;31710:6;::::0;;::::1;31709:7;31700:16;::::0;;31653:69::o;31733:144::-;4075:6;;-1:-1:-1;;;;;4075:6:0;2806:10;4222:23;4214:68;;;;-1:-1:-1;;;4214:68:0;;;;;;;:::i;:::-;31822:39:::1;::::0;31793:21:::1;::::0;31830:10:::1;::::0;31822:39;::::1;;;::::0;31793:21;;31777:13:::1;31822:39:::0;31777:13;31822:39;31793:21;31830:10;31822:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;31772:105;31733:144::o:0;19343:185::-;19481:39;19498:4;19504:2;19508:7;19481:39;;;;;;;;;;;;:16;:39::i;31261:95::-;4075:6;;-1:-1:-1;;;;;4075:6:0;2806:10;4222:23;4214:68;;;;-1:-1:-1;;;4214:68:0;;;;;;;:::i;:::-;31319:4:::1;:12:::0;31261:95::o;28575:205::-;28686:7;:14;28650:7;;28678:22;;28670:79;;;;-1:-1:-1;;;28670:79:0;;14548:2:1;28670:79:0;;;14530:21:1;14587:2;14567:18;;;14560:30;14626:34;14606:18;;;14599:62;-1:-1:-1;;;14677:18:1;;;14670:42;14729:19;;28670:79:0;14346:408:1;28670:79:0;-1:-1:-1;28767:5:0;28575:205::o;29518:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29485:28::-;;;;;;;:::i;16632:326::-;16749:7;16774:13;16790:7;16798;16790:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;16790:16:0;;-1:-1:-1;16839:19:0;16817:110;;;;-1:-1:-1;;;16817:110:0;;11009:2:1;16817:110:0;;;10991:21:1;11048:2;11028:18;;;11021:30;11087:34;11067:18;;;11060:62;-1:-1:-1;;;11138:18:1;;;11131:39;11187:19;;16817:110:0;10807:405:1;31145:110:0;4075:6;;-1:-1:-1;;;;;4075:6:0;2806:10;4222:23;4214:68;;;;-1:-1:-1;;;4214:68:0;;;;;;;:::i;:::-;31209:9:::1;:19:::0;31145:110::o;16124:446::-;16246:4;-1:-1:-1;;;;;16277:19:0;;16269:74;;;;-1:-1:-1;;;16269:74:0;;10598:2:1;16269:74:0;;;10580:21:1;10637:2;10617:18;;;10610:30;10676:34;10656:18;;;10649:62;-1:-1:-1;;;10727:18:1;;;10720:40;10777:19;;16269:74:0;10396:406:1;16269:74:0;16390:7;:14;16356:10;;;16415:101;16432:6;16428:1;:10;16415:101;;;16471:7;16479:1;16471:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;16462:19:0;;;16471:10;;16462:19;16458:46;;;16497:7;;;:::i;:::-;;;16458:46;16440:3;;;:::i;:::-;;;16415:101;;;-1:-1:-1;16557:5:0;;16124:446;-1:-1:-1;;;16124:446:0:o;4653:103::-;4075:6;;-1:-1:-1;;;;;4075:6:0;2806:10;4222:23;4214:68;;;;-1:-1:-1;;;4214:68:0;;;;;;;:::i;:::-;4718:30:::1;4745:1;4718:18;:30::i;:::-;4653:103::o:0;31543:102::-;4075:6;;-1:-1:-1;;;;;4075:6:0;2806:10;4222:23;4214:68;;;;-1:-1:-1;;;4214:68:0;;;;;;;:::i;:::-;31617:22;;::::1;::::0;:9:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;17194:104::-:0;17250:13;17283:7;17276:14;;;;;:::i;29794:525::-;29876:7;:14;29934:9;;29905:25;29919:11;29876:14;29905:25;:::i;:::-;:38;;29897:70;;;;-1:-1:-1;;;29897:70:0;;7415:2:1;29897:70:0;;;7397:21:1;7454:2;7434:18;;;7427:30;-1:-1:-1;;;7473:18:1;;;7466:49;7532:18;;29897:70:0;7213:343:1;29897:70:0;29997:18;;29982:11;:33;;29974:74;;;;-1:-1:-1;;;29974:74:0;;14191:2:1;29974:74:0;;;14173:21:1;14230:2;14210:18;;;14203:30;14269;14249:18;;;14242:58;14317:18;;29974:74:0;13989:352:1;29974:74:0;30066:6;;;;30065:7;30057:43;;;;-1:-1:-1;;;30057:43:0;;12193:2:1;30057:43:0;;;12175:21:1;12232:2;12212:18;;;12205:30;12271:25;12251:18;;;12244:53;12314:18;;30057:43:0;11991:347:1;30057:43:0;30135:11;30128:4;;:18;;;;:::i;:::-;30115:9;:31;30107:63;;;;-1:-1:-1;;;30107:63:0;;14961:2:1;30107:63:0;;;14943:21:1;15000:2;14980:18;;;14973:30;-1:-1:-1;;;15019:18:1;;;15012:49;15078:18;;30107:63:0;14759:343:1;30107:63:0;30182:6;30178:84;30194:11;30190:1;:15;30178:84;;;30219:34;30225:10;30237:15;30251:1;30237:11;:15;:::i;30219:34::-;30207:3;;;;:::i;:::-;;;;30178:84;;18217:327;-1:-1:-1;;;;;18352:24:0;;2806:10;18352:24;;18344:62;;;;-1:-1:-1;;;18344:62:0;;9406:2:1;18344:62:0;;;9388:21:1;9445:2;9425:18;;;9418:30;9484:27;9464:18;;;9457:55;9529:18;;18344:62:0;9204:349:1;18344:62:0;2806:10;18419:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;18419:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;18419:53:0;;;;;;;;;;18488:48;;6937:41:1;;;18419:42:0;;2806:10;18488:48;;6910:18:1;18488:48:0;;;;;;;18217:327;;:::o;31365:165::-;4075:6;;-1:-1:-1;;;;;4075:6:0;2806:10;4222:23;4214:68;;;;-1:-1:-1;;;4214:68:0;;;;;;;:::i;:::-;31451:18:::1;:40:::0;31365:165::o;19599:365::-;19788:41;2806:10;19821:7;19788:18;:41::i;:::-;19766:140;;;;-1:-1:-1;;;19766:140:0;;;;;;;:::i;:::-;19917:39;19931:4;19937:2;19941:7;19950:5;19917:13;:39::i;30710:430::-;30809:13;30850:17;30858:8;30850:7;:17::i;:::-;30834:98;;;;-1:-1:-1;;;30834:98:0;;12955:2:1;30834:98:0;;;12937:21:1;12994:2;12974:18;;;12967:30;13033:34;13013:18;;;13006:62;-1:-1:-1;;;13084:18:1;;;13077:45;13139:19;;30834:98:0;12753:411:1;30834:98:0;30949:28;30980:10;:8;:10::i;:::-;30949:41;;31035:1;31010:14;31004:28;:32;:130;;;;;;;;;;;;;;;;;31072:14;31088:19;:8;:17;:19::i;:::-;31109:9;31055:64;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;31004:130;30997:137;30710:430;-1:-1:-1;;;30710:430:0:o;4911:201::-;4075:6;;-1:-1:-1;;;;;4075:6:0;2806:10;4222:23;4214:68;;;;-1:-1:-1;;;4214:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5000:22:0;::::1;4992:73;;;::::0;-1:-1:-1;;;4992:73:0;;8594:2:1;4992:73:0::1;::::0;::::1;8576:21:1::0;8633:2;8613:18;;;8606:30;8672:34;8652:18;;;8645:62;-1:-1:-1;;;8723:18:1;;;8716:36;8769:19;;4992:73:0::1;8392:402:1::0;4992:73:0::1;5076:28;5095:8;5076:18;:28::i;:::-;4911:201:::0;:::o;15705:355::-;15852:4;-1:-1:-1;;;;;;15894:40:0;;-1:-1:-1;;;15894:40:0;;:105;;-1:-1:-1;;;;;;;15951:48:0;;-1:-1:-1;;;15951:48:0;15894:105;:158;;;-1:-1:-1;;;;;;;;;;8392:40:0;;;16016:36;8283:157;21511:155;21610:7;:14;21576:4;;21600:24;;:58;;;;;21656:1;-1:-1:-1;;;;;21628:30:0;:7;21636;21628:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;21628:16:0;:30;;21593:65;21511:155;-1:-1:-1;;21511:155:0:o;25212:174::-;25287:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;25287:29:0;-1:-1:-1;;;;;25287:29:0;;;;;;;;:24;;25341:23;25287:24;25341:14;:23::i;:::-;-1:-1:-1;;;;;25332:46:0;;;;;;;;;;;25212:174;;:::o;31884:154::-;31965:7;:16;;;;;;;-1:-1:-1;31965:16:0;;;;;;;-1:-1:-1;;;;;;31965:16:0;-1:-1:-1;;;;;31965:16:0;;;;;;;;31997:33;;32022:7;;-1:-1:-1;31997:33:0;;-1:-1:-1;;31997:33:0;31884:154;;:::o;21833:452::-;21962:4;22006:16;22014:7;22006;:16::i;:::-;21984:110;;;;-1:-1:-1;;;21984:110:0;;9760:2:1;21984:110:0;;;9742:21:1;9799:2;9779:18;;;9772:30;9838:34;9818:18;;;9811:62;-1:-1:-1;;;9889:18:1;;;9882:42;9941:19;;21984:110:0;9558:408:1;21984:110:0;22105:13;22121:23;22136:7;22121:14;:23::i;:::-;22105:39;;22174:5;-1:-1:-1;;;;;22163:16:0;:7;-1:-1:-1;;;;;22163:16:0;;:64;;;;22220:7;-1:-1:-1;;;;;22196:31:0;:20;22208:7;22196:11;:20::i;:::-;-1:-1:-1;;;;;22196:31:0;;22163:64;:113;;;-1:-1:-1;;;;;;18786:25:0;;;18757:4;18786:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;22244:32;22155:122;21833:452;-1:-1:-1;;;;21833:452:0:o;24541:553::-;24714:4;-1:-1:-1;;;;;24687:31:0;:23;24702:7;24687:14;:23::i;:::-;-1:-1:-1;;;;;24687:31:0;;24665:122;;;;-1:-1:-1;;;24665:122:0;;12545:2:1;24665:122:0;;;12527:21:1;12584:2;12564:18;;;12557:30;12623:34;12603:18;;;12596:62;-1:-1:-1;;;12674:18:1;;;12667:39;12723:19;;24665:122:0;12343:405:1;24665:122:0;-1:-1:-1;;;;;24806:16:0;;24798:65;;;;-1:-1:-1;;;24798:65:0;;9001:2:1;24798:65:0;;;8983:21:1;9040:2;9020:18;;;9013:30;9079:34;9059:18;;;9052:62;-1:-1:-1;;;9130:18:1;;;9123:34;9174:19;;24798:65:0;8799:400:1;24798:65:0;24980:29;24997:1;25001:7;24980:8;:29::i;:::-;25039:2;25020:7;25028;25020:16;;;;;;;;:::i;:::-;;;;;;;;;:21;;-1:-1:-1;;;;;;25020:21:0;-1:-1:-1;;;;;25020:21:0;;;;;;25059:27;;25078:7;;25059:27;;;;;;;;;;25020:16;25059:27;24541:553;;;:::o;5272:191::-;5365:6;;;-1:-1:-1;;;;;5382:17:0;;;-1:-1:-1;;;;;;5382:17:0;;;;;;;5415:40;;5365:6;;;5382:17;5365:6;;5415:40;;5346:16;;5415:40;5335:128;5272:191;:::o;20846:352::-;21003:28;21013:4;21019:2;21023:7;21003:9;:28::i;:::-;21064:48;21087:4;21093:2;21097:7;21106:5;21064:22;:48::i;:::-;21042:148;;;;-1:-1:-1;;;21042:148:0;;;;;;;:::i;32044:88::-;32088:13;32117:9;32110:16;;;;;:::i;288:723::-;344:13;565:10;561:53;;-1:-1:-1;;592:10:0;;;;;;;;;;;;-1:-1:-1;;;592:10:0;;;;;288:723::o;561:53::-;639:5;624:12;680:78;687:9;;680:78;;713:8;;;;:::i;:::-;;-1:-1:-1;736:10:0;;-1:-1:-1;744:2:0;736:10;;:::i;:::-;;;680:78;;;768:19;800:6;790:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;790:17:0;;768:39;;818:154;825:10;;818:154;;852:11;862:1;852:11;;:::i;:::-;;-1:-1:-1;921:10:0;929:2;921:5;:10;:::i;:::-;908:24;;:2;:24;:::i;:::-;895:39;;878:6;885;878:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;878:56:0;;;;;;;;-1:-1:-1;949:11:0;958:2;949:11;;:::i;:::-;;;818:154;;25951:980;26106:4;-1:-1:-1;;;;;26127:13:0;;14905:20;14953:8;26123:801;;26180:175;;-1:-1:-1;;;26180:175:0;;-1:-1:-1;;;;;26180:36:0;;;;;:175;;2806:10;;26274:4;;26301:7;;26331:5;;26180:175;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26180:175:0;;;;;;;;-1:-1:-1;;26180:175:0;;;;;;;;;;;;:::i;:::-;;;26159:710;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26538:13:0;;26534:320;;26581:108;;-1:-1:-1;;;26581:108:0;;;;;;;:::i;26534:320::-;26804:6;26798:13;26789:6;26785:2;26781:15;26774:38;26159:710;-1:-1:-1;;;;;;26419:51:0;-1:-1:-1;;;26419:51:0;;-1:-1:-1;26412:58:0;;26123:801;-1:-1:-1;26908:4:0;25951:980;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:186::-;887:6;940:2;928:9;919:7;915:23;911:32;908:52;;;956:1;953;946:12;908:52;979:29;998:9;979:29;:::i;1019:260::-;1087:6;1095;1148:2;1136:9;1127:7;1123:23;1119:32;1116:52;;;1164:1;1161;1154:12;1116:52;1187:29;1206:9;1187:29;:::i;:::-;1177:39;;1235:38;1269:2;1258:9;1254:18;1235:38;:::i;:::-;1225:48;;1019:260;;;;;:::o;1284:328::-;1361:6;1369;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1469:29;1488:9;1469:29;:::i;:::-;1459:39;;1517:38;1551:2;1540:9;1536:18;1517:38;:::i;:::-;1507:48;;1602:2;1591:9;1587:18;1574:32;1564:42;;1284:328;;;;;:::o;1617:666::-;1712:6;1720;1728;1736;1789:3;1777:9;1768:7;1764:23;1760:33;1757:53;;;1806:1;1803;1796:12;1757:53;1829:29;1848:9;1829:29;:::i;:::-;1819:39;;1877:38;1911:2;1900:9;1896:18;1877:38;:::i;:::-;1867:48;;1962:2;1951:9;1947:18;1934:32;1924:42;;2017:2;2006:9;2002:18;1989:32;2044:18;2036:6;2033:30;2030:50;;;2076:1;2073;2066:12;2030:50;2099:22;;2152:4;2144:13;;2140:27;-1:-1:-1;2130:55:1;;2181:1;2178;2171:12;2130:55;2204:73;2269:7;2264:2;2251:16;2246:2;2242;2238:11;2204:73;:::i;:::-;2194:83;;;1617:666;;;;;;;:::o;2288:347::-;2353:6;2361;2414:2;2402:9;2393:7;2389:23;2385:32;2382:52;;;2430:1;2427;2420:12;2382:52;2453:29;2472:9;2453:29;:::i;:::-;2443:39;;2532:2;2521:9;2517:18;2504:32;2579:5;2572:13;2565:21;2558:5;2555:32;2545:60;;2601:1;2598;2591:12;2545:60;2624:5;2614:15;;;2288:347;;;;;:::o;2640:254::-;2708:6;2716;2769:2;2757:9;2748:7;2744:23;2740:32;2737:52;;;2785:1;2782;2775:12;2737:52;2808:29;2827:9;2808:29;:::i;:::-;2798:39;2884:2;2869:18;;;;2856:32;;-1:-1:-1;;;2640:254:1:o;2899:245::-;2957:6;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3065:9;3052:23;3084:30;3108:5;3084:30;:::i;3149:249::-;3218:6;3271:2;3259:9;3250:7;3246:23;3242:32;3239:52;;;3287:1;3284;3277:12;3239:52;3319:9;3313:16;3338:30;3362:5;3338:30;:::i;3403:450::-;3472:6;3525:2;3513:9;3504:7;3500:23;3496:32;3493:52;;;3541:1;3538;3531:12;3493:52;3581:9;3568:23;3614:18;3606:6;3603:30;3600:50;;;3646:1;3643;3636:12;3600:50;3669:22;;3722:4;3714:13;;3710:27;-1:-1:-1;3700:55:1;;3751:1;3748;3741:12;3700:55;3774:73;3839:7;3834:2;3821:16;3816:2;3812;3808:11;3774:73;:::i;3858:180::-;3917:6;3970:2;3958:9;3949:7;3945:23;3941:32;3938:52;;;3986:1;3983;3976:12;3938:52;-1:-1:-1;4009:23:1;;3858:180;-1:-1:-1;3858:180:1:o;4043:254::-;4111:6;4119;4172:2;4160:9;4151:7;4147:23;4143:32;4140:52;;;4188:1;4185;4178:12;4140:52;4224:9;4211:23;4201:33;;4253:38;4287:2;4276:9;4272:18;4253:38;:::i;4302:257::-;4343:3;4381:5;4375:12;4408:6;4403:3;4396:19;4424:63;4480:6;4473:4;4468:3;4464:14;4457:4;4450:5;4446:16;4424:63;:::i;:::-;4541:2;4520:15;-1:-1:-1;;4516:29:1;4507:39;;;;4548:4;4503:50;;4302:257;-1:-1:-1;;4302:257:1:o;4564:1527::-;4788:3;4826:6;4820:13;4852:4;4865:51;4909:6;4904:3;4899:2;4891:6;4887:15;4865:51;:::i;:::-;4979:13;;4938:16;;;;5001:55;4979:13;4938:16;5023:15;;;5001:55;:::i;:::-;5145:13;;5078:20;;;5118:1;;5205;5227:18;;;;5280;;;;5307:93;;5385:4;5375:8;5371:19;5359:31;;5307:93;5448:2;5438:8;5435:16;5415:18;5412:40;5409:167;;;-1:-1:-1;;;5475:33:1;;5531:4;5528:1;5521:15;5561:4;5482:3;5549:17;5409:167;5592:18;5619:110;;;;5743:1;5738:328;;;;5585:481;;5619:110;-1:-1:-1;;5654:24:1;;5640:39;;5699:20;;;;-1:-1:-1;5619:110:1;;5738:328;15362:1;15355:14;;;15399:4;15386:18;;5833:1;5847:169;5861:8;5858:1;5855:15;5847:169;;;5943:14;;5928:13;;;5921:37;5986:16;;;;5878:10;;5847:169;;;5851:3;;6047:8;6040:5;6036:20;6029:27;;5585:481;-1:-1:-1;6082:3:1;;4564:1527;-1:-1:-1;;;;;;;;;;;4564:1527:1:o;6304:488::-;-1:-1:-1;;;;;6573:15:1;;;6555:34;;6625:15;;6620:2;6605:18;;6598:43;6672:2;6657:18;;6650:34;;;6720:3;6715:2;6700:18;;6693:31;;;6498:4;;6741:45;;6766:19;;6758:6;6741:45;:::i;:::-;6733:53;6304:488;-1:-1:-1;;;;;;6304:488:1:o;6989:219::-;7138:2;7127:9;7120:21;7101:4;7158:44;7198:2;7187:9;7183:18;7175:6;7158:44;:::i;7561:407::-;7763:2;7745:21;;;7802:2;7782:18;;;7775:30;7841:34;7836:2;7821:18;;7814:62;-1:-1:-1;;;7907:2:1;7892:18;;7885:41;7958:3;7943:19;;7561:407::o;7973:414::-;8175:2;8157:21;;;8214:2;8194:18;;;8187:30;8253:34;8248:2;8233:18;;8226:62;-1:-1:-1;;;8319:2:1;8304:18;;8297:48;8377:3;8362:19;;7973:414::o;11630:356::-;11832:2;11814:21;;;11851:18;;;11844:30;11910:34;11905:2;11890:18;;11883:62;11977:2;11962:18;;11630:356::o;13571:413::-;13773:2;13755:21;;;13812:2;13792:18;;;13785:30;13851:34;13846:2;13831:18;;13824:62;-1:-1:-1;;;13917:2:1;13902:18;;13895:47;13974:3;13959:19;;13571:413::o;15415:128::-;15455:3;15486:1;15482:6;15479:1;15476:13;15473:39;;;15492:18;;:::i;:::-;-1:-1:-1;15528:9:1;;15415:128::o;15548:120::-;15588:1;15614;15604:35;;15619:18;;:::i;:::-;-1:-1:-1;15653:9:1;;15548:120::o;15673:168::-;15713:7;15779:1;15775;15771:6;15767:14;15764:1;15761:21;15756:1;15749:9;15742:17;15738:45;15735:71;;;15786:18;;:::i;:::-;-1:-1:-1;15826:9:1;;15673:168::o;15846:125::-;15886:4;15914:1;15911;15908:8;15905:34;;;15919:18;;:::i;:::-;-1:-1:-1;15956:9:1;;15846:125::o;15976:258::-;16048:1;16058:113;16072:6;16069:1;16066:13;16058:113;;;16148:11;;;16142:18;16129:11;;;16122:39;16094:2;16087:10;16058:113;;;16189:6;16186:1;16183:13;16180:48;;;-1:-1:-1;;16224:1:1;16206:16;;16199:27;15976:258::o;16239:380::-;16318:1;16314:12;;;;16361;;;16382:61;;16436:4;16428:6;16424:17;16414:27;;16382:61;16489:2;16481:6;16478:14;16458:18;16455:38;16452:161;;;16535:10;16530:3;16526:20;16523:1;16516:31;16570:4;16567:1;16560:15;16598:4;16595:1;16588:15;16452:161;;16239:380;;;:::o;16624:135::-;16663:3;-1:-1:-1;;16684:17:1;;16681:43;;;16704:18;;:::i;:::-;-1:-1:-1;16751:1:1;16740:13;;16624:135::o;16764:112::-;16796:1;16822;16812:35;;16827:18;;:::i;:::-;-1:-1:-1;16861:9:1;;16764:112::o;16881:127::-;16942:10;16937:3;16933:20;16930:1;16923:31;16973:4;16970:1;16963:15;16997:4;16994:1;16987:15;17013:127;17074:10;17069:3;17065:20;17062:1;17055:31;17105:4;17102:1;17095:15;17129:4;17126:1;17119:15;17145:127;17206:10;17201:3;17197:20;17194:1;17187:31;17237:4;17234:1;17227:15;17261:4;17258:1;17251:15;17277:127;17338:10;17333:3;17329:20;17326:1;17319:31;17369:4;17366:1;17359:15;17393:4;17390:1;17383:15;17409:131;-1:-1:-1;;;;;;17483:32:1;;17473:43;;17463:71;;17530:1;17527;17520:12

Swarm Source

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