ETH Price: $3,172.57 (+2.11%)

Token

BeyondBeliever (BYB)
 

Overview

Max Total Supply

29 BYB

Holders

27

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 BYB
0xadc24d7b630759a3af7f52716d91299c999a2213
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:
BeyondBeliever

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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


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

pragma solidity ^0.8.0;

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


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

pragma solidity ^0.8.0;

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

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

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


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

pragma solidity ^0.8.0;

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

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


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

pragma solidity ^0.8.0;

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

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

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

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

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


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

pragma solidity ^0.8.0;

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


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

pragma solidity ^0.8.0;







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

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

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

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

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

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

        _transfer(from, to, tokenId);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);
    }

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

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.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 {}
}


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

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() {
        _setOwner(_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 {
        _setOwner(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");
        _setOwner(newOwner);
    }

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


// File contracts/BeyondBeliever.sol

pragma solidity ^0.8.0;


contract BeyondBeliever is ERC721, Ownable {
    uint256 public constant MAX_SUPPLY = 171; // Max of 170 with 1-indexing

    // Use a counter to manage supply
    uint256 public globalCounter = 1;

    // Collection metadata URI
    string private _baseURIExtended;

    // Enable and disable minting
    bool private _mintingEnabled = false;

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

    function setBaseURI(string memory baseURI_) external onlyOwner {
        _baseURIExtended = baseURI_;
    }

    function tokenURI(uint256 _tokenId)
        public
        view
        override
        returns (string memory)
    {
        return
            string(
                abi.encodePacked(baseTokenURI(), Strings.toString(_tokenId))
            );
    }

    function baseTokenURI() public view returns (string memory) {
        return _baseURIExtended;
    }

    function totalSupply() public view returns (uint256) {
        return globalCounter - 1;
    }

    function enableMinting() public onlyOwner {
        _mintingEnabled = true;
    }

    function disableMinting() public onlyOwner {
        _mintingEnabled = false;
    }

    function mint() public payable {
        uint256 price;

        require(_mintingEnabled, "Minting not possible yet");
        require(globalCounter < MAX_SUPPLY, "Exceeds max supply");

        if (globalCounter < 21) {
            price = 250000000000000000; // 0.25
        } else if (globalCounter < 71) {
            price = 450000000000000000; // 0.45
        } else {
            price = 650000000000000000; // 0.65
        }

        require(msg.value >= price, "Not enough ETH sent");
        _safeMint(msg.sender, globalCounter);

        globalCounter++;
    }

    function withdraw() public onlyOwner {
        address recipient = 0xf39EAdE5FaD1EB494b6cD3849114bD691736946e;
        payable(recipient).transfer(address(this).balance);
    }

    constructor(string memory metadataBaseURI) ERC721("BeyondBeliever", "BYB") {
        _baseURIExtended = metadataBaseURI;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"metadataBaseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260016007556000600960006101000a81548160ff0219169083151502179055503480156200003157600080fd5b50604051620036f7380380620036f7833981810160405281019062000057919062000327565b6040518060400160405280600e81526020017f4265796f6e6442656c69657665720000000000000000000000000000000000008152506040518060400160405280600381526020017f42594200000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000db92919062000205565b508060019080519060200190620000f492919062000205565b505050620001176200010b6200013760201b60201c565b6200013f60201b60201c565b80600890805190602001906200012f92919062000205565b50506200049d565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002139062000409565b90600052602060002090601f01602090048101928262000237576000855562000283565b82601f106200025257805160ff191683800117855562000283565b8280016001018555821562000283579182015b828111156200028257825182559160200191906001019062000265565b5b50905062000292919062000296565b5090565b5b80821115620002b157600081600090555060010162000297565b5090565b6000620002cc620002c684620003a0565b6200036c565b905082815260208101848484011115620002e557600080fd5b620002f2848285620003d3565b509392505050565b600082601f8301126200030c57600080fd5b81516200031e848260208601620002b5565b91505092915050565b6000602082840312156200033a57600080fd5b600082015167ffffffffffffffff8111156200035557600080fd5b6200036384828501620002fa565b91505092915050565b6000604051905081810181811067ffffffffffffffff821117156200039657620003956200046e565b5b8060405250919050565b600067ffffffffffffffff821115620003be57620003bd6200046e565b5b601f19601f8301169050602081019050919050565b60005b83811015620003f3578082015181840152602081019050620003d6565b8381111562000403576000848401525b50505050565b600060028204905060018216806200042257607f821691505b602082108114156200043957620004386200043f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61324a80620004ad6000396000f3fe6080604052600436106101665760003560e01c806370a08231116100d1578063b88d4fde1161008a578063d547cfb711610064578063d547cfb7146104e3578063e797ec1b1461050e578063e985e9c514610525578063f2fde38b1461056257610166565b8063b88d4fde14610452578063c87b56dd1461047b578063d396a7a9146104b857610166565b806370a0823114610368578063715018a6146103a55780637e5cd5c1146103bc5780638da5cb5b146103d357806395d89b41146103fe578063a22cb4651461042957610166565b806323b872dd1161012357806323b872dd1461026e57806332cb6b0c146102975780633ccfd60b146102c257806342842e0e146102d957806355f804b3146103025780636352211e1461032b57610166565b806301ffc9a71461016b57806306fdde03146101a8578063081812fc146101d3578063095ea7b3146102105780631249c58b1461023957806318160ddd14610243575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612329565b61058b565b60405161019f9190612b62565b60405180910390f35b3480156101b457600080fd5b506101bd61066d565b6040516101ca9190612b7d565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f591906123bc565b6106ff565b6040516102079190612afb565b60405180910390f35b34801561021c57600080fd5b50610237600480360381019061023291906122ed565b610784565b005b61024161089c565b005b34801561024f57600080fd5b506102586109df565b6040516102659190612ddf565b60405180910390f35b34801561027a57600080fd5b50610295600480360381019061029091906121e7565b6109f5565b005b3480156102a357600080fd5b506102ac610a55565b6040516102b99190612ddf565b60405180910390f35b3480156102ce57600080fd5b506102d7610a5a565b005b3480156102e557600080fd5b5061030060048036038101906102fb91906121e7565b610b39565b005b34801561030e57600080fd5b506103296004803603810190610324919061237b565b610b59565b005b34801561033757600080fd5b50610352600480360381019061034d91906123bc565b610bef565b60405161035f9190612afb565b60405180910390f35b34801561037457600080fd5b5061038f600480360381019061038a9190612182565b610ca1565b60405161039c9190612ddf565b60405180910390f35b3480156103b157600080fd5b506103ba610d59565b005b3480156103c857600080fd5b506103d1610de1565b005b3480156103df57600080fd5b506103e8610e7a565b6040516103f59190612afb565b60405180910390f35b34801561040a57600080fd5b50610413610ea4565b6040516104209190612b7d565b60405180910390f35b34801561043557600080fd5b50610450600480360381019061044b91906122b1565b610f36565b005b34801561045e57600080fd5b5061047960048036038101906104749190612236565b6110b7565b005b34801561048757600080fd5b506104a2600480360381019061049d91906123bc565b611119565b6040516104af9190612b7d565b60405180910390f35b3480156104c457600080fd5b506104cd611153565b6040516104da9190612ddf565b60405180910390f35b3480156104ef57600080fd5b506104f8611159565b6040516105059190612b7d565b60405180910390f35b34801561051a57600080fd5b506105236111eb565b005b34801561053157600080fd5b5061054c600480360381019061054791906121ab565b611284565b6040516105599190612b62565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190612182565b611318565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061065657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610666575061066582611410565b5b9050919050565b60606000805461067c9061303f565b80601f01602080910402602001604051908101604052809291908181526020018280546106a89061303f565b80156106f55780601f106106ca576101008083540402835291602001916106f5565b820191906000526020600020905b8154815290600101906020018083116106d857829003601f168201915b5050505050905090565b600061070a8261147a565b610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074090612d1f565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061078f82610bef565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f790612d9f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661081f6114e6565b73ffffffffffffffffffffffffffffffffffffffff16148061084e575061084d816108486114e6565b611284565b5b61088d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088490612c7f565b60405180910390fd5b61089783836114ee565b505050565b6000600960009054906101000a900460ff166108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490612c5f565b60405180910390fd5b60ab60075410610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092990612cdf565b60405180910390fd5b6015600754101561094d576703782dace9d900009050610975565b604760075410156109685767063eb89da4ed00009050610974565b670905438e6001000090505b5b803410156109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af90612d7f565b60405180910390fd5b6109c4336007546115a7565b600760008154809291906109d790613071565b919050555050565b600060016007546109f09190612f55565b905090565b610a06610a006114e6565b826115c5565b610a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3c90612dbf565b60405180910390fd5b610a508383836116a3565b505050565b60ab81565b610a626114e6565b73ffffffffffffffffffffffffffffffffffffffff16610a80610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90612d3f565b60405180910390fd5b600073f39eade5fad1eb494b6cd3849114bd691736946e90508073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b35573d6000803e3d6000fd5b5050565b610b54838383604051806020016040528060008152506110b7565b505050565b610b616114e6565b73ffffffffffffffffffffffffffffffffffffffff16610b7f610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90612d3f565b60405180910390fd5b8060089080519060200190610beb929190611fa6565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8f90612cbf565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990612c9f565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d616114e6565b73ffffffffffffffffffffffffffffffffffffffff16610d7f610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90612d3f565b60405180910390fd5b610ddf60006118ff565b565b610de96114e6565b73ffffffffffffffffffffffffffffffffffffffff16610e07610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490612d3f565b60405180910390fd5b6000600960006101000a81548160ff021916908315150217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610eb39061303f565b80601f0160208091040260200160405190810160405280929190818152602001828054610edf9061303f565b8015610f2c5780601f10610f0157610100808354040283529160200191610f2c565b820191906000526020600020905b815481529060010190602001808311610f0f57829003601f168201915b5050505050905090565b610f3e6114e6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390612c1f565b60405180910390fd5b8060056000610fb96114e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110666114e6565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110ab9190612b62565b60405180910390a35050565b6110c86110c26114e6565b836115c5565b611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fe90612dbf565b60405180910390fd5b611113848484846119c5565b50505050565b6060611123611159565b61112c83611a21565b60405160200161113d929190612ad7565b6040516020818303038152906040529050919050565b60075481565b6060600880546111689061303f565b80601f01602080910402602001604051908101604052809291908181526020018280546111949061303f565b80156111e15780601f106111b6576101008083540402835291602001916111e1565b820191906000526020600020905b8154815290600101906020018083116111c457829003601f168201915b5050505050905090565b6111f36114e6565b73ffffffffffffffffffffffffffffffffffffffff16611211610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90612d3f565b60405180910390fd5b6001600960006101000a81548160ff021916908315150217905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113206114e6565b73ffffffffffffffffffffffffffffffffffffffff1661133e610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90612d3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90612bbf565b60405180910390fd5b61140d816118ff565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661156183610bef565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6115c1828260405180602001604052806000815250611bce565b5050565b60006115d08261147a565b61160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690612c3f565b60405180910390fd5b600061161a83610bef565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061168957508373ffffffffffffffffffffffffffffffffffffffff16611671846106ff565b73ffffffffffffffffffffffffffffffffffffffff16145b8061169a57506116998185611284565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166116c382610bef565b73ffffffffffffffffffffffffffffffffffffffff1614611719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171090612d5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090612bff565b60405180910390fd5b611794838383611c29565b61179f6000826114ee565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ef9190612f55565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118469190612ece565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6119d08484846116a3565b6119dc84848484611c2e565b611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1290612b9f565b60405180910390fd5b50505050565b60606000821415611a69576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611bc9565b600082905060005b60008214611a9b578080611a8490613071565b915050600a82611a949190612f24565b9150611a71565b60008167ffffffffffffffff811115611add577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b0f5781602001600182028036833780820191505090505b5090505b60008514611bc257600182611b289190612f55565b9150600a85611b3791906130ba565b6030611b439190612ece565b60f81b818381518110611b7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bbb9190612f24565b9450611b13565b8093505050505b919050565b611bd88383611dc5565b611be56000848484611c2e565b611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b90612b9f565b60405180910390fd5b505050565b505050565b6000611c4f8473ffffffffffffffffffffffffffffffffffffffff16611f93565b15611db8578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611c786114e6565b8786866040518563ffffffff1660e01b8152600401611c9a9493929190612b16565b602060405180830381600087803b158015611cb457600080fd5b505af1925050508015611ce557506040513d601f19601f82011682018060405250810190611ce29190612352565b60015b611d68573d8060008114611d15576040519150601f19603f3d011682016040523d82523d6000602084013e611d1a565b606091505b50600081511415611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790612b9f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611dbd565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c90612cff565b60405180910390fd5b611e3e8161147a565b15611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7590612bdf565b60405180910390fd5b611e8a60008383611c29565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eda9190612ece565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054611fb29061303f565b90600052602060002090601f016020900481019282611fd4576000855561201b565b82601f10611fed57805160ff191683800117855561201b565b8280016001018555821561201b579182015b8281111561201a578251825591602001919060010190611fff565b5b509050612028919061202c565b5090565b5b8082111561204557600081600090555060010161202d565b5090565b600061205c61205784612e2b565b612dfa565b90508281526020810184848401111561207457600080fd5b61207f848285612ffd565b509392505050565b600061209a61209584612e5b565b612dfa565b9050828152602081018484840111156120b257600080fd5b6120bd848285612ffd565b509392505050565b6000813590506120d4816131b8565b92915050565b6000813590506120e9816131cf565b92915050565b6000813590506120fe816131e6565b92915050565b600081519050612113816131e6565b92915050565b600082601f83011261212a57600080fd5b813561213a848260208601612049565b91505092915050565b600082601f83011261215457600080fd5b8135612164848260208601612087565b91505092915050565b60008135905061217c816131fd565b92915050565b60006020828403121561219457600080fd5b60006121a2848285016120c5565b91505092915050565b600080604083850312156121be57600080fd5b60006121cc858286016120c5565b92505060206121dd858286016120c5565b9150509250929050565b6000806000606084860312156121fc57600080fd5b600061220a868287016120c5565b935050602061221b868287016120c5565b925050604061222c8682870161216d565b9150509250925092565b6000806000806080858703121561224c57600080fd5b600061225a878288016120c5565b945050602061226b878288016120c5565b935050604061227c8782880161216d565b925050606085013567ffffffffffffffff81111561229957600080fd5b6122a587828801612119565b91505092959194509250565b600080604083850312156122c457600080fd5b60006122d2858286016120c5565b92505060206122e3858286016120da565b9150509250929050565b6000806040838503121561230057600080fd5b600061230e858286016120c5565b925050602061231f8582860161216d565b9150509250929050565b60006020828403121561233b57600080fd5b6000612349848285016120ef565b91505092915050565b60006020828403121561236457600080fd5b600061237284828501612104565b91505092915050565b60006020828403121561238d57600080fd5b600082013567ffffffffffffffff8111156123a757600080fd5b6123b384828501612143565b91505092915050565b6000602082840312156123ce57600080fd5b60006123dc8482850161216d565b91505092915050565b6123ee81612f89565b82525050565b6123fd81612f9b565b82525050565b600061240e82612e8b565b6124188185612ea1565b935061242881856020860161300c565b612431816131a7565b840191505092915050565b600061244782612e96565b6124518185612eb2565b935061246181856020860161300c565b61246a816131a7565b840191505092915050565b600061248082612e96565b61248a8185612ec3565b935061249a81856020860161300c565b80840191505092915050565b60006124b3603283612eb2565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612519602683612eb2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061257f601c83612eb2565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b60006125bf602483612eb2565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612625601983612eb2565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000612665602c83612eb2565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006126cb601883612eb2565b91507f4d696e74696e67206e6f7420706f737369626c652079657400000000000000006000830152602082019050919050565b600061270b603883612eb2565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000612771602a83612eb2565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b60006127d7602983612eb2565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061283d601283612eb2565b91507f45786365656473206d617820737570706c7900000000000000000000000000006000830152602082019050919050565b600061287d602083612eb2565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006128bd602c83612eb2565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612923602083612eb2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612963602983612eb2565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006129c9601383612eb2565b91507f4e6f7420656e6f756768204554482073656e74000000000000000000000000006000830152602082019050919050565b6000612a09602183612eb2565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a6f603183612eb2565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b612ad181612ff3565b82525050565b6000612ae38285612475565b9150612aef8284612475565b91508190509392505050565b6000602082019050612b1060008301846123e5565b92915050565b6000608082019050612b2b60008301876123e5565b612b3860208301866123e5565b612b456040830185612ac8565b8181036060830152612b578184612403565b905095945050505050565b6000602082019050612b7760008301846123f4565b92915050565b60006020820190508181036000830152612b97818461243c565b905092915050565b60006020820190508181036000830152612bb8816124a6565b9050919050565b60006020820190508181036000830152612bd88161250c565b9050919050565b60006020820190508181036000830152612bf881612572565b9050919050565b60006020820190508181036000830152612c18816125b2565b9050919050565b60006020820190508181036000830152612c3881612618565b9050919050565b60006020820190508181036000830152612c5881612658565b9050919050565b60006020820190508181036000830152612c78816126be565b9050919050565b60006020820190508181036000830152612c98816126fe565b9050919050565b60006020820190508181036000830152612cb881612764565b9050919050565b60006020820190508181036000830152612cd8816127ca565b9050919050565b60006020820190508181036000830152612cf881612830565b9050919050565b60006020820190508181036000830152612d1881612870565b9050919050565b60006020820190508181036000830152612d38816128b0565b9050919050565b60006020820190508181036000830152612d5881612916565b9050919050565b60006020820190508181036000830152612d7881612956565b9050919050565b60006020820190508181036000830152612d98816129bc565b9050919050565b60006020820190508181036000830152612db8816129fc565b9050919050565b60006020820190508181036000830152612dd881612a62565b9050919050565b6000602082019050612df46000830184612ac8565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612e2157612e20613178565b5b8060405250919050565b600067ffffffffffffffff821115612e4657612e45613178565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612e7657612e75613178565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612ed982612ff3565b9150612ee483612ff3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f1957612f186130eb565b5b828201905092915050565b6000612f2f82612ff3565b9150612f3a83612ff3565b925082612f4a57612f4961311a565b5b828204905092915050565b6000612f6082612ff3565b9150612f6b83612ff3565b925082821015612f7e57612f7d6130eb565b5b828203905092915050565b6000612f9482612fd3565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561302a57808201518184015260208101905061300f565b83811115613039576000848401525b50505050565b6000600282049050600182168061305757607f821691505b6020821081141561306b5761306a613149565b5b50919050565b600061307c82612ff3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130af576130ae6130eb565b5b600182019050919050565b60006130c582612ff3565b91506130d083612ff3565b9250826130e0576130df61311a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6131c181612f89565b81146131cc57600080fd5b50565b6131d881612f9b565b81146131e357600080fd5b50565b6131ef81612fa7565b81146131fa57600080fd5b50565b61320681612ff3565b811461321157600080fd5b5056fea2646970667358221220e37c0d9ecd1acbb86f7f9040485f6077d14a6e6e337ea039ca914587a3c8fbff64736f6c634300080000330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f6265796f6e642e736f2f6170692f746f6b656e6d6574612f

Deployed Bytecode

0x6080604052600436106101665760003560e01c806370a08231116100d1578063b88d4fde1161008a578063d547cfb711610064578063d547cfb7146104e3578063e797ec1b1461050e578063e985e9c514610525578063f2fde38b1461056257610166565b8063b88d4fde14610452578063c87b56dd1461047b578063d396a7a9146104b857610166565b806370a0823114610368578063715018a6146103a55780637e5cd5c1146103bc5780638da5cb5b146103d357806395d89b41146103fe578063a22cb4651461042957610166565b806323b872dd1161012357806323b872dd1461026e57806332cb6b0c146102975780633ccfd60b146102c257806342842e0e146102d957806355f804b3146103025780636352211e1461032b57610166565b806301ffc9a71461016b57806306fdde03146101a8578063081812fc146101d3578063095ea7b3146102105780631249c58b1461023957806318160ddd14610243575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612329565b61058b565b60405161019f9190612b62565b60405180910390f35b3480156101b457600080fd5b506101bd61066d565b6040516101ca9190612b7d565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f591906123bc565b6106ff565b6040516102079190612afb565b60405180910390f35b34801561021c57600080fd5b50610237600480360381019061023291906122ed565b610784565b005b61024161089c565b005b34801561024f57600080fd5b506102586109df565b6040516102659190612ddf565b60405180910390f35b34801561027a57600080fd5b50610295600480360381019061029091906121e7565b6109f5565b005b3480156102a357600080fd5b506102ac610a55565b6040516102b99190612ddf565b60405180910390f35b3480156102ce57600080fd5b506102d7610a5a565b005b3480156102e557600080fd5b5061030060048036038101906102fb91906121e7565b610b39565b005b34801561030e57600080fd5b506103296004803603810190610324919061237b565b610b59565b005b34801561033757600080fd5b50610352600480360381019061034d91906123bc565b610bef565b60405161035f9190612afb565b60405180910390f35b34801561037457600080fd5b5061038f600480360381019061038a9190612182565b610ca1565b60405161039c9190612ddf565b60405180910390f35b3480156103b157600080fd5b506103ba610d59565b005b3480156103c857600080fd5b506103d1610de1565b005b3480156103df57600080fd5b506103e8610e7a565b6040516103f59190612afb565b60405180910390f35b34801561040a57600080fd5b50610413610ea4565b6040516104209190612b7d565b60405180910390f35b34801561043557600080fd5b50610450600480360381019061044b91906122b1565b610f36565b005b34801561045e57600080fd5b5061047960048036038101906104749190612236565b6110b7565b005b34801561048757600080fd5b506104a2600480360381019061049d91906123bc565b611119565b6040516104af9190612b7d565b60405180910390f35b3480156104c457600080fd5b506104cd611153565b6040516104da9190612ddf565b60405180910390f35b3480156104ef57600080fd5b506104f8611159565b6040516105059190612b7d565b60405180910390f35b34801561051a57600080fd5b506105236111eb565b005b34801561053157600080fd5b5061054c600480360381019061054791906121ab565b611284565b6040516105599190612b62565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190612182565b611318565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061065657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610666575061066582611410565b5b9050919050565b60606000805461067c9061303f565b80601f01602080910402602001604051908101604052809291908181526020018280546106a89061303f565b80156106f55780601f106106ca576101008083540402835291602001916106f5565b820191906000526020600020905b8154815290600101906020018083116106d857829003601f168201915b5050505050905090565b600061070a8261147a565b610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074090612d1f565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061078f82610bef565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f790612d9f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661081f6114e6565b73ffffffffffffffffffffffffffffffffffffffff16148061084e575061084d816108486114e6565b611284565b5b61088d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088490612c7f565b60405180910390fd5b61089783836114ee565b505050565b6000600960009054906101000a900460ff166108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490612c5f565b60405180910390fd5b60ab60075410610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092990612cdf565b60405180910390fd5b6015600754101561094d576703782dace9d900009050610975565b604760075410156109685767063eb89da4ed00009050610974565b670905438e6001000090505b5b803410156109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af90612d7f565b60405180910390fd5b6109c4336007546115a7565b600760008154809291906109d790613071565b919050555050565b600060016007546109f09190612f55565b905090565b610a06610a006114e6565b826115c5565b610a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3c90612dbf565b60405180910390fd5b610a508383836116a3565b505050565b60ab81565b610a626114e6565b73ffffffffffffffffffffffffffffffffffffffff16610a80610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90612d3f565b60405180910390fd5b600073f39eade5fad1eb494b6cd3849114bd691736946e90508073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b35573d6000803e3d6000fd5b5050565b610b54838383604051806020016040528060008152506110b7565b505050565b610b616114e6565b73ffffffffffffffffffffffffffffffffffffffff16610b7f610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90612d3f565b60405180910390fd5b8060089080519060200190610beb929190611fa6565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8f90612cbf565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990612c9f565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d616114e6565b73ffffffffffffffffffffffffffffffffffffffff16610d7f610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90612d3f565b60405180910390fd5b610ddf60006118ff565b565b610de96114e6565b73ffffffffffffffffffffffffffffffffffffffff16610e07610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490612d3f565b60405180910390fd5b6000600960006101000a81548160ff021916908315150217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610eb39061303f565b80601f0160208091040260200160405190810160405280929190818152602001828054610edf9061303f565b8015610f2c5780601f10610f0157610100808354040283529160200191610f2c565b820191906000526020600020905b815481529060010190602001808311610f0f57829003601f168201915b5050505050905090565b610f3e6114e6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390612c1f565b60405180910390fd5b8060056000610fb96114e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110666114e6565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110ab9190612b62565b60405180910390a35050565b6110c86110c26114e6565b836115c5565b611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fe90612dbf565b60405180910390fd5b611113848484846119c5565b50505050565b6060611123611159565b61112c83611a21565b60405160200161113d929190612ad7565b6040516020818303038152906040529050919050565b60075481565b6060600880546111689061303f565b80601f01602080910402602001604051908101604052809291908181526020018280546111949061303f565b80156111e15780601f106111b6576101008083540402835291602001916111e1565b820191906000526020600020905b8154815290600101906020018083116111c457829003601f168201915b5050505050905090565b6111f36114e6565b73ffffffffffffffffffffffffffffffffffffffff16611211610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90612d3f565b60405180910390fd5b6001600960006101000a81548160ff021916908315150217905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113206114e6565b73ffffffffffffffffffffffffffffffffffffffff1661133e610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90612d3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90612bbf565b60405180910390fd5b61140d816118ff565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661156183610bef565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6115c1828260405180602001604052806000815250611bce565b5050565b60006115d08261147a565b61160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690612c3f565b60405180910390fd5b600061161a83610bef565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061168957508373ffffffffffffffffffffffffffffffffffffffff16611671846106ff565b73ffffffffffffffffffffffffffffffffffffffff16145b8061169a57506116998185611284565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166116c382610bef565b73ffffffffffffffffffffffffffffffffffffffff1614611719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171090612d5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090612bff565b60405180910390fd5b611794838383611c29565b61179f6000826114ee565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ef9190612f55565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118469190612ece565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6119d08484846116a3565b6119dc84848484611c2e565b611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1290612b9f565b60405180910390fd5b50505050565b60606000821415611a69576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611bc9565b600082905060005b60008214611a9b578080611a8490613071565b915050600a82611a949190612f24565b9150611a71565b60008167ffffffffffffffff811115611add577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b0f5781602001600182028036833780820191505090505b5090505b60008514611bc257600182611b289190612f55565b9150600a85611b3791906130ba565b6030611b439190612ece565b60f81b818381518110611b7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bbb9190612f24565b9450611b13565b8093505050505b919050565b611bd88383611dc5565b611be56000848484611c2e565b611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b90612b9f565b60405180910390fd5b505050565b505050565b6000611c4f8473ffffffffffffffffffffffffffffffffffffffff16611f93565b15611db8578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611c786114e6565b8786866040518563ffffffff1660e01b8152600401611c9a9493929190612b16565b602060405180830381600087803b158015611cb457600080fd5b505af1925050508015611ce557506040513d601f19601f82011682018060405250810190611ce29190612352565b60015b611d68573d8060008114611d15576040519150601f19603f3d011682016040523d82523d6000602084013e611d1a565b606091505b50600081511415611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790612b9f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611dbd565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c90612cff565b60405180910390fd5b611e3e8161147a565b15611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7590612bdf565b60405180910390fd5b611e8a60008383611c29565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eda9190612ece565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054611fb29061303f565b90600052602060002090601f016020900481019282611fd4576000855561201b565b82601f10611fed57805160ff191683800117855561201b565b8280016001018555821561201b579182015b8281111561201a578251825591602001919060010190611fff565b5b509050612028919061202c565b5090565b5b8082111561204557600081600090555060010161202d565b5090565b600061205c61205784612e2b565b612dfa565b90508281526020810184848401111561207457600080fd5b61207f848285612ffd565b509392505050565b600061209a61209584612e5b565b612dfa565b9050828152602081018484840111156120b257600080fd5b6120bd848285612ffd565b509392505050565b6000813590506120d4816131b8565b92915050565b6000813590506120e9816131cf565b92915050565b6000813590506120fe816131e6565b92915050565b600081519050612113816131e6565b92915050565b600082601f83011261212a57600080fd5b813561213a848260208601612049565b91505092915050565b600082601f83011261215457600080fd5b8135612164848260208601612087565b91505092915050565b60008135905061217c816131fd565b92915050565b60006020828403121561219457600080fd5b60006121a2848285016120c5565b91505092915050565b600080604083850312156121be57600080fd5b60006121cc858286016120c5565b92505060206121dd858286016120c5565b9150509250929050565b6000806000606084860312156121fc57600080fd5b600061220a868287016120c5565b935050602061221b868287016120c5565b925050604061222c8682870161216d565b9150509250925092565b6000806000806080858703121561224c57600080fd5b600061225a878288016120c5565b945050602061226b878288016120c5565b935050604061227c8782880161216d565b925050606085013567ffffffffffffffff81111561229957600080fd5b6122a587828801612119565b91505092959194509250565b600080604083850312156122c457600080fd5b60006122d2858286016120c5565b92505060206122e3858286016120da565b9150509250929050565b6000806040838503121561230057600080fd5b600061230e858286016120c5565b925050602061231f8582860161216d565b9150509250929050565b60006020828403121561233b57600080fd5b6000612349848285016120ef565b91505092915050565b60006020828403121561236457600080fd5b600061237284828501612104565b91505092915050565b60006020828403121561238d57600080fd5b600082013567ffffffffffffffff8111156123a757600080fd5b6123b384828501612143565b91505092915050565b6000602082840312156123ce57600080fd5b60006123dc8482850161216d565b91505092915050565b6123ee81612f89565b82525050565b6123fd81612f9b565b82525050565b600061240e82612e8b565b6124188185612ea1565b935061242881856020860161300c565b612431816131a7565b840191505092915050565b600061244782612e96565b6124518185612eb2565b935061246181856020860161300c565b61246a816131a7565b840191505092915050565b600061248082612e96565b61248a8185612ec3565b935061249a81856020860161300c565b80840191505092915050565b60006124b3603283612eb2565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612519602683612eb2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061257f601c83612eb2565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b60006125bf602483612eb2565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612625601983612eb2565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000612665602c83612eb2565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006126cb601883612eb2565b91507f4d696e74696e67206e6f7420706f737369626c652079657400000000000000006000830152602082019050919050565b600061270b603883612eb2565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000612771602a83612eb2565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b60006127d7602983612eb2565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061283d601283612eb2565b91507f45786365656473206d617820737570706c7900000000000000000000000000006000830152602082019050919050565b600061287d602083612eb2565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006128bd602c83612eb2565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612923602083612eb2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612963602983612eb2565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006129c9601383612eb2565b91507f4e6f7420656e6f756768204554482073656e74000000000000000000000000006000830152602082019050919050565b6000612a09602183612eb2565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a6f603183612eb2565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b612ad181612ff3565b82525050565b6000612ae38285612475565b9150612aef8284612475565b91508190509392505050565b6000602082019050612b1060008301846123e5565b92915050565b6000608082019050612b2b60008301876123e5565b612b3860208301866123e5565b612b456040830185612ac8565b8181036060830152612b578184612403565b905095945050505050565b6000602082019050612b7760008301846123f4565b92915050565b60006020820190508181036000830152612b97818461243c565b905092915050565b60006020820190508181036000830152612bb8816124a6565b9050919050565b60006020820190508181036000830152612bd88161250c565b9050919050565b60006020820190508181036000830152612bf881612572565b9050919050565b60006020820190508181036000830152612c18816125b2565b9050919050565b60006020820190508181036000830152612c3881612618565b9050919050565b60006020820190508181036000830152612c5881612658565b9050919050565b60006020820190508181036000830152612c78816126be565b9050919050565b60006020820190508181036000830152612c98816126fe565b9050919050565b60006020820190508181036000830152612cb881612764565b9050919050565b60006020820190508181036000830152612cd8816127ca565b9050919050565b60006020820190508181036000830152612cf881612830565b9050919050565b60006020820190508181036000830152612d1881612870565b9050919050565b60006020820190508181036000830152612d38816128b0565b9050919050565b60006020820190508181036000830152612d5881612916565b9050919050565b60006020820190508181036000830152612d7881612956565b9050919050565b60006020820190508181036000830152612d98816129bc565b9050919050565b60006020820190508181036000830152612db8816129fc565b9050919050565b60006020820190508181036000830152612dd881612a62565b9050919050565b6000602082019050612df46000830184612ac8565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612e2157612e20613178565b5b8060405250919050565b600067ffffffffffffffff821115612e4657612e45613178565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612e7657612e75613178565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612ed982612ff3565b9150612ee483612ff3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f1957612f186130eb565b5b828201905092915050565b6000612f2f82612ff3565b9150612f3a83612ff3565b925082612f4a57612f4961311a565b5b828204905092915050565b6000612f6082612ff3565b9150612f6b83612ff3565b925082821015612f7e57612f7d6130eb565b5b828203905092915050565b6000612f9482612fd3565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561302a57808201518184015260208101905061300f565b83811115613039576000848401525b50505050565b6000600282049050600182168061305757607f821691505b6020821081141561306b5761306a613149565b5b50919050565b600061307c82612ff3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130af576130ae6130eb565b5b600182019050919050565b60006130c582612ff3565b91506130d083612ff3565b9250826130e0576130df61311a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6131c181612f89565b81146131cc57600080fd5b50565b6131d881612f9b565b81146131e357600080fd5b50565b6131ef81612fa7565b81146131fa57600080fd5b50565b61320681612ff3565b811461321157600080fd5b5056fea2646970667358221220e37c0d9ecd1acbb86f7f9040485f6077d14a6e6e337ea039ca914587a3c8fbff64736f6c63430008000033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f6265796f6e642e736f2f6170692f746f6b656e6d6574612f

-----Decoded View---------------
Arg [0] : metadataBaseURI (string): https://beyond.so/api/tokenmeta/

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [2] : 68747470733a2f2f6265796f6e642e736f2f6170692f746f6b656e6d6574612f


Deployed Bytecode Sourcemap

35244:2185:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20770:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21715:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23274:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22797:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36514:589;;;:::i;:::-;;36226:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24164:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35294:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37111:179;;;;;;;;;;;;;:::i;:::-;;24574:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35730:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21409:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21139:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34544:94;;;;;;;;;;;;;:::i;:::-;;36421:85;;;;;;;;;;;;;:::i;:::-;;33893:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21884:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23567:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24830:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35847:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35412:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36116:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36330:83;;;;;;;;;;;;;:::i;:::-;;23933:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34793:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20770:305;20872:4;20924:25;20909:40;;;:11;:40;;;;:105;;;;20981:33;20966:48;;;:11;:48;;;;20909:105;:158;;;;21031:36;21055:11;21031:23;:36::i;:::-;20909:158;20889:178;;20770:305;;;:::o;21715:100::-;21769:13;21802:5;21795:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21715:100;:::o;23274:221::-;23350:7;23378:16;23386:7;23378;:16::i;:::-;23370:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23463:15;:24;23479:7;23463:24;;;;;;;;;;;;;;;;;;;;;23456:31;;23274:221;;;:::o;22797:411::-;22878:13;22894:23;22909:7;22894:14;:23::i;:::-;22878:39;;22942:5;22936:11;;:2;:11;;;;22928:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23036:5;23020:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;23045:37;23062:5;23069:12;:10;:12::i;:::-;23045:16;:37::i;:::-;23020:62;22998:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;23179:21;23188:2;23192:7;23179:8;:21::i;:::-;22797:411;;;:::o;36514:589::-;36556:13;36590:15;;;;;;;;;;;36582:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;35331:3;36653:13;;:26;36645:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;36735:2;36719:13;;:18;36715:243;;;36762:18;36754:26;;36715:243;;;36826:2;36810:13;;:18;36806:152;;;36853:18;36845:26;;36806:152;;;36920:18;36912:26;;36806:152;36715:243;36991:5;36978:9;:18;;36970:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;37031:36;37041:10;37053:13;;37031:9;:36::i;:::-;37080:13;;:15;;;;;;;;;:::i;:::-;;;;;;36514:589;:::o;36226:96::-;36270:7;36313:1;36297:13;;:17;;;;:::i;:::-;36290:24;;36226:96;:::o;24164:339::-;24359:41;24378:12;:10;:12::i;:::-;24392:7;24359:18;:41::i;:::-;24351:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24467:28;24477:4;24483:2;24487:7;24467:9;:28::i;:::-;24164:339;;;:::o;35294:40::-;35331:3;35294:40;:::o;37111:179::-;34124:12;:10;:12::i;:::-;34113:23;;:7;:5;:7::i;:::-;:23;;;34105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37159:17:::1;37179:42;37159:62;;37240:9;37232:27;;:50;37260:21;37232:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34184:1;37111:179::o:0;24574:185::-;24712:39;24729:4;24735:2;24739:7;24712:39;;;;;;;;;;;;:16;:39::i;:::-;24574:185;;;:::o;35730:109::-;34124:12;:10;:12::i;:::-;34113:23;;:7;:5;:7::i;:::-;:23;;;34105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35823:8:::1;35804:16;:27;;;;;;;;;;;;:::i;:::-;;35730:109:::0;:::o;21409:239::-;21481:7;21501:13;21517:7;:16;21525:7;21517:16;;;;;;;;;;;;;;;;;;;;;21501:32;;21569:1;21552:19;;:5;:19;;;;21544:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21635:5;21628:12;;;21409:239;;;:::o;21139:208::-;21211:7;21256:1;21239:19;;:5;:19;;;;21231:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21323:9;:16;21333:5;21323:16;;;;;;;;;;;;;;;;21316:23;;21139:208;;;:::o;34544:94::-;34124:12;:10;:12::i;:::-;34113:23;;:7;:5;:7::i;:::-;:23;;;34105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34609:21:::1;34627:1;34609:9;:21::i;:::-;34544:94::o:0;36421:85::-;34124:12;:10;:12::i;:::-;34113:23;;:7;:5;:7::i;:::-;:23;;;34105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36493:5:::1;36475:15;;:23;;;;;;;;;;;;;;;;;;36421:85::o:0;33893:87::-;33939:7;33966:6;;;;;;;;;;;33959:13;;33893:87;:::o;21884:104::-;21940:13;21973:7;21966:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21884:104;:::o;23567:295::-;23682:12;:10;:12::i;:::-;23670:24;;:8;:24;;;;23662:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23782:8;23737:18;:32;23756:12;:10;:12::i;:::-;23737:32;;;;;;;;;;;;;;;:42;23770:8;23737:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;23835:8;23806:48;;23821:12;:10;:12::i;:::-;23806:48;;;23845:8;23806:48;;;;;;:::i;:::-;;;;;;;;23567:295;;:::o;24830:328::-;25005:41;25024:12;:10;:12::i;:::-;25038:7;25005:18;:41::i;:::-;24997:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25111:39;25125:4;25131:2;25135:7;25144:5;25111:13;:39::i;:::-;24830:328;;;;:::o;35847:261::-;35949:13;36042:14;:12;:14::i;:::-;36058:26;36075:8;36058:16;:26::i;:::-;36025:60;;;;;;;;;:::i;:::-;;;;;;;;;;;;;35980:120;;35847:261;;;:::o;35412:32::-;;;;:::o;36116:102::-;36161:13;36194:16;36187:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36116:102;:::o;36330:83::-;34124:12;:10;:12::i;:::-;34113:23;;:7;:5;:7::i;:::-;:23;;;34105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36401:4:::1;36383:15;;:22;;;;;;;;;;;;;;;;;;36330:83::o:0;23933:164::-;24030:4;24054:18;:25;24073:5;24054:25;;;;;;;;;;;;;;;:35;24080:8;24054:35;;;;;;;;;;;;;;;;;;;;;;;;;24047:42;;23933:164;;;;:::o;34793:192::-;34124:12;:10;:12::i;:::-;34113:23;;:7;:5;:7::i;:::-;:23;;;34105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34902:1:::1;34882:22;;:8;:22;;;;34874:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;34958:19;34968:8;34958:9;:19::i;:::-;34793:192:::0;:::o;19272:157::-;19357:4;19396:25;19381:40;;;:11;:40;;;;19374:47;;19272:157;;;:::o;26668:127::-;26733:4;26785:1;26757:30;;:7;:16;26765:7;26757:16;;;;;;;;;;;;;;;;;;;;;:30;;;;26750:37;;26668:127;;;:::o;16184:98::-;16237:7;16264:10;16257:17;;16184:98;:::o;30650:174::-;30752:2;30725:15;:24;30741:7;30725:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30808:7;30804:2;30770:46;;30779:23;30794:7;30779:14;:23::i;:::-;30770:46;;;;;;;;;;;;30650:174;;:::o;27652:110::-;27728:26;27738:2;27742:7;27728:26;;;;;;;;;;;;:9;:26::i;:::-;27652:110;;:::o;26962:348::-;27055:4;27080:16;27088:7;27080;:16::i;:::-;27072:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27156:13;27172:23;27187:7;27172:14;:23::i;:::-;27156:39;;27225:5;27214:16;;:7;:16;;;:51;;;;27258:7;27234:31;;:20;27246:7;27234:11;:20::i;:::-;:31;;;27214:51;:87;;;;27269:32;27286:5;27293:7;27269:16;:32::i;:::-;27214:87;27206:96;;;26962:348;;;;:::o;29954:578::-;30113:4;30086:31;;:23;30101:7;30086:14;:23::i;:::-;:31;;;30078:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;30196:1;30182:16;;:2;:16;;;;30174:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30252:39;30273:4;30279:2;30283:7;30252:20;:39::i;:::-;30356:29;30373:1;30377:7;30356:8;:29::i;:::-;30417:1;30398:9;:15;30408:4;30398:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30446:1;30429:9;:13;30439:2;30429:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30477:2;30458:7;:16;30466:7;30458:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30516:7;30512:2;30497:27;;30506:4;30497:27;;;;;;;;;;;;29954:578;;;:::o;34993:173::-;35049:16;35068:6;;;;;;;;;;;35049:25;;35094:8;35085:6;;:17;;;;;;;;;;;;;;;;;;35149:8;35118:40;;35139:8;35118:40;;;;;;;;;;;;34993:173;;:::o;26040:315::-;26197:28;26207:4;26213:2;26217:7;26197:9;:28::i;:::-;26244:48;26267:4;26273:2;26277:7;26286:5;26244:22;:48::i;:::-;26236:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;26040:315;;;;:::o;16713:723::-;16769:13;16999:1;16990:5;:10;16986:53;;;17017:10;;;;;;;;;;;;;;;;;;;;;16986:53;17049:12;17064:5;17049:20;;17080:14;17105:78;17120:1;17112:4;:9;17105:78;;17138:8;;;;;:::i;:::-;;;;17169:2;17161:10;;;;;:::i;:::-;;;17105:78;;;17193:19;17225:6;17215:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17193:39;;17243:154;17259:1;17250:5;:10;17243:154;;17287:1;17277:11;;;;;:::i;:::-;;;17354:2;17346:5;:10;;;;:::i;:::-;17333:2;:24;;;;:::i;:::-;17320:39;;17303:6;17310;17303:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;17383:2;17374:11;;;;;:::i;:::-;;;17243:154;;;17421:6;17407:21;;;;;16713:723;;;;:::o;27989:321::-;28119:18;28125:2;28129:7;28119:5;:18::i;:::-;28170:54;28201:1;28205:2;28209:7;28218:5;28170:22;:54::i;:::-;28148:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;27989:321;;;:::o;32760:126::-;;;;:::o;31389:799::-;31544:4;31565:15;:2;:13;;;:15::i;:::-;31561:620;;;31617:2;31601:36;;;31638:12;:10;:12::i;:::-;31652:4;31658:7;31667:5;31601:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31597:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31860:1;31843:6;:13;:18;31839:272;;;31886:60;;;;;;;;;;:::i;:::-;;;;;;;;31839:272;32061:6;32055:13;32046:6;32042:2;32038:15;32031:38;31597:529;31734:41;;;31724:51;;;:6;:51;;;;31717:58;;;;;31561:620;32165:4;32158:11;;31389:799;;;;;;;:::o;28646:382::-;28740:1;28726:16;;:2;:16;;;;28718:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28799:16;28807:7;28799;:16::i;:::-;28798:17;28790:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28861:45;28890:1;28894:2;28898:7;28861:20;:45::i;:::-;28936:1;28919:9;:13;28929:2;28919:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;28967:2;28948:7;:16;28956:7;28948:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29012:7;29008:2;28987:33;;29004:1;28987:33;;;;;;;;;;;;28646:382;;:::o;8224:387::-;8284:4;8492:12;8559:7;8547:20;8539:28;;8602:1;8595:4;:8;8588:15;;;8224:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:344::-;;458:65;473:49;515:6;473:49;:::i;:::-;458:65;:::i;:::-;449:74;;546:6;539:5;532:21;584:4;577:5;573:16;622:3;613:6;608:3;604:16;601:25;598:2;;;639:1;636;629:12;598:2;652:41;686:6;681:3;676;652:41;:::i;:::-;439:260;;;;;;:::o;705:139::-;;789:6;776:20;767:29;;805:33;832:5;805:33;:::i;:::-;757:87;;;;:::o;850:133::-;;931:6;918:20;909:29;;947:30;971:5;947:30;:::i;:::-;899:84;;;;:::o;989:137::-;;1072:6;1059:20;1050:29;;1088:32;1114:5;1088:32;:::i;:::-;1040:86;;;;:::o;1132:141::-;;1219:6;1213:13;1204:22;;1235:32;1261:5;1235:32;:::i;:::-;1194:79;;;;:::o;1292:271::-;;1396:3;1389:4;1381:6;1377:17;1373:27;1363:2;;1414:1;1411;1404:12;1363:2;1454:6;1441:20;1479:78;1553:3;1545:6;1538:4;1530:6;1526:17;1479:78;:::i;:::-;1470:87;;1353:210;;;;;:::o;1583:273::-;;1688:3;1681:4;1673:6;1669:17;1665:27;1655:2;;1706:1;1703;1696:12;1655:2;1746:6;1733:20;1771:79;1846:3;1838:6;1831:4;1823:6;1819:17;1771:79;:::i;:::-;1762:88;;1645:211;;;;;:::o;1862:139::-;;1946:6;1933:20;1924:29;;1962:33;1989:5;1962:33;:::i;:::-;1914:87;;;;:::o;2007:262::-;;2115:2;2103:9;2094:7;2090:23;2086:32;2083:2;;;2131:1;2128;2121:12;2083:2;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2073:196;;;;:::o;2275:407::-;;;2400:2;2388:9;2379:7;2375:23;2371:32;2368:2;;;2416:1;2413;2406:12;2368:2;2459:1;2484:53;2529:7;2520:6;2509:9;2505:22;2484:53;:::i;:::-;2474:63;;2430:117;2586:2;2612:53;2657:7;2648:6;2637:9;2633:22;2612:53;:::i;:::-;2602:63;;2557:118;2358:324;;;;;:::o;2688:552::-;;;;2830:2;2818:9;2809:7;2805:23;2801:32;2798:2;;;2846:1;2843;2836:12;2798:2;2889:1;2914:53;2959:7;2950:6;2939:9;2935:22;2914:53;:::i;:::-;2904:63;;2860:117;3016:2;3042:53;3087:7;3078:6;3067:9;3063:22;3042:53;:::i;:::-;3032:63;;2987:118;3144:2;3170:53;3215:7;3206:6;3195:9;3191:22;3170:53;:::i;:::-;3160:63;;3115:118;2788:452;;;;;:::o;3246:809::-;;;;;3414:3;3402:9;3393:7;3389:23;3385:33;3382:2;;;3431:1;3428;3421:12;3382:2;3474:1;3499:53;3544:7;3535:6;3524:9;3520:22;3499:53;:::i;:::-;3489:63;;3445:117;3601:2;3627:53;3672:7;3663:6;3652:9;3648:22;3627:53;:::i;:::-;3617:63;;3572:118;3729:2;3755:53;3800:7;3791:6;3780:9;3776:22;3755:53;:::i;:::-;3745:63;;3700:118;3885:2;3874:9;3870:18;3857:32;3916:18;3908:6;3905:30;3902:2;;;3948:1;3945;3938:12;3902:2;3976:62;4030:7;4021:6;4010:9;4006:22;3976:62;:::i;:::-;3966:72;;3828:220;3372:683;;;;;;;:::o;4061:401::-;;;4183:2;4171:9;4162:7;4158:23;4154:32;4151:2;;;4199:1;4196;4189:12;4151:2;4242:1;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4213:117;4369:2;4395:50;4437:7;4428:6;4417:9;4413:22;4395:50;:::i;:::-;4385:60;;4340:115;4141:321;;;;;:::o;4468:407::-;;;4593:2;4581:9;4572:7;4568:23;4564:32;4561:2;;;4609:1;4606;4599:12;4561:2;4652:1;4677:53;4722:7;4713:6;4702:9;4698:22;4677:53;:::i;:::-;4667:63;;4623:117;4779:2;4805:53;4850:7;4841:6;4830:9;4826:22;4805:53;:::i;:::-;4795:63;;4750:118;4551:324;;;;;:::o;4881:260::-;;4988:2;4976:9;4967:7;4963:23;4959:32;4956:2;;;5004:1;5001;4994:12;4956:2;5047:1;5072:52;5116:7;5107:6;5096:9;5092:22;5072:52;:::i;:::-;5062:62;;5018:116;4946:195;;;;:::o;5147:282::-;;5265:2;5253:9;5244:7;5240:23;5236:32;5233:2;;;5281:1;5278;5271:12;5233:2;5324:1;5349:63;5404:7;5395:6;5384:9;5380:22;5349:63;:::i;:::-;5339:73;;5295:127;5223:206;;;;:::o;5435:375::-;;5553:2;5541:9;5532:7;5528:23;5524:32;5521:2;;;5569:1;5566;5559:12;5521:2;5640:1;5629:9;5625:17;5612:31;5670:18;5662:6;5659:30;5656:2;;;5702:1;5699;5692:12;5656:2;5730:63;5785:7;5776:6;5765:9;5761:22;5730:63;:::i;:::-;5720:73;;5583:220;5511:299;;;;:::o;5816:262::-;;5924:2;5912:9;5903:7;5899:23;5895:32;5892:2;;;5940:1;5937;5930:12;5892:2;5983:1;6008:53;6053:7;6044:6;6033:9;6029:22;6008:53;:::i;:::-;5998:63;;5954:117;5882:196;;;;:::o;6084:118::-;6171:24;6189:5;6171:24;:::i;:::-;6166:3;6159:37;6149:53;;:::o;6208:109::-;6289:21;6304:5;6289:21;:::i;:::-;6284:3;6277:34;6267:50;;:::o;6323:360::-;;6437:38;6469:5;6437:38;:::i;:::-;6491:70;6554:6;6549:3;6491:70;:::i;:::-;6484:77;;6570:52;6615:6;6610:3;6603:4;6596:5;6592:16;6570:52;:::i;:::-;6647:29;6669:6;6647:29;:::i;:::-;6642:3;6638:39;6631:46;;6413:270;;;;;:::o;6689:364::-;;6805:39;6838:5;6805:39;:::i;:::-;6860:71;6924:6;6919:3;6860:71;:::i;:::-;6853:78;;6940:52;6985:6;6980:3;6973:4;6966:5;6962:16;6940:52;:::i;:::-;7017:29;7039:6;7017:29;:::i;:::-;7012:3;7008:39;7001:46;;6781:272;;;;;:::o;7059:377::-;;7193:39;7226:5;7193:39;:::i;:::-;7248:89;7330:6;7325:3;7248:89;:::i;:::-;7241:96;;7346:52;7391:6;7386:3;7379:4;7372:5;7368:16;7346:52;:::i;:::-;7423:6;7418:3;7414:16;7407:23;;7169:267;;;;;:::o;7442:382::-;;7605:67;7669:2;7664:3;7605:67;:::i;:::-;7598:74;;7702:34;7698:1;7693:3;7689:11;7682:55;7768:20;7763:2;7758:3;7754:12;7747:42;7815:2;7810:3;7806:12;7799:19;;7588:236;;;:::o;7830:370::-;;7993:67;8057:2;8052:3;7993:67;:::i;:::-;7986:74;;8090:34;8086:1;8081:3;8077:11;8070:55;8156:8;8151:2;8146:3;8142:12;8135:30;8191:2;8186:3;8182:12;8175:19;;7976:224;;;:::o;8206:326::-;;8369:67;8433:2;8428:3;8369:67;:::i;:::-;8362:74;;8466:30;8462:1;8457:3;8453:11;8446:51;8523:2;8518:3;8514:12;8507:19;;8352:180;;;:::o;8538:368::-;;8701:67;8765:2;8760:3;8701:67;:::i;:::-;8694:74;;8798:34;8794:1;8789:3;8785:11;8778:55;8864:6;8859:2;8854:3;8850:12;8843:28;8897:2;8892:3;8888:12;8881:19;;8684:222;;;:::o;8912:323::-;;9075:67;9139:2;9134:3;9075:67;:::i;:::-;9068:74;;9172:27;9168:1;9163:3;9159:11;9152:48;9226:2;9221:3;9217:12;9210:19;;9058:177;;;:::o;9241:376::-;;9404:67;9468:2;9463:3;9404:67;:::i;:::-;9397:74;;9501:34;9497:1;9492:3;9488:11;9481:55;9567:14;9562:2;9557:3;9553:12;9546:36;9608:2;9603:3;9599:12;9592:19;;9387:230;;;:::o;9623:322::-;;9786:67;9850:2;9845:3;9786:67;:::i;:::-;9779:74;;9883:26;9879:1;9874:3;9870:11;9863:47;9936:2;9931:3;9927:12;9920:19;;9769:176;;;:::o;9951:388::-;;10114:67;10178:2;10173:3;10114:67;:::i;:::-;10107:74;;10211:34;10207:1;10202:3;10198:11;10191:55;10277:26;10272:2;10267:3;10263:12;10256:48;10330:2;10325:3;10321:12;10314:19;;10097:242;;;:::o;10345:374::-;;10508:67;10572:2;10567:3;10508:67;:::i;:::-;10501:74;;10605:34;10601:1;10596:3;10592:11;10585:55;10671:12;10666:2;10661:3;10657:12;10650:34;10710:2;10705:3;10701:12;10694:19;;10491:228;;;:::o;10725:373::-;;10888:67;10952:2;10947:3;10888:67;:::i;:::-;10881:74;;10985:34;10981:1;10976:3;10972:11;10965:55;11051:11;11046:2;11041:3;11037:12;11030:33;11089:2;11084:3;11080:12;11073:19;;10871:227;;;:::o;11104:316::-;;11267:67;11331:2;11326:3;11267:67;:::i;:::-;11260:74;;11364:20;11360:1;11355:3;11351:11;11344:41;11411:2;11406:3;11402:12;11395:19;;11250:170;;;:::o;11426:330::-;;11589:67;11653:2;11648:3;11589:67;:::i;:::-;11582:74;;11686:34;11682:1;11677:3;11673:11;11666:55;11747:2;11742:3;11738:12;11731:19;;11572:184;;;:::o;11762:376::-;;11925:67;11989:2;11984:3;11925:67;:::i;:::-;11918:74;;12022:34;12018:1;12013:3;12009:11;12002:55;12088:14;12083:2;12078:3;12074:12;12067:36;12129:2;12124:3;12120:12;12113:19;;11908:230;;;:::o;12144:330::-;;12307:67;12371:2;12366:3;12307:67;:::i;:::-;12300:74;;12404:34;12400:1;12395:3;12391:11;12384:55;12465:2;12460:3;12456:12;12449:19;;12290:184;;;:::o;12480:373::-;;12643:67;12707:2;12702:3;12643:67;:::i;:::-;12636:74;;12740:34;12736:1;12731:3;12727:11;12720:55;12806:11;12801:2;12796:3;12792:12;12785:33;12844:2;12839:3;12835:12;12828:19;;12626:227;;;:::o;12859:317::-;;13022:67;13086:2;13081:3;13022:67;:::i;:::-;13015:74;;13119:21;13115:1;13110:3;13106:11;13099:42;13167:2;13162:3;13158:12;13151:19;;13005:171;;;:::o;13182:365::-;;13345:67;13409:2;13404:3;13345:67;:::i;:::-;13338:74;;13442:34;13438:1;13433:3;13429:11;13422:55;13508:3;13503:2;13498:3;13494:12;13487:25;13538:2;13533:3;13529:12;13522:19;;13328:219;;;:::o;13553:381::-;;13716:67;13780:2;13775:3;13716:67;:::i;:::-;13709:74;;13813:34;13809:1;13804:3;13800:11;13793:55;13879:19;13874:2;13869:3;13865:12;13858:41;13925:2;13920:3;13916:12;13909:19;;13699:235;;;:::o;13940:118::-;14027:24;14045:5;14027:24;:::i;:::-;14022:3;14015:37;14005:53;;:::o;14064:435::-;;14266:95;14357:3;14348:6;14266:95;:::i;:::-;14259:102;;14378:95;14469:3;14460:6;14378:95;:::i;:::-;14371:102;;14490:3;14483:10;;14248:251;;;;;:::o;14505:222::-;;14636:2;14625:9;14621:18;14613:26;;14649:71;14717:1;14706:9;14702:17;14693:6;14649:71;:::i;:::-;14603:124;;;;:::o;14733:640::-;;14966:3;14955:9;14951:19;14943:27;;14980:71;15048:1;15037:9;15033:17;15024:6;14980:71;:::i;:::-;15061:72;15129:2;15118:9;15114:18;15105:6;15061:72;:::i;:::-;15143;15211:2;15200:9;15196:18;15187:6;15143:72;:::i;:::-;15262:9;15256:4;15252:20;15247:2;15236:9;15232:18;15225:48;15290:76;15361:4;15352:6;15290:76;:::i;:::-;15282:84;;14933:440;;;;;;;:::o;15379:210::-;;15504:2;15493:9;15489:18;15481:26;;15517:65;15579:1;15568:9;15564:17;15555:6;15517:65;:::i;:::-;15471:118;;;;:::o;15595:313::-;;15746:2;15735:9;15731:18;15723:26;;15795:9;15789:4;15785:20;15781:1;15770:9;15766:17;15759:47;15823:78;15896:4;15887:6;15823:78;:::i;:::-;15815:86;;15713:195;;;;:::o;15914:419::-;;16118:2;16107:9;16103:18;16095:26;;16167:9;16161:4;16157:20;16153:1;16142:9;16138:17;16131:47;16195:131;16321:4;16195:131;:::i;:::-;16187:139;;16085:248;;;:::o;16339:419::-;;16543:2;16532:9;16528:18;16520:26;;16592:9;16586:4;16582:20;16578:1;16567:9;16563:17;16556:47;16620:131;16746:4;16620:131;:::i;:::-;16612:139;;16510:248;;;:::o;16764:419::-;;16968:2;16957:9;16953:18;16945:26;;17017:9;17011:4;17007:20;17003:1;16992:9;16988:17;16981:47;17045:131;17171:4;17045:131;:::i;:::-;17037:139;;16935:248;;;:::o;17189:419::-;;17393:2;17382:9;17378:18;17370:26;;17442:9;17436:4;17432:20;17428:1;17417:9;17413:17;17406:47;17470:131;17596:4;17470:131;:::i;:::-;17462:139;;17360:248;;;:::o;17614:419::-;;17818:2;17807:9;17803:18;17795:26;;17867:9;17861:4;17857:20;17853:1;17842:9;17838:17;17831:47;17895:131;18021:4;17895:131;:::i;:::-;17887:139;;17785:248;;;:::o;18039:419::-;;18243:2;18232:9;18228:18;18220:26;;18292:9;18286:4;18282:20;18278:1;18267:9;18263:17;18256:47;18320:131;18446:4;18320:131;:::i;:::-;18312:139;;18210:248;;;:::o;18464:419::-;;18668:2;18657:9;18653:18;18645:26;;18717:9;18711:4;18707:20;18703:1;18692:9;18688:17;18681:47;18745:131;18871:4;18745:131;:::i;:::-;18737:139;;18635:248;;;:::o;18889:419::-;;19093:2;19082:9;19078:18;19070:26;;19142:9;19136:4;19132:20;19128:1;19117:9;19113:17;19106:47;19170:131;19296:4;19170:131;:::i;:::-;19162:139;;19060:248;;;:::o;19314:419::-;;19518:2;19507:9;19503:18;19495:26;;19567:9;19561:4;19557:20;19553:1;19542:9;19538:17;19531:47;19595:131;19721:4;19595:131;:::i;:::-;19587:139;;19485:248;;;:::o;19739:419::-;;19943:2;19932:9;19928:18;19920:26;;19992:9;19986:4;19982:20;19978:1;19967:9;19963:17;19956:47;20020:131;20146:4;20020:131;:::i;:::-;20012:139;;19910:248;;;:::o;20164:419::-;;20368:2;20357:9;20353:18;20345:26;;20417:9;20411:4;20407:20;20403:1;20392:9;20388:17;20381:47;20445:131;20571:4;20445:131;:::i;:::-;20437:139;;20335:248;;;:::o;20589:419::-;;20793:2;20782:9;20778:18;20770:26;;20842:9;20836:4;20832:20;20828:1;20817:9;20813:17;20806:47;20870:131;20996:4;20870:131;:::i;:::-;20862:139;;20760:248;;;:::o;21014:419::-;;21218:2;21207:9;21203:18;21195:26;;21267:9;21261:4;21257:20;21253:1;21242:9;21238:17;21231:47;21295:131;21421:4;21295:131;:::i;:::-;21287:139;;21185:248;;;:::o;21439:419::-;;21643:2;21632:9;21628:18;21620:26;;21692:9;21686:4;21682:20;21678:1;21667:9;21663:17;21656:47;21720:131;21846:4;21720:131;:::i;:::-;21712:139;;21610:248;;;:::o;21864:419::-;;22068:2;22057:9;22053:18;22045:26;;22117:9;22111:4;22107:20;22103:1;22092:9;22088:17;22081:47;22145:131;22271:4;22145:131;:::i;:::-;22137:139;;22035:248;;;:::o;22289:419::-;;22493:2;22482:9;22478:18;22470:26;;22542:9;22536:4;22532:20;22528:1;22517:9;22513:17;22506:47;22570:131;22696:4;22570:131;:::i;:::-;22562:139;;22460:248;;;:::o;22714:419::-;;22918:2;22907:9;22903:18;22895:26;;22967:9;22961:4;22957:20;22953:1;22942:9;22938:17;22931:47;22995:131;23121:4;22995:131;:::i;:::-;22987:139;;22885:248;;;:::o;23139:419::-;;23343:2;23332:9;23328:18;23320:26;;23392:9;23386:4;23382:20;23378:1;23367:9;23363:17;23356:47;23420:131;23546:4;23420:131;:::i;:::-;23412:139;;23310:248;;;:::o;23564:222::-;;23695:2;23684:9;23680:18;23672:26;;23708:71;23776:1;23765:9;23761:17;23752:6;23708:71;:::i;:::-;23662:124;;;;:::o;23792:283::-;;23858:2;23852:9;23842:19;;23900:4;23892:6;23888:17;24007:6;23995:10;23992:22;23971:18;23959:10;23956:34;23953:62;23950:2;;;24018:18;;:::i;:::-;23950:2;24058:10;24054:2;24047:22;23832:243;;;;:::o;24081:331::-;;24232:18;24224:6;24221:30;24218:2;;;24254:18;;:::i;:::-;24218:2;24339:4;24335:9;24328:4;24320:6;24316:17;24312:33;24304:41;;24400:4;24394;24390:15;24382:23;;24147:265;;;:::o;24418:332::-;;24570:18;24562:6;24559:30;24556:2;;;24592:18;;:::i;:::-;24556:2;24677:4;24673:9;24666:4;24658:6;24654:17;24650:33;24642:41;;24738:4;24732;24728:15;24720:23;;24485:265;;;:::o;24756:98::-;;24841:5;24835:12;24825:22;;24814:40;;;:::o;24860:99::-;;24946:5;24940:12;24930:22;;24919:40;;;:::o;24965:168::-;;25082:6;25077:3;25070:19;25122:4;25117:3;25113:14;25098:29;;25060:73;;;;:::o;25139:169::-;;25257:6;25252:3;25245:19;25297:4;25292:3;25288:14;25273:29;;25235:73;;;;:::o;25314:148::-;;25453:3;25438:18;;25428:34;;;;:::o;25468:305::-;;25527:20;25545:1;25527:20;:::i;:::-;25522:25;;25561:20;25579:1;25561:20;:::i;:::-;25556:25;;25715:1;25647:66;25643:74;25640:1;25637:81;25634:2;;;25721:18;;:::i;:::-;25634:2;25765:1;25762;25758:9;25751:16;;25512:261;;;;:::o;25779:185::-;;25836:20;25854:1;25836:20;:::i;:::-;25831:25;;25870:20;25888:1;25870:20;:::i;:::-;25865:25;;25909:1;25899:2;;25914:18;;:::i;:::-;25899:2;25956:1;25953;25949:9;25944:14;;25821:143;;;;:::o;25970:191::-;;26030:20;26048:1;26030:20;:::i;:::-;26025:25;;26064:20;26082:1;26064:20;:::i;:::-;26059:25;;26103:1;26100;26097:8;26094:2;;;26108:18;;:::i;:::-;26094:2;26153:1;26150;26146:9;26138:17;;26015:146;;;;:::o;26167:96::-;;26233:24;26251:5;26233:24;:::i;:::-;26222:35;;26212:51;;;:::o;26269:90::-;;26346:5;26339:13;26332:21;26321:32;;26311:48;;;:::o;26365:149::-;;26441:66;26434:5;26430:78;26419:89;;26409:105;;;:::o;26520:126::-;;26597:42;26590:5;26586:54;26575:65;;26565:81;;;:::o;26652:77::-;;26718:5;26707:16;;26697:32;;;:::o;26735:154::-;26819:6;26814:3;26809;26796:30;26881:1;26872:6;26867:3;26863:16;26856:27;26786:103;;;:::o;26895:307::-;26963:1;26973:113;26987:6;26984:1;26981:13;26973:113;;;27072:1;27067:3;27063:11;27057:18;27053:1;27048:3;27044:11;27037:39;27009:2;27006:1;27002:10;26997:15;;26973:113;;;27104:6;27101:1;27098:13;27095:2;;;27184:1;27175:6;27170:3;27166:16;27159:27;27095:2;26944:258;;;;:::o;27208:320::-;;27289:1;27283:4;27279:12;27269:22;;27336:1;27330:4;27326:12;27357:18;27347:2;;27413:4;27405:6;27401:17;27391:27;;27347:2;27475;27467:6;27464:14;27444:18;27441:38;27438:2;;;27494:18;;:::i;:::-;27438:2;27259:269;;;;:::o;27534:233::-;;27596:24;27614:5;27596:24;:::i;:::-;27587:33;;27642:66;27635:5;27632:77;27629:2;;;27712:18;;:::i;:::-;27629:2;27759:1;27752:5;27748:13;27741:20;;27577:190;;;:::o;27773:176::-;;27822:20;27840:1;27822:20;:::i;:::-;27817:25;;27856:20;27874:1;27856:20;:::i;:::-;27851:25;;27895:1;27885:2;;27900:18;;:::i;:::-;27885:2;27941:1;27938;27934:9;27929:14;;27807:142;;;;:::o;27955:180::-;28003:77;28000:1;27993:88;28100:4;28097:1;28090:15;28124:4;28121:1;28114:15;28141:180;28189:77;28186:1;28179:88;28286:4;28283:1;28276:15;28310:4;28307:1;28300:15;28327:180;28375:77;28372:1;28365:88;28472:4;28469:1;28462:15;28496:4;28493:1;28486:15;28513:180;28561:77;28558:1;28551:88;28658:4;28655:1;28648:15;28682:4;28679:1;28672:15;28699:102;;28791:2;28787:7;28782:2;28775:5;28771:14;28767:28;28757:38;;28747:54;;;:::o;28807:122::-;28880:24;28898:5;28880:24;:::i;:::-;28873:5;28870:35;28860:2;;28919:1;28916;28909:12;28860:2;28850:79;:::o;28935:116::-;29005:21;29020:5;29005:21;:::i;:::-;28998:5;28995:32;28985:2;;29041:1;29038;29031:12;28985:2;28975:76;:::o;29057:120::-;29129:23;29146:5;29129:23;:::i;:::-;29122:5;29119:34;29109:2;;29167:1;29164;29157:12;29109:2;29099:78;:::o;29183:122::-;29256:24;29274:5;29256:24;:::i;:::-;29249:5;29246:35;29236:2;;29295:1;29292;29285:12;29236:2;29226:79;:::o

Swarm Source

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