ETH Price: $3,450.38 (+0.13%)
Gas: 3 Gwei

Token

chonkygoats (CGOATS)
 

Overview

Max Total Supply

1,897 CGOATS

Holders

302

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
5 CGOATS
0x50410a5d48164819cbe90e10f21d8dc090a26615
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:
chonkygoats

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-29
*/

/**
 *Submitted for verification at Etherscan.io on 2022-05-27
*/

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {

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

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

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

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC721 is IERC165 {
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 indexed tokenId
    );

    event Approval(
        address indexed owner,
        address indexed approved,
        uint256 indexed tokenId
    );

    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

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

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

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId)
        external
        view
        returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function tokenURI(uint256 tokenId) external view returns (string memory);
}

interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index)
        external
        view
        returns (uint256 tokenId);

    function tokenByIndex(uint256 index) external view returns (uint256);
}

library Address {
    function isContract(address account) internal view returns (bool) {

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

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

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

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

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

    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

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

    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

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

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}

contract ERC721A is
    Context,
    ERC165,
    IERC721,
    IERC721Metadata,
    IERC721Enumerable
{
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 internal currentIndex = 1;

    string private _name;

    string private _symbol;

    mapping(uint256 => TokenOwnership) internal _ownerships;

    mapping(address => AddressData) private _addressData;

    mapping(uint256 => address) private _tokenApprovals;

    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }

    function tokenByIndex(uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }

    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert("ERC721A: unable to get token of owner by index");
    }

    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC165, IERC165)
        returns (bool)
    {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view override returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: balance query for the zero address"
        );
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: number minted query for the zero address"
        );
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

        for (uint256 curr = tokenId; ; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }

        revert("ERC721A: unable to determine the owner of token");
    }

    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    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()))
                : "";
    }

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

    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, "ERC721A: approval to current owner");

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

        _approve(to, tokenId, owner);
    }

    function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        require(
            _exists(tokenId),
            "ERC721A: approved query for nonexistent token"
        );

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        require(operator != _msgSender(), "ERC721A: approve to caller");

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

    function isApprovedForAll(address owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721A: transfer to non ERC721Receiver implementer"
        );
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }

    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
        require(!_exists(startTokenId), "ERC721A: token already minted");
        require(quantity > 0, "ERC721A: quantity must be greater 0");

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(
            addressData.balance + uint128(quantity),
            addressData.numberMinted + uint128(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 updatedIndex = startTokenId;

        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(
                _checkOnERC721Received(address(0), to, updatedIndex, _data),
                "ERC721A: transfer to non ERC721Receiver implementer"
            );
            updatedIndex++;
        }

        currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(
            isApprovedOrOwner,
            "ERC721A: transfer caller is not owner nor approved"
        );

        require(
            prevOwnership.addr == from,
            "ERC721A: transfer from incorrect owner"
        );
        require(to != address(0), "ERC721A: transfer to the zero address");

        _beforeTokenTransfers(from, to, tokenId, 1);

        _approve(address(0), tokenId, prevOwnership.addr);

        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;
        }

        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(
                    prevOwnership.addr,
                    prevOwnership.startTimestamp
                );
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

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

    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(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert(
                        "ERC721A: transfer to non ERC721Receiver implementer"
                    );
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

contract chonkygoats is ERC721A, Ownable {
    string public constant baseExtension = ".json";
    address public constant proxyRegistryAddress =
        0x37cfB7bb56A8a3dBc7C534249d089dCEA73392a2;

    string baseURI;
    string public notRevealedUri;
    uint256 public price = 0.002 ether;
    uint256 public MAX_SUPPLY = 1888;
    uint256 public FREE_MAX_SUPPLY = 888;
    uint256 public MAX_PER_TX = 5;

    bool public paused = true;
    bool public revealed = true;

    constructor(
        string memory _initBaseURI
    ) ERC721A("chonkygoats", "CGOATS") {
        setBaseURI(_initBaseURI);
    }

    function mint(uint256 _amount) public payable {
        require(!paused, "Paused");
        require(MAX_SUPPLY >= totalSupply() + _amount, "Exceeds max supply");
        require(_amount > 0, "No 0 mints");

        if (FREE_MAX_SUPPLY >= totalSupply() + _amount) {
            require(MAX_PER_TX >= _amount, "Exceeds max per transaction");
        } else {
            require(MAX_PER_TX >= _amount, "Exceeds max per transaction");
            require(msg.value >= _amount * price, "Invalid funds provided");
        }

        _safeMint(msg.sender, _amount);
    }

    function isApprovedForAll(address owner, address operator)
        public
        view
        override
        returns (bool)
    {
        // Whitelist OpenSea proxy contract for easy trading.
        ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress);
        if (address(proxyRegistry.proxies(owner)) == operator) {
            return true;
        }

        return super.isApprovedForAll(owner, operator);
    }

    function withdraw() public onlyOwner {
        (bool success, ) = payable(msg.sender).call{
            value: address(this).balance
        }("");
        require(success);
    }

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

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

    function setPrice(uint256 _newPrice) public onlyOwner {
        price = _newPrice;
    }

    function setMaxSupply(uint256 _newMaxSupply) public onlyOwner {
        MAX_SUPPLY = _newMaxSupply;
    }

    function setFreeMaxSupply(uint256 _newFreeMaxSupply) public onlyOwner {
        FREE_MAX_SUPPLY = _newFreeMaxSupply;
    }

    function setMaxPerTx(uint256 _newMaxPerTx) public onlyOwner {
        MAX_PER_TX = _newMaxPerTx;
    }

    function setBaseURI(string memory baseURI_) public onlyOwner {
        baseURI = baseURI_;
    }

    function tokenURI(uint256 _tokenId)
        public
        view
        override
        returns (string memory)
    {
        require(_exists(_tokenId), "Token does not exist.");

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

        return
            bytes(baseURI).length > 0
                ? string(
                    abi.encodePacked(
                        baseURI,
                        Strings.toString(_tokenId),
                        baseExtension
                    )
                )
                : "";
    }
}

contract OwnableDelegateProxy {}

