ETH Price: $3,293.81 (-1.82%)

Token

 

Overview

Max Total Supply

47

Holders

26

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
Null: 0x000...000
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC1155_TML

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion
File 1 of 1 : ERC1155_TML.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

//            _____            _____                     _____
//           /\    \          /\    \                   /\    \
//          /::\____\        /::\    \                 /::\    \
//         /:::/    /       /::::\    \               /::::\    \
//        /:::/    /       /::::::\    \             /::::::\    \
//       /:::/    /       /:::/\:::\    \           /:::/\:::\    \
//      /:::/    /       /:::/__\:::\    \         /:::/  \:::\    \
//     /:::/    /       /::::\   \:::\    \       /:::/    \:::\    \
//    /:::/    /       /::::::\   \:::\    \     /:::/    / \:::\    \
//   /:::/    /       /:::/\:::\   \:::\    \   /:::/    /   \:::\ ___\
//  /:::/____/       /:::/  \:::\   \:::\____\ /:::/____/  ___\:::|    |
//  \:::\    \       \::/    \:::\  /:::/    / \:::\    \ /\  /:::|____|
//   \:::\    \       \/____/ \:::\/:::/    /   \:::\    /::\ \::/    /
//    \:::\    \               \::::::/    /     \:::\   \:::\ \/____/
//     \:::\    \               \::::/    /       \:::\   \:::\____\
//      \:::\    \              /:::/    /         \:::\  /:::/    /
//       \:::\    \            /:::/    /           \:::\/:::/    /
//        \:::\    \          /:::/    /             \::::::/    /
//         \:::\____\        /:::/    /               \::::/    /
//          \::/    /        \::/    /                 \::/    /
//           \/____/          \/____/                   \/____/

// interface of a custom tokenURI
interface ITokenURICustom {
    function constructTokenURI(uint256 tokenId) external view returns (string memory);
}

/// @notice Ownable
/// @author From OpenZeppelin Contracts v4.4.1
abstract contract Ownable {
    address private _owner;

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

    constructor() {
        _transferOwnership(msg.sender);
    }

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

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

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

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

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

/// @notice ERC1155 TML Edtions
/// @author Mauro
/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC1155/ERC1155.sol)
contract ERC1155_TML is Ownable {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator, address indexed from, address indexed to, uint256 id, uint256 amount
    );

    event TransferBatch(
        address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] amounts
    );

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

    event URI(string value, uint256 indexed id);

    /*//////////////////////////////////////////////////////////////
                             ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    address[] public allowedMinters;

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    mapping(uint256 => bool) public uriLocked;

    mapping(uint256 => bool) public mintIdLocked;

    mapping(uint256 => address) public customURI;

    mapping(uint256 => string) private _tokenURIs;

    // ERC-2981: NFT Royalty Standard

    address payable private _royaltyRecipient;

    uint256 private _royaltyBps;

    mapping(uint256 => uint256) private _royaltyBpsTokenId;

    constructor() {
        _royaltyRecipient = payable(msg.sender);
        _royaltyBps = 1000;

        allowedMinters.push(msg.sender);
    }

    /*//////////////////////////////////////////////////////////////
                              ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data)
        public
        virtual
    {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data)
                    == ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == amounts.length, "LENGTH_MISMATCH");

        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < ids.length;) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data)
                    == ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return interfaceId == 0x01ffc9a7 // ERC165
            || interfaceId == 0xd9b67a26 // ERC1155
            || interfaceId == 0x0e89341c // ERC1155MetadataURI
            || interfaceId == 0x2a55205a; // ERC2981 = 0x2a55205a;
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data)
                    == ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
        internal
        virtual
    {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength;) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data)
                    == ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength;) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(address from, uint256 id, uint256 amount) internal virtual {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }

    /*//////////////////////////////////////////////////////////////
                        MINT/BURN/URI LOGIC
    //////////////////////////////////////////////////////////////*/

    function addMinter(address minterAddress) external onlyOwner {
        allowedMinters.push(minterAddress);
    }

    function updateMinter(address minterAddress, uint256 minterIdx) external onlyOwner {
        allowedMinters[minterIdx] = minterAddress;
    }

    function setUri(uint256[] calldata tokenId, string[] calldata newUri) external onlyOwner {
        require(tokenId.length == newUri.length, "Length mismatch");

        unchecked {
            for (uint256 i = 0; i < tokenId.length; i++) {
                require(!uriLocked[tokenId[i]], "URI locked");

                _tokenURIs[tokenId[i]] = newUri[i];

                emit URI(newUri[i], tokenId[i]);
            }
        }
    }

    function setCustomUri(uint256[] calldata tokenId, address[] calldata newUriContract) external onlyOwner {
        require(tokenId.length == newUriContract.length, "Length mismatch");

        unchecked {
            for (uint256 i = 0; i < tokenId.length; i++) {
                require(!uriLocked[tokenId[i]], "URI locked");

                customURI[tokenId[i]] = newUriContract[i];

                emit URI("Custom URI", tokenId[i]);
            }
        }
    }

    function lockUri(uint256[] calldata tokenId) external onlyOwner {
        unchecked {
            for (uint256 i = 0; i < tokenId.length; i++) {
                uriLocked[tokenId[i]] = true;
            }
        }
    }

    function lockMintId(uint256[] calldata tokenId) external onlyOwner {
        unchecked {
            for (uint256 i = 0; i < tokenId.length; i++) {
                mintIdLocked[tokenId[i]] = true;
            }
        }
    }

    function mint(address to, uint256 id, uint256 amount, bytes calldata data, uint256 minterIdx) external {
        require(msg.sender == allowedMinters[minterIdx], "Minter not valid");
        require(!mintIdLocked[id], "No more minting allowed");
        _mint(to, id, amount, data);
    }

    function batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes calldata data,
        uint256 minterIdx
    ) external {
        require(msg.sender == allowedMinters[minterIdx], "Minter not valid");
        unchecked {
            for (uint256 i = 0; i < ids.length; i++) {
                require(!mintIdLocked[ids[i]], "No more minting allowed");
            }
        }
        _batchMint(to, ids, amounts, data);
    }

    function mintMultipleUsers(
        address[] calldata recipients,
        uint256 id,
        uint256 amount,
        bytes calldata data,
        uint256 minterIdx
    ) external {
        require(msg.sender == allowedMinters[minterIdx], "Minter not valid");
        require(!mintIdLocked[id], "No more minting allowed");
        unchecked {
            for (uint256 i = 0; i < recipients.length; i++) {
                _mint(recipients[i], id, amount, data);
            }
        }
    }

    function burn(address from, uint256 id, uint256 amount) external {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");
        _burn(from, id, amount);
    }

    function batchBurn(address from, uint256[] memory ids, uint256[] memory amounts) external {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");
        _batchBurn(from, ids, amounts);
    }

    function uri(uint256 id) public view returns (string memory) {
        if (customURI[id] != address(0)) {
            return ITokenURICustom(customURI[id]).constructTokenURI(id);
        } else {
            return _tokenURIs[id];
        }
    }

    /*//////////////////////////////////////////////////////////////
                        EIP-2981 ROYALTY STANDARD
    //////////////////////////////////////////////////////////////*/
    function setRoyaltyBps(uint256 royaltyPercentageBasisPoints) public onlyOwner {
        _royaltyBps = royaltyPercentageBasisPoints;
    }

    function setRoyaltyBpsForTokenId(uint256 tokenId, uint256 royaltyPercentageBasisPoints) public onlyOwner {
        _royaltyBpsTokenId[tokenId] = royaltyPercentageBasisPoints;
    }

    function setRoyaltyReceipientAddress(address payable royaltyReceipientAddress) public onlyOwner {
        _royaltyRecipient = royaltyReceipientAddress;
    }

    function royaltyInfo(uint256 tokenId, uint256 salePrice)
        external
        view
        returns (address receiver, uint256 royaltyAmount)
    {
        uint256 bps;

        if (_royaltyBpsTokenId[tokenId] > 0) {
            bps = _royaltyBpsTokenId[tokenId];
        } else {
            bps = _royaltyBps;
        }

        uint256 royalty = (salePrice * bps) / 10000;
        return (_royaltyRecipient, royalty);
    }
}

