ETH Price: $2,422.04 (-9.43%)

Token

Spitzbarth_since1921 (CGN)
 

Overview

Max Total Supply

0 CGN

Holders

86

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 CGN
0xafda8e3e2c947394ffcc0db93a6765b6ec83b692
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:
CryptoNugget

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.1;


/**
 * @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);
}

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

/**
 * @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);
}

/**
 * @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);
}


/**
 * @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);
            }
        }
    }
}

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

/**
 * @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);
    }
}


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

    contract CryptoNugget is ERC721, Ownable {

        using Strings for uint256;

        // Optional mapping for token URIs
        mapping (uint256 => string) private _tokenURIs;

        // Base URI
        string private _baseURIextended;


        constructor(string memory _name, string memory _symbol)
            ERC721(_name, _symbol)
        {}

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

        function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
            require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token");
            _tokenURIs[tokenId] = _tokenURI;
        }

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

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

            string memory _tokenURI = _tokenURIs[tokenId];
            string memory base = _baseURI();

            // If there is no base URI, return the token URI.
            if (bytes(base).length == 0) {
                return _tokenURI;
            }
            // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).
            if (bytes(_tokenURI).length > 0) {
                return string(abi.encodePacked(base, _tokenURI));
            }
            // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI.
            return string(abi.encodePacked(base, tokenId.toString()));
        }


        function mint(
            address _to,
            uint256 _tokenId,
            string memory tokenURI_
        ) external onlyOwner() {
            _mint(_to, _tokenId);
            _setTokenURI(_tokenId, tokenURI_);
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI_","type":"string"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"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"}]

60806040523480156200001157600080fd5b50604051620034c1380380620034c1833981810160405281019062000037919062000291565b818181600090805190602001906200005192919062000163565b5080600190805190602001906200006a92919062000163565b5050506200008d620000816200009560201b60201c565b6200009d60201b60201c565b50506200049a565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200017190620003ab565b90600052602060002090601f016020900481019282620001955760008555620001e1565b82601f10620001b057805160ff1916838001178555620001e1565b82800160010185558215620001e1579182015b82811115620001e0578251825591602001919060010190620001c3565b5b509050620001f09190620001f4565b5090565b5b808211156200020f576000816000905550600101620001f5565b5090565b60006200022a62000224846200033f565b62000316565b9050828152602081018484840111156200024957620002486200047a565b5b6200025684828562000375565b509392505050565b600082601f83011262000276576200027562000475565b5b81516200028884826020860162000213565b91505092915050565b60008060408385031215620002ab57620002aa62000484565b5b600083015167ffffffffffffffff811115620002cc57620002cb6200047f565b5b620002da858286016200025e565b925050602083015167ffffffffffffffff811115620002fe57620002fd6200047f565b5b6200030c858286016200025e565b9150509250929050565b60006200032262000335565b9050620003308282620003e1565b919050565b6000604051905090565b600067ffffffffffffffff8211156200035d576200035c62000446565b5b620003688262000489565b9050602081019050919050565b60005b838110156200039557808201518184015260208101905062000378565b83811115620003a5576000848401525b50505050565b60006002820490506001821680620003c457607f821691505b60208210811415620003db57620003da62000417565b5b50919050565b620003ec8262000489565b810181811067ffffffffffffffff821117156200040e576200040d62000446565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61301780620004aa6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde146102cb578063c87b56dd146102e7578063d3fc986414610317578063e985e9c514610333578063f2fde38b1461036357610116565b8063715018a6146102695780638da5cb5b1461027357806395d89b4114610291578063a22cb465146102af57610116565b806323b872dd116100e957806323b872dd146101b557806342842e0e146101d157806355f804b3146101ed5780636352211e1461020957806370a082311461023957610116565b806301ffc9a71461011b57806306fdde031461014b578063081812fc14610169578063095ea7b314610199575b600080fd5b61013560048036038101906101309190611fc0565b61037f565b604051610142919061243e565b60405180910390f35b610153610461565b6040516101609190612459565b60405180910390f35b610183600480360381019061017e9190612063565b6104f3565b60405161019091906123d7565b60405180910390f35b6101b360048036038101906101ae9190611f11565b610578565b005b6101cf60048036038101906101ca9190611dfb565b610690565b005b6101eb60048036038101906101e69190611dfb565b6106f0565b005b6102076004803603810190610202919061201a565b610710565b005b610223600480360381019061021e9190612063565b6107a6565b60405161023091906123d7565b60405180910390f35b610253600480360381019061024e9190611d8e565b610858565b604051610260919061269b565b60405180910390f35b610271610910565b005b61027b610998565b60405161028891906123d7565b60405180910390f35b6102996109c2565b6040516102a69190612459565b60405180910390f35b6102c960048036038101906102c49190611ed1565b610a54565b005b6102e560048036038101906102e09190611e4e565b610bd5565b005b61030160048036038101906102fc9190612063565b610c37565b60405161030e9190612459565b60405180910390f35b610331600480360381019061032c9190611f51565b610daa565b005b61034d60048036038101906103489190611dbb565b610e3f565b60405161035a919061243e565b60405180910390f35b61037d60048036038101906103789190611d8e565b610ed3565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061044a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061045a575061045982610fcb565b5b9050919050565b606060008054610470906128f1565b80601f016020809104026020016040519081016040528092919081815260200182805461049c906128f1565b80156104e95780601f106104be576101008083540402835291602001916104e9565b820191906000526020600020905b8154815290600101906020018083116104cc57829003601f168201915b5050505050905090565b60006104fe82611035565b61053d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610534906125bb565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610583826107a6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb9061265b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106136110a1565b73ffffffffffffffffffffffffffffffffffffffff16148061064257506106418161063c6110a1565b610e3f565b5b610681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106789061253b565b60405180910390fd5b61068b83836110a9565b505050565b6106a161069b6110a1565b82611162565b6106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d79061267b565b60405180910390fd5b6106eb838383611240565b505050565b61070b83838360405180602001604052806000815250610bd5565b505050565b6107186110a1565b73ffffffffffffffffffffffffffffffffffffffff16610736610998565b73ffffffffffffffffffffffffffffffffffffffff161461078c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610783906125fb565b60405180910390fd5b80600890805190602001906107a2929190611ba2565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561084f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108469061257b565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c09061255b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109186110a1565b73ffffffffffffffffffffffffffffffffffffffff16610936610998565b73ffffffffffffffffffffffffffffffffffffffff161461098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610983906125fb565b60405180910390fd5b610996600061149c565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546109d1906128f1565b80601f01602080910402602001604051908101604052809291908181526020018280546109fd906128f1565b8015610a4a5780601f10610a1f57610100808354040283529160200191610a4a565b820191906000526020600020905b815481529060010190602001808311610a2d57829003601f168201915b5050505050905090565b610a5c6110a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac1906124fb565b60405180910390fd5b8060056000610ad76110a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610b846110a1565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610bc9919061243e565b60405180910390a35050565b610be6610be06110a1565b83611162565b610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c9061267b565b60405180910390fd5b610c3184848484611562565b50505050565b6060610c4282611035565b610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c789061263b565b60405180910390fd5b6000600760008481526020019081526020016000208054610ca1906128f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ccd906128f1565b8015610d1a5780601f10610cef57610100808354040283529160200191610d1a565b820191906000526020600020905b815481529060010190602001808311610cfd57829003601f168201915b505050505090506000610d2b6115be565b9050600081511415610d41578192505050610da5565b600082511115610d76578082604051602001610d5e9291906123b3565b60405160208183030381529060405292505050610da5565b80610d8085611650565b604051602001610d919291906123b3565b604051602081830303815290604052925050505b919050565b610db26110a1565b73ffffffffffffffffffffffffffffffffffffffff16610dd0610998565b73ffffffffffffffffffffffffffffffffffffffff1614610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d906125fb565b60405180910390fd5b610e3083836117b1565b610e3a828261197f565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610edb6110a1565b73ffffffffffffffffffffffffffffffffffffffff16610ef9610998565b73ffffffffffffffffffffffffffffffffffffffff1614610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f46906125fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb69061249b565b60405180910390fd5b610fc88161149c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661111c836107a6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061116d82611035565b6111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a39061251b565b60405180910390fd5b60006111b7836107a6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061122657508373ffffffffffffffffffffffffffffffffffffffff1661120e846104f3565b73ffffffffffffffffffffffffffffffffffffffff16145b8061123757506112368185610e3f565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611260826107a6565b73ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad9061261b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d906124db565b60405180910390fd5b6113318383836119f3565b61133c6000826110a9565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138c9190612807565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113e39190612780565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61156d848484611240565b611579848484846119f8565b6115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af9061247b565b60405180910390fd5b50505050565b6060600880546115cd906128f1565b80601f01602080910402602001604051908101604052809291908181526020018280546115f9906128f1565b80156116465780601f1061161b57610100808354040283529160200191611646565b820191906000526020600020905b81548152906001019060200180831161162957829003601f168201915b5050505050905090565b60606000821415611698576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506117ac565b600082905060005b600082146116ca5780806116b390612954565b915050600a826116c391906127d6565b91506116a0565b60008167ffffffffffffffff8111156116e6576116e5612a8a565b5b6040519080825280601f01601f1916602001820160405280156117185781602001600182028036833780820191505090505b5090505b600085146117a5576001826117319190612807565b9150600a85611740919061299d565b603061174c9190612780565b60f81b81838151811061176257611761612a5b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561179e91906127d6565b945061171c565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118189061259b565b60405180910390fd5b61182a81611035565b1561186a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611861906124bb565b60405180910390fd5b611876600083836119f3565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118c69190612780565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b61198882611035565b6119c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119be906125db565b60405180910390fd5b806007600084815260200190815260200160002090805190602001906119ee929190611ba2565b505050565b505050565b6000611a198473ffffffffffffffffffffffffffffffffffffffff16611b8f565b15611b82578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611a426110a1565b8786866040518563ffffffff1660e01b8152600401611a6494939291906123f2565b602060405180830381600087803b158015611a7e57600080fd5b505af1925050508015611aaf57506040513d601f19601f82011682018060405250810190611aac9190611fed565b60015b611b32573d8060008114611adf576040519150601f19603f3d011682016040523d82523d6000602084013e611ae4565b606091505b50600081511415611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b219061247b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611b87565b600190505b949350505050565b600080823b905060008111915050919050565b828054611bae906128f1565b90600052602060002090601f016020900481019282611bd05760008555611c17565b82601f10611be957805160ff1916838001178555611c17565b82800160010185558215611c17579182015b82811115611c16578251825591602001919060010190611bfb565b5b509050611c249190611c28565b5090565b5b80821115611c41576000816000905550600101611c29565b5090565b6000611c58611c53846126db565b6126b6565b905082815260208101848484011115611c7457611c73612abe565b5b611c7f8482856128af565b509392505050565b6000611c9a611c958461270c565b6126b6565b905082815260208101848484011115611cb657611cb5612abe565b5b611cc18482856128af565b509392505050565b600081359050611cd881612f85565b92915050565b600081359050611ced81612f9c565b92915050565b600081359050611d0281612fb3565b92915050565b600081519050611d1781612fb3565b92915050565b600082601f830112611d3257611d31612ab9565b5b8135611d42848260208601611c45565b91505092915050565b600082601f830112611d6057611d5f612ab9565b5b8135611d70848260208601611c87565b91505092915050565b600081359050611d8881612fca565b92915050565b600060208284031215611da457611da3612ac8565b5b6000611db284828501611cc9565b91505092915050565b60008060408385031215611dd257611dd1612ac8565b5b6000611de085828601611cc9565b9250506020611df185828601611cc9565b9150509250929050565b600080600060608486031215611e1457611e13612ac8565b5b6000611e2286828701611cc9565b9350506020611e3386828701611cc9565b9250506040611e4486828701611d79565b9150509250925092565b60008060008060808587031215611e6857611e67612ac8565b5b6000611e7687828801611cc9565b9450506020611e8787828801611cc9565b9350506040611e9887828801611d79565b925050606085013567ffffffffffffffff811115611eb957611eb8612ac3565b5b611ec587828801611d1d565b91505092959194509250565b60008060408385031215611ee857611ee7612ac8565b5b6000611ef685828601611cc9565b9250506020611f0785828601611cde565b9150509250929050565b60008060408385031215611f2857611f27612ac8565b5b6000611f3685828601611cc9565b9250506020611f4785828601611d79565b9150509250929050565b600080600060608486031215611f6a57611f69612ac8565b5b6000611f7886828701611cc9565b9350506020611f8986828701611d79565b925050604084013567ffffffffffffffff811115611faa57611fa9612ac3565b5b611fb686828701611d4b565b9150509250925092565b600060208284031215611fd657611fd5612ac8565b5b6000611fe484828501611cf3565b91505092915050565b60006020828403121561200357612002612ac8565b5b600061201184828501611d08565b91505092915050565b6000602082840312156120305761202f612ac8565b5b600082013567ffffffffffffffff81111561204e5761204d612ac3565b5b61205a84828501611d4b565b91505092915050565b60006020828403121561207957612078612ac8565b5b600061208784828501611d79565b91505092915050565b6120998161283b565b82525050565b6120a88161284d565b82525050565b60006120b98261273d565b6120c38185612753565b93506120d38185602086016128be565b6120dc81612acd565b840191505092915050565b60006120f282612748565b6120fc8185612764565b935061210c8185602086016128be565b61211581612acd565b840191505092915050565b600061212b82612748565b6121358185612775565b93506121458185602086016128be565b80840191505092915050565b600061215e603283612764565b915061216982612ade565b604082019050919050565b6000612181602683612764565b915061218c82612b2d565b604082019050919050565b60006121a4601c83612764565b91506121af82612b7c565b602082019050919050565b60006121c7602483612764565b91506121d282612ba5565b604082019050919050565b60006121ea601983612764565b91506121f582612bf4565b602082019050919050565b600061220d602c83612764565b915061221882612c1d565b604082019050919050565b6000612230603883612764565b915061223b82612c6c565b604082019050919050565b6000612253602a83612764565b915061225e82612cbb565b604082019050919050565b6000612276602983612764565b915061228182612d0a565b604082019050919050565b6000612299602083612764565b91506122a482612d59565b602082019050919050565b60006122bc602c83612764565b91506122c782612d82565b604082019050919050565b60006122df602c83612764565b91506122ea82612dd1565b604082019050919050565b6000612302602083612764565b915061230d82612e20565b602082019050919050565b6000612325602983612764565b915061233082612e49565b604082019050919050565b6000612348602f83612764565b915061235382612e98565b604082019050919050565b600061236b602183612764565b915061237682612ee7565b604082019050919050565b600061238e603183612764565b915061239982612f36565b604082019050919050565b6123ad816128a5565b82525050565b60006123bf8285612120565b91506123cb8284612120565b91508190509392505050565b60006020820190506123ec6000830184612090565b92915050565b60006080820190506124076000830187612090565b6124146020830186612090565b61242160408301856123a4565b818103606083015261243381846120ae565b905095945050505050565b6000602082019050612453600083018461209f565b92915050565b6000602082019050818103600083015261247381846120e7565b905092915050565b6000602082019050818103600083015261249481612151565b9050919050565b600060208201905081810360008301526124b481612174565b9050919050565b600060208201905081810360008301526124d481612197565b9050919050565b600060208201905081810360008301526124f4816121ba565b9050919050565b60006020820190508181036000830152612514816121dd565b9050919050565b6000602082019050818103600083015261253481612200565b9050919050565b6000602082019050818103600083015261255481612223565b9050919050565b6000602082019050818103600083015261257481612246565b9050919050565b6000602082019050818103600083015261259481612269565b9050919050565b600060208201905081810360008301526125b48161228c565b9050919050565b600060208201905081810360008301526125d4816122af565b9050919050565b600060208201905081810360008301526125f4816122d2565b9050919050565b60006020820190508181036000830152612614816122f5565b9050919050565b6000602082019050818103600083015261263481612318565b9050919050565b600060208201905081810360008301526126548161233b565b9050919050565b600060208201905081810360008301526126748161235e565b9050919050565b6000602082019050818103600083015261269481612381565b9050919050565b60006020820190506126b060008301846123a4565b92915050565b60006126c06126d1565b90506126cc8282612923565b919050565b6000604051905090565b600067ffffffffffffffff8211156126f6576126f5612a8a565b5b6126ff82612acd565b9050602081019050919050565b600067ffffffffffffffff82111561272757612726612a8a565b5b61273082612acd565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061278b826128a5565b9150612796836128a5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127cb576127ca6129ce565b5b828201905092915050565b60006127e1826128a5565b91506127ec836128a5565b9250826127fc576127fb6129fd565b5b828204905092915050565b6000612812826128a5565b915061281d836128a5565b9250828210156128305761282f6129ce565b5b828203905092915050565b600061284682612885565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156128dc5780820151818401526020810190506128c1565b838111156128eb576000848401525b50505050565b6000600282049050600182168061290957607f821691505b6020821081141561291d5761291c612a2c565b5b50919050565b61292c82612acd565b810181811067ffffffffffffffff8211171561294b5761294a612a8a565b5b80604052505050565b600061295f826128a5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612992576129916129ce565b5b600182019050919050565b60006129a8826128a5565b91506129b3836128a5565b9250826129c3576129c26129fd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b612f8e8161283b565b8114612f9957600080fd5b50565b612fa58161284d565b8114612fb057600080fd5b50565b612fbc81612859565b8114612fc757600080fd5b50565b612fd3816128a5565b8114612fde57600080fd5b5056fea2646970667358221220f99912f032cf380c2ccd39ccc4ba8bc42d22374ae8ae50a2204e4d0fdd45e4bd64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000014537069747a62617274685f73696e636531393231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000343474e0000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde146102cb578063c87b56dd146102e7578063d3fc986414610317578063e985e9c514610333578063f2fde38b1461036357610116565b8063715018a6146102695780638da5cb5b1461027357806395d89b4114610291578063a22cb465146102af57610116565b806323b872dd116100e957806323b872dd146101b557806342842e0e146101d157806355f804b3146101ed5780636352211e1461020957806370a082311461023957610116565b806301ffc9a71461011b57806306fdde031461014b578063081812fc14610169578063095ea7b314610199575b600080fd5b61013560048036038101906101309190611fc0565b61037f565b604051610142919061243e565b60405180910390f35b610153610461565b6040516101609190612459565b60405180910390f35b610183600480360381019061017e9190612063565b6104f3565b60405161019091906123d7565b60405180910390f35b6101b360048036038101906101ae9190611f11565b610578565b005b6101cf60048036038101906101ca9190611dfb565b610690565b005b6101eb60048036038101906101e69190611dfb565b6106f0565b005b6102076004803603810190610202919061201a565b610710565b005b610223600480360381019061021e9190612063565b6107a6565b60405161023091906123d7565b60405180910390f35b610253600480360381019061024e9190611d8e565b610858565b604051610260919061269b565b60405180910390f35b610271610910565b005b61027b610998565b60405161028891906123d7565b60405180910390f35b6102996109c2565b6040516102a69190612459565b60405180910390f35b6102c960048036038101906102c49190611ed1565b610a54565b005b6102e560048036038101906102e09190611e4e565b610bd5565b005b61030160048036038101906102fc9190612063565b610c37565b60405161030e9190612459565b60405180910390f35b610331600480360381019061032c9190611f51565b610daa565b005b61034d60048036038101906103489190611dbb565b610e3f565b60405161035a919061243e565b60405180910390f35b61037d60048036038101906103789190611d8e565b610ed3565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061044a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061045a575061045982610fcb565b5b9050919050565b606060008054610470906128f1565b80601f016020809104026020016040519081016040528092919081815260200182805461049c906128f1565b80156104e95780601f106104be576101008083540402835291602001916104e9565b820191906000526020600020905b8154815290600101906020018083116104cc57829003601f168201915b5050505050905090565b60006104fe82611035565b61053d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610534906125bb565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610583826107a6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb9061265b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106136110a1565b73ffffffffffffffffffffffffffffffffffffffff16148061064257506106418161063c6110a1565b610e3f565b5b610681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106789061253b565b60405180910390fd5b61068b83836110a9565b505050565b6106a161069b6110a1565b82611162565b6106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d79061267b565b60405180910390fd5b6106eb838383611240565b505050565b61070b83838360405180602001604052806000815250610bd5565b505050565b6107186110a1565b73ffffffffffffffffffffffffffffffffffffffff16610736610998565b73ffffffffffffffffffffffffffffffffffffffff161461078c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610783906125fb565b60405180910390fd5b80600890805190602001906107a2929190611ba2565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561084f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108469061257b565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c09061255b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109186110a1565b73ffffffffffffffffffffffffffffffffffffffff16610936610998565b73ffffffffffffffffffffffffffffffffffffffff161461098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610983906125fb565b60405180910390fd5b610996600061149c565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546109d1906128f1565b80601f01602080910402602001604051908101604052809291908181526020018280546109fd906128f1565b8015610a4a5780601f10610a1f57610100808354040283529160200191610a4a565b820191906000526020600020905b815481529060010190602001808311610a2d57829003601f168201915b5050505050905090565b610a5c6110a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac1906124fb565b60405180910390fd5b8060056000610ad76110a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610b846110a1565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610bc9919061243e565b60405180910390a35050565b610be6610be06110a1565b83611162565b610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c9061267b565b60405180910390fd5b610c3184848484611562565b50505050565b6060610c4282611035565b610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c789061263b565b60405180910390fd5b6000600760008481526020019081526020016000208054610ca1906128f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ccd906128f1565b8015610d1a5780601f10610cef57610100808354040283529160200191610d1a565b820191906000526020600020905b815481529060010190602001808311610cfd57829003601f168201915b505050505090506000610d2b6115be565b9050600081511415610d41578192505050610da5565b600082511115610d76578082604051602001610d5e9291906123b3565b60405160208183030381529060405292505050610da5565b80610d8085611650565b604051602001610d919291906123b3565b604051602081830303815290604052925050505b919050565b610db26110a1565b73ffffffffffffffffffffffffffffffffffffffff16610dd0610998565b73ffffffffffffffffffffffffffffffffffffffff1614610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d906125fb565b60405180910390fd5b610e3083836117b1565b610e3a828261197f565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610edb6110a1565b73ffffffffffffffffffffffffffffffffffffffff16610ef9610998565b73ffffffffffffffffffffffffffffffffffffffff1614610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f46906125fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb69061249b565b60405180910390fd5b610fc88161149c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661111c836107a6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061116d82611035565b6111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a39061251b565b60405180910390fd5b60006111b7836107a6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061122657508373ffffffffffffffffffffffffffffffffffffffff1661120e846104f3565b73ffffffffffffffffffffffffffffffffffffffff16145b8061123757506112368185610e3f565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611260826107a6565b73ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad9061261b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d906124db565b60405180910390fd5b6113318383836119f3565b61133c6000826110a9565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138c9190612807565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113e39190612780565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61156d848484611240565b611579848484846119f8565b6115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af9061247b565b60405180910390fd5b50505050565b6060600880546115cd906128f1565b80601f01602080910402602001604051908101604052809291908181526020018280546115f9906128f1565b80156116465780601f1061161b57610100808354040283529160200191611646565b820191906000526020600020905b81548152906001019060200180831161162957829003601f168201915b5050505050905090565b60606000821415611698576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506117ac565b600082905060005b600082146116ca5780806116b390612954565b915050600a826116c391906127d6565b91506116a0565b60008167ffffffffffffffff8111156116e6576116e5612a8a565b5b6040519080825280601f01601f1916602001820160405280156117185781602001600182028036833780820191505090505b5090505b600085146117a5576001826117319190612807565b9150600a85611740919061299d565b603061174c9190612780565b60f81b81838151811061176257611761612a5b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561179e91906127d6565b945061171c565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118189061259b565b60405180910390fd5b61182a81611035565b1561186a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611861906124bb565b60405180910390fd5b611876600083836119f3565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118c69190612780565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b61198882611035565b6119c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119be906125db565b60405180910390fd5b806007600084815260200190815260200160002090805190602001906119ee929190611ba2565b505050565b505050565b6000611a198473ffffffffffffffffffffffffffffffffffffffff16611b8f565b15611b82578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611a426110a1565b8786866040518563ffffffff1660e01b8152600401611a6494939291906123f2565b602060405180830381600087803b158015611a7e57600080fd5b505af1925050508015611aaf57506040513d601f19601f82011682018060405250810190611aac9190611fed565b60015b611b32573d8060008114611adf576040519150601f19603f3d011682016040523d82523d6000602084013e611ae4565b606091505b50600081511415611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b219061247b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611b87565b600190505b949350505050565b600080823b905060008111915050919050565b828054611bae906128f1565b90600052602060002090601f016020900481019282611bd05760008555611c17565b82601f10611be957805160ff1916838001178555611c17565b82800160010185558215611c17579182015b82811115611c16578251825591602001919060010190611bfb565b5b509050611c249190611c28565b5090565b5b80821115611c41576000816000905550600101611c29565b5090565b6000611c58611c53846126db565b6126b6565b905082815260208101848484011115611c7457611c73612abe565b5b611c7f8482856128af565b509392505050565b6000611c9a611c958461270c565b6126b6565b905082815260208101848484011115611cb657611cb5612abe565b5b611cc18482856128af565b509392505050565b600081359050611cd881612f85565b92915050565b600081359050611ced81612f9c565b92915050565b600081359050611d0281612fb3565b92915050565b600081519050611d1781612fb3565b92915050565b600082601f830112611d3257611d31612ab9565b5b8135611d42848260208601611c45565b91505092915050565b600082601f830112611d6057611d5f612ab9565b5b8135611d70848260208601611c87565b91505092915050565b600081359050611d8881612fca565b92915050565b600060208284031215611da457611da3612ac8565b5b6000611db284828501611cc9565b91505092915050565b60008060408385031215611dd257611dd1612ac8565b5b6000611de085828601611cc9565b9250506020611df185828601611cc9565b9150509250929050565b600080600060608486031215611e1457611e13612ac8565b5b6000611e2286828701611cc9565b9350506020611e3386828701611cc9565b9250506040611e4486828701611d79565b9150509250925092565b60008060008060808587031215611e6857611e67612ac8565b5b6000611e7687828801611cc9565b9450506020611e8787828801611cc9565b9350506040611e9887828801611d79565b925050606085013567ffffffffffffffff811115611eb957611eb8612ac3565b5b611ec587828801611d1d565b91505092959194509250565b60008060408385031215611ee857611ee7612ac8565b5b6000611ef685828601611cc9565b9250506020611f0785828601611cde565b9150509250929050565b60008060408385031215611f2857611f27612ac8565b5b6000611f3685828601611cc9565b9250506020611f4785828601611d79565b9150509250929050565b600080600060608486031215611f6a57611f69612ac8565b5b6000611f7886828701611cc9565b9350506020611f8986828701611d79565b925050604084013567ffffffffffffffff811115611faa57611fa9612ac3565b5b611fb686828701611d4b565b9150509250925092565b600060208284031215611fd657611fd5612ac8565b5b6000611fe484828501611cf3565b91505092915050565b60006020828403121561200357612002612ac8565b5b600061201184828501611d08565b91505092915050565b6000602082840312156120305761202f612ac8565b5b600082013567ffffffffffffffff81111561204e5761204d612ac3565b5b61205a84828501611d4b565b91505092915050565b60006020828403121561207957612078612ac8565b5b600061208784828501611d79565b91505092915050565b6120998161283b565b82525050565b6120a88161284d565b82525050565b60006120b98261273d565b6120c38185612753565b93506120d38185602086016128be565b6120dc81612acd565b840191505092915050565b60006120f282612748565b6120fc8185612764565b935061210c8185602086016128be565b61211581612acd565b840191505092915050565b600061212b82612748565b6121358185612775565b93506121458185602086016128be565b80840191505092915050565b600061215e603283612764565b915061216982612ade565b604082019050919050565b6000612181602683612764565b915061218c82612b2d565b604082019050919050565b60006121a4601c83612764565b91506121af82612b7c565b602082019050919050565b60006121c7602483612764565b91506121d282612ba5565b604082019050919050565b60006121ea601983612764565b91506121f582612bf4565b602082019050919050565b600061220d602c83612764565b915061221882612c1d565b604082019050919050565b6000612230603883612764565b915061223b82612c6c565b604082019050919050565b6000612253602a83612764565b915061225e82612cbb565b604082019050919050565b6000612276602983612764565b915061228182612d0a565b604082019050919050565b6000612299602083612764565b91506122a482612d59565b602082019050919050565b60006122bc602c83612764565b91506122c782612d82565b604082019050919050565b60006122df602c83612764565b91506122ea82612dd1565b604082019050919050565b6000612302602083612764565b915061230d82612e20565b602082019050919050565b6000612325602983612764565b915061233082612e49565b604082019050919050565b6000612348602f83612764565b915061235382612e98565b604082019050919050565b600061236b602183612764565b915061237682612ee7565b604082019050919050565b600061238e603183612764565b915061239982612f36565b604082019050919050565b6123ad816128a5565b82525050565b60006123bf8285612120565b91506123cb8284612120565b91508190509392505050565b60006020820190506123ec6000830184612090565b92915050565b60006080820190506124076000830187612090565b6124146020830186612090565b61242160408301856123a4565b818103606083015261243381846120ae565b905095945050505050565b6000602082019050612453600083018461209f565b92915050565b6000602082019050818103600083015261247381846120e7565b905092915050565b6000602082019050818103600083015261249481612151565b9050919050565b600060208201905081810360008301526124b481612174565b9050919050565b600060208201905081810360008301526124d481612197565b9050919050565b600060208201905081810360008301526124f4816121ba565b9050919050565b60006020820190508181036000830152612514816121dd565b9050919050565b6000602082019050818103600083015261253481612200565b9050919050565b6000602082019050818103600083015261255481612223565b9050919050565b6000602082019050818103600083015261257481612246565b9050919050565b6000602082019050818103600083015261259481612269565b9050919050565b600060208201905081810360008301526125b48161228c565b9050919050565b600060208201905081810360008301526125d4816122af565b9050919050565b600060208201905081810360008301526125f4816122d2565b9050919050565b60006020820190508181036000830152612614816122f5565b9050919050565b6000602082019050818103600083015261263481612318565b9050919050565b600060208201905081810360008301526126548161233b565b9050919050565b600060208201905081810360008301526126748161235e565b9050919050565b6000602082019050818103600083015261269481612381565b9050919050565b60006020820190506126b060008301846123a4565b92915050565b60006126c06126d1565b90506126cc8282612923565b919050565b6000604051905090565b600067ffffffffffffffff8211156126f6576126f5612a8a565b5b6126ff82612acd565b9050602081019050919050565b600067ffffffffffffffff82111561272757612726612a8a565b5b61273082612acd565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061278b826128a5565b9150612796836128a5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127cb576127ca6129ce565b5b828201905092915050565b60006127e1826128a5565b91506127ec836128a5565b9250826127fc576127fb6129fd565b5b828204905092915050565b6000612812826128a5565b915061281d836128a5565b9250828210156128305761282f6129ce565b5b828203905092915050565b600061284682612885565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156128dc5780820151818401526020810190506128c1565b838111156128eb576000848401525b50505050565b6000600282049050600182168061290957607f821691505b6020821081141561291d5761291c612a2c565b5b50919050565b61292c82612acd565b810181811067ffffffffffffffff8211171561294b5761294a612a8a565b5b80604052505050565b600061295f826128a5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612992576129916129ce565b5b600182019050919050565b60006129a8826128a5565b91506129b3836128a5565b9250826129c3576129c26129fd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b612f8e8161283b565b8114612f9957600080fd5b50565b612fa58161284d565b8114612fb057600080fd5b50565b612fbc81612859565b8114612fc757600080fd5b50565b612fd3816128a5565b8114612fde57600080fd5b5056fea2646970667358221220f99912f032cf380c2ccd39ccc4ba8bc42d22374ae8ae50a2204e4d0fdd45e4bd64736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000014537069747a62617274685f73696e636531393231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000343474e0000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Spitzbarth_since1921
Arg [1] : _symbol (string): CGN

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [3] : 537069747a62617274685f73696e636531393231000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 43474e0000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

34188:1990:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19855:305;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20800:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22359:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21882:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23249:339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23659:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34565:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20494:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20224:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33549:94;;;:::i;:::-;;32898:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20969:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22652:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23915:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35072:849;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35935:236;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23018:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33798:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19855:305;19957:4;20009:25;19994:40;;;:11;:40;;;;:105;;;;20066:33;20051:48;;;:11;:48;;;;19994:105;:158;;;;20116:36;20140:11;20116:23;:36::i;:::-;19994:158;19974:178;;19855:305;;;:::o;20800:100::-;20854:13;20887:5;20880:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20800:100;:::o;22359:221::-;22435:7;22463:16;22471:7;22463;:16::i;:::-;22455:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22548:15;:24;22564:7;22548:24;;;;;;;;;;;;;;;;;;;;;22541:31;;22359:221;;;:::o;21882:411::-;21963:13;21979:23;21994:7;21979:14;:23::i;:::-;21963:39;;22027:5;22021:11;;:2;:11;;;;22013:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22121:5;22105:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;22130:37;22147:5;22154:12;:10;:12::i;:::-;22130:16;:37::i;:::-;22105:62;22083:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;22264:21;22273:2;22277:7;22264:8;:21::i;:::-;21952:341;21882:411;;:::o;23249:339::-;23444:41;23463:12;:10;:12::i;:::-;23477:7;23444:18;:41::i;:::-;23436:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;23552:28;23562:4;23568:2;23572:7;23552:9;:28::i;:::-;23249:339;;;:::o;23659:185::-;23797:39;23814:4;23820:2;23824:7;23797:39;;;;;;;;;;;;:16;:39::i;:::-;23659:185;;;:::o;34565:119::-;33129:12;:10;:12::i;:::-;33118:23;;:7;:5;:7::i;:::-;:23;;;33110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34664:8:::1;34645:16;:27;;;;;;;;;;;;:::i;:::-;;34565:119:::0;:::o;20494:239::-;20566:7;20586:13;20602:7;:16;20610:7;20602:16;;;;;;;;;;;;;;;;;;;;;20586:32;;20654:1;20637:19;;:5;:19;;;;20629:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20720:5;20713:12;;;20494:239;;;:::o;20224:208::-;20296:7;20341:1;20324:19;;:5;:19;;;;20316:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;20408:9;:16;20418:5;20408:16;;;;;;;;;;;;;;;;20401:23;;20224:208;;;:::o;33549:94::-;33129:12;:10;:12::i;:::-;33118:23;;:7;:5;:7::i;:::-;:23;;;33110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33614:21:::1;33632:1;33614:9;:21::i;:::-;33549:94::o:0;32898:87::-;32944:7;32971:6;;;;;;;;;;;32964:13;;32898:87;:::o;20969:104::-;21025:13;21058:7;21051:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20969:104;:::o;22652:295::-;22767:12;:10;:12::i;:::-;22755:24;;:8;:24;;;;22747:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22867:8;22822:18;:32;22841:12;:10;:12::i;:::-;22822:32;;;;;;;;;;;;;;;:42;22855:8;22822:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;22920:8;22891:48;;22906:12;:10;:12::i;:::-;22891:48;;;22930:8;22891:48;;;;;;:::i;:::-;;;;;;;;22652:295;;:::o;23915:328::-;24090:41;24109:12;:10;:12::i;:::-;24123:7;24090:18;:41::i;:::-;24082:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24196:39;24210:4;24216:2;24220:7;24229:5;24196:13;:39::i;:::-;23915:328;;;;:::o;35072:849::-;35145:13;35183:16;35191:7;35183;:16::i;:::-;35175:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;35268:23;35294:10;:19;35305:7;35294:19;;;;;;;;;;;35268:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35328:18;35349:10;:8;:10::i;:::-;35328:31;;35465:1;35449:4;35443:18;:23;35439:80;;;35494:9;35487:16;;;;;;35439:80;35657:1;35637:9;35631:23;:27;35627:116;;;35710:4;35716:9;35693:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;35679:48;;;;;;35627:116;35883:4;35889:18;:7;:16;:18::i;:::-;35866:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;35852:57;;;;35072:849;;;;:::o;35935:236::-;33129:12;:10;:12::i;:::-;33118:23;;:7;:5;:7::i;:::-;:23;;;33110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36091:20:::1;36097:3;36102:8;36091:5;:20::i;:::-;36126:33;36139:8;36149:9;36126:12;:33::i;:::-;35935:236:::0;;;:::o;23018:164::-;23115:4;23139:18;:25;23158:5;23139:25;;;;;;;;;;;;;;;:35;23165:8;23139:35;;;;;;;;;;;;;;;;;;;;;;;;;23132:42;;23018:164;;;;:::o;33798:192::-;33129:12;:10;:12::i;:::-;33118:23;;:7;:5;:7::i;:::-;:23;;;33110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33907:1:::1;33887:22;;:8;:22;;;;33879:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;33963:19;33973:8;33963:9;:19::i;:::-;33798:192:::0;:::o;18466:157::-;18551:4;18590:25;18575:40;;;:11;:40;;;;18568:47;;18466:157;;;:::o;25753:127::-;25818:4;25870:1;25842:30;;:7;:16;25850:7;25842:16;;;;;;;;;;;;;;;;;;;;;:30;;;;25835:37;;25753:127;;;:::o;15567:98::-;15620:7;15647:10;15640:17;;15567:98;:::o;29735:174::-;29837:2;29810:15;:24;29826:7;29810:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;29893:7;29889:2;29855:46;;29864:23;29879:7;29864:14;:23::i;:::-;29855:46;;;;;;;;;;;;29735:174;;:::o;26047:348::-;26140:4;26165:16;26173:7;26165;:16::i;:::-;26157:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26241:13;26257:23;26272:7;26257:14;:23::i;:::-;26241:39;;26310:5;26299:16;;:7;:16;;;:51;;;;26343:7;26319:31;;:20;26331:7;26319:11;:20::i;:::-;:31;;;26299:51;:87;;;;26354:32;26371:5;26378:7;26354:16;:32::i;:::-;26299:87;26291:96;;;26047:348;;;;:::o;29039:578::-;29198:4;29171:31;;:23;29186:7;29171:14;:23::i;:::-;:31;;;29163:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;29281:1;29267:16;;:2;:16;;;;29259:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29337:39;29358:4;29364:2;29368:7;29337:20;:39::i;:::-;29441:29;29458:1;29462:7;29441:8;:29::i;:::-;29502:1;29483:9;:15;29493:4;29483:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;29531:1;29514:9;:13;29524:2;29514:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;29562:2;29543:7;:16;29551:7;29543:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29601:7;29597:2;29582:27;;29591:4;29582:27;;;;;;;;;;;;29039:578;;;:::o;33998:173::-;34054:16;34073:6;;;;;;;;;;;34054:25;;34099:8;34090:6;;:17;;;;;;;;;;;;;;;;;;34154:8;34123:40;;34144:8;34123:40;;;;;;;;;;;;34043:128;33998:173;:::o;25125:315::-;25282:28;25292:4;25298:2;25302:7;25282:9;:28::i;:::-;25329:48;25352:4;25358:2;25362:7;25371:5;25329:22;:48::i;:::-;25321:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;25125:315;;;;:::o;34935:125::-;34995:13;35032:16;35025:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34935:125;:::o;16007:723::-;16063:13;16293:1;16284:5;:10;16280:53;;;16311:10;;;;;;;;;;;;;;;;;;;;;16280:53;16343:12;16358:5;16343:20;;16374:14;16399:78;16414:1;16406:4;:9;16399:78;;16432:8;;;;;:::i;:::-;;;;16463:2;16455:10;;;;;:::i;:::-;;;16399:78;;;16487:19;16519:6;16509:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16487:39;;16537:154;16553:1;16544:5;:10;16537:154;;16581:1;16571:11;;;;;:::i;:::-;;;16648:2;16640:5;:10;;;;:::i;:::-;16627:2;:24;;;;:::i;:::-;16614:39;;16597:6;16604;16597:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;16677:2;16668:11;;;;;:::i;:::-;;;16537:154;;;16715:6;16701:21;;;;;16007:723;;;;:::o;27731:382::-;27825:1;27811:16;;:2;:16;;;;27803:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;27884:16;27892:7;27884;:16::i;:::-;27883:17;27875:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;27946:45;27975:1;27979:2;27983:7;27946:20;:45::i;:::-;28021:1;28004:9;:13;28014:2;28004:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;28052:2;28033:7;:16;28041:7;28033:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28097:7;28093:2;28072:33;;28089:1;28072:33;;;;;;;;;;;;27731:382;;:::o;34696:227::-;34800:16;34808:7;34800;:16::i;:::-;34792:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;34902:9;34880:10;:19;34891:7;34880:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;34696:227;;:::o;31845:126::-;;;;:::o;30474:799::-;30629:4;30650:15;:2;:13;;;:15::i;:::-;30646:620;;;30702:2;30686:36;;;30723:12;:10;:12::i;:::-;30737:4;30743:7;30752:5;30686:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;30682:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30945:1;30928:6;:13;:18;30924:272;;;30971:60;;;;;;;;;;:::i;:::-;;;;;;;;30924:272;31146:6;31140:13;31131:6;31127:2;31123:15;31116:38;30682:529;30819:41;;;30809:51;;;:6;:51;;;;30802:58;;;;;30646:620;31250:4;31243:11;;30474:799;;;;;;;:::o;7696:387::-;7756:4;7964:12;8031:7;8019:20;8011:28;;8074:1;8067:4;:8;8060:15;;;7696:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:474::-;2680:6;2688;2737:2;2725:9;2716:7;2712:23;2708:32;2705:119;;;2743:79;;:::i;:::-;2705:119;2863:1;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2834:117;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2612:474;;;;;:::o;3092:619::-;3169:6;3177;3185;3234:2;3222:9;3213:7;3209:23;3205:32;3202:119;;;3240:79;;:::i;:::-;3202:119;3360:1;3385:53;3430:7;3421:6;3410:9;3406:22;3385:53;:::i;:::-;3375:63;;3331:117;3487:2;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;:::i;:::-;3503:63;;3458:118;3615:2;3641:53;3686:7;3677:6;3666:9;3662:22;3641:53;:::i;:::-;3631:63;;3586:118;3092:619;;;;;:::o;3717:943::-;3812:6;3820;3828;3836;3885:3;3873:9;3864:7;3860:23;3856:33;3853:120;;;3892:79;;:::i;:::-;3853:120;4012:1;4037:53;4082:7;4073:6;4062:9;4058:22;4037:53;:::i;:::-;4027:63;;3983:117;4139:2;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;:::i;:::-;4155:63;;4110:118;4267:2;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4238:118;4423:2;4412:9;4408:18;4395:32;4454:18;4446:6;4443:30;4440:117;;;4476:79;;:::i;:::-;4440:117;4581:62;4635:7;4626:6;4615:9;4611:22;4581:62;:::i;:::-;4571:72;;4366:287;3717:943;;;;;;;:::o;4666:468::-;4731:6;4739;4788:2;4776:9;4767:7;4763:23;4759:32;4756:119;;;4794:79;;:::i;:::-;4756:119;4914:1;4939:53;4984:7;4975:6;4964:9;4960:22;4939:53;:::i;:::-;4929:63;;4885:117;5041:2;5067:50;5109:7;5100:6;5089:9;5085:22;5067:50;:::i;:::-;5057:60;;5012:115;4666:468;;;;;:::o;5140:474::-;5208:6;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5140:474;;;;;:::o;5620:799::-;5707:6;5715;5723;5772:2;5760:9;5751:7;5747:23;5743:32;5740:119;;;5778:79;;:::i;:::-;5740:119;5898:1;5923:53;5968:7;5959:6;5948:9;5944:22;5923:53;:::i;:::-;5913:63;;5869:117;6025:2;6051:53;6096:7;6087:6;6076:9;6072:22;6051:53;:::i;:::-;6041:63;;5996:118;6181:2;6170:9;6166:18;6153:32;6212:18;6204:6;6201:30;6198:117;;;6234:79;;:::i;:::-;6198:117;6339:63;6394:7;6385:6;6374:9;6370:22;6339:63;:::i;:::-;6329:73;;6124:288;5620:799;;;;;:::o;6425:327::-;6483:6;6532:2;6520:9;6511:7;6507:23;6503:32;6500:119;;;6538:79;;:::i;:::-;6500:119;6658:1;6683:52;6727:7;6718:6;6707:9;6703:22;6683:52;:::i;:::-;6673:62;;6629:116;6425:327;;;;:::o;6758:349::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:63;7082:7;7073:6;7062:9;7058:22;7027:63;:::i;:::-;7017:73;;6973:127;6758:349;;;;:::o;7113:509::-;7182:6;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7385:1;7374:9;7370:17;7357:31;7415:18;7407:6;7404:30;7401:117;;;7437:79;;:::i;:::-;7401:117;7542:63;7597:7;7588:6;7577:9;7573:22;7542:63;:::i;:::-;7532:73;;7328:287;7113:509;;;;:::o;7628:329::-;7687:6;7736:2;7724:9;7715:7;7711:23;7707:32;7704:119;;;7742:79;;:::i;:::-;7704:119;7862:1;7887:53;7932:7;7923:6;7912:9;7908:22;7887:53;:::i;:::-;7877:63;;7833:117;7628:329;;;;:::o;7963:118::-;8050:24;8068:5;8050:24;:::i;:::-;8045:3;8038:37;7963:118;;:::o;8087:109::-;8168:21;8183:5;8168:21;:::i;:::-;8163:3;8156:34;8087:109;;:::o;8202:360::-;8288:3;8316:38;8348:5;8316:38;:::i;:::-;8370:70;8433:6;8428:3;8370:70;:::i;:::-;8363:77;;8449:52;8494:6;8489:3;8482:4;8475:5;8471:16;8449:52;:::i;:::-;8526:29;8548:6;8526:29;:::i;:::-;8521:3;8517:39;8510:46;;8292:270;8202:360;;;;:::o;8568:364::-;8656:3;8684:39;8717:5;8684:39;:::i;:::-;8739:71;8803:6;8798:3;8739:71;:::i;:::-;8732:78;;8819:52;8864:6;8859:3;8852:4;8845:5;8841:16;8819:52;:::i;:::-;8896:29;8918:6;8896:29;:::i;:::-;8891:3;8887:39;8880:46;;8660:272;8568:364;;;;:::o;8938:377::-;9044:3;9072:39;9105:5;9072:39;:::i;:::-;9127:89;9209:6;9204:3;9127:89;:::i;:::-;9120:96;;9225:52;9270:6;9265:3;9258:4;9251:5;9247:16;9225:52;:::i;:::-;9302:6;9297:3;9293:16;9286:23;;9048:267;8938:377;;;;:::o;9321:366::-;9463:3;9484:67;9548:2;9543:3;9484:67;:::i;:::-;9477:74;;9560:93;9649:3;9560:93;:::i;:::-;9678:2;9673:3;9669:12;9662:19;;9321:366;;;:::o;9693:::-;9835:3;9856:67;9920:2;9915:3;9856:67;:::i;:::-;9849:74;;9932:93;10021:3;9932:93;:::i;:::-;10050:2;10045:3;10041:12;10034:19;;9693:366;;;:::o;10065:::-;10207:3;10228:67;10292:2;10287:3;10228:67;:::i;:::-;10221:74;;10304:93;10393:3;10304:93;:::i;:::-;10422:2;10417:3;10413:12;10406:19;;10065:366;;;:::o;10437:::-;10579:3;10600:67;10664:2;10659:3;10600:67;:::i;:::-;10593:74;;10676:93;10765:3;10676:93;:::i;:::-;10794:2;10789:3;10785:12;10778:19;;10437:366;;;:::o;10809:::-;10951:3;10972:67;11036:2;11031:3;10972:67;:::i;:::-;10965:74;;11048:93;11137:3;11048:93;:::i;:::-;11166:2;11161:3;11157:12;11150:19;;10809:366;;;:::o;11181:::-;11323:3;11344:67;11408:2;11403:3;11344:67;:::i;:::-;11337:74;;11420:93;11509:3;11420:93;:::i;:::-;11538:2;11533:3;11529:12;11522:19;;11181:366;;;:::o;11553:::-;11695:3;11716:67;11780:2;11775:3;11716:67;:::i;:::-;11709:74;;11792:93;11881:3;11792:93;:::i;:::-;11910:2;11905:3;11901:12;11894:19;;11553:366;;;:::o;11925:::-;12067:3;12088:67;12152:2;12147:3;12088:67;:::i;:::-;12081:74;;12164:93;12253:3;12164:93;:::i;:::-;12282:2;12277:3;12273:12;12266:19;;11925:366;;;:::o;12297:::-;12439:3;12460:67;12524:2;12519:3;12460:67;:::i;:::-;12453:74;;12536:93;12625:3;12536:93;:::i;:::-;12654:2;12649:3;12645:12;12638:19;;12297:366;;;:::o;12669:::-;12811:3;12832:67;12896:2;12891:3;12832:67;:::i;:::-;12825:74;;12908:93;12997:3;12908:93;:::i;:::-;13026:2;13021:3;13017:12;13010:19;;12669:366;;;:::o;13041:::-;13183:3;13204:67;13268:2;13263:3;13204:67;:::i;:::-;13197:74;;13280:93;13369:3;13280:93;:::i;:::-;13398:2;13393:3;13389:12;13382:19;;13041:366;;;:::o;13413:::-;13555:3;13576:67;13640:2;13635:3;13576:67;:::i;:::-;13569:74;;13652:93;13741:3;13652:93;:::i;:::-;13770:2;13765:3;13761:12;13754:19;;13413:366;;;:::o;13785:::-;13927:3;13948:67;14012:2;14007:3;13948:67;:::i;:::-;13941:74;;14024:93;14113:3;14024:93;:::i;:::-;14142:2;14137:3;14133:12;14126:19;;13785:366;;;:::o;14157:::-;14299:3;14320:67;14384:2;14379:3;14320:67;:::i;:::-;14313:74;;14396:93;14485:3;14396:93;:::i;:::-;14514:2;14509:3;14505:12;14498:19;;14157:366;;;:::o;14529:::-;14671:3;14692:67;14756:2;14751:3;14692:67;:::i;:::-;14685:74;;14768:93;14857:3;14768:93;:::i;:::-;14886:2;14881:3;14877:12;14870:19;;14529:366;;;:::o;14901:::-;15043:3;15064:67;15128:2;15123:3;15064:67;:::i;:::-;15057:74;;15140:93;15229:3;15140:93;:::i;:::-;15258:2;15253:3;15249:12;15242:19;;14901:366;;;:::o;15273:::-;15415:3;15436:67;15500:2;15495:3;15436:67;:::i;:::-;15429:74;;15512:93;15601:3;15512:93;:::i;:::-;15630:2;15625:3;15621:12;15614:19;;15273:366;;;:::o;15645:118::-;15732:24;15750:5;15732:24;:::i;:::-;15727:3;15720:37;15645:118;;:::o;15769:435::-;15949:3;15971:95;16062:3;16053:6;15971:95;:::i;:::-;15964:102;;16083:95;16174:3;16165:6;16083:95;:::i;:::-;16076:102;;16195:3;16188:10;;15769:435;;;;;:::o;16210:222::-;16303:4;16341:2;16330:9;16326:18;16318:26;;16354:71;16422:1;16411:9;16407:17;16398:6;16354:71;:::i;:::-;16210:222;;;;:::o;16438:640::-;16633:4;16671:3;16660:9;16656:19;16648:27;;16685:71;16753:1;16742:9;16738:17;16729:6;16685:71;:::i;:::-;16766:72;16834:2;16823:9;16819:18;16810:6;16766:72;:::i;:::-;16848;16916:2;16905:9;16901:18;16892:6;16848:72;:::i;:::-;16967:9;16961:4;16957:20;16952:2;16941:9;16937:18;16930:48;16995:76;17066:4;17057:6;16995:76;:::i;:::-;16987:84;;16438:640;;;;;;;:::o;17084:210::-;17171:4;17209:2;17198:9;17194:18;17186:26;;17222:65;17284:1;17273:9;17269:17;17260:6;17222:65;:::i;:::-;17084:210;;;;:::o;17300:313::-;17413:4;17451:2;17440:9;17436:18;17428:26;;17500:9;17494:4;17490:20;17486:1;17475:9;17471:17;17464:47;17528:78;17601:4;17592:6;17528:78;:::i;:::-;17520:86;;17300:313;;;;:::o;17619:419::-;17785:4;17823:2;17812:9;17808:18;17800:26;;17872:9;17866:4;17862:20;17858:1;17847:9;17843:17;17836:47;17900:131;18026:4;17900:131;:::i;:::-;17892:139;;17619:419;;;:::o;18044:::-;18210:4;18248:2;18237:9;18233:18;18225:26;;18297:9;18291:4;18287:20;18283:1;18272:9;18268:17;18261:47;18325:131;18451:4;18325:131;:::i;:::-;18317:139;;18044:419;;;:::o;18469:::-;18635:4;18673:2;18662:9;18658:18;18650:26;;18722:9;18716:4;18712:20;18708:1;18697:9;18693:17;18686:47;18750:131;18876:4;18750:131;:::i;:::-;18742:139;;18469:419;;;:::o;18894:::-;19060:4;19098:2;19087:9;19083:18;19075:26;;19147:9;19141:4;19137:20;19133:1;19122:9;19118:17;19111:47;19175:131;19301:4;19175:131;:::i;:::-;19167:139;;18894:419;;;:::o;19319:::-;19485:4;19523:2;19512:9;19508:18;19500:26;;19572:9;19566:4;19562:20;19558:1;19547:9;19543:17;19536:47;19600:131;19726:4;19600:131;:::i;:::-;19592:139;;19319:419;;;:::o;19744:::-;19910:4;19948:2;19937:9;19933:18;19925:26;;19997:9;19991:4;19987:20;19983:1;19972:9;19968:17;19961:47;20025:131;20151:4;20025:131;:::i;:::-;20017:139;;19744:419;;;:::o;20169:::-;20335:4;20373:2;20362:9;20358:18;20350:26;;20422:9;20416:4;20412:20;20408:1;20397:9;20393:17;20386:47;20450:131;20576:4;20450:131;:::i;:::-;20442:139;;20169:419;;;:::o;20594:::-;20760:4;20798:2;20787:9;20783:18;20775:26;;20847:9;20841:4;20837:20;20833:1;20822:9;20818:17;20811:47;20875:131;21001:4;20875:131;:::i;:::-;20867:139;;20594:419;;;:::o;21019:::-;21185:4;21223:2;21212:9;21208:18;21200:26;;21272:9;21266:4;21262:20;21258:1;21247:9;21243:17;21236:47;21300:131;21426:4;21300:131;:::i;:::-;21292:139;;21019:419;;;:::o;21444:::-;21610:4;21648:2;21637:9;21633:18;21625:26;;21697:9;21691:4;21687:20;21683:1;21672:9;21668:17;21661:47;21725:131;21851:4;21725:131;:::i;:::-;21717:139;;21444:419;;;:::o;21869:::-;22035:4;22073:2;22062:9;22058:18;22050:26;;22122:9;22116:4;22112:20;22108:1;22097:9;22093:17;22086:47;22150:131;22276:4;22150:131;:::i;:::-;22142:139;;21869:419;;;:::o;22294:::-;22460:4;22498:2;22487:9;22483:18;22475:26;;22547:9;22541:4;22537:20;22533:1;22522:9;22518:17;22511:47;22575:131;22701:4;22575:131;:::i;:::-;22567:139;;22294:419;;;:::o;22719:::-;22885:4;22923:2;22912:9;22908:18;22900:26;;22972:9;22966:4;22962:20;22958:1;22947:9;22943:17;22936:47;23000:131;23126:4;23000:131;:::i;:::-;22992:139;;22719:419;;;:::o;23144:::-;23310:4;23348:2;23337:9;23333:18;23325:26;;23397:9;23391:4;23387:20;23383:1;23372:9;23368:17;23361:47;23425:131;23551:4;23425:131;:::i;:::-;23417:139;;23144:419;;;:::o;23569:::-;23735:4;23773:2;23762:9;23758:18;23750:26;;23822:9;23816:4;23812:20;23808:1;23797:9;23793:17;23786:47;23850:131;23976:4;23850:131;:::i;:::-;23842:139;;23569:419;;;:::o;23994:::-;24160:4;24198:2;24187:9;24183:18;24175:26;;24247:9;24241:4;24237:20;24233:1;24222:9;24218:17;24211:47;24275:131;24401:4;24275:131;:::i;:::-;24267:139;;23994:419;;;:::o;24419:::-;24585:4;24623:2;24612:9;24608:18;24600:26;;24672:9;24666:4;24662:20;24658:1;24647:9;24643:17;24636:47;24700:131;24826:4;24700:131;:::i;:::-;24692:139;;24419:419;;;:::o;24844:222::-;24937:4;24975:2;24964:9;24960:18;24952:26;;24988:71;25056:1;25045:9;25041:17;25032:6;24988:71;:::i;:::-;24844:222;;;;:::o;25072:129::-;25106:6;25133:20;;:::i;:::-;25123:30;;25162:33;25190:4;25182:6;25162:33;:::i;:::-;25072:129;;;:::o;25207:75::-;25240:6;25273:2;25267:9;25257:19;;25207:75;:::o;25288:307::-;25349:4;25439:18;25431:6;25428:30;25425:56;;;25461:18;;:::i;:::-;25425:56;25499:29;25521:6;25499:29;:::i;:::-;25491:37;;25583:4;25577;25573:15;25565:23;;25288:307;;;:::o;25601:308::-;25663:4;25753:18;25745:6;25742:30;25739:56;;;25775:18;;:::i;:::-;25739:56;25813:29;25835:6;25813:29;:::i;:::-;25805:37;;25897:4;25891;25887:15;25879:23;;25601:308;;;:::o;25915:98::-;25966:6;26000:5;25994:12;25984:22;;25915:98;;;:::o;26019:99::-;26071:6;26105:5;26099:12;26089:22;;26019:99;;;:::o;26124:168::-;26207:11;26241:6;26236:3;26229:19;26281:4;26276:3;26272:14;26257:29;;26124:168;;;;:::o;26298:169::-;26382:11;26416:6;26411:3;26404:19;26456:4;26451:3;26447:14;26432:29;;26298:169;;;;:::o;26473:148::-;26575:11;26612:3;26597:18;;26473:148;;;;:::o;26627:305::-;26667:3;26686:20;26704:1;26686:20;:::i;:::-;26681:25;;26720:20;26738:1;26720:20;:::i;:::-;26715:25;;26874:1;26806:66;26802:74;26799:1;26796:81;26793:107;;;26880:18;;:::i;:::-;26793:107;26924:1;26921;26917:9;26910:16;;26627:305;;;;:::o;26938:185::-;26978:1;26995:20;27013:1;26995:20;:::i;:::-;26990:25;;27029:20;27047:1;27029:20;:::i;:::-;27024:25;;27068:1;27058:35;;27073:18;;:::i;:::-;27058:35;27115:1;27112;27108:9;27103:14;;26938:185;;;;:::o;27129:191::-;27169:4;27189:20;27207:1;27189:20;:::i;:::-;27184:25;;27223:20;27241:1;27223:20;:::i;:::-;27218:25;;27262:1;27259;27256:8;27253:34;;;27267:18;;:::i;:::-;27253:34;27312:1;27309;27305:9;27297:17;;27129:191;;;;:::o;27326:96::-;27363:7;27392:24;27410:5;27392:24;:::i;:::-;27381:35;;27326:96;;;:::o;27428:90::-;27462:7;27505:5;27498:13;27491:21;27480:32;;27428:90;;;:::o;27524:149::-;27560:7;27600:66;27593:5;27589:78;27578:89;;27524:149;;;:::o;27679:126::-;27716:7;27756:42;27749:5;27745:54;27734:65;;27679:126;;;:::o;27811:77::-;27848:7;27877:5;27866:16;;27811:77;;;:::o;27894:154::-;27978:6;27973:3;27968;27955:30;28040:1;28031:6;28026:3;28022:16;28015:27;27894:154;;;:::o;28054:307::-;28122:1;28132:113;28146:6;28143:1;28140:13;28132:113;;;28231:1;28226:3;28222:11;28216:18;28212:1;28207:3;28203:11;28196:39;28168:2;28165:1;28161:10;28156:15;;28132:113;;;28263:6;28260:1;28257:13;28254:101;;;28343:1;28334:6;28329:3;28325:16;28318:27;28254:101;28103:258;28054:307;;;:::o;28367:320::-;28411:6;28448:1;28442:4;28438:12;28428:22;;28495:1;28489:4;28485:12;28516:18;28506:81;;28572:4;28564:6;28560:17;28550:27;;28506:81;28634:2;28626:6;28623:14;28603:18;28600:38;28597:84;;;28653:18;;:::i;:::-;28597:84;28418:269;28367:320;;;:::o;28693:281::-;28776:27;28798:4;28776:27;:::i;:::-;28768:6;28764:40;28906:6;28894:10;28891:22;28870:18;28858:10;28855:34;28852:62;28849:88;;;28917:18;;:::i;:::-;28849:88;28957:10;28953:2;28946:22;28736:238;28693:281;;:::o;28980:233::-;29019:3;29042:24;29060:5;29042:24;:::i;:::-;29033:33;;29088:66;29081:5;29078:77;29075:103;;;29158:18;;:::i;:::-;29075:103;29205:1;29198:5;29194:13;29187:20;;28980:233;;;:::o;29219:176::-;29251:1;29268:20;29286:1;29268:20;:::i;:::-;29263:25;;29302:20;29320:1;29302:20;:::i;:::-;29297:25;;29341:1;29331:35;;29346:18;;:::i;:::-;29331:35;29387:1;29384;29380:9;29375:14;;29219:176;;;;:::o;29401:180::-;29449:77;29446:1;29439:88;29546:4;29543:1;29536:15;29570:4;29567:1;29560:15;29587:180;29635:77;29632:1;29625:88;29732:4;29729:1;29722:15;29756:4;29753:1;29746:15;29773:180;29821:77;29818:1;29811:88;29918:4;29915:1;29908:15;29942:4;29939:1;29932:15;29959:180;30007:77;30004:1;29997:88;30104:4;30101:1;30094:15;30128:4;30125:1;30118:15;30145:180;30193:77;30190:1;30183:88;30290:4;30287:1;30280:15;30314:4;30311:1;30304:15;30331:117;30440:1;30437;30430:12;30454:117;30563:1;30560;30553:12;30577:117;30686:1;30683;30676:12;30700:117;30809:1;30806;30799:12;30823:102;30864:6;30915:2;30911:7;30906:2;30899:5;30895:14;30891:28;30881:38;;30823:102;;;:::o;30931:237::-;31071:34;31067:1;31059:6;31055:14;31048:58;31140:20;31135:2;31127:6;31123:15;31116:45;30931:237;:::o;31174:225::-;31314:34;31310:1;31302:6;31298:14;31291:58;31383:8;31378:2;31370:6;31366:15;31359:33;31174:225;:::o;31405:178::-;31545:30;31541:1;31533:6;31529:14;31522:54;31405:178;:::o;31589:223::-;31729:34;31725:1;31717:6;31713:14;31706:58;31798:6;31793:2;31785:6;31781:15;31774:31;31589:223;:::o;31818:175::-;31958:27;31954:1;31946:6;31942:14;31935:51;31818:175;:::o;31999:231::-;32139:34;32135:1;32127:6;32123:14;32116:58;32208:14;32203:2;32195:6;32191:15;32184:39;31999:231;:::o;32236:243::-;32376:34;32372:1;32364:6;32360:14;32353:58;32445:26;32440:2;32432:6;32428:15;32421:51;32236:243;:::o;32485:229::-;32625:34;32621:1;32613:6;32609:14;32602:58;32694:12;32689:2;32681:6;32677:15;32670:37;32485:229;:::o;32720:228::-;32860:34;32856:1;32848:6;32844:14;32837:58;32929:11;32924:2;32916:6;32912:15;32905:36;32720:228;:::o;32954:182::-;33094:34;33090:1;33082:6;33078:14;33071:58;32954:182;:::o;33142:231::-;33282:34;33278:1;33270:6;33266:14;33259:58;33351:14;33346:2;33338:6;33334:15;33327:39;33142:231;:::o;33379:::-;33519:34;33515:1;33507:6;33503:14;33496:58;33588:14;33583:2;33575:6;33571:15;33564:39;33379:231;:::o;33616:182::-;33756:34;33752:1;33744:6;33740:14;33733:58;33616:182;:::o;33804:228::-;33944:34;33940:1;33932:6;33928:14;33921:58;34013:11;34008:2;34000:6;33996:15;33989:36;33804:228;:::o;34038:234::-;34178:34;34174:1;34166:6;34162:14;34155:58;34247:17;34242:2;34234:6;34230:15;34223:42;34038:234;:::o;34278:220::-;34418:34;34414:1;34406:6;34402:14;34395:58;34487:3;34482:2;34474:6;34470:15;34463:28;34278:220;:::o;34504:236::-;34644:34;34640:1;34632:6;34628:14;34621:58;34713:19;34708:2;34700:6;34696:15;34689:44;34504:236;:::o;34746:122::-;34819:24;34837:5;34819:24;:::i;:::-;34812:5;34809:35;34799:63;;34858:1;34855;34848:12;34799:63;34746:122;:::o;34874:116::-;34944:21;34959:5;34944:21;:::i;:::-;34937:5;34934:32;34924:60;;34980:1;34977;34970:12;34924:60;34874:116;:::o;34996:120::-;35068:23;35085:5;35068:23;:::i;:::-;35061:5;35058:34;35048:62;;35106:1;35103;35096:12;35048:62;34996:120;:::o;35122:122::-;35195:24;35213:5;35195:24;:::i;:::-;35188:5;35185:35;35175:63;;35234:1;35231;35224:12;35175:63;35122:122;:::o

Swarm Source

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