contract ProxyRegistry {
    mapping(address => OwnableDelegateProxy) public proxies;
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_initBaseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FREE_MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","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":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyRegistryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFreeMaxSupply","type":"uint256"}],"name":"setFreeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxPerTx","type":"uint256"}],"name":"setMaxPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600160005566071afd498d0000600a55610760600b55610378600c556005600d55600e805461ffff19166101011790553480156200004157600080fd5b50604051620028fc380380620028fc833981016040819052620000649162000284565b604080518082018252600b81526a63686f6e6b79676f61747360a81b60208083019182528351808501909452600684526543474f41545360d01b908401528151919291620000b591600191620001c8565b508051620000cb906002906020840190620001c8565b505050620000e8620000e2620000fa60201b60201c565b620000fe565b620000f38162000150565b506200039c565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6007546001600160a01b03163314620001af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b8051620001c4906008906020840190620001c8565b5050565b828054620001d69062000360565b90600052602060002090601f016020900481019282620001fa576000855562000245565b82601f106200021557805160ff191683800117855562000245565b8280016001018555821562000245579182015b828111156200024557825182559160200191906001019062000228565b506200025392915062000257565b5090565b5b8082111562000253576000815560010162000258565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200029857600080fd5b82516001600160401b0380821115620002b057600080fd5b818501915085601f830112620002c557600080fd5b815181811115620002da57620002da6200026e565b604051601f8201601f19908116603f011681019083821181831017156200030557620003056200026e565b8160405282815288868487010111156200031e57600080fd5b600093505b8284101562000342578484018601518185018701529285019262000323565b82841115620003545760008684830101525b98975050505050505050565b600181811c908216806200037557607f821691505b6020821081036200039657634e487b7160e01b600052602260045260246000fd5b50919050565b61255080620003ac6000396000f3fe60806040526004361061021a5760003560e01c806370a0823111610123578063a22cb465116100ab578063cd7c03261161006f578063cd7c032614610600578063d223a63114610628578063e985e9c514610648578063f2fde38b14610668578063f43a22dc1461068857600080fd5b8063a22cb4651461054f578063b88d4fde1461056f578063c66828621461058f578063c6f6f216146105c0578063c87b56dd146105e057600080fd5b806391b7f5ed116100f257806391b7f5ed146104d1578063940cd05b146104f157806395d89b4114610511578063a035b1fe14610526578063a0712d681461053c57600080fd5b806370a0823114610468578063715018a6146104885780638069876d1461049d5780638da5cb5b146104b357600080fd5b806332cb6b0c116101a6578063518302271161017557806351830227146103cf57806355f804b3146103ee5780635c975abb1461040e5780636352211e146104285780636f8b44b01461044857600080fd5b806332cb6b0c146103645780633ccfd60b1461037a57806342842e0e1461038f5780634f6ccce7146103af57600080fd5b8063081c8c44116101ed578063081c8c44146102d0578063095ea7b3146102e557806318160ddd1461030557806323b872dd146103245780632f745c591461034457600080fd5b806301ffc9a71461021f57806302329a291461025457806306fdde0314610276578063081812fc14610298575b600080fd5b34801561022b57600080fd5b5061023f61023a366004611ed2565b61069e565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b5061027461026f366004611f0b565b61070b565b005b34801561028257600080fd5b5061028b610751565b60405161024b9190611f7e565b3480156102a457600080fd5b506102b86102b3366004611f91565b6107e3565b6040516001600160a01b03909116815260200161024b565b3480156102dc57600080fd5b5061028b61086e565b3480156102f157600080fd5b50610274610300366004611fbf565b6108fc565b34801561031157600080fd5b506000545b60405190815260200161024b565b34801561033057600080fd5b5061027461033f366004611feb565b610a13565b34801561035057600080fd5b5061031661035f366004611fbf565b610a1e565b34801561037057600080fd5b50610316600b5481565b34801561038657600080fd5b50610274610b8a565b34801561039b57600080fd5b506102746103aa366004611feb565b610c0c565b3480156103bb57600080fd5b506103166103ca366004611f91565b610c27565b3480156103db57600080fd5b50600e5461023f90610100900460ff1681565b3480156103fa57600080fd5b506102746104093660046120b8565b610c89565b34801561041a57600080fd5b50600e5461023f9060ff1681565b34801561043457600080fd5b506102b8610443366004611f91565b610cca565b34801561045457600080fd5b50610274610463366004611f91565b610cdc565b34801561047457600080fd5b50610316610483366004612101565b610d0b565b34801561049457600080fd5b50610274610d9c565b3480156104a957600080fd5b50610316600c5481565b3480156104bf57600080fd5b506007546001600160a01b03166102b8565b3480156104dd57600080fd5b506102746104ec366004611f91565b610dd2565b3480156104fd57600080fd5b5061027461050c366004611f0b565b610e01565b34801561051d57600080fd5b5061028b610e45565b34801561053257600080fd5b50610316600a5481565b61027461054a366004611f91565b610e54565b34801561055b57600080fd5b5061027461056a36600461211e565b61104b565b34801561057b57600080fd5b5061027461058a366004612153565b61110f565b34801561059b57600080fd5b5061028b60405180604001604052806005815260200164173539b7b760d91b81525081565b3480156105cc57600080fd5b506102746105db366004611f91565b611148565b3480156105ec57600080fd5b5061028b6105fb366004611f91565b611177565b34801561060c57600080fd5b506102b87337cfb7bb56a8a3dbc7c534249d089dcea73392a281565b34801561063457600080fd5b50610274610643366004611f91565b6112e9565b34801561065457600080fd5b5061023f6106633660046121d3565b611318565b34801561067457600080fd5b50610274610683366004612101565b6113e7565b34801561069457600080fd5b50610316600d5481565b60006001600160e01b031982166380ac58cd60e01b14806106cf57506001600160e01b03198216635b5e139f60e01b145b806106ea57506001600160e01b0319821663780e9d6360e01b145b8061070557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6007546001600160a01b0316331461073e5760405162461bcd60e51b81526004016107359061220c565b60405180910390fd5b600e805460ff1916911515919091179055565b60606001805461076090612241565b80601f016020809104026020016040519081016040528092919081815260200182805461078c90612241565b80156107d95780601f106107ae576101008083540402835291602001916107d9565b820191906000526020600020905b8154815290600101906020018083116107bc57829003601f168201915b5050505050905090565b60006107f0826000541190565b6108525760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b6064820152608401610735565b506000908152600560205260409020546001600160a01b031690565b6009805461087b90612241565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790612241565b80156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b505050505081565b600061090782610cca565b9050806001600160a01b0316836001600160a01b0316036109755760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610735565b336001600160a01b038216148061099157506109918133611318565b610a035760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610735565b610a0e83838361147f565b505050565b610a0e8383836114db565b6000610a2983610d0b565b8210610a825760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610735565b600080549080805b83811015610b2a576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610add57805192505b876001600160a01b0316836001600160a01b031603610b1757868403610b095750935061070592505050565b83610b1381612291565b9450505b5080610b2281612291565b915050610a8a565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610735565b6007546001600160a01b03163314610bb45760405162461bcd60e51b81526004016107359061220c565b604051600090339047908381818185875af1925050503d8060008114610bf6576040519150601f19603f3d011682016040523d82523d6000602084013e610bfb565b606091505b5050905080610c0957600080fd5b50565b610a0e8383836040518060200160405280600081525061110f565b600080548210610c855760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610735565b5090565b6007546001600160a01b03163314610cb35760405162461bcd60e51b81526004016107359061220c565b8051610cc6906008906020840190611e2c565b5050565b6000610cd582611822565b5192915050565b6007546001600160a01b03163314610d065760405162461bcd60e51b81526004016107359061220c565b600b55565b60006001600160a01b038216610d775760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610735565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b03163314610dc65760405162461bcd60e51b81526004016107359061220c565b610dd06000611902565b565b6007546001600160a01b03163314610dfc5760405162461bcd60e51b81526004016107359061220c565b600a55565b6007546001600160a01b03163314610e2b5760405162461bcd60e51b81526004016107359061220c565b600e80549115156101000261ff0019909216919091179055565b60606002805461076090612241565b600e5460ff1615610e905760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b6044820152606401610735565b80610e9a60005490565b610ea491906122aa565b600b541015610eea5760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b6044820152606401610735565b60008111610f275760405162461bcd60e51b815260206004820152600a6024820152694e6f2030206d696e747360b01b6044820152606401610735565b80610f3160005490565b610f3b91906122aa565b600c5410610f9a5780600d541015610f955760405162461bcd60e51b815260206004820152601b60248201527f45786365656473206d617820706572207472616e73616374696f6e00000000006044820152606401610735565b611041565b80600d541015610fec5760405162461bcd60e51b815260206004820152601b60248201527f45786365656473206d617820706572207472616e73616374696f6e00000000006044820152606401610735565b600a54610ff990826122c2565b3410156110415760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a5908199d5b991cc81c1c9bdd9a59195960521b6044820152606401610735565b610c093382611954565b336001600160a01b038316036110a35760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610735565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61111a8484846114db565b6111268484848461196e565b6111425760405162461bcd60e51b8152600401610735906122e1565b50505050565b6007546001600160a01b031633146111725760405162461bcd60e51b81526004016107359061220c565b600d55565b6060611184826000541190565b6111c85760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b7103237b2b9903737ba1032bc34b9ba1760591b6044820152606401610735565b600e54610100900460ff16151560000361126e57600980546111e990612241565b80601f016020809104026020016040519081016040528092919081815260200182805461121590612241565b80156112625780601f1061123757610100808354040283529160200191611262565b820191906000526020600020905b81548152906001019060200180831161124557829003601f168201915b50505050509050919050565b60006008805461127d90612241565b9050116112995760405180602001604052806000815250610705565b60086112a483611a6f565b60405180604001604052806005815260200164173539b7b760d91b8152506040516020016112d493929190612350565b60405160208183030381529060405292915050565b6007546001600160a01b031633146113135760405162461bcd60e51b81526004016107359061220c565b600c55565b60405163c455279160e01b81526001600160a01b0383811660048301526000917337cfb7bb56a8a3dbc7c534249d089dcea73392a291841690829063c455279190602401602060405180830381865afa158015611379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139d9190612400565b6001600160a01b0316036113b5576001915050610705565b6001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b949350505050565b6007546001600160a01b031633146114115760405162461bcd60e51b81526004016107359061220c565b6001600160a01b0381166114765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610735565b610c0981611902565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006114e682611822565b80519091506000906001600160a01b0316336001600160a01b0316148061151d575033611512846107e3565b6001600160a01b0316145b8061152f5750815161152f9033611318565b9050806115995760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610735565b846001600160a01b031682600001516001600160a01b03161461160d5760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610735565b6001600160a01b0384166116715760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610735565b611681600084846000015161147f565b6001600160a01b03858116600090815260046020908152604080832080546fffffffffffffffffffffffffffffffff198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255825180840184529182524267ffffffffffffffff9081168386019081528a8752600390955292852091518254945196166001600160e01b031990941693909317600160a01b959092169490940217909255906117469085906122aa565b6000818152600360205260409020549091506001600160a01b03166117d857611770816000541190565b156117d85760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600390935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6040805180820190915260008082526020820152611841826000541190565b6118a05760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610735565b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff1691830191909152156118ef579392505050565b50806118fa8161241d565b9150506118a2565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610cc6828260405180602001604052806000815250611b70565b60006001600160a01b0384163b15611a6457604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906119b2903390899088908890600401612434565b6020604051808303816000875af19250505080156119ed575060408051601f3d908101601f191682019092526119ea91810190612467565b60015b611a4a573d808015611a1b576040519150601f19603f3d011682016040523d82523d6000602084013e611a20565b606091505b508051600003611a425760405162461bcd60e51b8152600401610735906122e1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113df565b506001949350505050565b606081600003611a965750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611ac05780611aaa81612291565b9150611ab99050600a8361249a565b9150611a9a565b60008167ffffffffffffffff811115611adb57611adb61202c565b6040519080825280601f01601f191660200182016040528015611b05576020820181803683370190505b5090505b84156113df57611b1a6001836124ae565b9150611b27600a866124c5565b611b329060306122aa565b60f81b818381518110611b4757611b476124d9565b60200101906001600160f81b031916908160001a905350611b69600a8661249a565b9450611b09565b6000546001600160a01b038416611bd35760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610735565b611bde816000541190565b15611c2b5760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610735565b60008311611c875760405162461bcd60e51b815260206004820152602360248201527f455243373231413a207175616e74697479206d7573742062652067726561746560448201526207220360ec1b6064820152608401610735565b6001600160a01b0384166000908152600460209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190611ce39087906124ef565b6001600160801b03168152602001858360200151611d0191906124ef565b6001600160801b039081169091526001600160a01b0380881660008181526004602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526003909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b85811015611e215760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611de5600088848861196e565b611e015760405162461bcd60e51b8152600401610735906122e1565b81611e0b81612291565b9250508080611e1990612291565b915050611d98565b50600081905561181a565b828054611e3890612241565b90600052602060002090601f016020900481019282611e5a5760008555611ea0565b82601f10611e7357805160ff1916838001178555611ea0565b82800160010185558215611ea0579182015b82811115611ea0578251825591602001919060010190611e85565b50610c859291505b80821115610c855760008155600101611ea8565b6001600160e01b031981168114610c0957600080fd5b600060208284031215611ee457600080fd5b8135611eef81611ebc565b9392505050565b80358015158114611f0657600080fd5b919050565b600060208284031215611f1d57600080fd5b611eef82611ef6565b60005b83811015611f41578181015183820152602001611f29565b838111156111425750506000910152565b60008151808452611f6a816020860160208601611f26565b601f01601f19169290920160200192915050565b602081526000611eef6020830184611f52565b600060208284031215611fa357600080fd5b5035919050565b6001600160a01b0381168114610c0957600080fd5b60008060408385031215611fd257600080fd5b8235611fdd81611faa565b946020939093013593505050565b60008060006060848603121561200057600080fd5b833561200b81611faa565b9250602084013561201b81611faa565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561205d5761205d61202c565b604051601f8501601f19908116603f011681019082821181831017156120855761208561202c565b8160405280935085815286868601111561209e57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156120ca57600080fd5b813567ffffffffffffffff8111156120e157600080fd5b8201601f810184136120f257600080fd5b6113df84823560208401612042565b60006020828403121561211357600080fd5b8135611eef81611faa565b6000806040838503121561213157600080fd5b823561213c81611faa565b915061214a60208401611ef6565b90509250929050565b6000806000806080858703121561216957600080fd5b843561217481611faa565b9350602085013561218481611faa565b925060408501359150606085013567ffffffffffffffff8111156121a757600080fd5b8501601f810187136121b857600080fd5b6121c787823560208401612042565b91505092959194509250565b600080604083850312156121e657600080fd5b82356121f181611faa565b9150602083013561220181611faa565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061225557607f821691505b60208210810361227557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016122a3576122a361227b565b5060010190565b600082198211156122bd576122bd61227b565b500190565b60008160001904831182151516156122dc576122dc61227b565b500290565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60008151612346818560208601611f26565b9290920192915050565b600080855481600182811c91508083168061236c57607f831692505b6020808410820361238b57634e487b7160e01b86526022600452602486fd5b81801561239f57600181146123b0576123dd565b60ff198616895284890196506123dd565b60008c81526020902060005b868110156123d55781548b8201529085019083016123bc565b505084890196505b5050505050506123f66123f08287612334565b85612334565b9695505050505050565b60006020828403121561241257600080fd5b8151611eef81611faa565b60008161242c5761242c61227b565b506000190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123f690830184611f52565b60006020828403121561247957600080fd5b8151611eef81611ebc565b634e487b7160e01b600052601260045260246000fd5b6000826124a9576124a9612484565b500490565b6000828210156124c0576124c061227b565b500390565b6000826124d4576124d4612484565b500690565b634e487b7160e01b600052603260045260246000fd5b60006001600160801b038083168185168083038211156125115761251161227b565b0194935050505056fea2646970667358221220b2b96a1ee1276b0a28612b9d27a5708c1c721526da0b09113cbc6954d0ae790864736f6c634300080e003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5734706d71716e36646465333168476169477064357576793637636f45547352355078754667334e654d4a672f00000000000000000000

