ETH Price: $3,392.68 (+1.73%)

Token

Crowdfunded Mirror Editions (CROWDFUND_EDITIONS)
 

Overview

Max Total Supply

0 CROWDFUND_EDITIONS

Holders

701

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
noun839.eth
Balance
1 CROWDFUND_EDITIONS
0x3b60e31cfc48a9074cd5bebb26c9eaa77650a43f
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Mirror Editions are a way for creators to mint a limited supply of identical NFTs at a fixed price. If a 1/1 NFT is a Picasso at Sotheby's, Editions are like the thousands of first-edition holographic Charizards released.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CrowdfundEditions

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-12
*/

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.5;

interface IERC721 {
    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 IERC721Metadata {
    function name() external view returns (string memory);

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

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

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

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

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

/**
 * Based on: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol
 */
contract ERC721 is ERC165, IERC721 {
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;

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

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

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

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        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))
                : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. Empty by default, can be overriden
     * in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

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

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved)
        public
        virtual
        override
    {
        require(operator != msg.sender, "ERC721: approve to caller");

        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, 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 virtual override {
        //solhint-disable-next-line max-line-length
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "ERC721: transfer caller is not owner nor approved"
        );

        _transfer(from, to, tokenId);
    }

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

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "ERC721: transfer caller is not owner nor approved"
        );
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId)
        internal
        view
        virtual
        returns (bool)
    {
        require(
            _exists(tokenId),
            "ERC721: operator query for nonexistent token"
        );
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner ||
            getApproved(tokenId) == spender ||
            isApprovedForAll(owner, spender));
    }

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

    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

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

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

    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

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

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

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

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(
            ERC721.ownerOf(tokenId) == from,
            "ERC721: transfer of token that is not own"
        );
        require(to != address(0), "ERC721: transfer to the zero address");

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

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

        emit Transfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (isContract(to)) {
            try
                IERC721Receiver(to).onERC721Received(
                    msg.sender,
                    from,
                    tokenId,
                    _data
                )
            returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert(
                        "ERC721: transfer to non ERC721Receiver implementer"
                    );
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/7f6a1666fac8ecff5dd467d0938069bc221ea9e0/contracts/utils/Address.sol
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
}


// File contracts/interface/ICrowdfundEditions.sol


interface ICrowdfundEditions {
    struct Edition {
        // The maximum number of tokens that can be sold.
        uint256 quantity;
        // The price at which each token will be sold, in ETH.
        uint256 price;
        // The account that will receive sales revenue.
        address payable fundingRecipient;
        // The number of tokens sold so far.
        uint256 numSold;
        bytes32 contentHash;
    }

    struct EditionTier {
        // The maximum number of tokens that can be sold.
        uint256 quantity;
        // The price at which each token will be sold, in ETH.
        uint256 price;
        bytes32 contentHash;
    }

    function buyEdition(uint256 editionId, address recipient)
        external
        payable
        returns (uint256 tokenId);

    function editionPrice(uint256 editionId) external view returns (uint256);

    function createEditions(
        EditionTier[] memory tier,
        // The account that should receive the revenue.
        address payable fundingRecipient,
        address minter
    ) external;

    function contractURI() external view returns (string memory);
}


// File contracts/CrowdfundEditions.sol



/**
 * @title CrowdfundEditions
 * @author MirrorXYZ
 */