abstract contract ERC1155TokenReceiver {
    function onERC1155Received(address, address, uint256, uint256, bytes calldata) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata)
        external
        virtual
        returns (bytes4)
    {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 20000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"minterAddress","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allowedMinters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"minterIdx","type":"uint256"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"customURI","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"lockMintId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"lockUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"minterIdx","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mintIdLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"minterIdx","type":"uint256"}],"name":"mintMultipleUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"address[]","name":"newUriContract","type":"address[]"}],"name":"setCustomUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"royaltyPercentageBasisPoints","type":"uint256"}],"name":"setRoyaltyBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"royaltyPercentageBasisPoints","type":"uint256"}],"name":"setRoyaltyBpsForTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"royaltyReceipientAddress","type":"address"}],"name":"setRoyaltyReceipientAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"string[]","name":"newUri","type":"string[]"}],"name":"setUri","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minterAddress","type":"address"},{"internalType":"uint256","name":"minterIdx","type":"uint256"}],"name":"updateMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uriLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801562000010575f80fd5b506200001c3362000078565b60088054336001600160a01b031991821681179092556103e86009556001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180549091169091179055620000c7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6136c580620000d55f395ff3fe608060405234801561000f575f80fd5b50600436106101cf575f3560e01c80635f27d785116100fe578063b8f883f91161009e578063f357063d1161006e578063f357063d146104c1578063f5298aca146104d4578063f6eb127a146104e7578063f8707ab5146104fa575f80fd5b8063b8f883f91461045b578063e985e9c51461046e578063f242432a1461049b578063f2fde38b146104ae575f80fd5b806383a75cd7116100d957806383a75cd7146103e35780638da5cb5b14610418578063983b2d5614610435578063a22cb46514610448575f80fd5b80635f27d785146103815780636d2bce34146103b9578063715018a6146103db575f80fd5b80632a55205a11610174578063404899cd11610144578063404899cd14610328578063448ea7af1461033b5780634d564dc01461034e5780634e1273f414610361575f80fd5b80632a55205a146102b05780632a6d9e92146102ef5780632eb2c2d61461030257806333373cea14610315575f80fd5b80630e89341c116101af5780630e89341c1461024857806312efaf1c146102685780631f72d8311461028a578063263488f31461029d575f80fd5b80629ee39c146101d3578062fdd58e146101e857806301ffc9a714610225575b5f80fd5b6101e66101e136600461292d565b61050d565b005b6102126101f636600461294f565b600260209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6102386102333660046129a6565b6105db565b604051901515815260200161021c565b61025b6102563660046129c1565b61070b565b60405161021c9190612a43565b6102386102763660046129c1565b60046020525f908152604090205460ff1681565b6101e66102983660046129c1565b61088f565b6101e66102ab366004612b8c565b610916565b6102c36102be366004612c2f565b610a74565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161021c565b6101e66102fd366004612c4f565b610ae3565b6101e6610310366004612ce5565b610c04565b6101e6610323366004612c2f565b610fa3565b6101e6610336366004612d9c565b611036565b6101e6610349366004612ddb565b61112b565b6101e661035c366004612d9c565b6113a0565b61037461036f366004612ddb565b611490565b60405161021c9190612e7c565b61039461038f3660046129c1565b6115e9565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102386103c73660046129c1565b60056020525f908152604090205460ff1681565b6101e661161e565b6103946103f13660046129c1565b60066020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b5f5473ffffffffffffffffffffffffffffffffffffffff16610394565b6101e661044336600461292d565b6116ab565b6101e6610456366004612e8e565b6117a2565b6101e661046936600461294f565b611838565b61023861047c366004612ec9565b600360209081525f928352604080842090915290825290205460ff1681565b6101e66104a9366004612ef5565b611917565b6101e66104bc36600461292d565b611bdf565b6101e66104cf366004612f6c565b611cf6565b6101e66104e2366004612ff1565b611e59565b6101e66104f5366004613023565b611f03565b6101e6610508366004612ddb565b611fad565b3361052c5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146105945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061066d57507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806106b957507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061070557507f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f8181526006602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16156107f4575f82815260066020526040908190205490517f894b4c2e0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063894b4c2e906024015f60405180830381865afa1580156107af573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107059190810190613094565b5f828152600760205260409020805461080c90613138565b80601f016020809104026020016040519081016040528092919081815260200182805461083890613138565b80156108835780601f1061085a57610100808354040283529160200191610883565b820191905f5260205f20905b81548152906001019060200180831161086657829003601f168201915b50505050509050919050565b336108ae5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146109115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b600955565b6001818154811061092957610929613189565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff1633146109985760405162461bcd60e51b815260206004820152601060248201527f4d696e746572206e6f742076616c696400000000000000000000000000000000604482015260640161058b565b5f5b8551811015610a2a5760055f8783815181106109b8576109b8613189565b60209081029190910181015182528101919091526040015f205460ff1615610a225760405162461bcd60e51b815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f776564000000000000000000604482015260640161058b565b60010161099a565b50610a6c86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506121dd92505050565b505050505050565b5f828152600a60205260408120548190819015610a9f57505f848152600a6020526040902054610aa4565b506009545b5f612710610ab283876131e3565b610abc91906131fa565b60085473ffffffffffffffffffffffffffffffffffffffff169450925050505b9250929050565b60018181548110610af657610af6613189565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff163314610b655760405162461bcd60e51b815260206004820152601060248201527f4d696e746572206e6f742076616c696400000000000000000000000000000000604482015260640161058b565b5f8581526005602052604090205460ff1615610bc35760405162461bcd60e51b815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f776564000000000000000000604482015260640161058b565b610a6c86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061249992505050565b848314610c535760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161058b565b3373ffffffffffffffffffffffffffffffffffffffff89161480610ca6575073ffffffffffffffffffffffffffffffffffffffff88165f90815260036020908152604080832033845290915290205460ff165b610cf25760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161058b565b5f805f5b87811015610dc757888882818110610d1057610d10613189565b905060200201359250868682818110610d2b57610d2b613189565b73ffffffffffffffffffffffffffffffffffffffff8e165f90815260026020908152604080832089845282528220805493909102949094013595508593925090610d76908490613232565b909155505073ffffffffffffffffffffffffffffffffffffffff8a165f90815260026020908152604080832086845290915281208054849290610dba908490613245565b9091555050600101610cf6565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051610e4294939291906132a1565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610f31576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c8190610ec99033908f908e908e908e908e908e908e9060040161330e565b6020604051808303815f875af1158015610ee5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f09919061337e565b7fffffffff000000000000000000000000000000000000000000000000000000001614610f4b565b73ffffffffffffffffffffffffffffffffffffffff891615155b610f975760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161058b565b50505050505050505050565b33610fc25f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146110255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f918252600a602052604090912055565b336110555f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146110b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f5b8181101561112657600160045f8585858181106110d9576110d9613189565b602090810292909201358352508101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016110ba565b505050565b3361114a5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146111ad5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b8281146111fc5760405162461bcd60e51b815260206004820152600f60248201527f4c656e677468206d69736d617463680000000000000000000000000000000000604482015260640161058b565b5f5b838110156113995760045f86868481811061121b5761121b613189565b602090810292909201358352508101919091526040015f205460ff16156112845760405162461bcd60e51b815260206004820152600a60248201527f555249206c6f636b656400000000000000000000000000000000000000000000604482015260640161058b565b82828281811061129657611296613189565b90506020020160208101906112ab919061292d565b60065f8787858181106112c0576112c0613189565b9050602002013581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084848281811061132357611323613189565b905060200201357f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b604051611389906020808252600a908201527f437573746f6d2055524900000000000000000000000000000000000000000000604082015260600190565b60405180910390a26001016111fe565b5050505050565b336113bf5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146114225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f5b8181101561112657600160055f85858581811061144357611443613189565b602090810292909201358352508101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611424565b60608382146114e15760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161058b565b8367ffffffffffffffff8111156114fa576114fa612a55565b604051908082528060200260200182016040528015611523578160200160208202803683370190505b5090505f5b848110156115e05760025f87878481811061154557611545613189565b905060200201602081019061155a919061292d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8585848181106115a6576115a6613189565b9050602002013581526020019081526020015f20548282815181106115cd576115cd613189565b6020908102919091010152600101611528565b50949350505050565b600181815481106115f8575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3361163d5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146116a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b6116a95f61267f565b565b336116ca5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461172d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b6001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336118575f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146118ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b81600182815481106118ce576118ce613189565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff8716148061196a575073ffffffffffffffffffffffffffffffffffffffff86165f90815260036020908152604080832033845290915290205460ff165b6119b65760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161058b565b73ffffffffffffffffffffffffffffffffffffffff86165f908152600260209081526040808320878452909152812080548592906119f5908490613232565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f90815260026020908152604080832087845290915281208054859290611a39908490613245565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611b79576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190611b119033908b908a908a908a908a90600401613399565b6020604051808303815f875af1158015611b2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b51919061337e565b7fffffffff000000000000000000000000000000000000000000000000000000001614611b93565b73ffffffffffffffffffffffffffffffffffffffff851615155b610a6c5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161058b565b33611bfe5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611c615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b73ffffffffffffffffffffffffffffffffffffffff8116611cea5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161058b565b611cf38161267f565b50565b60018181548110611d0957611d09613189565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff163314611d785760405162461bcd60e51b815260206004820152601060248201527f4d696e746572206e6f742076616c696400000000000000000000000000000000604482015260640161058b565b5f8581526005602052604090205460ff1615611dd65760405162461bcd60e51b815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f776564000000000000000000604482015260640161058b565b5f5b86811015611e4f57611e47888883818110611df557611df5613189565b9050602002016020810190611e0a919061292d565b878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061249992505050565b600101611dd8565b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff84161480611eac575073ffffffffffffffffffffffffffffffffffffffff83165f90815260036020908152604080832033845290915290205460ff165b611ef85760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161058b565b6111268383836126f3565b3373ffffffffffffffffffffffffffffffffffffffff84161480611f56575073ffffffffffffffffffffffffffffffffffffffff83165f90815260036020908152604080832033845290915290205460ff165b611fa25760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161058b565b611126838383612791565b33611fcc5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461202f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b82811461207e5760405162461bcd60e51b815260206004820152600f60248201527f4c656e677468206d69736d617463680000000000000000000000000000000000604482015260640161058b565b5f5b838110156113995760045f86868481811061209d5761209d613189565b602090810292909201358352508101919091526040015f205460ff16156121065760405162461bcd60e51b815260206004820152600a60248201527f555249206c6f636b656400000000000000000000000000000000000000000000604482015260640161058b565b82828281811061211857612118613189565b905060200281019061212a91906133ea565b60075f88888681811061213f5761213f613189565b9050602002013581526020019081526020015f20918261216092919061348f565b5084848281811061217357612173613189565b905060200201357f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8484848181106121ad576121ad613189565b90506020028101906121bf91906133ea565b6040516121cd9291906135a5565b60405180910390a2600101612080565b82518251811461222f5760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161058b565b5f5b818110156122d35783818151811061224b5761224b613189565b602002602001015160025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8784815181106122a3576122a3613189565b602002602001015181526020019081526020015f205f8282546122c69190613245565b9091555050600101612231565b508473ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161234a9291906135c0565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15612433576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063bc197c81906123cb9033905f908a908a908a906004016135ed565b6020604051808303815f875af11580156123e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240b919061337e565b7fffffffff00000000000000000000000000000000000000000000000000000000161461244d565b73ffffffffffffffffffffffffffffffffffffffff851615155b6113995760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161058b565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600260209081526040808320868452909152812080548492906124d8908490613245565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff8616915f9133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15612613576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e61906125ab9033905f9089908990899060040161364b565b6020604051808303815f875af11580156125c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125eb919061337e565b7fffffffff00000000000000000000000000000000000000000000000000000000161461262d565b73ffffffffffffffffffffffffffffffffffffffff841615155b6126795760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161058b565b50505050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260026020908152604080832085845290915281208054839290612732908490613232565b909155505060408051838152602081018390525f9173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b8151815181146127e35760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161058b565b5f5b81811015612887578281815181106127ff576127ff613189565b602002602001015160025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f86848151811061285757612857613189565b602002602001015181526020019081526020015f205f82825461287a9190613232565b90915550506001016127e5565b505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516128fe9291906135c0565b60405180910390a450505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611cf3575f80fd5b5f6020828403121561293d575f80fd5b81356129488161290c565b9392505050565b5f8060408385031215612960575f80fd5b823561296b8161290c565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611cf3575f80fd5b5f602082840312156129b6575f80fd5b813561294881612979565b5f602082840312156129d1575f80fd5b5035919050565b5f5b838110156129f25781810151838201526020016129da565b50505f910152565b5f8151808452612a118160208601602086016129d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f61294860208301846129fa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ac957612ac9612a55565b604052919050565b5f82601f830112612ae0575f80fd5b8135602067ffffffffffffffff821115612afc57612afc612a55565b8160051b612b0b828201612a82565b9283528481018201928281019087851115612b24575f80fd5b83870192505b84831015612b4357823582529183019190830190612b2a565b979650505050505050565b5f8083601f840112612b5e575f80fd5b50813567ffffffffffffffff811115612b75575f80fd5b602083019150836020828501011115610adc575f80fd5b5f805f805f8060a08789031215612ba1575f80fd5b8635612bac8161290c565b9550602087013567ffffffffffffffff80821115612bc8575f80fd5b612bd48a838b01612ad1565b96506040890135915080821115612be9575f80fd5b612bf58a838b01612ad1565b95506060890135915080821115612c0a575f80fd5b50612c1789828a01612b4e565b979a9699509497949695608090950135949350505050565b5f8060408385031215612c40575f80fd5b50508035926020909101359150565b5f805f805f8060a08789031215612c64575f80fd5b8635612c6f8161290c565b95506020870135945060408701359350606087013567ffffffffffffffff811115612c98575f80fd5b612c1789828a01612b4e565b5f8083601f840112612cb4575f80fd5b50813567ffffffffffffffff811115612ccb575f80fd5b6020830191508360208260051b8501011115610adc575f80fd5b5f805f805f805f8060a0898b031215612cfc575f80fd5b8835612d078161290c565b97506020890135612d178161290c565b9650604089013567ffffffffffffffff80821115612d33575f80fd5b612d3f8c838d01612ca4565b909850965060608b0135915080821115612d57575f80fd5b612d638c838d01612ca4565b909650945060808b0135915080821115612d7b575f80fd5b50612d888b828c01612b4e565b999c989b5096995094979396929594505050565b5f8060208385031215612dad575f80fd5b823567ffffffffffffffff811115612dc3575f80fd5b612dcf85828601612ca4565b90969095509350505050565b5f805f8060408587031215612dee575f80fd5b843567ffffffffffffffff80821115612e05575f80fd5b612e1188838901612ca4565b90965094506020870135915080821115612e29575f80fd5b50612e3687828801612ca4565b95989497509550505050565b5f815180845260208085019450602084015f5b83811015612e7157815187529582019590820190600101612e55565b509495945050505050565b602081525f6129486020830184612e42565b5f8060408385031215612e9f575f80fd5b8235612eaa8161290c565b915060208301358015158114612ebe575f80fd5b809150509250929050565b5f8060408385031215612eda575f80fd5b8235612ee58161290c565b91506020830135612ebe8161290c565b5f805f805f8060a08789031215612f0a575f80fd5b8635612f158161290c565b95506020870135612f258161290c565b94506040870135935060608701359250608087013567ffffffffffffffff811115612f4e575f80fd5b612f5a89828a01612b4e565b979a9699509497509295939492505050565b5f805f805f805f60a0888a031215612f82575f80fd5b873567ffffffffffffffff80821115612f99575f80fd5b612fa58b838c01612ca4565b909950975060208a0135965060408a0135955060608a0135915080821115612fcb575f80fd5b50612fd88a828b01612b4e565b989b979a50959894979596608090950135949350505050565b5f805f60608486031215613003575f80fd5b833561300e8161290c565b95602085013595506040909401359392505050565b5f805f60608486031215613035575f80fd5b83356130408161290c565b9250602084013567ffffffffffffffff8082111561305c575f80fd5b61306887838801612ad1565b9350604086013591508082111561307d575f80fd5b5061308a86828701612ad1565b9150509250925092565b5f602082840312156130a4575f80fd5b815167ffffffffffffffff808211156130bb575f80fd5b818401915084601f8301126130ce575f80fd5b8151818111156130e0576130e0612a55565b61311160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a82565b9150808252856020828501011115613127575f80fd5b6115e08160208401602086016129d8565b600181811c9082168061314c57607f821691505b602082108103613183577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610705576107056131b6565b5f8261322d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115610705576107056131b6565b80820180821115610705576107056131b6565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613288575f80fd5b8260051b80836020870137939093016020019392505050565b604081525f6132b4604083018688613258565b8281036020840152612b43818587613258565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261334760a08301888a613258565b828103606084015261335a818789613258565b9050828103608084015261336f8185876132c7565b9b9a5050505050505050505050565b5f6020828403121561338e575f80fd5b815161294881612979565b5f73ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301526133de60a0830184866132c7565b98975050505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261341d575f80fd5b83018035915067ffffffffffffffff821115613437575f80fd5b602001915036819003821315610adc575f80fd5b601f82111561112657805f5260205f20601f840160051c810160208510156134705750805b601f840160051c820191505b81811015611399575f815560010161347c565b67ffffffffffffffff8311156134a7576134a7612a55565b6134bb836134b58354613138565b8361344b565b5f601f84116001811461350b575f85156134d55750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611399565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156135585786850135825560209485019460019092019101613538565b5086821015613593577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b602081525f6135b86020830184866132c7565b949350505050565b604081525f6135d26040830185612e42565b82810360208401526135e48185612e42565b95945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261362560a0830186612e42565b82810360608401526136378186612e42565b905082810360808401526133de81856129fa565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152612b4360a08301846129fa56fea2646970667358221220e1746f67b94e5b4e716c2babe89ff7df27af08114264e87f29a1cd436b3c904b64736f6c63430008160033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101cf575f3560e01c80635f27d785116100fe578063b8f883f91161009e578063f357063d1161006e578063f357063d146104c1578063f5298aca146104d4578063f6eb127a146104e7578063f8707ab5146104fa575f80fd5b8063b8f883f91461045b578063e985e9c51461046e578063f242432a1461049b578063f2fde38b146104ae575f80fd5b806383a75cd7116100d957806383a75cd7146103e35780638da5cb5b14610418578063983b2d5614610435578063a22cb46514610448575f80fd5b80635f27d785146103815780636d2bce34146103b9578063715018a6146103db575f80fd5b80632a55205a11610174578063404899cd11610144578063404899cd14610328578063448ea7af1461033b5780634d564dc01461034e5780634e1273f414610361575f80fd5b80632a55205a146102b05780632a6d9e92146102ef5780632eb2c2d61461030257806333373cea14610315575f80fd5b80630e89341c116101af5780630e89341c1461024857806312efaf1c146102685780631f72d8311461028a578063263488f31461029d575f80fd5b80629ee39c146101d3578062fdd58e146101e857806301ffc9a714610225575b5f80fd5b6101e66101e136600461292d565b61050d565b005b6102126101f636600461294f565b600260209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6102386102333660046129a6565b6105db565b604051901515815260200161021c565b61025b6102563660046129c1565b61070b565b60405161021c9190612a43565b6102386102763660046129c1565b60046020525f908152604090205460ff1681565b6101e66102983660046129c1565b61088f565b6101e66102ab366004612b8c565b610916565b6102c36102be366004612c2f565b610a74565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161021c565b6101e66102fd366004612c4f565b610ae3565b6101e6610310366004612ce5565b610c04565b6101e6610323366004612c2f565b610fa3565b6101e6610336366004612d9c565b611036565b6101e6610349366004612ddb565b61112b565b6101e661035c366004612d9c565b6113a0565b61037461036f366004612ddb565b611490565b60405161021c9190612e7c565b61039461038f3660046129c1565b6115e9565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102386103c73660046129c1565b60056020525f908152604090205460ff1681565b6101e661161e565b6103946103f13660046129c1565b60066020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b5f5473ffffffffffffffffffffffffffffffffffffffff16610394565b6101e661044336600461292d565b6116ab565b6101e6610456366004612e8e565b6117a2565b6101e661046936600461294f565b611838565b61023861047c366004612ec9565b600360209081525f928352604080842090915290825290205460ff1681565b6101e66104a9366004612ef5565b611917565b6101e66104bc36600461292d565b611bdf565b6101e66104cf366004612f6c565b611cf6565b6101e66104e2366004612ff1565b611e59565b6101e66104f5366004613023565b611f03565b6101e6610508366004612ddb565b611fad565b3361052c5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146105945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061066d57507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806106b957507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061070557507f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f8181526006602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16156107f4575f82815260066020526040908190205490517f894b4c2e0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063894b4c2e906024015f60405180830381865afa1580156107af573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107059190810190613094565b5f828152600760205260409020805461080c90613138565b80601f016020809104026020016040519081016040528092919081815260200182805461083890613138565b80156108835780601f1061085a57610100808354040283529160200191610883565b820191905f5260205f20905b81548152906001019060200180831161086657829003601f168201915b50505050509050919050565b336108ae5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146109115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b600955565b6001818154811061092957610929613189565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff1633146109985760405162461bcd60e51b815260206004820152601060248201527f4d696e746572206e6f742076616c696400000000000000000000000000000000604482015260640161058b565b5f5b8551811015610a2a5760055f8783815181106109b8576109b8613189565b60209081029190910181015182528101919091526040015f205460ff1615610a225760405162461bcd60e51b815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f776564000000000000000000604482015260640161058b565b60010161099a565b50610a6c86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506121dd92505050565b505050505050565b5f828152600a60205260408120548190819015610a9f57505f848152600a6020526040902054610aa4565b506009545b5f612710610ab283876131e3565b610abc91906131fa565b60085473ffffffffffffffffffffffffffffffffffffffff169450925050505b9250929050565b60018181548110610af657610af6613189565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff163314610b655760405162461bcd60e51b815260206004820152601060248201527f4d696e746572206e6f742076616c696400000000000000000000000000000000604482015260640161058b565b5f8581526005602052604090205460ff1615610bc35760405162461bcd60e51b815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f776564000000000000000000604482015260640161058b565b610a6c86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061249992505050565b848314610c535760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161058b565b3373ffffffffffffffffffffffffffffffffffffffff89161480610ca6575073ffffffffffffffffffffffffffffffffffffffff88165f90815260036020908152604080832033845290915290205460ff165b610cf25760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161058b565b5f805f5b87811015610dc757888882818110610d1057610d10613189565b905060200201359250868682818110610d2b57610d2b613189565b73ffffffffffffffffffffffffffffffffffffffff8e165f90815260026020908152604080832089845282528220805493909102949094013595508593925090610d76908490613232565b909155505073ffffffffffffffffffffffffffffffffffffffff8a165f90815260026020908152604080832086845290915281208054849290610dba908490613245565b9091555050600101610cf6565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051610e4294939291906132a1565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610f31576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c8190610ec99033908f908e908e908e908e908e908e9060040161330e565b6020604051808303815f875af1158015610ee5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f09919061337e565b7fffffffff000000000000000000000000000000000000000000000000000000001614610f4b565b73ffffffffffffffffffffffffffffffffffffffff891615155b610f975760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161058b565b50505050505050505050565b33610fc25f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146110255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f918252600a602052604090912055565b336110555f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146110b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f5b8181101561112657600160045f8585858181106110d9576110d9613189565b602090810292909201358352508101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016110ba565b505050565b3361114a5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146111ad5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b8281146111fc5760405162461bcd60e51b815260206004820152600f60248201527f4c656e677468206d69736d617463680000000000000000000000000000000000604482015260640161058b565b5f5b838110156113995760045f86868481811061121b5761121b613189565b602090810292909201358352508101919091526040015f205460ff16156112845760405162461bcd60e51b815260206004820152600a60248201527f555249206c6f636b656400000000000000000000000000000000000000000000604482015260640161058b565b82828281811061129657611296613189565b90506020020160208101906112ab919061292d565b60065f8787858181106112c0576112c0613189565b9050602002013581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084848281811061132357611323613189565b905060200201357f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b604051611389906020808252600a908201527f437573746f6d2055524900000000000000000000000000000000000000000000604082015260600190565b60405180910390a26001016111fe565b5050505050565b336113bf5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146114225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f5b8181101561112657600160055f85858581811061144357611443613189565b602090810292909201358352508101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611424565b60608382146114e15760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161058b565b8367ffffffffffffffff8111156114fa576114fa612a55565b604051908082528060200260200182016040528015611523578160200160208202803683370190505b5090505f5b848110156115e05760025f87878481811061154557611545613189565b905060200201602081019061155a919061292d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8585848181106115a6576115a6613189565b9050602002013581526020019081526020015f20548282815181106115cd576115cd613189565b6020908102919091010152600101611528565b50949350505050565b600181815481106115f8575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3361163d5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146116a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b6116a95f61267f565b565b336116ca5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461172d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b6001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336118575f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146118ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b81600182815481106118ce576118ce613189565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff8716148061196a575073ffffffffffffffffffffffffffffffffffffffff86165f90815260036020908152604080832033845290915290205460ff165b6119b65760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161058b565b73ffffffffffffffffffffffffffffffffffffffff86165f908152600260209081526040808320878452909152812080548592906119f5908490613232565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f90815260026020908152604080832087845290915281208054859290611a39908490613245565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611b79576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190611b119033908b908a908a908a908a90600401613399565b6020604051808303815f875af1158015611b2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b51919061337e565b7fffffffff000000000000000000000000000000000000000000000000000000001614611b93565b73ffffffffffffffffffffffffffffffffffffffff851615155b610a6c5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161058b565b33611bfe5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611c615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b73ffffffffffffffffffffffffffffffffffffffff8116611cea5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161058b565b611cf38161267f565b50565b60018181548110611d0957611d09613189565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff163314611d785760405162461bcd60e51b815260206004820152601060248201527f4d696e746572206e6f742076616c696400000000000000000000000000000000604482015260640161058b565b5f8581526005602052604090205460ff1615611dd65760405162461bcd60e51b815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f776564000000000000000000604482015260640161058b565b5f5b86811015611e4f57611e47888883818110611df557611df5613189565b9050602002016020810190611e0a919061292d565b878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061249992505050565b600101611dd8565b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff84161480611eac575073ffffffffffffffffffffffffffffffffffffffff83165f90815260036020908152604080832033845290915290205460ff165b611ef85760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161058b565b6111268383836126f3565b3373ffffffffffffffffffffffffffffffffffffffff84161480611f56575073ffffffffffffffffffffffffffffffffffffffff83165f90815260036020908152604080832033845290915290205460ff165b611fa25760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161058b565b611126838383612791565b33611fcc5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461202f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b82811461207e5760405162461bcd60e51b815260206004820152600f60248201527f4c656e677468206d69736d617463680000000000000000000000000000000000604482015260640161058b565b5f5b838110156113995760045f86868481811061209d5761209d613189565b602090810292909201358352508101919091526040015f205460ff16156121065760405162461bcd60e51b815260206004820152600a60248201527f555249206c6f636b656400000000000000000000000000000000000000000000604482015260640161058b565b82828281811061211857612118613189565b905060200281019061212a91906133ea565b60075f88888681811061213f5761213f613189565b9050602002013581526020019081526020015f20918261216092919061348f565b5084848281811061217357612173613189565b905060200201357f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8484848181106121ad576121ad613189565b90506020028101906121bf91906133ea565b6040516121cd9291906135a5565b60405180910390a2600101612080565b82518251811461222f5760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161058b565b5f5b818110156122d35783818151811061224b5761224b613189565b602002602001015160025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8784815181106122a3576122a3613189565b602002602001015181526020019081526020015f205f8282546122c69190613245565b9091555050600101612231565b508473ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161234a9291906135c0565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15612433576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063bc197c81906123cb9033905f908a908a908a906004016135ed565b6020604051808303815f875af11580156123e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240b919061337e565b7fffffffff00000000000000000000000000000000000000000000000000000000161461244d565b73ffffffffffffffffffffffffffffffffffffffff851615155b6113995760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161058b565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600260209081526040808320868452909152812080548492906124d8908490613245565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff8616915f9133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15612613576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e61906125ab9033905f9089908990899060040161364b565b6020604051808303815f875af11580156125c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125eb919061337e565b7fffffffff00000000000000000000000000000000000000000000000000000000161461262d565b73ffffffffffffffffffffffffffffffffffffffff841615155b6126795760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161058b565b50505050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260026020908152604080832085845290915281208054839290612732908490613232565b909155505060408051838152602081018390525f9173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b8151815181146127e35760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161058b565b5f5b81811015612887578281815181106127ff576127ff613189565b602002602001015160025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f86848151811061285757612857613189565b602002602001015181526020019081526020015f205f82825461287a9190613232565b90915550506001016127e5565b505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516128fe9291906135c0565b60405180910390a450505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611cf3575f80fd5b5f6020828403121561293d575f80fd5b81356129488161290c565b9392505050565b5f8060408385031215612960575f80fd5b823561296b8161290c565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611cf3575f80fd5b5f602082840312156129b6575f80fd5b813561294881612979565b5f602082840312156129d1575f80fd5b5035919050565b5f5b838110156129f25781810151838201526020016129da565b50505f910152565b5f8151808452612a118160208601602086016129d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f61294860208301846129fa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ac957612ac9612a55565b604052919050565b5f82601f830112612ae0575f80fd5b8135602067ffffffffffffffff821115612afc57612afc612a55565b8160051b612b0b828201612a82565b9283528481018201928281019087851115612b24575f80fd5b83870192505b84831015612b4357823582529183019190830190612b2a565b979650505050505050565b5f8083601f840112612b5e575f80fd5b50813567ffffffffffffffff811115612b75575f80fd5b602083019150836020828501011115610adc575f80fd5b5f805f805f8060a08789031215612ba1575f80fd5b8635612bac8161290c565b9550602087013567ffffffffffffffff80821115612bc8575f80fd5b612bd48a838b01612ad1565b96506040890135915080821115612be9575f80fd5b612bf58a838b01612ad1565b95506060890135915080821115612c0a575f80fd5b50612c1789828a01612b4e565b979a9699509497949695608090950135949350505050565b5f8060408385031215612c40575f80fd5b50508035926020909101359150565b5f805f805f8060a08789031215612c64575f80fd5b8635612c6f8161290c565b95506020870135945060408701359350606087013567ffffffffffffffff811115612c98575f80fd5b612c1789828a01612b4e565b5f8083601f840112612cb4575f80fd5b50813567ffffffffffffffff811115612ccb575f80fd5b6020830191508360208260051b8501011115610adc575f80fd5b5f805f805f805f8060a0898b031215612cfc575f80fd5b8835612d078161290c565b97506020890135612d178161290c565b9650604089013567ffffffffffffffff80821115612d33575f80fd5b612d3f8c838d01612ca4565b909850965060608b0135915080821115612d57575f80fd5b612d638c838d01612ca4565b909650945060808b0135915080821115612d7b575f80fd5b50612d888b828c01612b4e565b999c989b5096995094979396929594505050565b5f8060208385031215612dad575f80fd5b823567ffffffffffffffff811115612dc3575f80fd5b612dcf85828601612ca4565b90969095509350505050565b5f805f8060408587031215612dee575f80fd5b843567ffffffffffffffff80821115612e05575f80fd5b612e1188838901612ca4565b90965094506020870135915080821115612e29575f80fd5b50612e3687828801612ca4565b95989497509550505050565b5f815180845260208085019450602084015f5b83811015612e7157815187529582019590820190600101612e55565b509495945050505050565b602081525f6129486020830184612e42565b5f8060408385031215612e9f575f80fd5b8235612eaa8161290c565b915060208301358015158114612ebe575f80fd5b809150509250929050565b5f8060408385031215612eda575f80fd5b8235612ee58161290c565b91506020830135612ebe8161290c565b5f805f805f8060a08789031215612f0a575f80fd5b8635612f158161290c565b95506020870135612f258161290c565b94506040870135935060608701359250608087013567ffffffffffffffff811115612f4e575f80fd5b612f5a89828a01612b4e565b979a9699509497509295939492505050565b5f805f805f805f60a0888a031215612f82575f80fd5b873567ffffffffffffffff80821115612f99575f80fd5b612fa58b838c01612ca4565b909950975060208a0135965060408a0135955060608a0135915080821115612fcb575f80fd5b50612fd88a828b01612b4e565b989b979a50959894979596608090950135949350505050565b5f805f60608486031215613003575f80fd5b833561300e8161290c565b95602085013595506040909401359392505050565b5f805f60608486031215613035575f80fd5b83356130408161290c565b9250602084013567ffffffffffffffff8082111561305c575f80fd5b61306887838801612ad1565b9350604086013591508082111561307d575f80fd5b5061308a86828701612ad1565b9150509250925092565b5f602082840312156130a4575f80fd5b815167ffffffffffffffff808211156130bb575f80fd5b818401915084601f8301126130ce575f80fd5b8151818111156130e0576130e0612a55565b61311160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a82565b9150808252856020828501011115613127575f80fd5b6115e08160208401602086016129d8565b600181811c9082168061314c57607f821691505b602082108103613183577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610705576107056131b6565b5f8261322d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115610705576107056131b6565b80820180821115610705576107056131b6565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613288575f80fd5b8260051b80836020870137939093016020019392505050565b604081525f6132b4604083018688613258565b8281036020840152612b43818587613258565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261334760a08301888a613258565b828103606084015261335a818789613258565b9050828103608084015261336f8185876132c7565b9b9a5050505050505050505050565b5f6020828403121561338e575f80fd5b815161294881612979565b5f73ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301526133de60a0830184866132c7565b98975050505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261341d575f80fd5b83018035915067ffffffffffffffff821115613437575f80fd5b602001915036819003821315610adc575f80fd5b601f82111561112657805f5260205f20601f840160051c810160208510156134705750805b601f840160051c820191505b81811015611399575f815560010161347c565b67ffffffffffffffff8311156134a7576134a7612a55565b6134bb836134b58354613138565b8361344b565b5f601f84116001811461350b575f85156134d55750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611399565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156135585786850135825560209485019460019092019101613538565b5086821015613593577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b602081525f6135b86020830184866132c7565b949350505050565b604081525f6135d26040830185612e42565b82810360208401526135e48185612e42565b95945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261362560a0830186612e42565b82810360608401526136378186612e42565b905082810360808401526133de81856129fa565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152612b4360a08301846129fa56fea2646970667358221220e1746f67b94e5b4e716c2babe89ff7df27af08114264e87f29a1cd436b3c904b64736f6c63430008160033

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.