Deployed Bytecode

0x60806040526004361061021a5760003560e01c806370a0823111610123578063a22cb465116100ab578063cd7c03261161006f578063cd7c032614610600578063d223a63114610628578063e985e9c514610648578063f2fde38b14610668578063f43a22dc1461068857600080fd5b8063a22cb4651461054f578063b88d4fde1461056f578063c66828621461058f578063c6f6f216146105c0578063c87b56dd146105e057600080fd5b806391b7f5ed116100f257806391b7f5ed146104d1578063940cd05b146104f157806395d89b4114610511578063a035b1fe14610526578063a0712d681461053c57600080fd5b806370a0823114610468578063715018a6146104885780638069876d1461049d5780638da5cb5b146104b357600080fd5b806332cb6b0c116101a6578063518302271161017557806351830227146103cf57806355f804b3146103ee5780635c975abb1461040e5780636352211e146104285780636f8b44b01461044857600080fd5b806332cb6b0c146103645780633ccfd60b1461037a57806342842e0e1461038f5780634f6ccce7146103af57600080fd5b8063081c8c44116101ed578063081c8c44146102d0578063095ea7b3146102e557806318160ddd1461030557806323b872dd146103245780632f745c591461034457600080fd5b806301ffc9a71461021f57806302329a291461025457806306fdde0314610276578063081812fc14610298575b600080fd5b34801561022b57600080fd5b5061023f61023a366004611ed2565b61069e565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b5061027461026f366004611f0b565b61070b565b005b34801561028257600080fd5b5061028b610751565b60405161024b9190611f7e565b3480156102a457600080fd5b506102b86102b3366004611f91565b6107e3565b6040516001600160a01b03909116815260200161024b565b3480156102dc57600080fd5b5061028b61086e565b3480156102f157600080fd5b50610274610300366004611fbf565b6108fc565b34801561031157600080fd5b506000545b60405190815260200161024b565b34801561033057600080fd5b5061027461033f366004611feb565b610a13565b34801561035057600080fd5b5061031661035f366004611fbf565b610a1e565b34801561037057600080fd5b50610316600b5481565b34801561038657600080fd5b50610274610b8a565b34801561039b57600080fd5b506102746103aa366004611feb565b610c0c565b3480156103bb57600080fd5b506103166103ca366004611f91565b610c27565b3480156103db57600080fd5b50600e5461023f90610100900460ff1681565b3480156103fa57600080fd5b506102746104093660046120b8565b610c89565b34801561041a57600080fd5b50600e5461023f9060ff1681565b34801561043457600080fd5b506102b8610443366004611f91565b610cca565b34801561045457600080fd5b50610274610463366004611f91565b610cdc565b34801561047457600080fd5b50610316610483366004612101565b610d0b565b34801561049457600080fd5b50610274610d9c565b3480156104a957600080fd5b50610316600c5481565b3480156104bf57600080fd5b506007546001600160a01b03166102b8565b3480156104dd57600080fd5b506102746104ec366004611f91565b610dd2565b3480156104fd57600080fd5b5061027461050c366004611f0b565b610e01565b34801561051d57600080fd5b5061028b610e45565b34801561053257600080fd5b50610316600a5481565b61027461054a366004611f91565b610e54565b34801561055b57600080fd5b5061027461056a36600461211e565b61104b565b34801561057b57600080fd5b5061027461058a366004612153565b61110f565b34801561059b57600080fd5b5061028b60405180604001604052806005815260200164173539b7b760d91b81525081565b3480156105cc57600080fd5b506102746105db366004611f91565b611148565b3480156105ec57600080fd5b5061028b6105fb366004611f91565b611177565b34801561060c57600080fd5b506102b87337cfb7bb56a8a3dbc7c534249d089dcea73392a281565b34801561063457600080fd5b50610274610643366004611f91565b6112e9565b34801561065457600080fd5b5061023f6106633660046121d3565b611318565b34801561067457600080fd5b50610274610683366004612101565b6113e7565b34801561069457600080fd5b50610316600d5481565b60006001600160e01b031982166380ac58cd60e01b14806106cf57506001600160e01b03198216635b5e139f60e01b145b806106ea57506001600160e01b0319821663780e9d6360e01b145b8061070557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6007546001600160a01b0316331461073e5760405162461bcd60e51b81526004016107359061220c565b60405180910390fd5b600e805460ff1916911515919091179055565b60606001805461076090612241565b80601f016020809104026020016040519081016040528092919081815260200182805461078c90612241565b80156107d95780601f106107ae576101008083540402835291602001916107d9565b820191906000526020600020905b8154815290600101906020018083116107bc57829003601f168201915b5050505050905090565b60006107f0826000541190565b6108525760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b6064820152608401610735565b506000908152600560205260409020546001600160a01b031690565b6009805461087b90612241565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790612241565b80156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b505050505081565b600061090782610cca565b9050806001600160a01b0316836001600160a01b0316036109755760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610735565b336001600160a01b038216148061099157506109918133611318565b610a035760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610735565b610a0e83838361147f565b505050565b610a0e8383836114db565b6000610a2983610d0b565b8210610a825760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610735565b600080549080805b83811015610b2a576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610add57805192505b876001600160a01b0316836001600160a01b031603610b1757868403610b095750935061070592505050565b83610b1381612291565b9450505b5080610b2281612291565b915050610a8a565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610735565b6007546001600160a01b03163314610bb45760405162461bcd60e51b81526004016107359061220c565b604051600090339047908381818185875af1925050503d8060008114610bf6576040519150601f19603f3d011682016040523d82523d6000602084013e610bfb565b606091505b5050905080610c0957600080fd5b50565b610a0e8383836040518060200160405280600081525061110f565b600080548210610c855760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610735565b5090565b6007546001600160a01b03163314610cb35760405162461bcd60e51b81526004016107359061220c565b8051610cc6906008906020840190611e2c565b5050565b6000610cd582611822565b5192915050565b6007546001600160a01b03163314610d065760405162461bcd60e51b81526004016107359061220c565b600b55565b60006001600160a01b038216610d775760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610735565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b03163314610dc65760405162461bcd60e51b81526004016107359061220c565b610dd06000611902565b565b6007546001600160a01b03163314610dfc5760405162461bcd60e51b81526004016107359061220c565b600a55565b6007546001600160a01b03163314610e2b5760405162461bcd60e51b81526004016107359061220c565b600e80549115156101000261ff0019909216919091179055565b60606002805461076090612241565b600e5460ff1615610e905760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b6044820152606401610735565b80610e9a60005490565b610ea491906122aa565b600b541015610eea5760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b6044820152606401610735565b60008111610f275760405162461bcd60e51b815260206004820152600a6024820152694e6f2030206d696e747360b01b6044820152606401610735565b80610f3160005490565b610f3b91906122aa565b600c5410610f9a5780600d541015610f955760405162461bcd60e51b815260206004820152601b60248201527f45786365656473206d617820706572207472616e73616374696f6e00000000006044820152606401610735565b611041565b80600d541015610fec5760405162461bcd60e51b815260206004820152601b60248201527f45786365656473206d617820706572207472616e73616374696f6e00000000006044820152606401610735565b600a54610ff990826122c2565b3410156110415760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a5908199d5b991cc81c1c9bdd9a59195960521b6044820152606401610735565b610c093382611954565b336001600160a01b038316036110a35760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610735565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61111a8484846114db565b6111268484848461196e565b6111425760405162461bcd60e51b8152600401610735906122e1565b50505050565b6007546001600160a01b031633146111725760405162461bcd60e51b81526004016107359061220c565b600d55565b6060611184826000541190565b6111c85760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b7103237b2b9903737ba1032bc34b9ba1760591b6044820152606401610735565b600e54610100900460ff16151560000361126e57600980546111e990612241565b80601f016020809104026020016040519081016040528092919081815260200182805461121590612241565b80156112625780601f1061123757610100808354040283529160200191611262565b820191906000526020600020905b81548152906001019060200180831161124557829003601f168201915b50505050509050919050565b60006008805461127d90612241565b9050116112995760405180602001604052806000815250610705565b60086112a483611a6f565b60405180604001604052806005815260200164173539b7b760d91b8152506040516020016112d493929190612350565b60405160208183030381529060405292915050565b6007546001600160a01b031633146113135760405162461bcd60e51b81526004016107359061220c565b600c55565b60405163c455279160e01b81526001600160a01b0383811660048301526000917337cfb7bb56a8a3dbc7c534249d089dcea73392a291841690829063c455279190602401602060405180830381865afa158015611379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139d9190612400565b6001600160a01b0316036113b5576001915050610705565b6001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b949350505050565b6007546001600160a01b031633146114115760405162461bcd60e51b81526004016107359061220c565b6001600160a01b0381166114765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610735565b610c0981611902565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006114e682611822565b80519091506000906001600160a01b0316336001600160a01b0316148061151d575033611512846107e3565b6001600160a01b0316145b8061152f5750815161152f9033611318565b9050806115995760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610735565b846001600160a01b031682600001516001600160a01b03161461160d5760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610735565b6001600160a01b0384166116715760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610735565b611681600084846000015161147f565b6001600160a01b03858116600090815260046020908152604080832080546fffffffffffffffffffffffffffffffff198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255825180840184529182524267ffffffffffffffff9081168386019081528a8752600390955292852091518254945196166001600160e01b031990941693909317600160a01b959092169490940217909255906117469085906122aa565b6000818152600360205260409020549091506001600160a01b03166117d857611770816000541190565b156117d85760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600390935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6040805180820190915260008082526020820152611841826000541190565b6118a05760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610735565b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff1691830191909152156118ef579392505050565b50806118fa8161241d565b9150506118a2565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610cc6828260405180602001604052806000815250611b70565b60006001600160a01b0384163b15611a6457604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906119b2903390899088908890600401612434565b6020604051808303816000875af19250505080156119ed575060408051601f3d908101601f191682019092526119ea91810190612467565b60015b611a4a573d808015611a1b576040519150601f19603f3d011682016040523d82523d6000602084013e611a20565b606091505b508051600003611a425760405162461bcd60e51b8152600401610735906122e1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113df565b506001949350505050565b606081600003611a965750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611ac05780611aaa81612291565b9150611ab99050600a8361249a565b9150611a9a565b60008167ffffffffffffffff811115611adb57611adb61202c565b6040519080825280601f01601f191660200182016040528015611b05576020820181803683370190505b5090505b84156113df57611b1a6001836124ae565b9150611b27600a866124c5565b611b329060306122aa565b60f81b818381518110611b4757611b476124d9565b60200101906001600160f81b031916908160001a905350611b69600a8661249a565b9450611b09565b6000546001600160a01b038416611bd35760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610735565b611bde816000541190565b15611c2b5760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610735565b60008311611c875760405162461bcd60e51b815260206004820152602360248201527f455243373231413a207175616e74697479206d7573742062652067726561746560448201526207220360ec1b6064820152608401610735565b6001600160a01b0384166000908152600460209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190611ce39087906124ef565b6001600160801b03168152602001858360200151611d0191906124ef565b6001600160801b039081169091526001600160a01b0380881660008181526004602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526003909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b85811015611e215760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611de5600088848861196e565b611e015760405162461bcd60e51b8152600401610735906122e1565b81611e0b81612291565b9250508080611e1990612291565b915050611d98565b50600081905561181a565b828054611e3890612241565b90600052602060002090601f016020900481019282611e5a5760008555611ea0565b82601f10611e7357805160ff1916838001178555611ea0565b82800160010185558215611ea0579182015b82811115611ea0578251825591602001919060010190611e85565b50610c859291505b80821115610c855760008155600101611ea8565b6001600160e01b031981168114610c0957600080fd5b600060208284031215611ee457600080fd5b8135611eef81611ebc565b9392505050565b80358015158114611f0657600080fd5b919050565b600060208284031215611f1d57600080fd5b611eef82611ef6565b60005b83811015611f41578181015183820152602001611f29565b838111156111425750506000910152565b60008151808452611f6a816020860160208601611f26565b601f01601f19169290920160200192915050565b602081526000611eef6020830184611f52565b600060208284031215611fa357600080fd5b5035919050565b6001600160a01b0381168114610c0957600080fd5b60008060408385031215611fd257600080fd5b8235611fdd81611faa565b946020939093013593505050565b60008060006060848603121561200057600080fd5b833561200b81611faa565b9250602084013561201b81611faa565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561205d5761205d61202c565b604051601f8501601f19908116603f011681019082821181831017156120855761208561202c565b8160405280935085815286868601111561209e57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156120ca57600080fd5b813567ffffffffffffffff8111156120e157600080fd5b8201601f810184136120f257600080fd5b6113df84823560208401612042565b60006020828403121561211357600080fd5b8135611eef81611faa565b6000806040838503121561213157600080fd5b823561213c81611faa565b915061214a60208401611ef6565b90509250929050565b6000806000806080858703121561216957600080fd5b843561217481611faa565b9350602085013561218481611faa565b925060408501359150606085013567ffffffffffffffff8111156121a757600080fd5b8501601f810187136121b857600080fd5b6121c787823560208401612042565b91505092959194509250565b600080604083850312156121e657600080fd5b82356121f181611faa565b9150602083013561220181611faa565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061225557607f821691505b60208210810361227557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016122a3576122a361227b565b5060010190565b600082198211156122bd576122bd61227b565b500190565b60008160001904831182151516156122dc576122dc61227b565b500290565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60008151612346818560208601611f26565b9290920192915050565b600080855481600182811c91508083168061236c57607f831692505b6020808410820361238b57634e487b7160e01b86526022600452602486fd5b81801561239f57600181146123b0576123dd565b60ff198616895284890196506123dd565b60008c81526020902060005b868110156123d55781548b8201529085019083016123bc565b505084890196505b5050505050506123f66123f08287612334565b85612334565b9695505050505050565b60006020828403121561241257600080fd5b8151611eef81611faa565b60008161242c5761242c61227b565b506000190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123f690830184611f52565b60006020828403121561247957600080fd5b8151611eef81611ebc565b634e487b7160e01b600052601260045260246000fd5b6000826124a9576124a9612484565b500490565b6000828210156124c0576124c061227b565b500390565b6000826124d4576124d4612484565b500690565b634e487b7160e01b600052603260045260246000fd5b60006001600160801b038083168185168083038211156125115761251161227b565b0194935050505056fea2646970667358221220b2b96a1ee1276b0a28612b9d27a5708c1c721526da0b09113cbc6954d0ae790864736f6c634300080e0033

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5734706d71716e36646465333168476169477064357576793637636f45547352355078754667334e654d4a672f00000000000000000000