contract CrowdfundEditions is ERC721, ICrowdfundEditions {
    // ============ Constants ============

    string public constant name = "Crowdfunded Mirror Editions";
    string public constant symbol = "CROWDFUND_EDITIONS";

    uint256 internal constant REENTRANCY_NOT_ENTERED = 1;
    uint256 internal constant REENTRANCY_ENTERED = 2;

    // ============ Setup Storage ============

    // The CrowdfundFactory that is able to create editions.
    address public editionCreator;

    // ============ Mutable Storage ============

    // Mapping of edition id to descriptive data.
    mapping(uint256 => Edition) public editions;
    // Mapping of token id to edition id.
    mapping(uint256 => uint256) public tokenToEdition;
    // The contract that is able to mint.
    mapping(uint256 => address) public editionToMinter;
    // `nextTokenId` increments with each token purchased, globally across all editions.
    uint256 private nextTokenId;
    // Editions start at 1, in order that unsold tokens don't map to the first edition.
    uint256 private nextEditionId = 1;
    // Reentrancy
    uint256 internal reentrancyStatus;
    // Administration
    address public owner;
    address public nextOwner;
    // Base URI can be modified by multisig owner, for intended future
    // migration of API domain to a decentralized one.
    string public baseURI;

    // ============ Events ============

    event EditionCreated(
        uint256 quantity,
        uint256 price,
        address fundingRecipient,
        uint256 indexed editionId,
        bytes32 contentHash
    );

    event EditionPurchased(
        uint256 indexed editionId,
        uint256 indexed tokenId,
        // `numSold` at time of purchase represents the "serial number" of the NFT.
        uint256 numSold,
        uint256 amountPaid,
        // The account that paid for and received the NFT.
        address buyer,
        address receiver
    );

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

    event EditionCreatorChanged(
        address indexed previousCreator,
        address indexed newCreator
    );

    // ============ Modifiers ============

    modifier onlyOwner() {
        require(isOwner(), "caller is not the owner.");
        _;
    }

    modifier onlyNextOwner() {
        require(isNextOwner(), "current owner must set caller as next owner.");
        _;
    }

    // ============ Constructor ============

    constructor(string memory baseURI_, address owner_) {
        baseURI = baseURI_;
        owner = owner_;
    }

    // ============ Setup ============

    function setEditionCreator(address editionCreator_) external {
        require(editionCreator == address(0), "already set");
        editionCreator = editionCreator_;
        emit EditionCreatorChanged(address(0), editionCreator_);
    }

    // ============ Edition Methods ============

    function createEditions(
        EditionTier[] memory tiers,
        // The account that should receive the revenue.
        address payable fundingRecipient,
        // The address (e.g. crowdfund proxy) that is allowed to mint
        // tokens in this edition.
        address minter
    ) external override {
        // Only the crowdfund factory can create editions.
        require(msg.sender == editionCreator);
        // Copy the next edition id, which we reference in the loop.
        uint256 firstEditionId = nextEditionId;
        // Update the next edition id to what we expect after the loop.
        nextEditionId += tiers.length;
        // Execute a loop that created editions.
        for (uint8 x = 0; x < tiers.length; x++) {
            uint256 id = firstEditionId + x;
            uint256 quantity = tiers[x].quantity;
            uint256 price = tiers[x].price;
            bytes32 contentHash = tiers[x].contentHash;

            editions[id] = Edition({
                quantity: quantity,
                price: price,
                fundingRecipient: fundingRecipient,
                numSold: 0,
                contentHash: contentHash
            });

            editionToMinter[id] = minter;

            emit EditionCreated(
                quantity,
                price,
                fundingRecipient,
                id,
                contentHash
            );
        }
    }

    function buyEdition(uint256 editionId, address recipient)
        external
        payable
        override
        returns (uint256 tokenId)
    {
        // Only the minter can call this function.
        // This allows us to mint through another contract, and
        // there not have to transfer funds into this contract to purchase.
        require(msg.sender == editionToMinter[editionId]);
        // Track and update token id.
        tokenId = nextTokenId;
        nextTokenId++;
        // Check that the edition exists. Note: this is redundant
        // with the next check, but it is useful for clearer error messaging.
        require(editions[editionId].quantity > 0, "Edition does not exist");
        // Check that there are still tokens available to purchase.
        require(
            editions[editionId].numSold < editions[editionId].quantity,
            "This edition is already sold out."
        );
        // Increment the number of tokens sold for this edition.
        editions[editionId].numSold++;
        // Mint a new token for the sender, using the `tokenId`.
        _mint(recipient, tokenId);
        // Store the mapping of token id to the edition being purchased.
        tokenToEdition[tokenId] = editionId;

        emit EditionPurchased(
            editionId,
            tokenId,
            editions[editionId].numSold,
            msg.value,
            msg.sender,
            recipient
        );

        return tokenId;
    }

    // ============ NFT Methods ============

    // Returns e.g. https://mirror-api.com/editions/[editionId]/[tokenId]
    function tokenURI(uint256 tokenId)
        public
        view
        override
        returns (string memory)
    {
        // If the token does not map to an edition, it'll be 0.
        require(tokenToEdition[tokenId] > 0, "Token has not been sold yet");
        // Concatenate the components, baseURI, editionId and tokenId, to create URI.
        return
            string(
                abi.encodePacked(
                    baseURI,
                    _toString(tokenToEdition[tokenId]),
                    "/",
                    _toString(tokenId)
                )
            );
    }

    // Returns e.g. https://mirror-api.com/editions/metadata
    function contractURI() public view override returns (string memory) {
        // Concatenate the components, baseURI, editionId and tokenId, to create URI.
        return string(abi.encodePacked(baseURI, "metadata"));
    }

    // Given an edition's ID, returns its price.
    function editionPrice(uint256 editionId)
        external
        view
        override
        returns (uint256)
    {
        return editions[editionId].price;
    }

    // The hash of the given content for the NFT. Can be used
    // for IPFS storage, verifying authenticity, etc.
    function getContentHash(uint256 tokenId) public view returns (bytes32) {
        // If the token does not map to an edition, it'll be 0.
        require(tokenToEdition[tokenId] > 0, "Token has not been sold yet");
        // Concatenate the components, baseURI, editionId and tokenId, to create URI.
        return editions[tokenToEdition[tokenId]].contentHash;
    }

    function getRoyaltyRecipient(uint256 tokenId)
        public
        view
        returns (address)
    {
        require(tokenToEdition[tokenId] > 0, "Token has not been minted yet");
        return editions[tokenToEdition[tokenId]].fundingRecipient;
    }

    function setRoyaltyRecipient(
        uint256 editionId,
        address payable newFundingRecipient
    ) public {
        require(
            editions[editionId].fundingRecipient == msg.sender,
            "Only current fundingRecipient can modify its value"
        );

        editions[editionId].fundingRecipient = newFundingRecipient;
    }

    // ============ Admin Methods ============

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

    // Allows the creator contract to be swapped out for an upgraded one.
    // NOTE: This does not affect existing editions already minted.
    function changeEditionCreator(address editionCreator_) public onlyOwner {
        emit EditionCreatorChanged(editionCreator, editionCreator_);
        editionCreator = editionCreator_;
    }

    function isOwner() public view returns (bool) {
        return msg.sender == owner;
    }

    function isNextOwner() public view returns (bool) {
        return msg.sender == nextOwner;
    }

    function transferOwnership(address nextOwner_) external onlyOwner {
        require(nextOwner_ != address(0), "Next owner is the zero address.");

        nextOwner = nextOwner_;
    }

    function cancelOwnershipTransfer() external onlyOwner {
        delete nextOwner;
    }

    function acceptOwnership() external onlyNextOwner {
        delete nextOwner;

        emit OwnershipTransferred(owner, msg.sender);

        owner = msg.sender;
    }

    function renounceOwnership() external onlyOwner {
        emit OwnershipTransferred(owner, address(0));
        owner = address(0);
    }

    // ============ Private Methods ============

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"},{"internalType":"address","name":"owner_","type":"address"}],"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":false,"internalType":"uint256","name":"quantity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"address","name":"fundingRecipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"editionId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"contentHash","type":"bytes32"}],"name":"EditionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousCreator","type":"address"},{"indexed":true,"internalType":"address","name":"newCreator","type":"address"}],"name":"EditionCreatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"editionId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"numSold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPaid","type":"uint256"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"}],"name":"EditionPurchased","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":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"editionId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"buyEdition","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"changeBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"editionCreator_","type":"address"}],"name":"changeEditionCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"contentHash","type":"bytes32"}],"internalType":"struct ICrowdfundEditions.EditionTier[]","name":"tiers","type":"tuple[]"},{"internalType":"address payable","name":"fundingRecipient","type":"address"},{"internalType":"address","name":"minter","type":"address"}],"name":"createEditions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"editionCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"editionId","type":"uint256"}],"name":"editionPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"editionToMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"editions","outputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address payable","name":"fundingRecipient","type":"address"},{"internalType":"uint256","name":"numSold","type":"uint256"},{"internalType":"bytes32","name":"contentHash","type":"bytes32"}],"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":"uint256","name":"tokenId","type":"uint256"}],"name":"getContentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getRoyaltyRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"editionCreator_","type":"address"}],"name":"setEditionCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"editionId","type":"uint256"},{"internalType":"address payable","name":"newFundingRecipient","type":"address"}],"name":"setRoyaltyRecipient","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":"","type":"uint256"}],"name":"tokenToEdition","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":[{"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":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260016009553480156200001657600080fd5b5060405162002bd338038062002bd3833981016040819052620000399162000139565b81516200004e90600d90602085019062000076565b50600b80546001600160a01b0319166001600160a01b0392909216919091179055506200027d565b82805462000084906200022a565b90600052602060002090601f016020900481019282620000a85760008555620000f3565b82601f10620000c357805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f3578251825591602001919060010190620000d6565b506200010192915062000105565b5090565b5b8082111562000101576000815560010162000106565b80516001600160a01b03811681146200013457600080fd5b919050565b600080604083850312156200014d57600080fd5b82516001600160401b03808211156200016557600080fd5b818501915085601f8301126200017a57600080fd5b8151818111156200018f576200018f62000267565b604051601f8201601f19908116603f01168101908382118183101715620001ba57620001ba62000267565b81604052828152602093508884848701011115620001d757600080fd5b600091505b82821015620001fb5784820184015181830185015290830190620001dc565b828211156200020d5760008484830101525b95506200021f9150508582016200011c565b925050509250929050565b600181811c908216806200023f57607f821691505b602082108114156200026157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612946806200028d6000396000f3fe60806040526004361061024f5760003560e01c806379ba509711610138578063b88d4fde116100b0578063e985e9c51161007f578063f2fde38b11610064578063f2fde38b14610792578063fe04d0dc146107b2578063ffbdc8cb146107d257600080fd5b8063e985e9c514610729578063ed459df21461077257600080fd5b8063b88d4fde146106b4578063c87b56dd146106d4578063d33ed8b8146106f4578063e8a3d4851461071457600080fd5b806395d89b4111610107578063a015a3d8116100ec578063a015a3d814610654578063a22cb46514610674578063af6d08531461069457600080fd5b806395d89b41146105eb5780639e6d134d1461063457600080fd5b806379ba5097146105605780638da5cb5b146105755780638f32d59b14610595578063908ab1d5146105b557600080fd5b806338d37b9b116101cb5780636352211e1161019a5780636c0360eb1161017f5780636c0360eb1461051657806370a082311461052b578063715018a61461054b57600080fd5b80636352211e146104d657806369f3331d146104f657600080fd5b806338d37b9b1461043957806339a0c6f91461046957806342842e0e14610489578063602787ed146104a957600080fd5b806309fc162a1161022257806323452b9c1161020757806323452b9c1461037a57806323b872dd1461038f578063279c806e146103af57600080fd5b806309fc162a14610339578063121e49841461035957600080fd5b806301ffc9a71461025457806306fdde0314610289578063081812fc146102df578063095ea7b314610317575b600080fd5b34801561026057600080fd5b5061027461026f366004612490565b6107f2565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b506102d26040518060400160405280601b81526020017f43726f776466756e646564204d6972726f722045646974696f6e73000000000081525081565b60405161028091906126ee565b3480156102eb57600080fd5b506102ff6102fa366004612513565b6108d7565b6040516001600160a01b039091168152602001610280565b34801561032357600080fd5b50610337610332366004612369565b610982565b005b34801561034557600080fd5b50610337610354366004612395565b610ad2565b61036c61036736600461252c565b610c9f565b604051908152602001610280565b34801561038657600080fd5b50610337610e64565b34801561039b57600080fd5b506103376103aa366004612275565b610ed0565b3480156103bb57600080fd5b506104036103ca366004612513565b60056020526000908152604090208054600182015460028301546003840154600490940154929391926001600160a01b03909116919085565b6040805195865260208601949094526001600160a01b03909216928401929092526060830191909152608082015260a001610280565b34801561044557600080fd5b5061036c610454366004612513565b60009081526005602052604090206001015490565b34801561047557600080fd5b506103376104843660046124ca565b610f57565b34801561049557600080fd5b506103376104a4366004612275565b610fc8565b3480156104b557600080fd5b5061036c6104c4366004612513565b60066020526000908152604090205481565b3480156104e257600080fd5b506102ff6104f1366004612513565b610fe3565b34801561050257600080fd5b50600c546102ff906001600160a01b031681565b34801561052257600080fd5b506102d261106e565b34801561053757600080fd5b5061036c610546366004612218565b6110fc565b34801561055757600080fd5b50610337611196565b34801561056c57600080fd5b5061033761123a565b34801561058157600080fd5b50600b546102ff906001600160a01b031681565b3480156105a157600080fd5b50600b546001600160a01b03163314610274565b3480156105c157600080fd5b506102ff6105d0366004612513565b6007602052600090815260409020546001600160a01b031681565b3480156105f757600080fd5b506102d26040518060400160405280601281526020017f43524f574446554e445f45444954494f4e53000000000000000000000000000081525081565b34801561064057600080fd5b5061033761064f36600461252c565b611316565b34801561066057600080fd5b506102ff61066f366004612513565b6113d6565b34801561068057600080fd5b5061033761068f366004612336565b61145d565b3480156106a057600080fd5b506103376106af366004612218565b611522565b3480156106c057600080fd5b506103376106cf3660046122b6565b6115c7565b3480156106e057600080fd5b506102d26106ef366004612513565b611655565b34801561070057600080fd5b506004546102ff906001600160a01b031681565b34801561072057600080fd5b506102d26116ff565b34801561073557600080fd5b5061027461074436600461223c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b34801561077e57600080fd5b50600c546001600160a01b03163314610274565b34801561079e57600080fd5b506103376107ad366004612218565b611727565b3480156107be57600080fd5b506103376107cd366004612218565b6117f9565b3480156107de57600080fd5b5061036c6107ed366004612513565b6118af565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061088557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806108d157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000818152602081905260408120546001600160a01b03166109665760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600260205260409020546001600160a01b031690565b600061098d82610fe3565b9050806001600160a01b0316836001600160a01b03161415610a175760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161095d565b336001600160a01b0382161480610a5157506001600160a01b038116600090815260036020908152604080832033845290915290205460ff165b610ac35760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161095d565b610acd838361192d565b505050565b6004546001600160a01b03163314610ae957600080fd5b60098054845190916000610afd838561275b565b90915550600090505b84518160ff161015610c98576000610b2160ff83168461275b565b90506000868360ff1681518110610b3a57610b3a61289e565b60200260200101516000015190506000878460ff1681518110610b5f57610b5f61289e565b60200260200101516020015190506000888560ff1681518110610b8457610b8461289e565b602090810291909101810151604090810151815160a0810183528681528084018681526001600160a01b03808e16838601908152600060608501818152608086018781528d835260058a52888320965187559451600187015591516002860180549185166001600160a01b031992831617905591516003860155925160049094019390935560079095528390208054948c1694909116939093179092555190915084907faf0358e6610affb68df2bc72a3c7cba9f34af8963e36ee890142b81bf3c8ba6990610c7990869086908d90879093845260208401929092526001600160a01b03166040830152606082015260800190565b60405180910390a2505050508080610c909061283e565b915050610b06565b5050505050565b6000828152600760205260408120546001600160a01b03163314610cc257600080fd5b50600880549081906000610cd583612805565b9091555050600083815260056020526040902054610d355760405162461bcd60e51b815260206004820152601660248201527f45646974696f6e20646f6573206e6f7420657869737400000000000000000000604482015260640161095d565b6000838152600560205260409020805460039091015410610dbe5760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f757460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161095d565b6000838152600560205260408120600301805491610ddb83612805565b9190505550610dea828261199b565b60008181526006602090815260408083208690558583526005825291829020600301548251908152349181019190915233818301526001600160a01b03841660608201529051829185917f7bb8f63d53af422c82323135cb2cfa94a2189a70484e7c5b5d40bda6ae498e639181900360800190a392915050565b600b546001600160a01b03163314610ebe5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b600c80546001600160a01b0319169055565b610eda3382611adf565b610f4c5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161095d565b610acd838383611be7565b600b546001600160a01b03163314610fb15760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b8051610fc490600d906020840190612117565b5050565b610acd838383604051806020016040528060008152506115c7565b6000818152602081905260408120546001600160a01b0316806108d15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161095d565b600d805461107b906127ca565b80601f01602080910402602001604051908101604052809291908181526020018280546110a7906127ca565b80156110f45780601f106110c9576101008083540402835291602001916110f4565b820191906000526020600020905b8154815290600101906020018083116110d757829003601f168201915b505050505081565b60006001600160a01b03821661117a5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161095d565b506001600160a01b031660009081526001602052604090205490565b600b546001600160a01b031633146111f05760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b600b546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600b80546001600160a01b0319169055565b600c546001600160a01b031633146112ba5760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e0000000000000000000000000000000000000000606482015260840161095d565b600c80546001600160a01b0319169055600b5460405133916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600b80546001600160a01b03191633179055565b6000828152600560205260409020600201546001600160a01b031633146113a55760405162461bcd60e51b815260206004820152603260248201527f4f6e6c792063757272656e742066756e64696e67526563697069656e7420636160448201527f6e206d6f64696679206974732076616c75650000000000000000000000000000606482015260840161095d565b60009182526005602052604090912060020180546001600160a01b0319166001600160a01b03909216919091179055565b6000818152600660205260408120546114315760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e20686173206e6f74206265656e206d696e74656420796574000000604482015260640161095d565b50600090815260066020908152604080832054835260059091529020600201546001600160a01b031690565b6001600160a01b0382163314156114b65760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161095d565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6004546001600160a01b03161561157b5760405162461bcd60e51b815260206004820152600b60248201527f616c726561647920736574000000000000000000000000000000000000000000604482015260640161095d565b600480546001600160a01b0319166001600160a01b0383169081179091556040516000907fb124c64ec593fef93c8be07bdd4c91d55d3ea7e4efa4546b5caa767b414c740e908290a350565b6115d13383611adf565b6116435760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161095d565b61164f84848484611db8565b50505050565b6000818152600660205260409020546060906116b35760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e20686173206e6f74206265656e20736f6c64207965740000000000604482015260640161095d565b600082815260066020526040902054600d906116ce90611e41565b6116d784611e41565b6040516020016116e993929190612617565b6040516020818303038152906040529050919050565b6060600d6040516020016117139190612679565b604051602081830303815290604052905090565b600b546001600160a01b031633146117815760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b6001600160a01b0381166117d75760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e00604482015260640161095d565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031633146118535760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b6004546040516001600160a01b038084169216907fb124c64ec593fef93c8be07bdd4c91d55d3ea7e4efa4546b5caa767b414c740e90600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60008181526006602052604081205461190a5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e20686173206e6f74206265656e20736f6c64207965740000000000604482015260640161095d565b506000908152600660209081526040808320548352600590915290206004015490565b600081815260026020526040902080546001600160a01b0319166001600160a01b038416908117909155819061196282610fe3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b0382166119f15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161095d565b6000818152602081905260409020546001600160a01b031615611a565760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161095d565b6001600160a01b03821660009081526001602081905260408220805491929091611a8190849061275b565b909155505060008181526020819052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152602081905260408120546001600160a01b0316611b695760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161095d565b6000611b7483610fe3565b9050806001600160a01b0316846001600160a01b03161480611baf5750836001600160a01b0316611ba4846108d7565b6001600160a01b0316145b80611bdf57506001600160a01b0380821660009081526003602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611bfa82610fe3565b6001600160a01b031614611c765760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161095d565b6001600160a01b038216611cf15760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161095d565b611cfc60008261192d565b6001600160a01b03831660009081526001602081905260408220805491929091611d27908490612787565b90915550506001600160a01b03821660009081526001602081905260408220805491929091611d5790849061275b565b909155505060008181526020819052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611dc3848484611be7565b611dcf84848484611f73565b61164f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161095d565b606081611e8157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611eab5780611e9581612805565b9150611ea49050600a83612773565b9150611e85565b60008167ffffffffffffffff811115611ec657611ec66128b4565b6040519080825280601f01601f191660200182016040528015611ef0576020820181803683370190505b5090505b8415611bdf57611f05600183612787565b9150611f12600a8661285e565b611f1d90603061275b565b60f81b818381518110611f3257611f3261289e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f6c600a86612773565b9450611ef4565b6000833b1561210c576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290611fc79033908990889088906004016126b2565b602060405180830381600087803b158015611fe157600080fd5b505af1925050508015612011575060408051601f3d908101601f1916820190925261200e918101906124ad565b60015b6120c1573d80801561203f576040519150601f19603f3d011682016040523d82523d6000602084013e612044565b606091505b5080516120b95760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161095d565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611bdf565b506001949350505050565b828054612123906127ca565b90600052602060002090601f016020900481019282612145576000855561218b565b82601f1061215e57805160ff191683800117855561218b565b8280016001018555821561218b579182015b8281111561218b578251825591602001919060010190612170565b5061219792915061219b565b5090565b5b80821115612197576000815560010161219c565b600067ffffffffffffffff8311156121ca576121ca6128b4565b6121dd6020601f19601f8601160161272a565b90508281528383830111156121f157600080fd5b828260208301376000602084830101529392505050565b8035612213816128ca565b919050565b60006020828403121561222a57600080fd5b8135612235816128ca565b9392505050565b6000806040838503121561224f57600080fd5b823561225a816128ca565b9150602083013561226a816128ca565b809150509250929050565b60008060006060848603121561228a57600080fd5b8335612295816128ca565b925060208401356122a5816128ca565b929592945050506040919091013590565b600080600080608085870312156122cc57600080fd5b84356122d7816128ca565b935060208501356122e7816128ca565b925060408501359150606085013567ffffffffffffffff81111561230a57600080fd5b8501601f8101871361231b57600080fd5b61232a878235602084016121b0565b91505092959194509250565b6000806040838503121561234957600080fd5b8235612354816128ca565b91506020830135801515811461226a57600080fd5b6000806040838503121561237c57600080fd5b8235612387816128ca565b946020939093013593505050565b600080600060608085870312156123ab57600080fd5b843567ffffffffffffffff808211156123c357600080fd5b818701915087601f8301126123d757600080fd5b81356020828211156123eb576123eb6128b4565b6123f9818360051b0161272a565b8281528181019350848201868402860183018c101561241757600080fd5b60009550855b848110156124635787828e031215612433578687fd5b61243b612701565b823581528483013585820152604080840135908201528652948301949087019060010161241d565b505080985050612474818a01612208565b9650505050505061248760408501612208565b90509250925092565b6000602082840312156124a257600080fd5b8135612235816128e2565b6000602082840312156124bf57600080fd5b8151612235816128e2565b6000602082840312156124dc57600080fd5b813567ffffffffffffffff8111156124f357600080fd5b8201601f8101841361250457600080fd5b611bdf848235602084016121b0565b60006020828403121561252557600080fd5b5035919050565b6000806040838503121561253f57600080fd5b82359150602083013561226a816128ca565b6000815180845261256981602086016020860161279e565b601f01601f19169290920160200192915050565b8054600090600181811c908083168061259757607f831692505b60208084108214156125b957634e487b7160e01b600052602260045260246000fd5b8180156125cd57600181146125de5761260b565b60ff1986168952848901965061260b565b60008881526020902060005b868110156126035781548b8201529085019083016125ea565b505084890196505b50505050505092915050565b6000612623828661257d565b845161263381836020890161279e565b7f2f000000000000000000000000000000000000000000000000000000000000009101908152835161266c81600184016020880161279e565b0160010195945050505050565b6000612685828461257d565b7f6d6574616461746100000000000000000000000000000000000000000000000081526008019392505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526126e46080830184612551565b9695505050505050565b6020815260006122356020830184612551565b6040516060810167ffffffffffffffff81118282101715612724576127246128b4565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612753576127536128b4565b604052919050565b6000821982111561276e5761276e612872565b500190565b60008261278257612782612888565b500490565b60008282101561279957612799612872565b500390565b60005b838110156127b95781810151838201526020016127a1565b8381111561164f5750506000910152565b600181811c908216806127de57607f821691505b602082108114156127ff57634e487b7160e01b600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561283757612837612872565b5060010190565b600060ff821660ff81141561285557612855612872565b60010192915050565b60008261286d5761286d612888565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146128df57600080fd5b50565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146128df57600080fdfea26469706673582212205ecf4bf9ebcb4286b9079b422d6c3f5016b8b760c4e986f587b3298b6ab16abe64736f6c6343000805003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57000000000000000000000000000000000000000000000000000000000000002c68747470733a2f2f6d6972726f722d6170692e636f6d2f65646974696f6e732f63726f776466756e6465642f0000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061024f5760003560e01c806379ba509711610138578063b88d4fde116100b0578063e985e9c51161007f578063f2fde38b11610064578063f2fde38b14610792578063fe04d0dc146107b2578063ffbdc8cb146107d257600080fd5b8063e985e9c514610729578063ed459df21461077257600080fd5b8063b88d4fde146106b4578063c87b56dd146106d4578063d33ed8b8146106f4578063e8a3d4851461071457600080fd5b806395d89b4111610107578063a015a3d8116100ec578063a015a3d814610654578063a22cb46514610674578063af6d08531461069457600080fd5b806395d89b41146105eb5780639e6d134d1461063457600080fd5b806379ba5097146105605780638da5cb5b146105755780638f32d59b14610595578063908ab1d5146105b557600080fd5b806338d37b9b116101cb5780636352211e1161019a5780636c0360eb1161017f5780636c0360eb1461051657806370a082311461052b578063715018a61461054b57600080fd5b80636352211e146104d657806369f3331d146104f657600080fd5b806338d37b9b1461043957806339a0c6f91461046957806342842e0e14610489578063602787ed146104a957600080fd5b806309fc162a1161022257806323452b9c1161020757806323452b9c1461037a57806323b872dd1461038f578063279c806e146103af57600080fd5b806309fc162a14610339578063121e49841461035957600080fd5b806301ffc9a71461025457806306fdde0314610289578063081812fc146102df578063095ea7b314610317575b600080fd5b34801561026057600080fd5b5061027461026f366004612490565b6107f2565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b506102d26040518060400160405280601b81526020017f43726f776466756e646564204d6972726f722045646974696f6e73000000000081525081565b60405161028091906126ee565b3480156102eb57600080fd5b506102ff6102fa366004612513565b6108d7565b6040516001600160a01b039091168152602001610280565b34801561032357600080fd5b50610337610332366004612369565b610982565b005b34801561034557600080fd5b50610337610354366004612395565b610ad2565b61036c61036736600461252c565b610c9f565b604051908152602001610280565b34801561038657600080fd5b50610337610e64565b34801561039b57600080fd5b506103376103aa366004612275565b610ed0565b3480156103bb57600080fd5b506104036103ca366004612513565b60056020526000908152604090208054600182015460028301546003840154600490940154929391926001600160a01b03909116919085565b6040805195865260208601949094526001600160a01b03909216928401929092526060830191909152608082015260a001610280565b34801561044557600080fd5b5061036c610454366004612513565b60009081526005602052604090206001015490565b34801561047557600080fd5b506103376104843660046124ca565b610f57565b34801561049557600080fd5b506103376104a4366004612275565b610fc8565b3480156104b557600080fd5b5061036c6104c4366004612513565b60066020526000908152604090205481565b3480156104e257600080fd5b506102ff6104f1366004612513565b610fe3565b34801561050257600080fd5b50600c546102ff906001600160a01b031681565b34801561052257600080fd5b506102d261106e565b34801561053757600080fd5b5061036c610546366004612218565b6110fc565b34801561055757600080fd5b50610337611196565b34801561056c57600080fd5b5061033761123a565b34801561058157600080fd5b50600b546102ff906001600160a01b031681565b3480156105a157600080fd5b50600b546001600160a01b03163314610274565b3480156105c157600080fd5b506102ff6105d0366004612513565b6007602052600090815260409020546001600160a01b031681565b3480156105f757600080fd5b506102d26040518060400160405280601281526020017f43524f574446554e445f45444954494f4e53000000000000000000000000000081525081565b34801561064057600080fd5b5061033761064f36600461252c565b611316565b34801561066057600080fd5b506102ff61066f366004612513565b6113d6565b34801561068057600080fd5b5061033761068f366004612336565b61145d565b3480156106a057600080fd5b506103376106af366004612218565b611522565b3480156106c057600080fd5b506103376106cf3660046122b6565b6115c7565b3480156106e057600080fd5b506102d26106ef366004612513565b611655565b34801561070057600080fd5b506004546102ff906001600160a01b031681565b34801561072057600080fd5b506102d26116ff565b34801561073557600080fd5b5061027461074436600461223c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b34801561077e57600080fd5b50600c546001600160a01b03163314610274565b34801561079e57600080fd5b506103376107ad366004612218565b611727565b3480156107be57600080fd5b506103376107cd366004612218565b6117f9565b3480156107de57600080fd5b5061036c6107ed366004612513565b6118af565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061088557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806108d157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000818152602081905260408120546001600160a01b03166109665760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600260205260409020546001600160a01b031690565b600061098d82610fe3565b9050806001600160a01b0316836001600160a01b03161415610a175760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161095d565b336001600160a01b0382161480610a5157506001600160a01b038116600090815260036020908152604080832033845290915290205460ff165b610ac35760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161095d565b610acd838361192d565b505050565b6004546001600160a01b03163314610ae957600080fd5b60098054845190916000610afd838561275b565b90915550600090505b84518160ff161015610c98576000610b2160ff83168461275b565b90506000868360ff1681518110610b3a57610b3a61289e565b60200260200101516000015190506000878460ff1681518110610b5f57610b5f61289e565b60200260200101516020015190506000888560ff1681518110610b8457610b8461289e565b602090810291909101810151604090810151815160a0810183528681528084018681526001600160a01b03808e16838601908152600060608501818152608086018781528d835260058a52888320965187559451600187015591516002860180549185166001600160a01b031992831617905591516003860155925160049094019390935560079095528390208054948c1694909116939093179092555190915084907faf0358e6610affb68df2bc72a3c7cba9f34af8963e36ee890142b81bf3c8ba6990610c7990869086908d90879093845260208401929092526001600160a01b03166040830152606082015260800190565b60405180910390a2505050508080610c909061283e565b915050610b06565b5050505050565b6000828152600760205260408120546001600160a01b03163314610cc257600080fd5b50600880549081906000610cd583612805565b9091555050600083815260056020526040902054610d355760405162461bcd60e51b815260206004820152601660248201527f45646974696f6e20646f6573206e6f7420657869737400000000000000000000604482015260640161095d565b6000838152600560205260409020805460039091015410610dbe5760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f757460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161095d565b6000838152600560205260408120600301805491610ddb83612805565b9190505550610dea828261199b565b60008181526006602090815260408083208690558583526005825291829020600301548251908152349181019190915233818301526001600160a01b03841660608201529051829185917f7bb8f63d53af422c82323135cb2cfa94a2189a70484e7c5b5d40bda6ae498e639181900360800190a392915050565b600b546001600160a01b03163314610ebe5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b600c80546001600160a01b0319169055565b610eda3382611adf565b610f4c5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161095d565b610acd838383611be7565b600b546001600160a01b03163314610fb15760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b8051610fc490600d906020840190612117565b5050565b610acd838383604051806020016040528060008152506115c7565b6000818152602081905260408120546001600160a01b0316806108d15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161095d565b600d805461107b906127ca565b80601f01602080910402602001604051908101604052809291908181526020018280546110a7906127ca565b80156110f45780601f106110c9576101008083540402835291602001916110f4565b820191906000526020600020905b8154815290600101906020018083116110d757829003601f168201915b505050505081565b60006001600160a01b03821661117a5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161095d565b506001600160a01b031660009081526001602052604090205490565b600b546001600160a01b031633146111f05760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b600b546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600b80546001600160a01b0319169055565b600c546001600160a01b031633146112ba5760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e0000000000000000000000000000000000000000606482015260840161095d565b600c80546001600160a01b0319169055600b5460405133916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600b80546001600160a01b03191633179055565b6000828152600560205260409020600201546001600160a01b031633146113a55760405162461bcd60e51b815260206004820152603260248201527f4f6e6c792063757272656e742066756e64696e67526563697069656e7420636160448201527f6e206d6f64696679206974732076616c75650000000000000000000000000000606482015260840161095d565b60009182526005602052604090912060020180546001600160a01b0319166001600160a01b03909216919091179055565b6000818152600660205260408120546114315760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e20686173206e6f74206265656e206d696e74656420796574000000604482015260640161095d565b50600090815260066020908152604080832054835260059091529020600201546001600160a01b031690565b6001600160a01b0382163314156114b65760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161095d565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6004546001600160a01b03161561157b5760405162461bcd60e51b815260206004820152600b60248201527f616c726561647920736574000000000000000000000000000000000000000000604482015260640161095d565b600480546001600160a01b0319166001600160a01b0383169081179091556040516000907fb124c64ec593fef93c8be07bdd4c91d55d3ea7e4efa4546b5caa767b414c740e908290a350565b6115d13383611adf565b6116435760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161095d565b61164f84848484611db8565b50505050565b6000818152600660205260409020546060906116b35760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e20686173206e6f74206265656e20736f6c64207965740000000000604482015260640161095d565b600082815260066020526040902054600d906116ce90611e41565b6116d784611e41565b6040516020016116e993929190612617565b6040516020818303038152906040529050919050565b6060600d6040516020016117139190612679565b604051602081830303815290604052905090565b600b546001600160a01b031633146117815760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b6001600160a01b0381166117d75760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e00604482015260640161095d565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031633146118535760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161095d565b6004546040516001600160a01b038084169216907fb124c64ec593fef93c8be07bdd4c91d55d3ea7e4efa4546b5caa767b414c740e90600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60008181526006602052604081205461190a5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e20686173206e6f74206265656e20736f6c64207965740000000000604482015260640161095d565b506000908152600660209081526040808320548352600590915290206004015490565b600081815260026020526040902080546001600160a01b0319166001600160a01b038416908117909155819061196282610fe3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b0382166119f15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161095d565b6000818152602081905260409020546001600160a01b031615611a565760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161095d565b6001600160a01b03821660009081526001602081905260408220805491929091611a8190849061275b565b909155505060008181526020819052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152602081905260408120546001600160a01b0316611b695760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161095d565b6000611b7483610fe3565b9050806001600160a01b0316846001600160a01b03161480611baf5750836001600160a01b0316611ba4846108d7565b6001600160a01b0316145b80611bdf57506001600160a01b0380821660009081526003602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611bfa82610fe3565b6001600160a01b031614611c765760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161095d565b6001600160a01b038216611cf15760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161095d565b611cfc60008261192d565b6001600160a01b03831660009081526001602081905260408220805491929091611d27908490612787565b90915550506001600160a01b03821660009081526001602081905260408220805491929091611d5790849061275b565b909155505060008181526020819052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611dc3848484611be7565b611dcf84848484611f73565b61164f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161095d565b606081611e8157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611eab5780611e9581612805565b9150611ea49050600a83612773565b9150611e85565b60008167ffffffffffffffff811115611ec657611ec66128b4565b6040519080825280601f01601f191660200182016040528015611ef0576020820181803683370190505b5090505b8415611bdf57611f05600183612787565b9150611f12600a8661285e565b611f1d90603061275b565b60f81b818381518110611f3257611f3261289e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f6c600a86612773565b9450611ef4565b6000833b1561210c576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290611fc79033908990889088906004016126b2565b602060405180830381600087803b158015611fe157600080fd5b505af1925050508015612011575060408051601f3d908101601f1916820190925261200e918101906124ad565b60015b6120c1573d80801561203f576040519150601f19603f3d011682016040523d82523d6000602084013e612044565b606091505b5080516120b95760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161095d565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611bdf565b506001949350505050565b828054612123906127ca565b90600052602060002090601f016020900481019282612145576000855561218b565b82601f1061215e57805160ff191683800117855561218b565b8280016001018555821561218b579182015b8281111561218b578251825591602001919060010190612170565b5061219792915061219b565b5090565b5b80821115612197576000815560010161219c565b600067ffffffffffffffff8311156121ca576121ca6128b4565b6121dd6020601f19601f8601160161272a565b90508281528383830111156121f157600080fd5b828260208301376000602084830101529392505050565b8035612213816128ca565b919050565b60006020828403121561222a57600080fd5b8135612235816128ca565b9392505050565b6000806040838503121561224f57600080fd5b823561225a816128ca565b9150602083013561226a816128ca565b809150509250929050565b60008060006060848603121561228a57600080fd5b8335612295816128ca565b925060208401356122a5816128ca565b929592945050506040919091013590565b600080600080608085870312156122cc57600080fd5b84356122d7816128ca565b935060208501356122e7816128ca565b925060408501359150606085013567ffffffffffffffff81111561230a57600080fd5b8501601f8101871361231b57600080fd5b61232a878235602084016121b0565b91505092959194509250565b6000806040838503121561234957600080fd5b8235612354816128ca565b91506020830135801515811461226a57600080fd5b6000806040838503121561237c57600080fd5b8235612387816128ca565b946020939093013593505050565b600080600060608085870312156123ab57600080fd5b843567ffffffffffffffff808211156123c357600080fd5b818701915087601f8301126123d757600080fd5b81356020828211156123eb576123eb6128b4565b6123f9818360051b0161272a565b8281528181019350848201868402860183018c101561241757600080fd5b60009550855b848110156124635787828e031215612433578687fd5b61243b612701565b823581528483013585820152604080840135908201528652948301949087019060010161241d565b505080985050612474818a01612208565b9650505050505061248760408501612208565b90509250925092565b6000602082840312156124a257600080fd5b8135612235816128e2565b6000602082840312156124bf57600080fd5b8151612235816128e2565b6000602082840312156124dc57600080fd5b813567ffffffffffffffff8111156124f357600080fd5b8201601f8101841361250457600080fd5b611bdf848235602084016121b0565b60006020828403121561252557600080fd5b5035919050565b6000806040838503121561253f57600080fd5b82359150602083013561226a816128ca565b6000815180845261256981602086016020860161279e565b601f01601f19169290920160200192915050565b8054600090600181811c908083168061259757607f831692505b60208084108214156125b957634e487b7160e01b600052602260045260246000fd5b8180156125cd57600181146125de5761260b565b60ff1986168952848901965061260b565b60008881526020902060005b868110156126035781548b8201529085019083016125ea565b505084890196505b50505050505092915050565b6000612623828661257d565b845161263381836020890161279e565b7f2f000000000000000000000000000000000000000000000000000000000000009101908152835161266c81600184016020880161279e565b0160010195945050505050565b6000612685828461257d565b7f6d6574616461746100000000000000000000000000000000000000000000000081526008019392505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526126e46080830184612551565b9695505050505050565b6020815260006122356020830184612551565b6040516060810167ffffffffffffffff81118282101715612724576127246128b4565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612753576127536128b4565b604052919050565b6000821982111561276e5761276e612872565b500190565b60008261278257612782612888565b500490565b60008282101561279957612799612872565b500390565b60005b838110156127b95781810151838201526020016127a1565b8381111561164f5750506000910152565b600181811c908216806127de57607f821691505b602082108114156127ff57634e487b7160e01b600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561283757612837612872565b5060010190565b600060ff821660ff81141561285557612855612872565b60010192915050565b60008261286d5761286d612888565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146128df57600080fd5b50565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146128df57600080fdfea26469706673582212205ecf4bf9ebcb4286b9079b422d6c3f5016b8b760c4e986f587b3298b6ab16abe64736f6c63430008050033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57000000000000000000000000000000000000000000000000000000000000002c68747470733a2f2f6d6972726f722d6170692e636f6d2f65646974696f6e732f63726f776466756e6465642f0000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : baseURI_ (string): https://mirror-api.com/editions/crowdfunded/
Arg [1] : owner_ (address): 0x2330ee705fFD040bB0cbA8CB7734Dfe00E7C4b57

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57
Arg [2] : 000000000000000000000000000000000000000000000000000000000000002c
Arg [3] : 68747470733a2f2f6d6972726f722d6170692e636f6d2f65646974696f6e732f
Arg [4] : 63726f776466756e6465642f0000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

