ETH Price: $3,458.71 (-1.79%)
Gas: 3 Gwei

Token

Bubbleworld Executive Founders Pass (Bubbleworld Executive Founders Pass)
 

Overview

Max Total Supply

60 Bubbleworld Executive Founders Pass

Holders

6

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 Bubbleworld Executive Founders Pass
0x9E7e99D56F8CAdB8fDe5956bc1C9B9ab1550eD2F
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:
BubblehouseNFT4

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
constantinople EvmVersion
File 1 of 1 : BubblehouseNFTV4.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;

// Used to delegate ownership of a contract to another address, to save on unneeded transactions to approve contract use for users
interface IOpenSeaProxyRegistry {
    function proxies(address wallet) external view returns (address proxy);
}

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, bytes calldata data) external;
    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 setApprovalForAll(address operator, bool _approved) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

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

contract BubblehouseNFT4 is IERC165, IERC721, IERC721Metadata {

    bytes32 private constant _TRANSFER_EVENT_SIGNATURE =
        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef; // keccak256(bytes("Transfer(address,address,uint256)"))

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to); // ERC2309

    // only non-obvious errors are returned; obvious error conditions just call revert()
    error TokenBurned();
    error TransferFromIncorrectOwner();
    error TransferToContractForbidden();
    error OverSupplyLimit();

    string private _name;
    string private _symbol;
    string private _baseMetadataURI;

    address private _contractOwner; // assigns minter and operator, and adjusts other global settings
    address private _minter; // the only entity that can mint
    address private _bubblehouseOperator; // implicitly approved to transfer from all wallets
    address private _openSeaProxyRegistryAddress; // implicitly approved to transfer from all wallets
   
    // Token state bit layout:
    // - [0..159]   `addr`
    // - [224]      `burned`
    // - [225]      `nextInitialized`
    mapping(uint256 => uint256) private _tokenStates;
    uint256 private constant _BITMASK_BURNED = 1 << 224;
    uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;
    uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;
    uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;
    uint256 private constant _BITMASK_BURNED_AND_NEXT_INITIALIZED = (1 << 224) | (1 << 225);

    mapping(address => uint256) private _walletBalances;
    mapping(address => mapping(address => bool)) private _walletOperators;
    mapping(uint256 => address) private _tokenApprovals;
    uint256 private _stride;
    uint256 private _totalMinted = 0;
    uint256 private _burnCounter;
    uint256 private _supplyLimit;

    function totalMinted() external view returns (uint256) {
        return _totalMinted;
    }

    function totalSupply() external view returns (uint256) {
        unchecked {
            return _totalMinted - _burnCounter;
        }
    }
    modifier onlyContractOwner() {
        if (msg.sender != _contractOwner) {
            revert();
        }
        _;
    }

    constructor(string memory name_, string memory symbol_, uint64 supplyLimit_, uint64 stride_, uint64 premintQuantity_, address premintOwner_, address owner_, address minter_, address bubblehouseOperator_,  address openSeaProxyRegistryAddress_, string memory baseMetadataURI_) {
        _name = name_;
        _symbol = symbol_;
        _supplyLimit = supplyLimit_;
        _stride = stride_;
        if (owner_ == address(0)) {
            _contractOwner = msg.sender;
        } else {
            _contractOwner = owner_;
        }
        _minter = minter_;
        _bubblehouseOperator = bubblehouseOperator_;
        _openSeaProxyRegistryAddress = openSeaProxyRegistryAddress_;
        _baseMetadataURI = baseMetadataURI_;
        if (premintQuantity_ != 0) {
            _premint(premintOwner_, premintQuantity_);
        }
    }


    // --- Inquiries ---

    function supportsInterface(bytes4 interfaceId) external pure override returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC165).interfaceId;
    }

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

    function symbol() external view override returns (string memory) {
        if (bytes(_symbol).length == 0) {
            return _name;
        } else {
            return _symbol;
        }
    }

    function supplyLimit() external view returns (uint256) {
        return _supplyLimit;
    }

    function stride() external view returns (uint256) {
        return _stride;
    }

    function balanceOf(address wallet) external view override returns (uint256) {
        if (wallet == address(0)) {
            revert();
        }
        return _walletBalances[wallet];
    }

    function ownerOf(uint256 tokenId) external view override returns (address) {
        _revertUnlessValidTokenID(tokenId);
        uint256 state = _tokenStateOf(tokenId);
        if ((state & _BITMASK_BURNED) != 0) {
            revert();
        }
        return address(uint160(state));
    }

    // TODO: do we need this function for some sort of weird interface complience? if not, remove.
    function baseTokenURI() external view returns (string memory) {
        return _baseMetadataURI;
    }

    function tokenURI(uint256 tokenId) external view override returns (string memory) {
        _revertUnlessValidTokenID(tokenId);
        return string.concat(_baseMetadataURI, "/0x", addressToString(address(this)), "/", intToString(tokenId));
    }

    function contractURI() external view returns (string memory) {
        return string.concat(_baseMetadataURI, "/0x", addressToString(address(this)), "/-1");
    }

    function internalRawTokenState(uint256 tokenId) external view returns (uint256) {
        return _tokenStates[tokenId];
    }
    function internalRawTokenStates(uint256 start, uint256 end) external view returns (uint256[] memory) {
        unchecked {
            if (start == 0) {
                start = 1; // prevents overflow when computing `end-start+1` below
            }
            if (end > _totalMinted) {
                end = _totalMinted;
            }
            if (end < start) {
                return new uint256[](0);
            }

            uint256[] memory result = new uint256[](end - start + 1);
            for (uint256 i = start; i <= end; ++i) {
                result[i - start] = _tokenStates[i];
            }
            return result;
        }
    }

    function internalResolvedTokenState(uint256 tokenId) external view returns (uint256) {
        return _tokenStateOf(tokenId);
    }
    function internalResolvedTokenStates(uint256 start, uint256 end) external view returns (uint256[] memory) {
        unchecked {
            if (start == 0) {
                start = 1; // prevents overflow when computing `end-start+1` below
            }
            if (end > _totalMinted) {
                end = _totalMinted;
            }
            if (end < start) {
                return new uint256[](0);
            }

            uint256 state = _tokenStateOf(start);

            uint256[] memory result = new uint256[](end - start + 1);
            for (uint256 i = start; i <= end; ++i) {
                uint256 prev = state;
                state = _tokenStates[i];
                if (state == 0) {
                    state = prev;
                }
                result[i - start] = state;
            }
            return result;
        }
    }

    function tokensOfOwnerIn(address wallet, uint256 start, uint256 end) external view returns (uint256[] memory) {
        unchecked {
            if (start == 0) {
                start = 1; // prevents overflow when computing `end-start+1` below
            }
            if (end > _totalMinted) {
                end = _totalMinted;
            }
            uint256 maxCount = _walletBalances[wallet];
            if (end < start || maxCount == 0) {
                return new uint256[](0);
            }
            uint256 range = end - start + 1;
            if (range < maxCount) {
                maxCount = range;
            }

            uint256[] memory tokenIds = new uint256[](maxCount);
            uint256 outIdx = 0;

            address currentOwner = address(0);
            uint256 state = _tokenStateOf(start);
            if ((state & _BITMASK_BURNED) == 0) {
                currentOwner = address(uint160(state));
            }

            for (uint256 i = start; i <= end && outIdx != maxCount; ++i) {
                state = _tokenStates[i];
                if (state != 0) {
                    if ((state & _BITMASK_BURNED) != 0) {
                        continue;
                    }
                    currentOwner = address(uint160(state));
                }
                if (currentOwner == wallet) {
                    tokenIds[outIdx++] = i;
                }
            }

            assembly { mstore(tokenIds, outIdx) } // shrink to actual size
            return tokenIds;
        }
    }


    // --- Mint, Transfer, Burn ---

    function mint(address to, uint256 quantity) external {
        if (msg.sender != _minter) revert();
        if (quantity == 0) revert();

        unchecked {
            if (to.code.length != 0) revert TransferToContractForbidden();
            uint256 oldTotalMinted = _totalMinted;
            uint256 newTotalMinted = oldTotalMinted + quantity;
            if (newTotalMinted > _supplyLimit) revert OverSupplyLimit();

            uint256 start = oldTotalMinted + 1;

            _walletBalances[to] += quantity;

            uint256 toMasked;
            uint256 newState;
            assembly {
                toMasked := and(to, _BITMASK_ADDRESS)
                newState := or(toMasked, shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1)))
            }
            if (toMasked == 0) revert();
            _tokenStates[start] = newState;

            // Use assembly to loop and emit the `Transfer` event for gas savings.
            assembly {
                log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, start)

                let end := add(newTotalMinted, 1)
                for {
                    let tokenId := add(start, 1)
                } iszero(eq(tokenId, end)) {
                    tokenId := add(tokenId, 1)
                } {
                    // Emit the `Transfer` event. Similar to above.
                    log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)
                }
            }

            _totalMinted = newTotalMinted;
        }
    }

    function _premint(address to, uint256 quantity) private {
        if (quantity == 0) return;
        if (to == address(0)) revert();
        if (to.code.length != 0) revert TransferToContractForbidden();

        unchecked {
            uint256 oldTotalMinted = _totalMinted;
            uint256 newTotalMinted = oldTotalMinted + quantity;
            if (newTotalMinted > _supplyLimit) revert OverSupplyLimit();
            uint256 start = oldTotalMinted + 1;

            _walletBalances[to] += quantity;

            uint256 newState;
            assembly {
                newState := or(and(to, _BITMASK_ADDRESS), shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1)))
            }
            _tokenStates[start] = newState;

            emit ConsecutiveTransfer(start, start + quantity - 1, address(0), to);

            _totalMinted = newTotalMinted;
        }
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) external override {
        transferFrom(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata /*data*/) external override {
        transferFrom(from, to, tokenId);
    }

    function transferFrom(address from, address to, uint256 tokenId) public override {
        if (to == address(0)) revert();
        if (to.code.length != 0) revert TransferToContractForbidden();
        _revertUnlessValidTokenID(tokenId);
        uint256 state = _tokenStateOf(tokenId);
        if ((state & _BITMASK_BURNED) != 0) revert TokenBurned();
        address tokenOwner = address(uint160(state));
        if (from != tokenOwner) revert TransferFromIncorrectOwner();
        _revertUnlessAllowedToManageToken(_actualSender(), tokenId, tokenOwner);
        _clearApproval(tokenId, tokenOwner);

        unchecked {
            _walletBalances[from] -= 1;
            _walletBalances[to] += 1;

            uint256 newState;
            assembly {
                newState := or(and(to, _BITMASK_ADDRESS), _BITMASK_NEXT_INITIALIZED)
            }
            _tokenStates[tokenId] = newState;

            // Fill in next token's data
            if ((state & _BITMASK_NEXT_INITIALIZED) == 0) {
                uint256 next = tokenId + 1;
                if (_tokenStates[next] == 0) {
                    if (next <= _totalMinted) {
                        _tokenStates[next] = state;
                    }
                }
            }
        }

        emit Transfer(from, to, tokenId);
    }

    function burn(uint256 tokenId) external {
        _revertUnlessValidTokenID(tokenId);
        uint256 state = _tokenStateOf(tokenId);
        if ((state & _BITMASK_BURNED) != 0) {
            return;
        }
        address tokenOwner = address(uint160(state));
        _revertUnlessAllowedToManageToken(_actualSender(), tokenId, tokenOwner);
        _clearApproval(tokenId, tokenOwner);

        unchecked {
            _walletBalances[tokenOwner] -= 1;
            assembly {
                state := or(state, _BITMASK_BURNED_AND_NEXT_INITIALIZED)
            }
            _tokenStates[tokenId] = state;
            _burnCounter += 1;
        }

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


    // --- Approvals ---
    
    function approve(address to, uint256 tokenId) external override {
        _revertUnlessValidTokenID(tokenId);
        uint256 state = _tokenStateOf(tokenId);
        if ((state & _BITMASK_BURNED) != 0) revert TokenBurned();
        address tokenOwner = address(uint160(state));
        address actor = _actualSender();
        _revertUnlessAllowedToManageToken(actor, tokenId, tokenOwner);
        _tokenApprovals[tokenId] = to;
        emit Approval(tokenOwner, to, tokenId);
    }

    function getApproved(uint256 tokenId) external view override returns (address) {
        _revertUnlessValidTokenID(tokenId);
        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) external override {
        address actor = _actualSender();
        if (actor == operator) {
            revert();
        }
        _walletOperators[actor][operator] = approved;
        emit ApprovalForAll(actor, operator, approved);
    }

    function isApprovedForAll(address wallet, address operator) external view override returns (bool) {
        return _walletOperators[wallet][operator];
    }

    function _clearApproval(uint256 tokenId, address tokenOwner) private {
        if (_tokenApprovals[tokenId] != address(0)) {
            _tokenApprovals[tokenId] = address(0);
            emit Approval(tokenOwner, address(0), tokenId);
        }
    }


    // --- Marketplaces ---

    function isOpenSeaOperator(address actor, address wallet) private view returns (bool) {
        if (_openSeaProxyRegistryAddress == address(0)) {
            return false;
        }
        IOpenSeaProxyRegistry proxyRegistry = IOpenSeaProxyRegistry(_openSeaProxyRegistryAddress);
        return (address(proxyRegistry.proxies(wallet)) == actor);
    }


    // -- Access checks ---

    function _revertUnlessValidTokenID(uint256 tokenId) private view {
        if (tokenId < 1) {
            revert();
        }
        if (tokenId > _totalMinted) {
            revert();
        }
    }

    // assumes token ID is valid
    function _revertUnlessAllowedToManageToken(address actor, uint256 tokenId, address wallet) private view {
        if (actor == wallet) {
            return;
        }
        if (actor == _bubblehouseOperator) {
            if (_bubblehouseOperator != address(0)) {
                return;
            }
        }
        if (_walletOperators[wallet][actor]) {
            return;
        }
        if (isOpenSeaOperator(actor, wallet)) {
            return;
        }
        if (_tokenApprovals[tokenId] == actor) {
            return;
        }
        revert();
    }


    // --- Sparse Packed Token Info ---

    function _tokenStateOf(uint256 tokenId) private view returns (uint256) {
        uint256 curr = tokenId;
        unchecked {
            uint256 state = _tokenStates[curr];
            // There will always be a non-zero state before any zero state.
            while (state == 0) {
                --curr;
                state = _tokenStates[curr];
            }
            return state;
        }
    }


    // --- Admin Stuff ---

    function rename(string calldata name_, string calldata symbol_) external onlyContractOwner {
        _name = name_;
        _symbol = symbol_;
    }

    function baseMetadataURI() external view returns (string memory) {
        return _baseMetadataURI;
    }

    function setBaseMetadataURI(string calldata newBaseURI) external onlyContractOwner {
        _baseMetadataURI = newBaseURI;
    }

    function replaceContractOwner(address newOwner) external onlyContractOwner {
        if (newOwner == address(0)) {
            revert();
        }
        address oldOwner = _contractOwner;
        if (newOwner == oldOwner) {
            return;
        }
        _contractOwner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function bubblehouseOperator() external view returns (address) {
        return _bubblehouseOperator;
    }
    function replaceBubblehouseOperator(address newOperator) external onlyContractOwner {
        if (_bubblehouseOperator == address(0)) {
            revert();
        }
        if (newOperator == address(0)) {
            revert();
        }
        _bubblehouseOperator = newOperator;
    }
    // Irevocably disables Bubblehouse operator priviledges. Wallets will need operator approvals
    // to be managed by the platform after this.
    function burnBubblehouseOperator() external onlyContractOwner {
        _bubblehouseOperator = address(0);
    }

    function setOpenSeaProxyRegistryAddress(address addr) external onlyContractOwner {
        _openSeaProxyRegistryAddress = addr;
    }

    function owner() external view returns (address) {
        return _contractOwner;
    }

    function minter() external view returns (address) {
        return _minter;
    }
    function replaceMinter(address newMinter) external onlyContractOwner {
        if (_minter == address(0)) {
            revert();
        }
        if (newMinter == address(0)) {
            revert();
        }
        _minter = newMinter;
    }
    // Irevocably disables minter priviledges. Nothing can be minted after this.
    function burnMinter() external onlyContractOwner {
        _minter = address(0);
    }

    function decreaseSupplyLimit(uint64 supplyLimit_) external onlyContractOwner {
        if (supplyLimit_ >= _supplyLimit) revert();
        _supplyLimit = supplyLimit_;
    }


    // --- Utils ---
    
    // TODO: handle metatransactions in the future if we need to.
    function _actualSender() private view returns (address) {
        return msg.sender;
    }

    // From @openzeppelin/contracts/utils/Strings.sol
    function intToString(uint256 value) private pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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

    function addressToString(address x) private pure returns (string memory) {
        unchecked {
            bytes memory s = new bytes(40);
            for (uint i = 0; i < 20; i++) {
                bytes1 b = bytes1(uint8(uint(uint160(x)) / (2**(8*(19 - i)))));
                bytes1 hi = bytes1(uint8(b) / 16);
                s[2*i] = hexChar(hi);
                s[2*i+1] = hexChar(bytes1(uint8(b) - 16 * uint8(hi)));            
            }
            return string(s);
        }
    }

    function hexChar(bytes1 b) private pure returns (bytes1 c) {
        if (uint8(b) < 10) return bytes1(uint8(b) + 0x30);
        else return bytes1(uint8(b) + 0x57);
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "constantinople",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint64","name":"supplyLimit_","type":"uint64"},{"internalType":"uint64","name":"stride_","type":"uint64"},{"internalType":"uint64","name":"premintQuantity_","type":"uint64"},{"internalType":"address","name":"premintOwner_","type":"address"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"minter_","type":"address"},{"internalType":"address","name":"bubblehouseOperator_","type":"address"},{"internalType":"address","name":"openSeaProxyRegistryAddress_","type":"address"},{"internalType":"string","name":"baseMetadataURI_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"OverSupplyLimit","type":"error"},{"inputs":[],"name":"TokenBurned","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToContractForbidden","type":"error"},{"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseMetadataURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bubblehouseOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnBubblehouseOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"supplyLimit_","type":"uint64"}],"name":"decreaseSupplyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"internalRawTokenState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"internalRawTokenStates","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"internalResolvedTokenState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"internalResolvedTokenStates","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"name":"rename","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"replaceBubblehouseOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"replaceContractOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMinter","type":"address"}],"name":"replaceMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"","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":"newBaseURI","type":"string"}],"name":"setBaseMetadataURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setOpenSeaProxyRegistryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stride","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supplyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"tokensOfOwnerIn","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]

60806040526000600c553480156200001657600080fd5b50604051620022eb380380620022eb83398101604081905262000039916200042f565b8a516200004e9060009060208e01906200026e565b508951620000649060019060208d01906200026e565b506001600160401b03808a16600e558816600b556001600160a01b0385166200009f57600380546001600160a01b03191633179055620000bb565b600380546001600160a01b0319166001600160a01b0387161790555b600480546001600160a01b038087166001600160a01b03199283161790925560058054868416908316179055600680549285169290911691909117905580516200010d9060029060208401906200026e565b506001600160401b03871615620001335762000133866001600160401b03891662000144565b5050505050505050505050620005bb565b8060000362000151575050565b6001600160a01b0382166200016557600080fd5b6001600160a01b0382163b15620001a8576040517f0377a3d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c54600e5482820190811115620001ec576040517fadb211d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600081815260086020908152604080832080548801905560018681018085526007845282852091891460e11b86179182905591518789018152919490939092909185917fdeaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d910160405180910390a45050600c55505050565b8280546200027c9062000566565b90600052602060002090601f016020900481019282620002a05760008555620002eb565b82601f10620002bb57805160ff1916838001178555620002eb565b82800160010185558215620002eb579182015b82811115620002eb578251825591602001919060010190620002ce565b50620002f9929150620002fd565b5090565b5b80821115620002f95760008155600101620002fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126200035557600080fd5b81516001600160401b038082111562000372576200037262000314565b604051601f8301601f19908116603f011681019082821181831017156200039d576200039d62000314565b81604052838152602092508683858801011115620003ba57600080fd5b600091505b83821015620003de5785820183015181830184015290820190620003bf565b83821115620003f05760008385830101525b9695505050505050565b80516001600160401b03811681146200041257600080fd5b919050565b80516001600160a01b03811681146200041257600080fd5b60008060008060008060008060008060006101608c8e0312156200045257600080fd5b8b516001600160401b038111156200046957600080fd5b620004778e828f0162000343565b60208e0151909c5090506001600160401b038111156200049657600080fd5b620004a48e828f0162000343565b9a5050620004b560408d01620003fa565b9850620004c560608d01620003fa565b9750620004d560808d01620003fa565b9650620004e560a08d0162000417565b9550620004f560c08d0162000417565b94506200050560e08d0162000417565b9350620005166101008d0162000417565b9250620005276101208d0162000417565b6101408d01519092506001600160401b038111156200054557600080fd5b620005538e828f0162000343565b9150509295989b509295989b9093969950565b600181811c908216806200057b57607f821691505b602082108103620005b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b611d2080620005cb6000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c80636352211e1161013b578063a22cb465116100b8578063cef302b91161007c578063cef302b9146104c1578063d547cfb7146103a5578063e8a3d485146104d4578063e985e9c5146104dc578063ecc580111461051857600080fd5b8063a22cb46514610460578063a2309ff814610473578063aea3d9a51461047b578063b88d4fde1461049b578063c87b56dd146104ae57600080fd5b80638da5cb5b116100ff5780638da5cb5b1461041957806395d89b411461042a57806399a2557a146104325780639ba47cf9146104455780639c7c722b1461044d57600080fd5b80636352211e146103ad57806370a08231146103c05780637e518ec8146103d35780637f9d2fd1146103e657806385b59a22146103f957600080fd5b806319d1997a116101c957806340c10f191161018d57806340c10f191461035957806342842e0e1461036c57806342966c681461037f5780634de71d09146103925780635b2bd79e146103a557600080fd5b806319d1997a146103105780631c9f2f7c14610318578063227f4b5f1461032b57806323b872dd14610333578063317153501461034657600080fd5b8063081812fc11610210578063081812fc146102b957806308abf026146102cc578063095ea7b3146102df5780630ade4f06146102f257806318160ddd1461030457600080fd5b806301ffc9a71461024257806306fdde031461026a578063075461721461027f57806307f1af44146102a4575b600080fd5b610255610250366004611672565b610529565b60405190151581526020015b60405180910390f35b61027261057b565b60405161026191906116cc565b6004546001600160a01b03165b6040516001600160a01b039091168152602001610261565b6102b76102b2366004611714565b61060d565b005b61028c6102c7366004611731565b61066e565b6102b76102da366004611714565b610695565b6102b76102ed36600461174a565b6106ce565b600b545b604051908152602001610261565b600d54600c54036102f6565b600e546102f6565b6102b7610326366004611714565b610774565b6102b76107d5565b6102b7610341366004611776565b6107fe565b6102b76103543660046117b7565b610977565b6102b761036736600461174a565b6109b5565b6102b761037a366004611776565b610acb565b6102b761038d366004611731565b610adb565b6102b76103a0366004611714565b610b75565b610272610c0d565b61028c6103bb366004611731565b610c1c565b6102f66103ce366004611714565b610c45565b6102b76103e136600461182a565b610c76565b6102f66103f4366004611731565b610c99565b61040c61040736600461186c565b610ca4565b604051610261919061188e565b6003546001600160a01b031661028c565b610272610d94565b61040c6104403660046118d2565b610dc6565b6102b7610f38565b6102b761045b366004611907565b610f61565b6102b761046e366004611973565b610f98565b600c546102f6565b6102f6610489366004611731565b60009081526007602052604090205490565b6102b76104a93660046119b1565b61101b565b6102726104bc366004611731565b611026565b61040c6104cf36600461186c565b61106d565b61027261114b565b6102556104ea366004611a24565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6005546001600160a01b031661028c565b60006001600160e01b031982166380ac58cd60e01b148061055a57506001600160e01b03198216635b5e139f60e01b145b8061057557506001600160e01b031982166301ffc9a760e01b145b92915050565b60606000805461058a90611a52565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690611a52565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b5050505050905090565b6003546001600160a01b0316331461062457600080fd5b6004546001600160a01b031661063957600080fd5b6001600160a01b03811661064c57600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60006106798261117d565b506000908152600a60205260409020546001600160a01b031690565b6003546001600160a01b031633146106ac57600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6106d78161117d565b60006106e28261119a565b9050600160e01b8116156107095760405163202d8ed160e01b815260040160405180910390fd5b80336107168185846111cd565b6000848152600a602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918616917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050505050565b6003546001600160a01b0316331461078b57600080fd5b6005546001600160a01b03166107a057600080fd5b6001600160a01b0381166107b357600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146107ec57600080fd5b600480546001600160a01b0319169055565b6001600160a01b03821661081157600080fd5b6001600160a01b0382163b1561083957604051626ef47b60e31b815260040160405180910390fd5b6108428161117d565b600061084d8261119a565b9050600160e01b8116156108745760405163202d8ed160e01b815260040160405180910390fd5b806001600160a01b03858116908216146108a05760405162a1148160e81b815260040160405180910390fd5b6108ac335b84836111cd565b6108b68382611284565b6001600160a01b0380861660009081526008602090815260408083208054600019019055928716808352838320805460010190558683526007909152918120600160e11b9283179081905591841690036109405760018401600081815260076020526040812054900361093e57600c54811161093e5760008181526007602052604090208490555b505b5082846001600160a01b0316866001600160a01b0316600080516020611ccb83398151915260405160405180910390a45050505050565b6003546001600160a01b0316331461098e57600080fd5b600e548167ffffffffffffffff16106109a657600080fd5b67ffffffffffffffff16600e55565b6004546001600160a01b031633146109cc57600080fd5b806000036109d957600080fd5b6001600160a01b0382163b15610a0157604051626ef47b60e31b815260040160405180910390fd5b600c54600e5482820190811115610a2b5760405163adb211d960e01b815260040160405180910390fd5b6001600160a01b03841660008181526008602052604081208054860190556001808501929190861460e11b821790829003610a6557600080fd5b600083815260076020526040812082905583908390600080516020611ccb8339815191528180a460018401600184015b818114610abb5780846000600080516020611ccb833981519152600080a4600101610a95565b505050600c929092555050505050565b610ad68383836107fe565b505050565b610ae48161117d565b6000610aef8261119a565b9050600160e01b811615610b01575050565b80610b0b336108a5565b610b158382611284565b6001600160a01b038116600081815260086020908152604080832080546000190190558683526007909152808220600360e01b9590951794859055600d8054600101905551859290600080516020611ccb833981519152908390a4505050565b6003546001600160a01b03163314610b8c57600080fd5b6001600160a01b038116610b9f57600080fd5b6003546001600160a01b03908116908216819003610bbb575050565b600380546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505b50565b60606002805461058a90611a52565b6000610c278261117d565b6000610c328361119a565b9050600160e01b81161561057557600080fd5b60006001600160a01b038216610c5a57600080fd5b506001600160a01b031660009081526008602052604090205490565b6003546001600160a01b03163314610c8d57600080fd5b610ad6600283836115d9565b60006105758261119a565b606082600003610cb357600192505b600c54821115610cc357600c5491505b82821015610cff5760005b604051908082528060200260200182016040528015610cf7578160200160208202803683370190505b509050610575565b600083830360010167ffffffffffffffff811115610d1f57610d1f611a8c565b604051908082528060200260200182016040528015610d48578160200160208202803683370190505b509050835b838111610d8c5760008181526007602052604090205482518390878403908110610d7957610d79611aa2565b6020908102919091010152600101610d4d565b509392505050565b606060018054610da390611a52565b9050600003610db9576000805461058a90611a52565b6001805461058a90611a52565b606082600003610dd557600192505b600c54821115610de557600c5491505b6001600160a01b03841660009081526008602052604090205483831080610e0a575080155b15610e25575050604080516000815260208101909152610f31565b60018484030181811015610e37578091505b60008267ffffffffffffffff811115610e5257610e52611a8c565b604051908082528060200260200182016040528015610e7b578160200160208202803683370190505b5090506000806000610e8c8961119a565b9050600160e01b8116600003610ea0578091505b885b888111158015610eb25750868414155b15610f275760008181526007602052604090205491508115610ee057600160e01b8216600003610f1f578192505b8a6001600160a01b0316836001600160a01b031603610f1f5780858580600101965081518110610f1257610f12611aa2565b6020026020010181815250505b600101610ea2565b5050508152925050505b9392505050565b6003546001600160a01b03163314610f4f57600080fd5b600580546001600160a01b0319169055565b6003546001600160a01b03163314610f7857600080fd5b610f84600085856115d9565b50610f91600183836115d9565b5050505050565b336001600160a01b0383168103610fae57600080fd5b6001600160a01b03818116600081815260096020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610f918585856107fe565b60606110318261117d565b600261103c306112f7565b611045846113fa565b60405160200161105793929190611b51565b6040516020818303038152906040529050919050565b60608260000361107c57600192505b600c5482111561108c57600c5491505b8282101561109b576000610cce565b60006110a68461119a565b9050600084840360010167ffffffffffffffff8111156110c8576110c8611a8c565b6040519080825280602002602001820160405280156110f1578160200160208202803683370190505b509050845b848111611142576000818152600760205260408120549390849003611119578093505b83838884038151811061112e5761112e611aa2565b6020908102919091010152506001016110f6565b50949350505050565b60606002611158306112f7565b604051602001611169929190611ba8565b604051602081830303815290604052905090565b600181101561118b57600080fd5b600c54811115610c0a57600080fd5b60008181526007602052604081205482905b80600003610f315750600019016000818152600760205260409020546111ac565b806001600160a01b0316836001600160a01b0316036111eb57505050565b6005546001600160a01b0390811690841603611217576005546001600160a01b03161561121757505050565b6001600160a01b0380821660009081526009602090815260408083209387168352929052205460ff161561124a57505050565b6112548382611503565b1561125e57505050565b6000828152600a60205260409020546001600160a01b0380851691160361023d57505050565b6000828152600a60205260409020546001600160a01b0316156112f3576000828152600a602052604080822080546001600160a01b0319169055518391906001600160a01b038416907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925908390a45b5050565b60408051602880825260608281019093526000919060208201818036833701905050905060005b60148110156113f35760008160130360080260020a856001600160a01b03168161134a5761134a611bec565b0460f81b9050600060108260f81c60ff168161136857611368611bec565b0460f81b9050611377816115a3565b84846002028151811061138c5761138c611aa2565b60200101906001600160f81b031916908160001a9053506113ba8160f81c6010028360f81c0360f81b6115a3565b8484600202600101815181106113d2576113d2611aa2565b60200101906001600160f81b031916908160001a905350505060010161131e565b5092915050565b6060816000036114215750506040805180820190915260018152600360fc1b602082015290565b8160005b811561144b578061143581611c18565b91506114449050600a83611c31565b9150611425565b60008167ffffffffffffffff81111561146657611466611a8c565b6040519080825280601f01601f191660200182016040528015611490576020820181803683370190505b5090505b84156114fb576114a5600183611c45565b91506114b2600a86611c5c565b6114bd906030611c70565b60f81b8183815181106114d2576114d2611aa2565b60200101906001600160f81b031916908160001a9053506114f4600a86611c31565b9450611494565b949350505050565b6006546000906001600160a01b031661151e57506000610575565b60065460405163c455279160e01b81526001600160a01b03848116600483015291821691851690829063c455279190602401602060405180830381865afa15801561156d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115919190611c88565b6001600160a01b031614949350505050565b6000600a60f883901c10156115ca576115c160f883901c6030611ca5565b60f81b92915050565b6115c160f883901c6057611ca5565b8280546115e590611a52565b90600052602060002090601f016020900481019282611607576000855561164d565b82601f106116205782800160ff1982351617855561164d565b8280016001018555821561164d579182015b8281111561164d578235825591602001919060010190611632565b5061165992915061165d565b5090565b5b80821115611659576000815560010161165e565b60006020828403121561168457600080fd5b81356001600160e01b031981168114610f3157600080fd5b60005b838110156116b757818101518382015260200161169f565b838111156116c6576000848401525b50505050565b60208152600082518060208401526116eb81604085016020870161169c565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c0a57600080fd5b60006020828403121561172657600080fd5b8135610f31816116ff565b60006020828403121561174357600080fd5b5035919050565b6000806040838503121561175d57600080fd5b8235611768816116ff565b946020939093013593505050565b60008060006060848603121561178b57600080fd5b8335611796816116ff565b925060208401356117a6816116ff565b929592945050506040919091013590565b6000602082840312156117c957600080fd5b813567ffffffffffffffff81168114610f3157600080fd5b60008083601f8401126117f357600080fd5b50813567ffffffffffffffff81111561180b57600080fd5b60208301915083602082850101111561182357600080fd5b9250929050565b6000806020838503121561183d57600080fd5b823567ffffffffffffffff81111561185457600080fd5b611860858286016117e1565b90969095509350505050565b6000806040838503121561187f57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156118c6578351835292840192918401916001016118aa565b50909695505050505050565b6000806000606084860312156118e757600080fd5b83356118f2816116ff565b95602085013595506040909401359392505050565b6000806000806040858703121561191d57600080fd5b843567ffffffffffffffff8082111561193557600080fd5b611941888389016117e1565b9096509450602087013591508082111561195a57600080fd5b50611967878288016117e1565b95989497509550505050565b6000806040838503121561198657600080fd5b8235611991816116ff565b9150602083013580151581146119a657600080fd5b809150509250929050565b6000806000806000608086880312156119c957600080fd5b85356119d4816116ff565b945060208601356119e4816116ff565b935060408601359250606086013567ffffffffffffffff811115611a0757600080fd5b611a13888289016117e1565b969995985093965092949392505050565b60008060408385031215611a3757600080fd5b8235611a42816116ff565b915060208301356119a6816116ff565b600181811c90821680611a6657607f821691505b602082108103611a8657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8054600090600181811c9080831680611ad257607f831692505b60208084108203611af357634e487b7160e01b600052602260045260246000fd5b818015611b075760018114611b1857611b45565b60ff19861689528489019650611b45565b60008881526020902060005b86811015611b3d5781548b820152908501908301611b24565b505084890196505b50505050505092915050565b6000611b5d8286611ab8565b6205e60f60eb1b81528451611b7981600384016020890161169c565b602f60f81b600392909101918201528351611b9b81600484016020880161169c565b0160040195945050505050565b6000611bb48285611ab8565b6205e60f60eb1b81528351611bd081600384016020880161169c565b622f2d3160e81b60039290910191820152600601949350505050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c2a57611c2a611c02565b5060010190565b600082611c4057611c40611bec565b500490565b600082821015611c5757611c57611c02565b500390565b600082611c6b57611c6b611bec565b500690565b60008219821115611c8357611c83611c02565b500190565b600060208284031215611c9a57600080fd5b8151610f31816116ff565b600060ff821660ff84168060ff03821115611cc257611cc2611c02565b01939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220be3c2a2e77dc7df75479bdf4ece38ce46c1cfadf1d04a9873f884121f461c88164736f6c634300080e0033000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075fa2f2ffc89ce78ac77629c909f0d60edc27ee800000000000000000000000075fa2f2ffc89ce78ac77629c909f0d60edc27ee8000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c100000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000023427562626c65776f726c642045786563757469766520466f756e64657273205061737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d68747470733a2f2f6170692e627562626c65686f7573652e636f6d2f6d657461646174612f657468657265756d00000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061023d5760003560e01c80636352211e1161013b578063a22cb465116100b8578063cef302b91161007c578063cef302b9146104c1578063d547cfb7146103a5578063e8a3d485146104d4578063e985e9c5146104dc578063ecc580111461051857600080fd5b8063a22cb46514610460578063a2309ff814610473578063aea3d9a51461047b578063b88d4fde1461049b578063c87b56dd146104ae57600080fd5b80638da5cb5b116100ff5780638da5cb5b1461041957806395d89b411461042a57806399a2557a146104325780639ba47cf9146104455780639c7c722b1461044d57600080fd5b80636352211e146103ad57806370a08231146103c05780637e518ec8146103d35780637f9d2fd1146103e657806385b59a22146103f957600080fd5b806319d1997a116101c957806340c10f191161018d57806340c10f191461035957806342842e0e1461036c57806342966c681461037f5780634de71d09146103925780635b2bd79e146103a557600080fd5b806319d1997a146103105780631c9f2f7c14610318578063227f4b5f1461032b57806323b872dd14610333578063317153501461034657600080fd5b8063081812fc11610210578063081812fc146102b957806308abf026146102cc578063095ea7b3146102df5780630ade4f06146102f257806318160ddd1461030457600080fd5b806301ffc9a71461024257806306fdde031461026a578063075461721461027f57806307f1af44146102a4575b600080fd5b610255610250366004611672565b610529565b60405190151581526020015b60405180910390f35b61027261057b565b60405161026191906116cc565b6004546001600160a01b03165b6040516001600160a01b039091168152602001610261565b6102b76102b2366004611714565b61060d565b005b61028c6102c7366004611731565b61066e565b6102b76102da366004611714565b610695565b6102b76102ed36600461174a565b6106ce565b600b545b604051908152602001610261565b600d54600c54036102f6565b600e546102f6565b6102b7610326366004611714565b610774565b6102b76107d5565b6102b7610341366004611776565b6107fe565b6102b76103543660046117b7565b610977565b6102b761036736600461174a565b6109b5565b6102b761037a366004611776565b610acb565b6102b761038d366004611731565b610adb565b6102b76103a0366004611714565b610b75565b610272610c0d565b61028c6103bb366004611731565b610c1c565b6102f66103ce366004611714565b610c45565b6102b76103e136600461182a565b610c76565b6102f66103f4366004611731565b610c99565b61040c61040736600461186c565b610ca4565b604051610261919061188e565b6003546001600160a01b031661028c565b610272610d94565b61040c6104403660046118d2565b610dc6565b6102b7610f38565b6102b761045b366004611907565b610f61565b6102b761046e366004611973565b610f98565b600c546102f6565b6102f6610489366004611731565b60009081526007602052604090205490565b6102b76104a93660046119b1565b61101b565b6102726104bc366004611731565b611026565b61040c6104cf36600461186c565b61106d565b61027261114b565b6102556104ea366004611a24565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6005546001600160a01b031661028c565b60006001600160e01b031982166380ac58cd60e01b148061055a57506001600160e01b03198216635b5e139f60e01b145b8061057557506001600160e01b031982166301ffc9a760e01b145b92915050565b60606000805461058a90611a52565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690611a52565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b5050505050905090565b6003546001600160a01b0316331461062457600080fd5b6004546001600160a01b031661063957600080fd5b6001600160a01b03811661064c57600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60006106798261117d565b506000908152600a60205260409020546001600160a01b031690565b6003546001600160a01b031633146106ac57600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6106d78161117d565b60006106e28261119a565b9050600160e01b8116156107095760405163202d8ed160e01b815260040160405180910390fd5b80336107168185846111cd565b6000848152600a602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918616917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050505050565b6003546001600160a01b0316331461078b57600080fd5b6005546001600160a01b03166107a057600080fd5b6001600160a01b0381166107b357600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146107ec57600080fd5b600480546001600160a01b0319169055565b6001600160a01b03821661081157600080fd5b6001600160a01b0382163b1561083957604051626ef47b60e31b815260040160405180910390fd5b6108428161117d565b600061084d8261119a565b9050600160e01b8116156108745760405163202d8ed160e01b815260040160405180910390fd5b806001600160a01b03858116908216146108a05760405162a1148160e81b815260040160405180910390fd5b6108ac335b84836111cd565b6108b68382611284565b6001600160a01b0380861660009081526008602090815260408083208054600019019055928716808352838320805460010190558683526007909152918120600160e11b9283179081905591841690036109405760018401600081815260076020526040812054900361093e57600c54811161093e5760008181526007602052604090208490555b505b5082846001600160a01b0316866001600160a01b0316600080516020611ccb83398151915260405160405180910390a45050505050565b6003546001600160a01b0316331461098e57600080fd5b600e548167ffffffffffffffff16106109a657600080fd5b67ffffffffffffffff16600e55565b6004546001600160a01b031633146109cc57600080fd5b806000036109d957600080fd5b6001600160a01b0382163b15610a0157604051626ef47b60e31b815260040160405180910390fd5b600c54600e5482820190811115610a2b5760405163adb211d960e01b815260040160405180910390fd5b6001600160a01b03841660008181526008602052604081208054860190556001808501929190861460e11b821790829003610a6557600080fd5b600083815260076020526040812082905583908390600080516020611ccb8339815191528180a460018401600184015b818114610abb5780846000600080516020611ccb833981519152600080a4600101610a95565b505050600c929092555050505050565b610ad68383836107fe565b505050565b610ae48161117d565b6000610aef8261119a565b9050600160e01b811615610b01575050565b80610b0b336108a5565b610b158382611284565b6001600160a01b038116600081815260086020908152604080832080546000190190558683526007909152808220600360e01b9590951794859055600d8054600101905551859290600080516020611ccb833981519152908390a4505050565b6003546001600160a01b03163314610b8c57600080fd5b6001600160a01b038116610b9f57600080fd5b6003546001600160a01b03908116908216819003610bbb575050565b600380546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505b50565b60606002805461058a90611a52565b6000610c278261117d565b6000610c328361119a565b9050600160e01b81161561057557600080fd5b60006001600160a01b038216610c5a57600080fd5b506001600160a01b031660009081526008602052604090205490565b6003546001600160a01b03163314610c8d57600080fd5b610ad6600283836115d9565b60006105758261119a565b606082600003610cb357600192505b600c54821115610cc357600c5491505b82821015610cff5760005b604051908082528060200260200182016040528015610cf7578160200160208202803683370190505b509050610575565b600083830360010167ffffffffffffffff811115610d1f57610d1f611a8c565b604051908082528060200260200182016040528015610d48578160200160208202803683370190505b509050835b838111610d8c5760008181526007602052604090205482518390878403908110610d7957610d79611aa2565b6020908102919091010152600101610d4d565b509392505050565b606060018054610da390611a52565b9050600003610db9576000805461058a90611a52565b6001805461058a90611a52565b606082600003610dd557600192505b600c54821115610de557600c5491505b6001600160a01b03841660009081526008602052604090205483831080610e0a575080155b15610e25575050604080516000815260208101909152610f31565b60018484030181811015610e37578091505b60008267ffffffffffffffff811115610e5257610e52611a8c565b604051908082528060200260200182016040528015610e7b578160200160208202803683370190505b5090506000806000610e8c8961119a565b9050600160e01b8116600003610ea0578091505b885b888111158015610eb25750868414155b15610f275760008181526007602052604090205491508115610ee057600160e01b8216600003610f1f578192505b8a6001600160a01b0316836001600160a01b031603610f1f5780858580600101965081518110610f1257610f12611aa2565b6020026020010181815250505b600101610ea2565b5050508152925050505b9392505050565b6003546001600160a01b03163314610f4f57600080fd5b600580546001600160a01b0319169055565b6003546001600160a01b03163314610f7857600080fd5b610f84600085856115d9565b50610f91600183836115d9565b5050505050565b336001600160a01b0383168103610fae57600080fd5b6001600160a01b03818116600081815260096020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610f918585856107fe565b60606110318261117d565b600261103c306112f7565b611045846113fa565b60405160200161105793929190611b51565b6040516020818303038152906040529050919050565b60608260000361107c57600192505b600c5482111561108c57600c5491505b8282101561109b576000610cce565b60006110a68461119a565b9050600084840360010167ffffffffffffffff8111156110c8576110c8611a8c565b6040519080825280602002602001820160405280156110f1578160200160208202803683370190505b509050845b848111611142576000818152600760205260408120549390849003611119578093505b83838884038151811061112e5761112e611aa2565b6020908102919091010152506001016110f6565b50949350505050565b60606002611158306112f7565b604051602001611169929190611ba8565b604051602081830303815290604052905090565b600181101561118b57600080fd5b600c54811115610c0a57600080fd5b60008181526007602052604081205482905b80600003610f315750600019016000818152600760205260409020546111ac565b806001600160a01b0316836001600160a01b0316036111eb57505050565b6005546001600160a01b0390811690841603611217576005546001600160a01b03161561121757505050565b6001600160a01b0380821660009081526009602090815260408083209387168352929052205460ff161561124a57505050565b6112548382611503565b1561125e57505050565b6000828152600a60205260409020546001600160a01b0380851691160361023d57505050565b6000828152600a60205260409020546001600160a01b0316156112f3576000828152600a602052604080822080546001600160a01b0319169055518391906001600160a01b038416907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925908390a45b5050565b60408051602880825260608281019093526000919060208201818036833701905050905060005b60148110156113f35760008160130360080260020a856001600160a01b03168161134a5761134a611bec565b0460f81b9050600060108260f81c60ff168161136857611368611bec565b0460f81b9050611377816115a3565b84846002028151811061138c5761138c611aa2565b60200101906001600160f81b031916908160001a9053506113ba8160f81c6010028360f81c0360f81b6115a3565b8484600202600101815181106113d2576113d2611aa2565b60200101906001600160f81b031916908160001a905350505060010161131e565b5092915050565b6060816000036114215750506040805180820190915260018152600360fc1b602082015290565b8160005b811561144b578061143581611c18565b91506114449050600a83611c31565b9150611425565b60008167ffffffffffffffff81111561146657611466611a8c565b6040519080825280601f01601f191660200182016040528015611490576020820181803683370190505b5090505b84156114fb576114a5600183611c45565b91506114b2600a86611c5c565b6114bd906030611c70565b60f81b8183815181106114d2576114d2611aa2565b60200101906001600160f81b031916908160001a9053506114f4600a86611c31565b9450611494565b949350505050565b6006546000906001600160a01b031661151e57506000610575565b60065460405163c455279160e01b81526001600160a01b03848116600483015291821691851690829063c455279190602401602060405180830381865afa15801561156d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115919190611c88565b6001600160a01b031614949350505050565b6000600a60f883901c10156115ca576115c160f883901c6030611ca5565b60f81b92915050565b6115c160f883901c6057611ca5565b8280546115e590611a52565b90600052602060002090601f016020900481019282611607576000855561164d565b82601f106116205782800160ff1982351617855561164d565b8280016001018555821561164d579182015b8281111561164d578235825591602001919060010190611632565b5061165992915061165d565b5090565b5b80821115611659576000815560010161165e565b60006020828403121561168457600080fd5b81356001600160e01b031981168114610f3157600080fd5b60005b838110156116b757818101518382015260200161169f565b838111156116c6576000848401525b50505050565b60208152600082518060208401526116eb81604085016020870161169c565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c0a57600080fd5b60006020828403121561172657600080fd5b8135610f31816116ff565b60006020828403121561174357600080fd5b5035919050565b6000806040838503121561175d57600080fd5b8235611768816116ff565b946020939093013593505050565b60008060006060848603121561178b57600080fd5b8335611796816116ff565b925060208401356117a6816116ff565b929592945050506040919091013590565b6000602082840312156117c957600080fd5b813567ffffffffffffffff81168114610f3157600080fd5b60008083601f8401126117f357600080fd5b50813567ffffffffffffffff81111561180b57600080fd5b60208301915083602082850101111561182357600080fd5b9250929050565b6000806020838503121561183d57600080fd5b823567ffffffffffffffff81111561185457600080fd5b611860858286016117e1565b90969095509350505050565b6000806040838503121561187f57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156118c6578351835292840192918401916001016118aa565b50909695505050505050565b6000806000606084860312156118e757600080fd5b83356118f2816116ff565b95602085013595506040909401359392505050565b6000806000806040858703121561191d57600080fd5b843567ffffffffffffffff8082111561193557600080fd5b611941888389016117e1565b9096509450602087013591508082111561195a57600080fd5b50611967878288016117e1565b95989497509550505050565b6000806040838503121561198657600080fd5b8235611991816116ff565b9150602083013580151581146119a657600080fd5b809150509250929050565b6000806000806000608086880312156119c957600080fd5b85356119d4816116ff565b945060208601356119e4816116ff565b935060408601359250606086013567ffffffffffffffff811115611a0757600080fd5b611a13888289016117e1565b969995985093965092949392505050565b60008060408385031215611a3757600080fd5b8235611a42816116ff565b915060208301356119a6816116ff565b600181811c90821680611a6657607f821691505b602082108103611a8657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8054600090600181811c9080831680611ad257607f831692505b60208084108203611af357634e487b7160e01b600052602260045260246000fd5b818015611b075760018114611b1857611b45565b60ff19861689528489019650611b45565b60008881526020902060005b86811015611b3d5781548b820152908501908301611b24565b505084890196505b50505050505092915050565b6000611b5d8286611ab8565b6205e60f60eb1b81528451611b7981600384016020890161169c565b602f60f81b600392909101918201528351611b9b81600484016020880161169c565b0160040195945050505050565b6000611bb48285611ab8565b6205e60f60eb1b81528351611bd081600384016020880161169c565b622f2d3160e81b60039290910191820152600601949350505050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c2a57611c2a611c02565b5060010190565b600082611c4057611c40611bec565b500490565b600082821015611c5757611c57611c02565b500390565b600082611c6b57611c6b611bec565b500690565b60008219821115611c8357611c83611c02565b500190565b600060208284031215611c9a57600080fd5b8151610f31816116ff565b600060ff821660ff84168060ff03821115611cc257611cc2611c02565b01939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220be3c2a2e77dc7df75479bdf4ece38ce46c1cfadf1d04a9873f884121f461c88164736f6c634300080e0033

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

000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075fa2f2ffc89ce78ac77629c909f0d60edc27ee800000000000000000000000075fa2f2ffc89ce78ac77629c909f0d60edc27ee8000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c100000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000023427562626c65776f726c642045786563757469766520466f756e64657273205061737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d68747470733a2f2f6170692e627562626c65686f7573652e636f6d2f6d657461646174612f657468657265756d00000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Bubbleworld Executive Founders Pass
Arg [1] : symbol_ (string):
Arg [2] : supplyLimit_ (uint64): 1000000000
Arg [3] : stride_ (uint64): 50
Arg [4] : premintQuantity_ (uint64): 0
Arg [5] : premintOwner_ (address): 0x0000000000000000000000000000000000000000
Arg [6] : owner_ (address): 0x0000000000000000000000000000000000000000
Arg [7] : minter_ (address): 0x75Fa2f2FfC89ce78aC77629c909F0D60eDC27Ee8
Arg [8] : bubblehouseOperator_ (address): 0x75Fa2f2FfC89ce78aC77629c909F0D60eDC27Ee8
Arg [9] : openSeaProxyRegistryAddress_ (address): 0xa5409ec958C83C3f309868babACA7c86DCB077c1
Arg [10] : baseMetadataURI_ (string): https://api.bubblehouse.com/metadata/ethereum

-----Encoded View---------------
18 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 00000000000000000000000075fa2f2ffc89ce78ac77629c909f0d60edc27ee8
Arg [8] : 00000000000000000000000075fa2f2ffc89ce78ac77629c909f0d60edc27ee8
Arg [9] : 000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
Arg [10] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000023
Arg [12] : 427562626c65776f726c642045786563757469766520466f756e646572732050
Arg [13] : 6173730000000000000000000000000000000000000000000000000000000000
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 000000000000000000000000000000000000000000000000000000000000002d
Arg [16] : 68747470733a2f2f6170692e627562626c65686f7573652e636f6d2f6d657461
Arg [17] : 646174612f657468657265756d00000000000000000000000000000000000000


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.