-----Decoded View---------------
Arg [0] : _initBaseURI (string): ipfs://QmW4pmqqn6dde31hGaiGpd5uvy67coETsR5PxuFg3NeMJg/

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [2] : 697066733a2f2f516d5734706d71716e36646465333168476169477064357576
Arg [3] : 793637636f45547352355078754667334e654d4a672f00000000000000000000


Deployed Bytecode Sourcemap

20583:3196:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11569:422;;;;;;;;;;-1:-1:-1;11569:422:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;11569:422:0;;;;;;;;22447:79;;;;;;;;;;-1:-1:-1;22447:79:0;;;;;:::i;:::-;;:::i;:::-;;13183:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14402:292::-;;;;;;;;;;-1:-1:-1;14402:292:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2064:32:1;;;2046:51;;2034:2;2019:18;14402:292:0;1900:203:1;20812:28:0;;;;;;;;;;;;;:::i;13981:413::-;;;;;;;;;;-1:-1:-1;13981:413:0;;;;;:::i;:::-;;:::i;10353:100::-;;;;;;;;;;-1:-1:-1;10406:7:0;10433:12;10353:100;;;2710:25:1;;;2698:2;2683:18;10353:100:0;2564:177:1;15243:162:0;;;;;;;;;;-1:-1:-1;15243:162:0;;;;;:::i;:::-;;:::i;10697:864::-;;;;;;;;;;-1:-1:-1;10697:864:0;;;;;:::i;:::-;;:::i;20888:32::-;;;;;;;;;;;;;;;;22255:184;;;;;;;;;;;;;:::i;15413:177::-;;;;;;;;;;-1:-1:-1;15413:177:0;;;;;:::i;:::-;;:::i;10461:228::-;;;;;;;;;;-1:-1:-1;10461:228:0;;;;;:::i;:::-;;:::i;21040:27::-;;;;;;;;;;-1:-1:-1;21040:27:0;;;;;;;;;;;23081:98;;;;;;;;;;-1:-1:-1;23081:98:0;;;;;:::i;:::-;;:::i;21008:25::-;;;;;;;;;;-1:-1:-1;21008:25:0;;;;;;;;13051:124;;;;;;;;;;-1:-1:-1;13051:124:0;;;;;:::i;:::-;;:::i;22722:107::-;;;;;;;;;;-1:-1:-1;22722:107:0;;;;;:::i;:::-;;:::i;11999:258::-;;;;;;;;;;-1:-1:-1;11999:258:0;;;;;:::i;:::-;;:::i;984:103::-;;;;;;;;;;;;;:::i;20927:36::-;;;;;;;;;;;;;;;;761:87;;;;;;;;;;-1:-1:-1;834:6:0;;-1:-1:-1;;;;;834:6:0;761:87;;22624:90;;;;;;;;;;-1:-1:-1;22624:90:0;;;;;:::i;:::-;;:::i;22534:82::-;;;;;;;;;;-1:-1:-1;22534:82:0;;;;;:::i;:::-;;:::i;13291:104::-;;;;;;;;;;;;;:::i;20847:34::-;;;;;;;;;;;;;;;;21216:578;;;;;;:::i;:::-;;:::i;14702:311::-;;;;;;;;;;-1:-1:-1;14702:311:0;;;;;:::i;:::-;;:::i;15598:355::-;;;;;;;;;;-1:-1:-1;15598:355:0;;;;;:::i;:::-;;:::i;20631:46::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;20631:46:0;;;;;22969:104;;;;;;;;;;-1:-1:-1;22969:104:0;;;;;:::i;:::-;;:::i;23187:589::-;;;;;;;;;;-1:-1:-1;23187:589:0;;;;;:::i;:::-;;:::i;20684:98::-;;;;;;;;;;;;20740:42;20684:98;;22837:124;;;;;;;;;;-1:-1:-1;22837:124:0;;;;;:::i;:::-;;:::i;21802:445::-;;;;;;;;;;-1:-1:-1;21802:445:0;;;;;:::i;:::-;;:::i;1095:238::-;;;;;;;;;;-1:-1:-1;1095:238:0;;;;;:::i;:::-;;:::i;20970:29::-;;;;;;;;;;;;;;;;11569:422;11716:4;-1:-1:-1;;;;;;11758:40:0;;-1:-1:-1;;;11758:40:0;;:105;;-1:-1:-1;;;;;;;11815:48:0;;-1:-1:-1;;;11815:48:0;11758:105;:172;;;-1:-1:-1;;;;;;;11880:50:0;;-1:-1:-1;;;11880:50:0;11758:172;:225;;;-1:-1:-1;;;;;;;;;;9442:40:0;;;11947:36;11738:245;11569:422;-1:-1:-1;;11569:422:0:o;22447:79::-;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;;;;;;;;;22503:6:::1;:15:::0;;-1:-1:-1;;22503:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22447:79::o;13183:100::-;13237:13;13270:5;13263:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13183:100;:::o;14402:292::-;14506:7;14553:16;14561:7;16018:4;16052:12;-1:-1:-1;16042:22:0;15961:111;14553:16;14531:111;;;;-1:-1:-1;;;14531:111:0;;7145:2:1;14531:111:0;;;7127:21:1;7184:2;7164:18;;;7157:30;7223:34;7203:18;;;7196:62;-1:-1:-1;;;7274:18:1;;;7267:43;7327:19;;14531:111:0;6943:409:1;14531:111:0;-1:-1:-1;14662:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;14662:24:0;;14402:292::o;20812:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13981:413::-;14054:13;14070:24;14086:7;14070:15;:24::i;:::-;14054:40;;14119:5;-1:-1:-1;;;;;14113:11:0;:2;-1:-1:-1;;;;;14113:11:0;;14105:58;;;;-1:-1:-1;;;14105:58:0;;7559:2:1;14105:58:0;;;7541:21:1;7598:2;7578:18;;;7571:30;7637:34;7617:18;;;7610:62;-1:-1:-1;;;7688:18:1;;;7681:32;7730:19;;14105:58:0;7357:398:1;14105:58:0;362:10;-1:-1:-1;;;;;14198:21:0;;;;:62;;-1:-1:-1;14223:37:0;14240:5;362:10;21802:445;:::i;14223:37::-;14176:169;;;;-1:-1:-1;;;14176:169:0;;7962:2:1;14176:169:0;;;7944:21:1;8001:2;7981:18;;;7974:30;8040:34;8020:18;;;8013:62;8111:27;8091:18;;;8084:55;8156:19;;14176:169:0;7760:421:1;14176:169:0;14358:28;14367:2;14371:7;14380:5;14358:8;:28::i;:::-;14043:351;13981:413;;:::o;15243:162::-;15369:28;15379:4;15385:2;15389:7;15369:9;:28::i;10697:864::-;10822:7;10863:16;10873:5;10863:9;:16::i;:::-;10855:5;:24;10847:71;;;;-1:-1:-1;;;10847:71:0;;8388:2:1;10847:71:0;;;8370:21:1;8427:2;8407:18;;;8400:30;8466:34;8446:18;;;8439:62;-1:-1:-1;;;8517:18:1;;;8510:32;8559:19;;10847:71:0;8186:398:1;10847:71:0;10929:22;10433:12;;;10929:22;;11061:426;11085:14;11081:1;:18;11061:426;;;11121:31;11155:14;;;:11;:14;;;;;;;;;11121:48;;;;;;;;;-1:-1:-1;;;;;11121:48:0;;;;;-1:-1:-1;;;11121:48:0;;;;;;;;;;;;11188:28;11184:103;;11257:14;;;-1:-1:-1;11184:103:0;11326:5;-1:-1:-1;;;;;11305:26:0;:17;-1:-1:-1;;;;;11305:26:0;;11301:175;;11371:5;11356:11;:20;11352:77;;-1:-1:-1;11408:1:0;-1:-1:-1;11401:8:0;;-1:-1:-1;;;11401:8:0;11352:77;11447:13;;;;:::i;:::-;;;;11301:175;-1:-1:-1;11101:3:0;;;;:::i;:::-;;;;11061:426;;;-1:-1:-1;11497:56:0;;-1:-1:-1;;;11497:56:0;;9063:2:1;11497:56:0;;;9045:21:1;9102:2;9082:18;;;9075:30;9141:34;9121:18;;;9114:62;-1:-1:-1;;;9192:18:1;;;9185:44;9246:19;;11497:56:0;8861:410:1;22255:184:0;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;22322:82:::1;::::0;22304:12:::1;::::0;22330:10:::1;::::0;22368:21:::1;::::0;22304:12;22322:82;22304:12;22322:82;22368:21;22330:10;22322:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22303:101;;;22423:7;22415:16;;;::::0;::::1;;22292:147;22255:184::o:0;15413:177::-;15543:39;15560:4;15566:2;15570:7;15543:39;;;;;;;;;;;;:16;:39::i;10461:228::-;10564:7;10433:12;;10597:5;:21;10589:69;;;;-1:-1:-1;;;10589:69:0;;9688:2:1;10589:69:0;;;9670:21:1;9727:2;9707:18;;;9700:30;9766:34;9746:18;;;9739:62;-1:-1:-1;;;9817:18:1;;;9810:33;9860:19;;10589:69:0;9486:399:1;10589:69:0;-1:-1:-1;10676:5:0;10461:228::o;23081:98::-;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;23153:18;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;23081:98:::0;:::o;13051:124::-;13115:7;13142:20;13154:7;13142:11;:20::i;:::-;:25;;13051:124;-1:-1:-1;;13051:124:0:o;22722:107::-;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;22795:10:::1;:26:::0;22722:107::o;11999:258::-;12063:7;-1:-1:-1;;;;;12105:19:0;;12083:112;;;;-1:-1:-1;;;12083:112:0;;10092:2:1;12083:112:0;;;10074:21:1;10131:2;10111:18;;;10104:30;10170:34;10150:18;;;10143:62;-1:-1:-1;;;10221:18:1;;;10214:41;10272:19;;12083:112:0;9890:407:1;12083:112:0;-1:-1:-1;;;;;;12221:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;12221:27:0;;11999:258::o;984:103::-;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;1049:30:::1;1076:1;1049:18;:30::i;:::-;984:103::o:0;22624:90::-;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;22689:5:::1;:17:::0;22624:90::o;22534:82::-;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;22591:8:::1;:17:::0;;;::::1;;;;-1:-1:-1::0;;22591:17:0;;::::1;::::0;;;::::1;::::0;;22534:82::o;13291:104::-;13347:13;13380:7;13373:14;;;;;:::i;21216:578::-;21282:6;;;;21281:7;21273:26;;;;-1:-1:-1;;;21273:26:0;;10504:2:1;21273:26:0;;;10486:21:1;10543:1;10523:18;;;10516:29;-1:-1:-1;;;10561:18:1;;;10554:36;10607:18;;21273:26:0;10302:329:1;21273:26:0;21348:7;21332:13;10406:7;10433:12;;10353:100;21332:13;:23;;;;:::i;:::-;21318:10;;:37;;21310:68;;;;-1:-1:-1;;;21310:68:0;;10971:2:1;21310:68:0;;;10953:21:1;11010:2;10990:18;;;10983:30;-1:-1:-1;;;11029:18:1;;;11022:48;11087:18;;21310:68:0;10769:342:1;21310:68:0;21407:1;21397:7;:11;21389:34;;;;-1:-1:-1;;;21389:34:0;;11318:2:1;21389:34:0;;;11300:21:1;11357:2;11337:18;;;11330:30;-1:-1:-1;;;11376:18:1;;;11369:40;11426:18;;21389:34:0;11116:334:1;21389:34:0;21475:7;21459:13;10406:7;10433:12;;10353:100;21459:13;:23;;;;:::i;:::-;21440:15;;:42;21436:308;;21521:7;21507:10;;:21;;21499:61;;;;-1:-1:-1;;;21499:61:0;;11657:2:1;21499:61:0;;;11639:21:1;11696:2;11676:18;;;11669:30;11735:29;11715:18;;;11708:57;11782:18;;21499:61:0;11455:351:1;21499:61:0;21436:308;;;21615:7;21601:10;;:21;;21593:61;;;;-1:-1:-1;;;21593:61:0;;11657:2:1;21593:61:0;;;11639:21:1;11696:2;11676:18;;;11669:30;11735:29;11715:18;;;11708:57;11782:18;;21593:61:0;11455:351:1;21593:61:0;21700:5;;21690:15;;:7;:15;:::i;:::-;21677:9;:28;;21669:63;;;;-1:-1:-1;;;21669:63:0;;12186:2:1;21669:63:0;;;12168:21:1;12225:2;12205:18;;;12198:30;-1:-1:-1;;;12244:18:1;;;12237:52;12306:18;;21669:63:0;11984:346:1;21669:63:0;21756:30;21766:10;21778:7;21756:9;:30::i;14702:311::-;362:10;-1:-1:-1;;;;;14820:24:0;;;14812:63;;;;-1:-1:-1;;;14812:63:0;;12537:2:1;14812:63:0;;;12519:21:1;12576:2;12556:18;;;12549:30;12615:28;12595:18;;;12588:56;12661:18;;14812:63:0;12335:350:1;14812:63:0;362:10;14888:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;14888:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;14888:53:0;;;;;;;;;;14957:48;;540:41:1;;;14888:42:0;;362:10;14957:48;;513:18:1;14957:48:0;;;;;;;14702:311;;:::o;15598:355::-;15757:28;15767:4;15773:2;15777:7;15757:9;:28::i;:::-;15818:48;15841:4;15847:2;15851:7;15860:5;15818:22;:48::i;:::-;15796:149;;;;-1:-1:-1;;;15796:149:0;;;;;;;:::i;:::-;15598:355;;;;:::o;22969:104::-;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;23040:10:::1;:25:::0;22969:104::o;23187:589::-;23289:13;23328:17;23336:8;16018:4;16052:12;-1:-1:-1;16042:22:0;15961:111;23328:17;23320:51;;;;-1:-1:-1;;;23320:51:0;;13312:2:1;23320:51:0;;;13294:21:1;13351:2;13331:18;;;13324:30;-1:-1:-1;;;13370:18:1;;;13363:51;13431:18;;23320:51:0;13110:345:1;23320:51:0;23388:8;;;;;;;:17;;23400:5;23388:17;23384:71;;23429:14;23422:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23187:589;;;:::o;23384:71::-;23511:1;23493:7;23487:21;;;;;:::i;:::-;;;:25;:281;;;;;;;;;;;;;;;;;23604:7;23638:26;23655:8;23638:16;:26::i;:::-;23691:13;;;;;;;;;;;;;-1:-1:-1;;;23691:13:0;;;23561:166;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23467:301;23187:589;-1:-1:-1;;23187:589:0:o;22837:124::-;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;22918:15:::1;:35:::0;22837:124::o;21802:445::-;22100:28;;-1:-1:-1;;;22100:28:0;;-1:-1:-1;;;;;2064:32:1;;;22100:28:0;;;2046:51:1;21927:4:0;;20740:42;;22092:49;;;20740:42;;22100:21;;2019:18:1;;22100:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22092:49:0;;22088:93;;22165:4;22158:11;;;;;22088:93;-1:-1:-1;;;;;15192:25:0;;;15163:4;15192:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;22200:39;22193:46;21802:445;-1:-1:-1;;;;21802:445:0:o;1095:238::-;834:6;;-1:-1:-1;;;;;834:6:0;362:10;896:23;888:68;;;;-1:-1:-1;;;888:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1198:22:0;::::1;1176:110;;;::::0;-1:-1:-1;;;1176:110:0;;15517:2:1;1176:110:0::1;::::0;::::1;15499:21:1::0;15556:2;15536:18;;;15529:30;15595:34;15575:18;;;15568:62;-1:-1:-1;;;15646:18:1;;;15639:36;15692:19;;1176:110:0::1;15315:402:1::0;1176:110:0::1;1297:28;1316:8;1297:18;:28::i;19054:196::-:0;19169:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;19169:29:0;-1:-1:-1;;;;;19169:29:0;;;;;;;;;19214:28;;19169:24;;19214:28;;;;;;;19054:196;;;:::o;17464:1472::-;17579:35;17617:20;17629:7;17617:11;:20::i;:::-;17692:18;;17579:58;;-1:-1:-1;17650:22:0;;-1:-1:-1;;;;;17676:34:0;362:10;-1:-1:-1;;;;;17676:34:0;;:87;;;-1:-1:-1;362:10:0;17727:20;17739:7;17727:11;:20::i;:::-;-1:-1:-1;;;;;17727:36:0;;17676:87;:154;;;-1:-1:-1;17797:18:0;;17780:50;;362:10;21802:445;:::i;17780:50::-;17650:181;;17866:17;17844:117;;;;-1:-1:-1;;;17844:117:0;;15924:2:1;17844:117:0;;;15906:21:1;15963:2;15943:18;;;15936:30;16002:34;15982:18;;;15975:62;-1:-1:-1;;;16053:18:1;;;16046:48;16111:19;;17844:117:0;15722:414:1;17844:117:0;18018:4;-1:-1:-1;;;;;17996:26:0;:13;:18;;;-1:-1:-1;;;;;17996:26:0;;17974:114;;;;-1:-1:-1;;;17974:114:0;;16343:2:1;17974:114:0;;;16325:21:1;16382:2;16362:18;;;16355:30;16421:34;16401:18;;;16394:62;-1:-1:-1;;;16472:18:1;;;16465:36;16518:19;;17974:114:0;16141:402:1;17974:114:0;-1:-1:-1;;;;;18107:16:0;;18099:66;;;;-1:-1:-1;;;18099:66:0;;16750:2:1;18099:66:0;;;16732:21:1;16789:2;16769:18;;;16762:30;16828:34;16808:18;;;16801:62;-1:-1:-1;;;16879:18:1;;;16872:35;16924:19;;18099:66:0;16548:401:1;18099:66:0;18234:49;18251:1;18255:7;18264:13;:18;;;18234:8;:49::i;:::-;-1:-1:-1;;;;;18321:18:0;;;;;;;:12;:18;;;;;;;;:31;;-1:-1:-1;;18321:31:0;;;-1:-1:-1;;;;;18321:31:0;;;-1:-1:-1;;18321:31:0;;;;;;;18367:16;;;;;;;;;:29;;;;;;;;-1:-1:-1;18367:29:0;;;;;;;;;;;;;18443:43;;;;;;;;;;18469:15;18443:43;;;;;;;;;;18420:20;;;:11;:20;;;;;;:66;;;;;;;;-1:-1:-1;;;;;;18420:66:0;;;;;;;-1:-1:-1;;;18420:66:0;;;;;;;;;;;;18321:18;18521:11;;18420:20;;18521:11;:::i;:::-;18588:1;18547:24;;;:11;:24;;;;;:29;18499:33;;-1:-1:-1;;;;;;18547:29:0;18543:288;;18611:20;18619:11;16018:4;16052:12;-1:-1:-1;16042:22:0;15961:111;18611:20;18607:213;;;18679:125;;;;;;;;18716:18;;-1:-1:-1;;;;;18679:125:0;;;;;;18757:28;;;;18679:125;;;;;;;;;;-1:-1:-1;18652:24:0;;;:11;:24;;;;;;;:152;;;;;;;;;-1:-1:-1;;;18652:152:0;-1:-1:-1;;;;;;18652:152:0;;;;;;;;;;;;18607:213;18867:7;18863:2;-1:-1:-1;;;;;18848:27:0;18857:4;-1:-1:-1;;;;;18848:27:0;;;;;;;;;;;18886:42;17568:1368;;;17464:1472;;;:::o;12539:504::-;-1:-1:-1;;;;;;;;;;;;;;;;;12674:16:0;12682:7;16018:4;16052:12;-1:-1:-1;16042:22:0;15961:111;12674:16;12666:71;;;;-1:-1:-1;;;12666:71:0;;17156:2:1;12666:71:0;;;17138:21:1;17195:2;17175:18;;;17168:30;17234:34;17214:18;;;17207:62;-1:-1:-1;;;17285:18:1;;;17278:40;17335:19;;12666:71:0;16954:406:1;12666:71:0;12770:7;12750:216;12804:31;12838:17;;;:11;:17;;;;;;;;;12804:51;;;;;;;;;-1:-1:-1;;;;;12804:51:0;;;;;-1:-1:-1;;;12804:51:0;;;;;;;;;;;;12874:28;12870:85;;12930:9;12539:504;-1:-1:-1;;;12539:504:0:o;12870:85::-;-1:-1:-1;12781:6:0;;;;:::i;:::-;;;;12750:216;;1341:191;1434:6;;;-1:-1:-1;;;;;1451:17:0;;;-1:-1:-1;;;;;;1451:17:0;;;;;;;1484:40;;1434:6;;;1451:17;1434:6;;1484:40;;1415:16;;1484:40;1404:128;1341:191;:::o;16080:104::-;16149:27;16159:2;16163:8;16149:27;;;;;;;;;;;;:9;:27::i;19258:985::-;19413:4;-1:-1:-1;;;;;19434:13:0;;5391:20;5439:8;19430:806;;19487:175;;-1:-1:-1;;;19487:175:0;;-1:-1:-1;;;;;19487:36:0;;;;;:175;;362:10;;19581:4;;19608:7;;19638:5;;19487:175;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19487:175:0;;;;;;;;-1:-1:-1;;19487:175:0;;;;;;;;;;;;:::i;:::-;;;19466:715;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19849:6;:13;19866:1;19849:18;19845:321;;19892:109;;-1:-1:-1;;;19892:109:0;;;;;;;:::i;19845:321::-;20116:6;20110:13;20101:6;20097:2;20093:15;20086:38;19466:715;-1:-1:-1;;;;;;19726:55:0;-1:-1:-1;;;19726:55:0;;-1:-1:-1;19719:62:0;;19430:806;-1:-1:-1;20220:4:0;19258:985;;;;;;:::o;1629:534::-;1685:13;1717:5;1726:1;1717:10;1713:53;;-1:-1:-1;;1744:10:0;;;;;;;;;;;;-1:-1:-1;;;1744:10:0;;;;;1629:534::o;1713:53::-;1791:5;1776:12;1832:78;1839:9;;1832:78;;1865:8;;;;:::i;:::-;;-1:-1:-1;1888:10:0;;-1:-1:-1;1896:2:0;1888:10;;:::i;:::-;;;1832:78;;;1920:19;1952:6;1942:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1942:17:0;;1920:39;;1970:154;1977:10;;1970:154;;2004:11;2014:1;2004:11;;:::i;:::-;;-1:-1:-1;2073:10:0;2081:2;2073:5;:10;:::i;:::-;2060:24;;:2;:24;:::i;:::-;2047:39;;2030:6;2037;2030:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;2030:56:0;;;;;;;;-1:-1:-1;2101:11:0;2110:2;2101:11;;:::i;:::-;;;1970:154;;16192:1264;16315:20;16338:12;-1:-1:-1;;;;;16369:16:0;;16361:62;;;;-1:-1:-1;;;16361:62:0;;19519:2:1;16361:62:0;;;19501:21:1;19558:2;19538:18;;;19531:30;19597:34;19577:18;;;19570:62;-1:-1:-1;;;19648:18:1;;;19641:31;19689:19;;16361:62:0;19317:397:1;16361:62:0;16443:21;16451:12;16018:4;16052:12;-1:-1:-1;16042:22:0;15961:111;16443:21;16442:22;16434:64;;;;-1:-1:-1;;;16434:64:0;;19921:2:1;16434:64:0;;;19903:21:1;19960:2;19940:18;;;19933:30;19999:31;19979:18;;;19972:59;20048:18;;16434:64:0;19719:353:1;16434:64:0;16528:1;16517:8;:12;16509:60;;;;-1:-1:-1;;;16509:60:0;;20279:2:1;16509:60:0;;;20261:21:1;20318:2;20298:18;;;20291:30;20357:34;20337:18;;;20330:62;-1:-1:-1;;;20408:18:1;;;20401:33;20451:19;;16509:60:0;20077:399:1;16509:60:0;-1:-1:-1;;;;;16689:16:0;;16656:30;16689:16;;;:12;:16;;;;;;;;;16656:49;;;;;;;;;-1:-1:-1;;;;;16656:49:0;;;;;-1:-1:-1;;;16656:49:0;;;;;;;;;;;16735:135;;;;;;;;16761:19;;16656:49;;16735:135;;;16761:39;;16791:8;;16761:39;:::i;:::-;-1:-1:-1;;;;;16735:135:0;;;;;16850:8;16815:11;:24;;;:44;;;;:::i;:::-;-1:-1:-1;;;;;16735:135:0;;;;;;-1:-1:-1;;;;;16716:16:0;;;;;;;:12;:16;;;;;;;;:154;;;;;;;;-1:-1:-1;;;16716:154:0;;;;;;;;;;;;16909:43;;;;;;;;;;;16935:15;16909:43;;;;;;;;16881:25;;;:11;:25;;;;;;:71;;;;;;;;;-1:-1:-1;;;16881:71:0;-1:-1:-1;;;;;;16881:71:0;;;;;;;;;;;;;;;;;;16893:12;;17013:325;17037:8;17033:1;:12;17013:325;;;17072:38;;17097:12;;-1:-1:-1;;;;;17072:38:0;;;17089:1;;17072:38;;17089:1;;17072:38;17151:59;17182:1;17186:2;17190:12;17204:5;17151:22;:59::i;:::-;17125:172;;;;-1:-1:-1;;;17125:172:0;;;;;;;:::i;:::-;17312:14;;;;:::i;:::-;;;;17047:3;;;;;:::i;:::-;;;;17013:325;;;-1:-1:-1;17350:12:0;:27;;;17388:60;15598:355;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:1:o;592:160::-;657:20;;713:13;;706:21;696:32;;686:60;;742:1;739;732:12;686:60;592:160;;;:::o;757:180::-;813:6;866:2;854:9;845:7;841:23;837:32;834:52;;;882:1;879;872:12;834:52;905:26;921:9;905:26;:::i;942:258::-;1014:1;1024:113;1038:6;1035:1;1032:13;1024:113;;;1114:11;;;1108:18;1095:11;;;1088:39;1060:2;1053:10;1024:113;;;1155:6;1152:1;1149:13;1146:48;;;-1:-1:-1;;1190:1:1;1172:16;;1165:27;942:258::o;1205:269::-;1258:3;1296:5;1290:12;1323:6;1318:3;1311:19;1339:63;1395:6;1388:4;1383:3;1379:14;1372:4;1365:5;1361:16;1339:63;:::i;:::-;1456:2;1435:15;-1:-1:-1;;1431:29:1;1422:39;;;;1463:4;1418:50;;1205:269;-1:-1:-1;;1205:269:1:o;1479:231::-;1628:2;1617:9;1610:21;1591:4;1648:56;1700:2;1689:9;1685:18;1677:6;1648:56;:::i;1715:180::-;1774:6;1827:2;1815:9;1806:7;1802:23;1798:32;1795:52;;;1843:1;1840;1833:12;1795:52;-1:-1:-1;1866:23:1;;1715:180;-1:-1:-1;1715:180:1:o;2108:131::-;-1:-1:-1;;;;;2183:31:1;;2173:42;;2163:70;;2229:1;2226;2219:12;2244:315;2312:6;2320;2373:2;2361:9;2352:7;2348:23;2344:32;2341:52;;;2389:1;2386;2379:12;2341:52;2428:9;2415:23;2447:31;2472:5;2447:31;:::i;:::-;2497:5;2549:2;2534:18;;;;2521:32;;-1:-1:-1;;;2244:315:1:o;2746:456::-;2823:6;2831;2839;2892:2;2880:9;2871:7;2867:23;2863:32;2860:52;;;2908:1;2905;2898:12;2860:52;2947:9;2934:23;2966:31;2991:5;2966:31;:::i;:::-;3016:5;-1:-1:-1;3073:2:1;3058:18;;3045:32;3086:33;3045:32;3086:33;:::i;:::-;2746:456;;3138:7;;-1:-1:-1;;;3192:2:1;3177:18;;;;3164:32;;2746:456::o;3207:127::-;3268:10;3263:3;3259:20;3256:1;3249:31;3299:4;3296:1;3289:15;3323:4;3320:1;3313:15;3339:632;3404:5;3434:18;3475:2;3467:6;3464:14;3461:40;;;3481:18;;:::i;:::-;3556:2;3550:9;3524:2;3610:15;;-1:-1:-1;;3606:24:1;;;3632:2;3602:33;3598:42;3586:55;;;3656:18;;;3676:22;;;3653:46;3650:72;;;3702:18;;:::i;:::-;3742:10;3738:2;3731:22;3771:6;3762:15;;3801:6;3793;3786:22;3841:3;3832:6;3827:3;3823:16;3820:25;3817:45;;;3858:1;3855;3848:12;3817:45;3908:6;3903:3;3896:4;3888:6;3884:17;3871:44;3963:1;3956:4;3947:6;3939;3935:19;3931:30;3924:41;;;;3339:632;;;;;:::o;3976:451::-;4045:6;4098:2;4086:9;4077:7;4073:23;4069:32;4066:52;;;4114:1;4111;4104:12;4066:52;4154:9;4141:23;4187:18;4179:6;4176:30;4173:50;;;4219:1;4216;4209:12;4173:50;4242:22;;4295:4;4287:13;;4283:27;-1:-1:-1;4273:55:1;;4324:1;4321;4314:12;4273:55;4347:74;4413:7;4408:2;4395:16;4390:2;4386;4382:11;4347:74;:::i;4432:247::-;4491:6;4544:2;4532:9;4523:7;4519:23;4515:32;4512:52;;;4560:1;4557;4550:12;4512:52;4599:9;4586:23;4618:31;4643:5;4618:31;:::i;4684:315::-;4749:6;4757;4810:2;4798:9;4789:7;4785:23;4781:32;4778:52;;;4826:1;4823;4816:12;4778:52;4865:9;4852:23;4884:31;4909:5;4884:31;:::i;:::-;4934:5;-1:-1:-1;4958:35:1;4989:2;4974:18;;4958:35;:::i;:::-;4948:45;;4684:315;;;;;:::o;5004:795::-;5099:6;5107;5115;5123;5176:3;5164:9;5155:7;5151:23;5147:33;5144:53;;;5193:1;5190;5183:12;5144:53;5232:9;5219:23;5251:31;5276:5;5251:31;:::i;:::-;5301:5;-1:-1:-1;5358:2:1;5343:18;;5330:32;5371:33;5330:32;5371:33;:::i;:::-;5423:7;-1:-1:-1;5477:2:1;5462:18;;5449:32;;-1:-1:-1;5532:2:1;5517:18;;5504:32;5559:18;5548:30;;5545:50;;;5591:1;5588;5581:12;5545:50;5614:22;;5667:4;5659:13;;5655:27;-1:-1:-1;5645:55:1;;5696:1;5693;5686:12;5645:55;5719:74;5785:7;5780:2;5767:16;5762:2;5758;5754:11;5719:74;:::i;:::-;5709:84;;;5004:795;;;;;;;:::o;5804:388::-;5872:6;5880;5933:2;5921:9;5912:7;5908:23;5904:32;5901:52;;;5949:1;5946;5939:12;5901:52;5988:9;5975:23;6007:31;6032:5;6007:31;:::i;:::-;6057:5;-1:-1:-1;6114:2:1;6099:18;;6086:32;6127:33;6086:32;6127:33;:::i;:::-;6179:7;6169:17;;;5804:388;;;;;:::o;6197:356::-;6399:2;6381:21;;;6418:18;;;6411:30;6477:34;6472:2;6457:18;;6450:62;6544:2;6529:18;;6197:356::o;6558:380::-;6637:1;6633:12;;;;6680;;;6701:61;;6755:4;6747:6;6743:17;6733:27;;6701:61;6808:2;6800:6;6797:14;6777:18;6774:38;6771:161;;6854:10;6849:3;6845:20;6842:1;6835:31;6889:4;6886:1;6879:15;6917:4;6914:1;6907:15;6771:161;;6558:380;;;:::o;8589:127::-;8650:10;8645:3;8641:20;8638:1;8631:31;8681:4;8678:1;8671:15;8705:4;8702:1;8695:15;8721:135;8760:3;8781:17;;;8778:43;;8801:18;;:::i;:::-;-1:-1:-1;8848:1:1;8837:13;;8721:135::o;10636:128::-;10676:3;10707:1;10703:6;10700:1;10697:13;10694:39;;;10713:18;;:::i;:::-;-1:-1:-1;10749:9:1;;10636:128::o;11811:168::-;11851:7;11917:1;11913;11909:6;11905:14;11902:1;11899:21;11894:1;11887:9;11880:17;11876:45;11873:71;;;11924:18;;:::i;:::-;-1:-1:-1;11964:9:1;;11811:168::o;12690:415::-;12892:2;12874:21;;;12931:2;12911:18;;;12904:30;12970:34;12965:2;12950:18;;12943:62;-1:-1:-1;;;13036:2:1;13021:18;;13014:49;13095:3;13080:19;;12690:415::o;13586:185::-;13628:3;13666:5;13660:12;13681:52;13726:6;13721:3;13714:4;13707:5;13703:16;13681:52;:::i;:::-;13749:16;;;;;13586:185;-1:-1:-1;;13586:185:1:o;13776:1249::-;14000:3;14029:1;14062:6;14056:13;14092:3;14114:1;14142:9;14138:2;14134:18;14124:28;;14202:2;14191:9;14187:18;14224;14214:61;;14268:4;14260:6;14256:17;14246:27;;14214:61;14294:2;14342;14334:6;14331:14;14311:18;14308:38;14305:165;;-1:-1:-1;;;14369:33:1;;14425:4;14422:1;14415:15;14455:4;14376:3;14443:17;14305:165;14486:18;14513:104;;;;14631:1;14626:320;;;;14479:467;;14513:104;-1:-1:-1;;14546:24:1;;14534:37;;14591:16;;;;-1:-1:-1;14513:104:1;;14626:320;13533:1;13526:14;;;13570:4;13557:18;;14721:1;14735:165;14749:6;14746:1;14743:13;14735:165;;;14827:14;;14814:11;;;14807:35;14870:16;;;;14764:10;;14735:165;;;14739:3;;14929:6;14924:3;14920:16;14913:23;;14479:467;;;;;;;14962:57;14988:30;15014:3;15006:6;14988:30;:::i;:::-;14980:6;14962:57;:::i;:::-;14955:64;13776:1249;-1:-1:-1;;;;;;13776:1249:1:o;15030:280::-;15129:6;15182:2;15170:9;15161:7;15157:23;15153:32;15150:52;;;15198:1;15195;15188:12;15150:52;15230:9;15224:16;15249:31;15274:5;15249:31;:::i;17365:136::-;17404:3;17432:5;17422:39;;17441:18;;:::i;:::-;-1:-1:-1;;;17477:18:1;;17365:136::o;17922:500::-;-1:-1:-1;;;;;18191:15:1;;;18173:34;;18243:15;;18238:2;18223:18;;18216:43;18290:2;18275:18;;18268:34;;;18338:3;18333:2;18318:18;;18311:31;;;18116:4;;18359:57;;18396:19;;18388:6;18359:57;:::i;18427:249::-;18496:6;18549:2;18537:9;18528:7;18524:23;18520:32;18517:52;;;18565:1;18562;18555:12;18517:52;18597:9;18591:16;18616:30;18640:5;18616:30;:::i;18681:127::-;18742:10;18737:3;18733:20;18730:1;18723:31;18773:4;18770:1;18763:15;18797:4;18794:1;18787:15;18813:120;18853:1;18879;18869:35;;18884:18;;:::i;:::-;-1:-1:-1;18918:9:1;;18813:120::o;18938:125::-;18978:4;19006:1;19003;19000:8;18997:34;;;19011:18;;:::i;:::-;-1:-1:-1;19048:9:1;;18938:125::o;19068:112::-;19100:1;19126;19116:35;;19131:18;;:::i;:::-;-1:-1:-1;19165:9:1;;19068:112::o;19185:127::-;19246:10;19241:3;19237:20;19234:1;19227:31;19277:4;19274:1;19267:15;19301:4;19298:1;19291:15;20481:253;20521:3;-1:-1:-1;;;;;20610:2:1;20607:1;20603:10;20640:2;20637:1;20633:10;20671:3;20667:2;20663:12;20658:3;20655:21;20652:47;;;20679:18;;:::i;:::-;20715:13;;20481:253;-1:-1:-1;;;;20481:253:1:o

Swarm Source

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