12098:10656:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2616:338;;;;;;;;;;-1:-1:-1;2616:338:0;;;;;:::i;:::-;;:::i;:::-;;;9944:14:1;;9937:22;9919:41;;9907:2;9892:18;2616:338:0;;;;;;;;12208:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4692:308::-;;;;;;;;;;-1:-1:-1;4692:308:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;9196:55:1;;;9178:74;;9166:2;9151:18;4692:308:0;9133:125:1;4277:407:0;;;;;;;;;;-1:-1:-1;4277:407:0;;;;;:::i;:::-;;:::i;:::-;;15132:1460;;;;;;;;;;-1:-1:-1;15132:1460:0;;;;;:::i;:::-;;:::i;16600:1514::-;;;;;;:::i;:::-;;:::i;:::-;;;10117:25:1;;;10105:2;10090:18;16600:1514:0;10072:76:1;21441:89:0;;;;;;;;;;;;;:::i;5559:374::-;;;;;;;;;;-1:-1:-1;5559:374:0;;;;;:::i;:::-;;:::i;12704:43::-;;;;;;;;;;-1:-1:-1;12704:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12704:43:0;;;;;;;;;;;19837:25:1;;;19893:2;19878:18;;19871:34;;;;-1:-1:-1;;;;;19941:55:1;;;19921:18;;;19914:83;;;;20028:2;20013:18;;20006:34;;;;20071:3;20056:19;;20049:35;19824:3;19809:19;12704:43:0;19791:299:1;19218:174:0;;;;;;;;;;-1:-1:-1;19218:174:0;;;;;:::i;:::-;19327:7;19359:19;;;:8;:19;;;;;:25;;;;19218:174;20585:101;;;;;;;;;;-1:-1:-1;20585:101:0;;;;;:::i;:::-;;:::i;5941:185::-;;;;;;;;;;-1:-1:-1;5941:185:0;;;;;:::i;:::-;;:::i;12797:49::-;;;;;;;;;;-1:-1:-1;12797:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;3265:326;;;;;;;;;;-1:-1:-1;3265:326:0;;;;;:::i;:::-;;:::i;13315:24::-;;;;;;;;;;-1:-1:-1;13315:24:0;;;;-1:-1:-1;;;;;13315:24:0;;;13474:21;;;;;;;;;;;;;:::i;2962:295::-;;;;;;;;;;-1:-1:-1;2962:295:0;;;;;:::i;:::-;;:::i;21719:140::-;;;;;;;;;;;;;:::i;21538:173::-;;;;;;;;;;;;;:::i;13288:20::-;;;;;;;;;;-1:-1:-1;13288:20:0;;;;-1:-1:-1;;;;;13288:20:0;;;21039:91;;;;;;;;;;-1:-1:-1;21117:5:0;;-1:-1:-1;;;;;21117:5:0;21103:10;:19;21039:91;;12896:50;;;;;;;;;;-1:-1:-1;12896:50:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;12896:50:0;;;12274:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20170:357;;;;;;;;;;-1:-1:-1;20170:357:0;;;;;:::i;:::-;;:::i;19898:264::-;;;;;;;;;;-1:-1:-1;19898:264:0;;;;;:::i;:::-;;:::i;5008:321::-;;;;;;;;;;-1:-1:-1;5008:321:0;;;;;:::i;:::-;;:::i;14831:241::-;;;;;;;;;;-1:-1:-1;14831:241:0;;;;;:::i;:::-;;:::i;6134:363::-;;;;;;;;;;-1:-1:-1;6134:363:0;;;;;:::i;:::-;;:::i;18245:619::-;;;;;;;;;;-1:-1:-1;18245:619:0;;;;;:::i;:::-;;:::i;12563:29::-;;;;;;;;;;-1:-1:-1;12563:29:0;;;;-1:-1:-1;;;;;12563:29:0;;;18934:226;;;;;;;;;;;;;:::i;5337:214::-;;;;;;;;;;-1:-1:-1;5337:214:0;;;;;:::i;:::-;-1:-1:-1;;;;;5508:25:0;;;5479:4;5508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;5337:214;21138:99;;;;;;;;;;-1:-1:-1;21220:9:0;;-1:-1:-1;;;;;21220:9:0;21206:10;:23;21138:99;;21245:188;;;;;;;;;;-1:-1:-1;21245:188:0;;;;;:::i;:::-;;:::i;20838:193::-;;;;;;;;;;-1:-1:-1;20838:193:0;;;;;:::i;:::-;;:::i;19518:372::-;;;;;;;;;;-1:-1:-1;19518:372:0;;;;;:::i;:::-;;:::i;2616:338::-;2746:4;2788:40;;;2803:25;2788:40;;:105;;-1:-1:-1;2845:48:0;;;2860:33;2845:48;2788:105;:158;;;-1:-1:-1;2169:25:0;2154:40;;;;2910:36;2768:178;2616:338;-1:-1:-1;;2616:338:0:o;4692:308::-;4813:7;6954:16;;;;;;;;;;;-1:-1:-1;;;;;6954:16:0;4838:110;;;;-1:-1:-1;;;4838:110:0;;16035:2:1;4838:110:0;;;16017:21:1;16074:2;16054:18;;;16047:30;16113:34;16093:18;;;16086:62;16184:14;16164:18;;;16157:42;16216:19;;4838:110:0;;;;;;;;;-1:-1:-1;4968:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;4968:24:0;;4692:308::o;4277:407::-;4358:13;4374:23;4389:7;4374:14;:23::i;:::-;4358:39;;4422:5;-1:-1:-1;;;;;4416:11:0;:2;-1:-1:-1;;;;;4416:11:0;;;4408:57;;;;-1:-1:-1;;;4408:57:0;;17260:2:1;4408:57:0;;;17242:21:1;17299:2;17279:18;;;17272:30;17338:34;17318:18;;;17311:62;17409:3;17389:18;;;17382:31;17430:19;;4408:57:0;17232:223:1;4408:57:0;4500:10;-1:-1:-1;;;;;4500:19:0;;;;:58;;-1:-1:-1;;;;;;5508:25:0;;5479:4;5508:25;;;:18;:25;;;;;;;;4547:10;5508:35;;;;;;;;;;4523;4478:164;;;;-1:-1:-1;;;4478:164:0;;14072:2:1;4478:164:0;;;14054:21:1;14111:2;14091:18;;;14084:30;14150:34;14130:18;;;14123:62;14221:26;14201:18;;;14194:54;14265:19;;4478:164:0;14044:246:1;4478:164:0;4655:21;4664:2;4668:7;4655:8;:21::i;:::-;4347:337;4277:407;;:::o;15132:1460::-;15543:14;;-1:-1:-1;;;;;15543:14:0;15529:10;:28;15521:37;;;;;;15664:13;;;15778:12;;15664:13;;15639:22;15761:29;15778:12;15664:13;15761:29;:::i;:::-;;;;-1:-1:-1;15856:7:0;;-1:-1:-1;15851:734:0;15873:5;:12;15869:1;:16;;;15851:734;;;15907:10;15920:18;;;;:14;:18;:::i;:::-;15907:31;;15953:16;15972:5;15978:1;15972:8;;;;;;;;;;:::i;:::-;;;;;;;:17;;;15953:36;;16004:13;16020:5;16026:1;16020:8;;;;;;;;;;:::i;:::-;;;;;;;:14;;;16004:30;;16049:19;16071:5;16077:1;16071:8;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:20;;;;;16123:217;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16123:217:0;;;;;;;;;-1:-1:-1;16123:217:0;;;;;;;;;;;;16108:12;;;:8;:12;;;;;:232;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16108:232:0;;;;;;;;;;;;;;;;;;;;;;16357:15;:19;;;;;;:28;;;;;;;;;;;;;;;;16407:166;16071:20;;-1:-1:-1;16117:2:0;;16407:166;;;;16160:8;;16194:5;;16236:16;;16071:20;;19348:25:1;;;19404:2;19389:18;;19382:34;;;;-1:-1:-1;;;;;19452:55:1;19447:2;19432:18;;19425:83;19539:2;19524:18;;19517:34;19335:3;19320:19;;19302:255;16407:166:0;;;;;;;;15892:693;;;;15887:3;;;;;:::i;:::-;;;;15851:734;;;;15450:1142;15132:1460;;;:::o;16600:1514::-;16729:15;16978:26;;;:15;:26;;;;;;-1:-1:-1;;;;;16978:26:0;16964:10;:40;16956:49;;;;;;-1:-1:-1;17065:11:0;;;;;;17087;:13;17065:11;17087:13;:::i;:::-;;;;-1:-1:-1;;17296:1:0;17265:19;;;:8;:19;;;;;:28;17257:67;;;;-1:-1:-1;;;17257:67:0;;18438:2:1;17257:67:0;;;18420:21:1;18477:2;18457:18;;;18450:30;18516:24;18496:18;;;18489:52;18558:18;;17257:67:0;18410:172:1;17257:67:0;17456:19;;;;:8;:19;;;;;:28;;17426:27;;;;;:58;17404:141;;;;-1:-1:-1;;;17404:141:0;;16448:2:1;17404:141:0;;;16430:21:1;16487:2;16467:18;;;16460:30;16526:34;16506:18;;;16499:62;16597:3;16577:18;;;16570:31;16618:19;;17404:141:0;16420:223:1;17404:141:0;17622:19;;;;:8;:19;;;;;:27;;:29;;;;;;:::i;:::-;;;;;;17728:25;17734:9;17745:7;17728:5;:25::i;:::-;17838:23;;;;:14;:23;;;;;;;;:35;;;17968:19;;;:8;:19;;;;;;:27;;;17891:188;;20326:25:1;;;18010:9:0;20367:18:1;;;20360:34;;;;18034:10:0;20471:18:1;;;20464:43;-1:-1:-1;;;;;20543:15:1;;20538:2;20523:18;;20516:43;17891:188:0;;17838:23;;:35;;17891:188;;;;;20313:3:1;17891:188:0;;;16600:1514;;;;:::o;21441:89::-;21117:5;;-1:-1:-1;;;;;21117:5:0;21103:10;:19;14411:46;;;;-1:-1:-1;;;14411:46:0;;11352:2:1;14411:46:0;;;11334:21:1;11391:2;11371:18;;;11364:30;11430:26;11410:18;;;11403:54;11474:18;;14411:46:0;11324:174:1;14411:46:0;21513:9:::1;21506:16:::0;;-1:-1:-1;;;;;;21506:16:0::1;::::0;;21441:89::o;5559:374::-;5768:39;5787:10;5799:7;5768:18;:39::i;:::-;5746:138;;;;-1:-1:-1;;;5746:138:0;;18020:2:1;5746:138:0;;;18002:21:1;18059:2;18039:18;;;18032:30;18098:34;18078:18;;;18071:62;18169:19;18149:18;;;18142:47;18206:19;;5746:138:0;17992:239:1;5746:138:0;5897:28;5907:4;5913:2;5917:7;5897:9;:28::i;20585:101::-;21117:5;;-1:-1:-1;;;;;21117:5:0;21103:10;:19;14411:46;;;;-1:-1:-1;;;14411:46:0;;11352:2:1;14411:46:0;;;11334:21:1;11391:2;11371:18;;;11364:30;11430:26;11410:18;;;11403:54;11474:18;;14411:46:0;11324:174:1;14411:46:0;20660:18;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;20585:101:::0;:::o;5941:185::-;6079:39;6096:4;6102:2;6106:7;6079:39;;;;;;;;;;;;:16;:39::i;3265:326::-;3382:7;3423:16;;;;;;;;;;;-1:-1:-1;;;;;3423:16:0;3472:19;3450:110;;;;-1:-1:-1;;;3450:110:0;;14908:2:1;3450:110:0;;;14890:21:1;14947:2;14927:18;;;14920:30;14986:34;14966:18;;;14959:62;15057:11;15037:18;;;15030:39;15086:19;;3450:110:0;14880:231:1;13474:21:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2962:295::-;3079:7;-1:-1:-1;;;;;3126:19:0;;3104:111;;;;-1:-1:-1;;;3104:111:0;;14497:2:1;3104:111:0;;;14479:21:1;14536:2;14516:18;;;14509:30;14575:34;14555:18;;;14548:62;14646:12;14626:18;;;14619:40;14676:19;;3104:111:0;14469:232:1;3104:111:0;-1:-1:-1;;;;;;3233:16:0;;;;;:9;:16;;;;;;;2962:295::o;21719:140::-;21117:5;;-1:-1:-1;;;;;21117:5:0;21103:10;:19;14411:46;;;;-1:-1:-1;;;14411:46:0;;11352:2:1;14411:46:0;;;11334:21:1;11391:2;11371:18;;;11364:30;11430:26;11410:18;;;11403:54;11474:18;;14411:46:0;11324:174:1;14411:46:0;21804:5:::1;::::0;21783:39:::1;::::0;21819:1:::1;::::0;-1:-1:-1;;;;;21804:5:0::1;::::0;21783:39:::1;::::0;21819:1;;21783:39:::1;21833:5;:18:::0;;-1:-1:-1;;;;;;21833:18:0::1;::::0;;21719:140::o;21538:173::-;21220:9;;-1:-1:-1;;;;;21220:9:0;21206:10;:23;14521:70;;;;-1:-1:-1;;;14521:70:0;;10579:2:1;14521:70:0;;;10561:21:1;10618:2;10598:18;;;10591:30;10657:34;10637:18;;;10630:62;10728:14;10708:18;;;10701:42;10760:19;;14521:70:0;10551:234:1;14521:70:0;21606:9:::1;21599:16:::0;;-1:-1:-1;;;;;;21599:16:0::1;::::0;;21654:5:::1;::::0;21633:39:::1;::::0;21661:10:::1;::::0;-1:-1:-1;;;;;21654:5:0::1;::::0;21633:39:::1;::::0;21606:9:::1;::::0;21633:39:::1;21685:5;:18:::0;;-1:-1:-1;;;;;;21685:18:0::1;21693:10;21685:18;::::0;;21538:173::o;20170:357::-;20320:19;;;;:8;:19;;;;;:36;;;-1:-1:-1;;;;;20320:36:0;20360:10;20320:50;20298:150;;;;-1:-1:-1;;;20298:150:0;;13653:2:1;20298:150:0;;;13635:21:1;13692:2;13672:18;;;13665:30;13731:34;13711:18;;;13704:62;13802:20;13782:18;;;13775:48;13840:19;;20298:150:0;13625:240:1;20298:150:0;20461:19;;;;:8;:19;;;;;;:36;;:58;;-1:-1:-1;;;;;;20461:58:0;-1:-1:-1;;;;;20461:58:0;;;;;;;;;20170:357::o;19898:264::-;19992:7;20025:23;;;:14;:23;;;;;;20017:69;;;;-1:-1:-1;;;20017:69:0;;17662:2:1;20017:69:0;;;17644:21:1;17701:2;17681:18;;;17674:30;17740:31;17720:18;;;17713:59;17789:18;;20017:69:0;17634:179:1;20017:69:0;-1:-1:-1;20104:33:0;20113:23;;;:14;:23;;;;;;;;;20104:33;;:8;:33;;;;;:50;;;-1:-1:-1;;;;;20104:50:0;;19898:264::o;5008:321::-;-1:-1:-1;;;;;5143:22:0;;5155:10;5143:22;;5135:60;;;;-1:-1:-1;;;5135:60:0;;12886:2:1;5135:60:0;;;12868:21:1;12925:2;12905:18;;;12898:30;12964:27;12944:18;;;12937:55;13009:18;;5135:60:0;12858:175:1;5135:60:0;5227:10;5208:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;5208:40:0;;;;;;;;;;;;:51;;-1:-1:-1;;5208:51:0;;;;;;;;;;5275:46;;9919:41:1;;;5208:40:0;;5227:10;5275:46;;9892:18:1;5275:46:0;;;;;;;5008:321;;:::o;14831:241::-;14911:14;;-1:-1:-1;;;;;14911:14:0;:28;14903:52;;;;-1:-1:-1;;;14903:52:0;;18789:2:1;14903:52:0;;;18771:21:1;18828:2;18808:18;;;18801:30;18867:13;18847:18;;;18840:41;18898:18;;14903:52:0;18761:161:1;14903:52:0;14966:14;:32;;-1:-1:-1;;;;;;14966:32:0;-1:-1:-1;;;;;14966:32:0;;;;;;;;15014:50;;-1:-1:-1;;15014:50:0;;-1:-1:-1;;15014:50:0;14831:241;:::o;6134:363::-;6323:39;6342:10;6354:7;6323:18;:39::i;:::-;6301:138;;;;-1:-1:-1;;;6301:138:0;;18020:2:1;6301:138:0;;;18002:21:1;18059:2;18039:18;;;18032:30;18098:34;18078:18;;;18071:62;18169:19;18149:18;;;18142:47;18206:19;;6301:138:0;17992:239:1;6301:138:0;6450:39;6464:4;6470:2;6474:7;6483:5;6450:13;:39::i;:::-;6134:363;;;;:::o;18245:619::-;18476:1;18450:23;;;:14;:23;;;;;;18346:13;;18442:67;;;;-1:-1:-1;;;18442:67:0;;15679:2:1;18442:67:0;;;15661:21:1;15718:2;15698:18;;;15691:30;15757:29;15737:18;;;15730:57;15804:18;;18442:67:0;15651:177:1;18442:67:0;18731:23;;;;:14;:23;;;;;;18691:7;;18721:34;;:9;:34::i;:::-;18804:18;18814:7;18804:9;:18::i;:::-;18652:189;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18607:249;;18245:619;;;:::o;18934:226::-;18987:13;19131:7;19114:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;19100:52;;18934:226;:::o;21245:188::-;21117:5;;-1:-1:-1;;;;;21117:5:0;21103:10;:19;14411:46;;;;-1:-1:-1;;;14411:46:0;;11352:2:1;14411:46:0;;;11334:21:1;11391:2;11371:18;;;11364:30;11430:26;11410:18;;;11403:54;11474:18;;14411:46:0;11324:174:1;14411:46:0;-1:-1:-1;;;;;21330:24:0;::::1;21322:68;;;::::0;-1:-1:-1;;;21322:68:0;;10992:2:1;21322:68:0::1;::::0;::::1;10974:21:1::0;11031:2;11011:18;;;11004:30;11070:33;11050:18;;;11043:61;11121:18;;21322:68:0::1;10964:181:1::0;21322:68:0::1;21403:9;:22:::0;;-1:-1:-1;;;;;;21403:22:0::1;-1:-1:-1::0;;;;;21403:22:0;;;::::1;::::0;;;::::1;::::0;;21245:188::o;20838:193::-;21117:5;;-1:-1:-1;;;;;21117:5:0;21103:10;:19;14411:46;;;;-1:-1:-1;;;14411:46:0;;11352:2:1;14411:46:0;;;11334:21:1;11391:2;11371:18;;;11364:30;11430:26;11410:18;;;11403:54;11474:18;;14411:46:0;11324:174:1;14411:46:0;20948:14:::1;::::0;20926:54:::1;::::0;-1:-1:-1;;;;;20926:54:0;;::::1;::::0;20948:14:::1;::::0;20926:54:::1;::::0;20948:14:::1;::::0;20926:54:::1;20991:14;:32:::0;;-1:-1:-1;;;;;;20991:32:0::1;-1:-1:-1::0;;;;;20991:32:0;;;::::1;::::0;;;::::1;::::0;;20838:193::o;19518:372::-;19580:7;19673:23;;;:14;:23;;;;;;19665:67;;;;-1:-1:-1;;;19665:67:0;;15679:2:1;19665:67:0;;;15661:21:1;15718:2;15698:18;;;15691:30;15757:29;15737:18;;;15730:57;15804:18;;19665:67:0;15651:177:1;19665:67:0;-1:-1:-1;19837:33:0;19846:23;;;:14;:23;;;;;;;;;19837:33;;:8;:33;;;;;:45;;;;19518:372::o;9117:174::-;9192:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;9192:29:0;-1:-1:-1;;;;;9192:29:0;;;;;;;;:24;;9246:23;9192:24;9246:14;:23::i;:::-;-1:-1:-1;;;;;9237:46:0;;;;;;;;;;;9117:174;;:::o;7907:324::-;-1:-1:-1;;;;;7987:16:0;;7979:61;;;;-1:-1:-1;;;7979:61:0;;15318:2:1;7979:61:0;;;15300:21:1;;;15337:18;;;15330:30;15396:34;15376:18;;;15369:62;15448:18;;7979:61:0;15290:182:1;7979:61:0;6930:4;6954:16;;;;;;;;;;;-1:-1:-1;;;;;6954:16:0;:30;8051:58;;;;-1:-1:-1;;;8051:58:0;;12124:2:1;8051:58:0;;;12106:21:1;12163:2;12143:18;;;12136:30;12202;12182:18;;;12175:58;12250:18;;8051:58:0;12096:178:1;8051:58:0;-1:-1:-1;;;;;8122:13:0;;;;;;8139:1;8122:13;;;;;;;:18;;8139:1;;8122:13;;:18;;8139:1;;8122:18;:::i;:::-;;;;-1:-1:-1;;8151:7:0;:16;;;;;;;;;;;:21;;-1:-1:-1;;;;;;8151:21:0;-1:-1:-1;;;;;8151:21:0;;;;;;;;8190:33;;8151:16;;:7;8190:33;;8151:7;;8190:33;7907:324;;:::o;7000:452::-;7129:4;6954:16;;;;;;;;;;;-1:-1:-1;;;;;6954:16:0;7151:110;;;;-1:-1:-1;;;7151:110:0;;13240:2:1;7151:110:0;;;13222:21:1;13279:2;13259:18;;;13252:30;13318:34;13298:18;;;13291:62;13389:14;13369:18;;;13362:42;13421:19;;7151:110:0;13212:234:1;7151:110:0;7272:13;7288:23;7303:7;7288:14;:23::i;:::-;7272:39;;7341:5;-1:-1:-1;;;;;7330:16:0;:7;-1:-1:-1;;;;;7330:16:0;;:64;;;;7387:7;-1:-1:-1;;;;;7363:31:0;:20;7375:7;7363:11;:20::i;:::-;-1:-1:-1;;;;;7363:31:0;;7330:64;:113;;;-1:-1:-1;;;;;;5508:25:0;;;5479:4;5508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7411:32;7322:122;7000:452;-1:-1:-1;;;;7000:452:0:o;8546:563::-;8719:4;-1:-1:-1;;;;;8692:31:0;:23;8707:7;8692:14;:23::i;:::-;-1:-1:-1;;;;;8692:31:0;;8670:122;;;;-1:-1:-1;;;8670:122:0;;16850:2:1;8670:122:0;;;16832:21:1;16889:2;16869:18;;;16862:30;16928:34;16908:18;;;16901:62;16999:11;16979:18;;;16972:39;17028:19;;8670:122:0;16822:231:1;8670:122:0;-1:-1:-1;;;;;8811:16:0;;8803:65;;;;-1:-1:-1;;;8803:65:0;;12481:2:1;8803:65:0;;;12463:21:1;12520:2;12500:18;;;12493:30;12559:34;12539:18;;;12532:62;12630:6;12610:18;;;12603:34;12654:19;;8803:65:0;12453:226:1;8803:65:0;8933:29;8950:1;8954:7;8933:8;:29::i;:::-;-1:-1:-1;;;;;8975:15:0;;;;;;8994:1;8975:15;;;;;;;:20;;8994:1;;8975:15;;:20;;8994:1;;8975:20;:::i;:::-;;;;-1:-1:-1;;;;;;;9006:13:0;;;;;;9023:1;9006:13;;;;;;;:18;;9023:1;;9006:13;;:18;;9023:1;;9006:18;:::i;:::-;;;;-1:-1:-1;;9035:7:0;:16;;;;;;;;;;;:21;;-1:-1:-1;;;;;;9035:21:0;-1:-1:-1;;;;;9035:21:0;;;;;;;;;9074:27;;9035:16;;9074:27;;;;;;;8546:563;;;:::o;6505:352::-;6662:28;6672:4;6678:2;6682:7;6662:9;:28::i;:::-;6723:48;6746:4;6752:2;6756:7;6765:5;6723:22;:48::i;:::-;6701:148;;;;-1:-1:-1;;;6701:148:0;;11705:2:1;6701:148:0;;;11687:21:1;11744:2;11724:18;;;11717:30;11783:34;11763:18;;;11756:62;11854:20;11834:18;;;11827:48;11892:19;;6701:148:0;11677:240:1;22027:724:0;22084:13;22305:10;22301:53;;-1:-1:-1;;22332:10:0;;;;;;;;;;;;;;;;;;22027:724::o;22301:53::-;22379:5;22364:12;22420:78;22427:9;;22420:78;;22453:8;;;;:::i;:::-;;-1:-1:-1;22476:10:0;;-1:-1:-1;22484:2:0;22476:10;;:::i;:::-;;;22420:78;;;22508:19;22540:6;22530:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22530:17:0;;22508:39;;22558:154;22565:10;;22558:154;;22592:11;22602:1;22592:11;;:::i;:::-;;-1:-1:-1;22661:10:0;22669:2;22661:5;:10;:::i;:::-;22648:24;;:2;:24;:::i;:::-;22635:39;;22618:6;22625;22618:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;22689:11:0;22698:2;22689:11;;:::i;:::-;;;22558:154;;9299:1050;9454:4;10683:20;;10731:8;9471:871;;9527:173;;;;;-1:-1:-1;;;;;9527:36:0;;;;;:173;;9586:10;;9619:4;;9646:7;;9676:5;;9527:173;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9527:173:0;;;;;;;;-1:-1:-1;;9527:173:0;;;;;;;;;;;;:::i;:::-;;;9506:781;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9887:13:0;;9883:389;;9930:108;;-1:-1:-1;;;9930:108:0;;11705:2:1;9930:108:0;;;11687:21:1;11744:2;11724:18;;;11717:30;11783:34;11763:18;;;11756:62;11854:20;11834:18;;;11827:48;11892:19;;9930:108:0;11677:240:1;9883:389:0;10222:6;10216:13;10207:6;10203:2;10199:15;10192:38;9506:781;9764:55;;9774:45;9764:55;;-1:-1:-1;9757:62:0;;9471:871;-1:-1:-1;10326:4:0;9299:1050;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:465:1;78:5;112:18;104:6;101:30;98:2;;;134:18;;:::i;:::-;172:116;282:4;-1:-1:-1;;208:2:1;200:6;196:15;192:88;188:99;172:116;:::i;:::-;163:125;;311:6;304:5;297:21;351:3;342:6;337:3;333:16;330:25;327:2;;;368:1;365;358:12;327:2;417:6;412:3;405:4;398:5;394:16;381:43;471:1;464:4;455:6;448:5;444:18;440:29;433:40;88:391;;;;;:::o;484:134::-;552:20;;581:31;552:20;581:31;:::i;:::-;533:85;;;:::o;623:247::-;682:6;735:2;723:9;714:7;710:23;706:32;703:2;;;751:1;748;741:12;703:2;790:9;777:23;809:31;834:5;809:31;:::i;:::-;859:5;693:177;-1:-1:-1;;;693:177:1:o;875:388::-;943:6;951;1004:2;992:9;983:7;979:23;975:32;972:2;;;1020:1;1017;1010:12;972:2;1059:9;1046:23;1078:31;1103:5;1078:31;:::i;:::-;1128:5;-1:-1:-1;1185:2:1;1170:18;;1157:32;1198:33;1157:32;1198:33;:::i;:::-;1250:7;1240:17;;;962:301;;;;;:::o;1268:456::-;1345:6;1353;1361;1414:2;1402:9;1393:7;1389:23;1385:32;1382:2;;;1430:1;1427;1420:12;1382:2;1469:9;1456:23;1488:31;1513:5;1488:31;:::i;:::-;1538:5;-1:-1:-1;1595:2:1;1580:18;;1567:32;1608:33;1567:32;1608:33;:::i;:::-;1372:352;;1660:7;;-1:-1:-1;;;1714:2:1;1699:18;;;;1686:32;;1372:352::o;1729:794::-;1824:6;1832;1840;1848;1901:3;1889:9;1880:7;1876:23;1872:33;1869:2;;;1918:1;1915;1908:12;1869:2;1957:9;1944:23;1976:31;2001:5;1976:31;:::i;:::-;2026:5;-1:-1:-1;2083:2:1;2068:18;;2055:32;2096:33;2055:32;2096:33;:::i;:::-;2148:7;-1:-1:-1;2202:2:1;2187:18;;2174:32;;-1:-1:-1;2257:2:1;2242:18;;2229:32;2284:18;2273:30;;2270:2;;;2316:1;2313;2306:12;2270:2;2339:22;;2392:4;2384:13;;2380:27;-1:-1:-1;2370:2:1;;2421:1;2418;2411:12;2370:2;2444:73;2509:7;2504:2;2491:16;2486:2;2482;2478:11;2444:73;:::i;:::-;2434:83;;;1859:664;;;;;;;:::o;2528:416::-;2593:6;2601;2654:2;2642:9;2633:7;2629:23;2625:32;2622:2;;;2670:1;2667;2660:12;2622:2;2709:9;2696:23;2728:31;2753:5;2728:31;:::i;:::-;2778:5;-1:-1:-1;2835:2:1;2820:18;;2807:32;2877:15;;2870:23;2858:36;;2848:2;;2908:1;2905;2898:12;2949:315;3017:6;3025;3078:2;3066:9;3057:7;3053:23;3049:32;3046:2;;;3094:1;3091;3084:12;3046:2;3133:9;3120:23;3152:31;3177:5;3152:31;:::i;:::-;3202:5;3254:2;3239:18;;;;3226:32;;-1:-1:-1;;;3036:228:1:o;3269:1470::-;3407:6;3415;3423;3454:2;3497;3485:9;3476:7;3472:23;3468:32;3465:2;;;3513:1;3510;3503:12;3465:2;3553:9;3540:23;3582:18;3623:2;3615:6;3612:14;3609:2;;;3639:1;3636;3629:12;3609:2;3677:6;3666:9;3662:22;3652:32;;3722:7;3715:4;3711:2;3707:13;3703:27;3693:2;;3744:1;3741;3734:12;3693:2;3780;3767:16;3802:4;3825:2;3821;3818:10;3815:2;;;3831:18;;:::i;:::-;3871:36;3903:2;3898;3895:1;3891:10;3887:19;3871:36;:::i;:::-;3941:15;;;3972:12;;;;-1:-1:-1;4004:11:1;;;4042;;;4034:20;;4030:29;;4027:42;-1:-1:-1;4024:2:1;;;4082:1;4079;4072:12;4024:2;4104:1;4095:10;;4125:1;4135:460;4151:2;4146:3;4143:11;4135:460;;;4226:2;4220:3;4211:7;4207:17;4203:26;4200:2;;;4242:1;4239;4232:12;4200:2;4272:22;;:::i;:::-;4321:17;;4307:32;;4388:12;;;4375:26;4359:14;;;4352:50;4425:2;4476:12;;;4463:26;4447:14;;;4440:50;4503:18;;4541:12;;;;4573;;;;4173:1;4164:11;4135:460;;;4139:3;;4614:5;4604:15;;;4638:38;4672:2;4661:9;4657:18;4638:38;:::i;:::-;4628:48;;;;;;;4695:38;4729:2;4718:9;4714:18;4695:38;:::i;:::-;4685:48;;3434:1305;;;;;:::o;4744:245::-;4802:6;4855:2;4843:9;4834:7;4830:23;4826:32;4823:2;;;4871:1;4868;4861:12;4823:2;4910:9;4897:23;4929:30;4953:5;4929:30;:::i;4994:249::-;5063:6;5116:2;5104:9;5095:7;5091:23;5087:32;5084:2;;;5132:1;5129;5122:12;5084:2;5164:9;5158:16;5183:30;5207:5;5183:30;:::i;5248:450::-;5317:6;5370:2;5358:9;5349:7;5345:23;5341:32;5338:2;;;5386:1;5383;5376:12;5338:2;5426:9;5413:23;5459:18;5451:6;5448:30;5445:2;;;5491:1;5488;5481:12;5445:2;5514:22;;5567:4;5559:13;;5555:27;-1:-1:-1;5545:2:1;;5596:1;5593;5586:12;5545:2;5619:73;5684:7;5679:2;5666:16;5661:2;5657;5653:11;5619:73;:::i;5703:180::-;5762:6;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;-1:-1:-1;5854:23:1;;5773:110;-1:-1:-1;5773:110:1:o;5888:315::-;5956:6;5964;6017:2;6005:9;5996:7;5992:23;5988:32;5985:2;;;6033:1;6030;6023:12;5985:2;6069:9;6056:23;6046:33;;6129:2;6118:9;6114:18;6101:32;6142:31;6167:5;6142:31;:::i;6536:316::-;6577:3;6615:5;6609:12;6642:6;6637:3;6630:19;6658:63;6714:6;6707:4;6702:3;6698:14;6691:4;6684:5;6680:16;6658:63;:::i;:::-;6766:2;6754:15;-1:-1:-1;;6750:88:1;6741:98;;;;6841:4;6737:109;;6585:267;-1:-1:-1;;6585:267:1:o;6857:1088::-;6942:12;;6907:3;;6997:1;7017:18;;;;7070;;;;7097:2;;7151:4;7143:6;7139:17;7129:27;;7097:2;7177;7225;7217:6;7214:14;7194:18;7191:38;7188:2;;;-1:-1:-1;;;7259:1:1;7252:88;7363:4;7360:1;7353:15;7391:4;7388:1;7381:15;7188:2;7422:18;7449:162;;;;7625:1;7620:319;;;;7415:524;;7449:162;-1:-1:-1;;7486:9:1;7482:82;7477:3;7470:95;7594:6;7589:3;7585:16;7578:23;;7449:162;;7620:319;21238:1;21231:14;;;21275:4;21262:18;;7714:1;7728:165;7742:6;7739:1;7736:13;7728:165;;;7820:14;;7807:11;;;7800:35;7863:16;;;;7757:10;;7728:165;;;7732:3;;7922:6;7917:3;7913:16;7906:23;;7415:524;;;;;;;6915:1030;;;;:::o;7950:714::-;8275:3;8303:38;8337:3;8329:6;8303:38;:::i;:::-;8370:6;8364:13;8386:52;8431:6;8427:2;8420:4;8412:6;8408:17;8386:52;:::i;:::-;8498:3;8460:15;;8484:18;;;8527:13;;8549:65;8527:13;8601:1;8590:13;;8583:4;8571:17;;8549:65;:::i;:::-;8634:20;8656:1;8630:28;;8283:381;-1:-1:-1;;;;;8283:381:1:o;8669:358::-;8898:3;8926:38;8960:3;8952:6;8926:38;:::i;:::-;8984:10;8973:22;;9019:1;9011:10;;8906:121;-1:-1:-1;;;8906:121:1:o;9263:511::-;9457:4;-1:-1:-1;;;;;9567:2:1;9559:6;9555:15;9544:9;9537:34;9619:2;9611:6;9607:15;9602:2;9591:9;9587:18;9580:43;;9659:6;9654:2;9643:9;9639:18;9632:34;9702:3;9697:2;9686:9;9682:18;9675:31;9723:45;9763:3;9752:9;9748:19;9740:6;9723:45;:::i;:::-;9715:53;9466:308;-1:-1:-1;;;;;;9466:308:1:o;10153:219::-;10302:2;10291:9;10284:21;10265:4;10322:44;10362:2;10351:9;10347:18;10339:6;10322:44;:::i;20570:251::-;20642:2;20636:9;20684:2;20672:15;;20717:18;20702:34;;20738:22;;;20699:62;20696:2;;;20764:18;;:::i;:::-;20800:2;20793:22;20616:205;:::o;20826:334::-;20897:2;20891:9;20953:2;20943:13;;-1:-1:-1;;20939:86:1;20927:99;;21056:18;21041:34;;21077:22;;;21038:62;21035:2;;;21103:18;;:::i;:::-;21139:2;21132:22;20871:289;;-1:-1:-1;20871:289:1:o;21291:128::-;21331:3;21362:1;21358:6;21355:1;21352:13;21349:2;;;21368:18;;:::i;:::-;-1:-1:-1;21404:9:1;;21339:80::o;21424:120::-;21464:1;21490;21480:2;;21495:18;;:::i;:::-;-1:-1:-1;21529:9:1;;21470:74::o;21549:125::-;21589:4;21617:1;21614;21611:8;21608:2;;;21622:18;;:::i;:::-;-1:-1:-1;21659:9:1;;21598:76::o;21679:258::-;21751:1;21761:113;21775:6;21772:1;21769:13;21761:113;;;21851:11;;;21845:18;21832:11;;;21825:39;21797:2;21790:10;21761:113;;;21892:6;21889:1;21886:13;21883:2;;;-1:-1:-1;;21927:1:1;21909:16;;21902:27;21732:205::o;21942:437::-;22021:1;22017:12;;;;22064;;;22085:2;;22139:4;22131:6;22127:17;22117:27;;22085:2;22192;22184:6;22181:14;22161:18;22158:38;22155:2;;;-1:-1:-1;;;22226:1:1;22219:88;22330:4;22327:1;22320:15;22358:4;22355:1;22348:15;22155:2;;21997:382;;;:::o;22384:195::-;22423:3;22454:66;22447:5;22444:77;22441:2;;;22524:18;;:::i;:::-;-1:-1:-1;22571:1:1;22560:13;;22431:148::o;22584:175::-;22621:3;22665:4;22658:5;22654:16;22694:4;22685:7;22682:17;22679:2;;;22702:18;;:::i;:::-;22751:1;22738:15;;22629:130;-1:-1:-1;;22629:130:1:o;22764:112::-;22796:1;22822;22812:2;;22827:18;;:::i;:::-;-1:-1:-1;22861:9:1;;22802:74::o;22881:184::-;-1:-1:-1;;;22930:1:1;22923:88;23030:4;23027:1;23020:15;23054:4;23051:1;23044:15;23070:184;-1:-1:-1;;;23119:1:1;23112:88;23219:4;23216:1;23209:15;23243:4;23240:1;23233:15;23259:184;-1:-1:-1;;;23308:1:1;23301:88;23408:4;23405:1;23398:15;23432:4;23429:1;23422:15;23448:184;-1:-1:-1;;;23497:1:1;23490:88;23597:4;23594:1;23587:15;23621:4;23618:1;23611:15;23637:154;-1:-1:-1;;;;;23716:5:1;23712:54;23705:5;23702:65;23692:2;;23781:1;23778;23771:12;23692:2;23682:109;:::o;23796:177::-;23881:66;23874:5;23870:78;23863:5;23860:89;23850:2;;23963:1;23960;23953:12

Swarm Source

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