ETH Price: $2,417.76 (+0.67%)

Token

Miners of the Merge (MERGE)
 

Overview

Max Total Supply

573 MERGE

Holders

197

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
sk8er420.eth
Balance
3 MERGE
0xcf177776e15348260a64bdeadab0303ac186a013
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:
MinersOfTheMerge

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

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

import "./interfaces/IERC721TokenReceiver.sol";
import "./interfaces/IERC721.sol";
import "./interfaces/IMetadata.sol";

contract MinersOfTheMerge {

    constructor() payable{
        supportsInterface[0x80ac58cd] = true; //ERC721
        supportsInterface[0x5b5e139f] = true; //ERC721Metadata
        supportsInterface[0x01ffc9a7] = true; //ERC165

        owner = msg.sender;

        _mint(1,msg.sender,bytes32(0));


        uint cost = (PRIZE_FEE) * (100 + CREATOR_FEE_PERCENT) / 100;
        require(msg.value == cost,"Must start with prize ETH");
    }


    uint constant BASE_COST = 0.00002 ether;
    uint constant PRIZE_FEE = 0.005 ether;
    uint constant CREATOR_FEE_PERCENT = 10;

    uint constant BASE_DIFFICULTY = type(uint).max/uint(50000 * 300);

    uint constant DIFFICULTY_RAMP = uint(50000 * 0.1);

    bytes32[] tokens;

    uint public ownerWithdrawn;
    address public owner;

    mapping(uint => uint) public tokenWithdrawn;

    bool public winnerHasWithdrawn;
    uint public burnCount;


    function mergeHasHappened() public view returns(bool){
        return block.difficulty > 2**64;
    }

    event Mine(uint _tokenId, bytes32 _hash, address _miner, uint _blockNumber);
    event WithdrawEth(uint _tokenId, uint _amount, uint _tokenWithdrawn);
    event WithdrawPrize();

    function mine(uint seed) public payable {
        require(!mergeHasHappened() && !winnerHasWithdrawn,"Game has finished");

        uint tokenId = tokens.length + 1;
        uint supply = totalSupply();

        uint difficulty = BASE_DIFFICULTY - (DIFFICULTY_RAMP * supply);

        uint cost = (BASE_COST * supply  + PRIZE_FEE) * (100 + CREATOR_FEE_PERCENT) / 100;

        bytes32 hash = keccak256(abi.encodePacked(
                msg.sender,
                tokens[tokens.length - 1],
                seed
            ));

        require(uint(hash) < difficulty,"difficulty");
        require(msg.value == cost,"cost");

        hash = keccak256(abi.encodePacked(hash,block.timestamp));

        _mint(tokenId,msg.sender,hash);

        emit Mine(tokenId, hash, msg.sender, block.number);
    }

    function _withdrawEth(uint tokenId) private returns(uint){
        require(msg.sender == ownerOf(tokenId),"ownerOf");

        uint amount = _getEthContained(tokenId);

        require(amount > 0,"Nothing to withdraw");

        uint to = tokens.length;

        tokenWithdrawn[tokenId] = to;

        emit WithdrawEth(tokenId,amount,to);

        return amount;
    }

    function withdrawPrize() public{
        uint winningToken = tokens.length;
        require(mergeHasHappened(),"Merge hasn't happened yet");
        require(msg.sender == ownerOf(winningToken),"You didn't win");
        require(!winnerHasWithdrawn,"You have already withdrawn");

        uint amount = (tokens.length ) * PRIZE_FEE;

        _burn(winningToken);

        winnerHasWithdrawn = true;

        payable(msg.sender).transfer(amount);

        emit WithdrawPrize();

    }

    function withdrawEth(uint tokenId) public{
        uint amount = _withdrawEth(tokenId);
        payable(msg.sender).transfer(amount);
    }

    function withdrawEthMultiple(uint[] calldata tokenIds) public{
        require(tokenIds.length > 0,"tokenIds");
        uint amount;
        for(uint i = 0; i < tokenIds.length; i++){
            amount +=  _withdrawEth(tokenIds[i]);
        }
        payable(msg.sender).transfer(amount);
    }


    function hashOf(uint _tokenId) public view returns(bytes32){
        require(isValidToken(_tokenId),"invalid");
        return tokens[_tokenId - 1];
    }
    function getEthContained(uint _tokenId) public view returns(uint){
        require(isValidToken(_tokenId),"invalid");

        return _getEthContained(_tokenId);
    }
    function _getEthContained(uint _tokenId) private view returns(uint){
        uint from;
        if(tokenWithdrawn[_tokenId] > 0){
            from = tokenWithdrawn[_tokenId];
        }else{
            from = _tokenId;
        }
        uint to = tokens.length;

        return (to - from) * BASE_COST;
    }

    function getLastHash() public view returns(bytes32){
        return tokens[tokens.length - 1];
    }
    function getMiningState() public view returns(bytes32 _hash, uint _supply,uint blockNumber){
        return (tokens[tokens.length - 1], totalSupply(), block.number);
    }

    function burn(uint tokenId) public{
        require(mergeHasHappened() && winnerHasWithdrawn,"The game isn't over");
        require(ownerOf(tokenId) == msg.sender);

        if(getEthContained(tokenId) > 0){
            withdrawEth(tokenId);
        }

        _burn(tokenId);
    }
    function burnMultiple(uint[] calldata tokenIds) public{
        require(mergeHasHappened() && winnerHasWithdrawn,"The game isn't over");

        require(tokenIds.length > 0,"tokenIds");
        uint amount;
        for(uint i = 0; i < tokenIds.length; i++){
            require(ownerOf(tokenIds[i]) == msg.sender);

            if(getEthContained(tokenIds[i]) > 0){
                amount +=  _withdrawEth(tokenIds[i]);
            }
            _burn(tokenIds[i]);
        }
        payable(msg.sender).transfer(amount);
    }


    //////===721 Standard
    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);

    //////===721 Implementation
    mapping(address => uint256) public balanceOf;
    mapping (uint256 => address) internal allowance;
    mapping (address => mapping (address => bool)) public isApprovedForAll;

    mapping(uint256 => address) owners;  //Mapping of owners

    //    METADATA VARS
    string public name = "Miners of the Merge";
    string public symbol = "MERGE";

    address private __metadata;


    address constant VB = 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B;

    function _mint(uint _tokenId,address _to, bytes32 _hash) private{
        owners[_tokenId] = msg.sender;
        balanceOf[_to]++;

        tokens.push(_hash);

        emit Transfer(address(0),VB,_tokenId);
        emit Transfer(VB,_to,_tokenId);
    }
    function _burn(uint _tokenId) private{
        address _owner = owners[_tokenId];

        balanceOf[ _owner ]--;
        delete owners[_tokenId];

        burnCount++;

        emit Transfer(_owner,address(0),_tokenId);
    }

    function isValidToken(uint256 _tokenId) internal view returns(bool){
        return owners[_tokenId] != address(0);
    }
    function ownerOf(uint256 _tokenId) public view returns(address){
        require(isValidToken(_tokenId),"invalid");
        return owners[_tokenId];
    }

    function approve(address _approved, uint256 _tokenId)  external{
        address _owner = ownerOf(_tokenId);
        require( _owner == msg.sender                    //Require Sender Owns Token
            || isApprovedForAll[_owner][msg.sender]                //  or is approved for all.
        ,"permission");

        emit Approval(_owner, _approved, _tokenId);

        allowance[_tokenId] = _approved;
    }
    function getApproved(uint256 _tokenId) external view returns (address) {
        require(isValidToken(_tokenId),"invalid");
        return allowance[_tokenId];
    }

    function setApprovalForAll(address _operator, bool _approved) external {
        emit ApprovalForAll(msg.sender,_operator, _approved);
        isApprovedForAll[msg.sender][_operator] = _approved;
    }


    function transferFrom(address _from, address _to, uint256 _tokenId) public {

        //Check Transferable
        //There is a token validity check in ownerOf
        address _owner = ownerOf(_tokenId);

        require ( _owner == msg.sender             //Require sender owns token
        //Doing the two below manually instead of referring to the external methods saves gas
        || allowance[_tokenId] == msg.sender      //or is approved for this token
            || isApprovedForAll[_owner][msg.sender]          //or is approved for all
        ,"permission");

        require(_owner == _from,"owner");
        require(_to != address(0),"zero");

        emit Transfer(_from, _to, _tokenId);

        owners[_tokenId] =_to;

        balanceOf[_from]--;
        balanceOf[_to]++;

        //Reset approved if there is one
        if(allowance[_tokenId] != address(0)){
            delete allowance[_tokenId];
        }
    }

    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) public {
        transferFrom(_from, _to, _tokenId);

        //Get size of "_to" address, if 0 it's a wallet
        uint32 size;
        assembly {
            size := extcodesize(_to)
        }
        if(size > 0){
            IERC721TokenReceiver receiver = IERC721TokenReceiver(_to);
            require(receiver.onERC721Received(msg.sender,_from,_tokenId,data) == bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")),"receiver");
        }
    }
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external {
        safeTransferFrom(_from,_to,_tokenId,"");
    }


    function tokenURI(uint _tokenId) public view returns (string memory){
        return IMetadata(__metadata).tokenURI(_tokenId,hashOf(_tokenId));
    }


    function totalSupply() public view returns (uint256){
        return tokens.length - burnCount;
    }


    ///////===165 Implementation
    mapping (bytes4 => bool) public supportsInterface;
    ///==End 165


    //Admin
    function setOwner(address newOwner) public{
        require(msg.sender == owner,"owner");
        owner = newOwner;
    }

    function setMetadata(address _metadata) public{
        require(msg.sender == owner,"owner");
        __metadata = _metadata;
    }

    function ownerWithdraw() public{
        require(msg.sender == owner,"owner");

        uint start  = ownerWithdrawn;

        uint end = tokens.length - 1;
        uint n = (end - start) + 1;

        uint sum = n * (start + end)/2;

        uint toWithdraw = (sum * BASE_COST + (n) * PRIZE_FEE) * CREATOR_FEE_PERCENT / 100;

        require(toWithdraw > 0,"withdrawn");

        ownerWithdrawn = tokens.length;

        payable(msg.sender).transfer(toWithdraw);

    }
}

File 2 of 4 : IERC721TokenReceiver.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02.
interface IERC721TokenReceiver {
    /// @notice Handle the receipt of an NFT
    /// @dev The ERC721 smart contract calls this function on the recipient
    ///  after a `transfer`. This function MAY throw to revert and reject the
    ///  transfer. Return of other than the magic value MUST result in the
    ///  transaction being reverted.
    ///  Note: the contract address is always the message sender.
    /// @param _operator The address which called `safeTransferFrom` function
    /// @param _from The address which previously owned the token
    /// @param _tokenId The NFT identifier which is being transferred
    /// @param _data Additional data with no specified format
    /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
    ///  unless throwing
    function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4);
}

File 3 of 4 : IERC721.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

/// @title ERC-721 Non-Fungible Token Standard
/// @dev See https://eips.ethereum.org/EIPS/eip-721
///  Note: the ERC-165 identifier for this interface is 0x80ac58cd.
interface IERC721 /* is ERC165 */ {
    /// @dev This emits when ownership of any NFT changes by any mechanism.
    ///  This event emits when NFTs are created (`from` == 0) and destroyed
    ///  (`to` == 0). Exception: during contract creation, any number of NFTs
    ///  may be created and assigned without emitting Transfer. At the time of
    ///  any transfer, the approved address for that NFT (if any) is reset to none.
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);

    /// @dev This emits when the approved address for an NFT is changed or
    ///  reaffirmed. The zero address indicates there is no approved address.
    ///  When a Transfer event emits, this also indicates that the approved
    ///  address for that NFT (if any) is reset to none.
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);

    /// @dev This emits when an operator is enabled or disabled for an owner.
    ///  The operator can manage all NFTs of the owner.
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    /// @notice Count all NFTs assigned to an owner
    /// @dev NFTs assigned to the zero address are considered invalid, and this
    ///  function throws for queries about the zero address.
    /// @param _owner An address for whom to query the balance
    /// @return The number of NFTs owned by `_owner`, possibly zero
    function balanceOf(address _owner) external view returns (uint256);

    /// @notice Find the owner of an NFT
    /// @dev NFTs assigned to zero address are considered invalid, and queries
    ///  about them do throw.
    /// @param _tokenId The identifier for an NFT
    /// @return The address of the owner of the NFT
    function ownerOf(uint256 _tokenId) external view returns (address);

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT. When transfer is complete, this function
    ///  checks if `_to` is a smart contract (code size > 0). If so, it calls
    ///  `onERC721Received` on `_to` and throws if the return value is not
    ///  `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    /// @param data Additional data with no specified format, sent in call to `_to`
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external;

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev This works identically to the other function with an extra data parameter,
    ///  except this function just sets data to "".
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external;

    /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
    ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
    ///  THEY MAY BE PERMANENTLY LOST
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function transferFrom(address _from, address _to, uint256 _tokenId) external;

    /// @notice Change or reaffirm the approved address for an NFT
    /// @dev The zero address indicates there is no approved address.
    ///  Throws unless `msg.sender` is the current NFT owner, or an authorized
    ///  operator of the current owner.
    /// @param _approved The new approved NFT controller
    /// @param _tokenId The NFT to approve
    function approve(address _approved, uint256 _tokenId) external;

    /// @notice Enable or disable approval for a third party ("operator") to manage
    ///  all of `msg.sender`'s assets
    /// @dev Emits the ApprovalForAll event. The contract MUST allow
    ///  multiple operators per owner.
    /// @param _operator Address to add to the set of authorized operators
    /// @param _approved True if the operator is approved, false to revoke approval
    function setApprovalForAll(address _operator, bool _approved) external;

    /// @notice Get the approved address for a single NFT
    /// @dev Throws if `_tokenId` is not a valid NFT.
    /// @param _tokenId The NFT to find the approved address for
    /// @return The approved address for this NFT, or the zero address if there is none
    function getApproved(uint256 _tokenId) external view returns (address);

    /// @notice Query if an address is an authorized operator for another address
    /// @param _owner The address that owns the NFTs
    /// @param _operator The address that acts on behalf of the owner
    /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}

File 4 of 4 : IMetadata.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

interface IMetadata {
    function tokenURI(uint _tokenId,bytes32 _hash) external view returns (string memory);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_hash","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_miner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"Mine","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_tokenWithdrawn","type":"uint256"}],"name":"WithdrawEth","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPrize","type":"event"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"burnMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getEthContained","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningState","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"hashOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":[],"name":"mergeHasHappened","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"seed","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerWithdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"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":"_metadata","type":"address"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenWithdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"winnerHasWithdrawn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"withdrawEthMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawPrize","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280601381526020017f4d696e657273206f6620746865204d6572676500000000000000000000000000815250600a90805190602001906200005192919062000426565b506040518060400160405280600581526020017f4d45524745000000000000000000000000000000000000000000000000000000815250600b90805190602001906200009f92919062000426565b506001600d60006380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001ee6001336000801b6200027060201b60201c565b60006064600a60646200020291906200050f565b6611c37937e080006200021691906200056c565b620002229190620005fc565b905080341462000269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002609062000695565b60405180910390fd5b506200076a565b336009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906200031490620006b7565b919050555060008190806001815401808255809150506001900390600052602060002001600090919091909150558273ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4828273ffffffffffffffffffffffffffffffffffffffff1673ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b828054620004349062000734565b90600052602060002090601f016020900481019282620004585760008555620004a4565b82601f106200047357805160ff1916838001178555620004a4565b82800160010185558215620004a4579182015b82811115620004a357825182559160200191906001019062000486565b5b509050620004b39190620004b7565b5090565b5b80821115620004d2576000816000905550600101620004b8565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200051c82620004d6565b91506200052983620004d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005615762000560620004e0565b5b828201905092915050565b60006200057982620004d6565b91506200058683620004d6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620005c257620005c1620004e0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200060982620004d6565b91506200061683620004d6565b925082620006295762000628620005cd565b5b828204905092915050565b600082825260208201905092915050565b7f4d7573742073746172742077697468207072697a652045544800000000000000600082015250565b60006200067d60198362000634565b91506200068a8262000645565b602082019050919050565b60006020820190508181036000830152620006b0816200066e565b9050919050565b6000620006c482620004d6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620006fa57620006f9620004e0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200074d57607f821691505b6020821081141562000764576200076362000705565b5b50919050565b6139e6806200077a6000396000f3fe6080604052600436106101ee5760003560e01c80636352211e1161010d578063b88d4fde116100a0578063c9bd58df1161006f578063c9bd58df146106ec578063d8c3697314610717578063e985e9c514610744578063ec65b1de14610781578063f3cb8385146107ac576101ee565b8063b88d4fde14610632578063c20615ed1461065b578063c311d04914610686578063c87b56dd146106af576101ee565b80637e551b75116100dc5780637e551b75146105765780638da5cb5b146105b357806395d89b41146105de578063a22cb46514610609576101ee565b80636352211e146104965780636ab49a5b146104d357806370a08231146104fc5780637daa11e314610539576101ee565b806342842e0e116101855780634a910046116101545780634a910046146103fb5780634d47489814610426578063524773ce146104425780635e3975bc1461046d576101ee565b806342842e0e1461037b57806342966c68146103a45780634311de8f146103cd57806348d37a58146103e4576101ee565b806311e36241116101c157806311e36241146102c157806313af4035146102fe57806318160ddd1461032757806323b872dd14610352576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906126a6565b6107d5565b60405161022791906126ee565b60405180910390f35b34801561023c57600080fd5b506102456107f5565b60405161025291906127a2565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906127fa565b610883565b60405161028f9190612868565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906128af565b610908565b005b3480156102cd57600080fd5b506102e860048036038101906102e391906127fa565b610ac6565b6040516102f591906128fe565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190612919565b610ade565b005b34801561033357600080fd5b5061033c610bb2565b60405161034991906128fe565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190612946565b610bcc565b005b34801561038757600080fd5b506103a2600480360381019061039d9190612946565b61101a565b005b3480156103b057600080fd5b506103cb60048036038101906103c691906127fa565b61103a565b005b3480156103d957600080fd5b506103e2611100565b005b3480156103f057600080fd5b506103f96112d8565b005b34801561040757600080fd5b506104106114a5565b60405161041d91906129b2565b60405180910390f35b610440600480360381019061043b91906127fa565b6114db565b005b34801561044e57600080fd5b50610457611755565b60405161046491906128fe565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190612a32565b61175b565b005b3480156104a257600080fd5b506104bd60048036038101906104b891906127fa565b611843565b6040516104ca9190612868565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190612a32565b6118c8565b005b34801561050857600080fd5b50610523600480360381019061051e9190612919565b611ab5565b60405161053091906128fe565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b91906127fa565b611acd565b60405161056d91906128fe565b60405180910390f35b34801561058257600080fd5b5061059d600480360381019061059891906127fa565b611b27565b6040516105aa91906129b2565b60405180910390f35b3480156105bf57600080fd5b506105c8611ba3565b6040516105d59190612868565b60405180910390f35b3480156105ea57600080fd5b506105f3611bc9565b60405161060091906127a2565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612aab565b611c57565b005b34801561063e57600080fd5b5061065960048036038101906106549190612c1b565b611d54565b005b34801561066757600080fd5b50610670611eb2565b60405161067d91906128fe565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a891906127fa565b611eb8565b005b3480156106bb57600080fd5b506106d660048036038101906106d191906127fa565b611f10565b6040516106e391906127a2565b60405180910390f35b3480156106f857600080fd5b50610701611fd3565b60405161070e91906126ee565b60405180910390f35b34801561072357600080fd5b5061072c611fe6565b60405161073b93929190612c9e565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190612cd5565b61202e565b60405161077891906126ee565b60405180910390f35b34801561078d57600080fd5b5061079661205d565b6040516107a391906126ee565b60405180910390f35b3480156107b857600080fd5b506107d360048036038101906107ce9190612919565b612070565b005b600d6020528060005260406000206000915054906101000a900460ff1681565b600a805461080290612d44565b80601f016020809104026020016040519081016040528092919081815260200182805461082e90612d44565b801561087b5780601f106108505761010080835404028352916020019161087b565b820191906000526020600020905b81548152906001019060200180831161085e57829003601f168201915b505050505081565b600061088e82612144565b6108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c490612dc2565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061091382611843565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806109d55750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612e2e565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60036020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6590612e9a565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600554600080549050610bc79190612ee9565b905090565b6000610bd782611843565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610c7157503373ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610d025750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3890612e2e565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da690612e9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690612f69565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610f1c90612f89565b9190505550600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610f7190612fb3565b9190505550600073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611014576007600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50505050565b61103583838360405180602001604052806000815250611d54565b505050565b61104261205d565b801561105a5750600460009054906101000a900460ff165b611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109090613048565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166110b982611843565b73ffffffffffffffffffffffffffffffffffffffff16146110d957600080fd5b60006110e482611acd565b11156110f4576110f381611eb8565b5b6110fd816121b0565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790612e9a565b60405180910390fd5b60006001549050600060016000805490506111ab9190612ee9565b90506000600183836111bd9190612ee9565b6111c79190613068565b90506000600283856111d99190613068565b836111e491906130be565b6111ee9190613147565b905060006064600a6611c37937e080008561120991906130be565b6512309ce540008561121b91906130be565b6112259190613068565b61122f91906130be565b6112399190613147565b90506000811161127e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611275906131c4565b60405180910390fd5b6000805490506001819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112d0573d6000803e3d6000fd5b505050505050565b6000808054905090506112e961205d565b611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90613230565b60405180910390fd5b61133181611843565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461139e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113959061329c565b60405180910390fd5b600460009054906101000a900460ff16156113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590613308565b60405180910390fd5b60006611c37937e0800060008054905061140891906130be565b9050611413826121b0565b6001600460006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611474573d6000803e3d6000fd5b507f539fffc997ddee6ffd664ceace1af168944f75f314e260eba4fac52c8201ead960405160405180910390a15050565b60008060016000805490506114ba9190612ee9565b815481106114cb576114ca613328565b5b9060005260206000200154905090565b6114e361205d565b1580156114fd5750600460009054906101000a900460ff16155b61153c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611533906133a3565b60405180910390fd5b600060016000805490506115509190613068565b9050600061155c610bb2565b905060008161138861156e91906130be565b62e4e1c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61159d9190613147565b6115a79190612ee9565b905060006064600a60646115bb9190613068565b6611c37937e08000856512309ce540006115d591906130be565b6115df9190613068565b6115e991906130be565b6115f39190613147565b90506000336000600160008054905061160c9190612ee9565b8154811061161d5761161c613328565b5b90600052602060002001548760405160200161163b9392919061344d565b604051602081830303815290604052805190602001209050828160001c10611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f906134d6565b60405180910390fd5b8134146116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d190613542565b60405180910390fd5b80426040516020016116ed929190613562565b6040516020818303038152906040528051906020012090506117108533836122eb565b7f4edc347f85a5184f93c988cdfda1be04c5a6c0483574729058a9c8b1b1ba100e85823343604051611745949392919061358e565b60405180910390a1505050505050565b60055481565b600082829050116117a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117989061361f565b60405180910390fd5b600080600090505b838390508110156117f6576117d68484838181106117ca576117c9613328565b5b9050602002013561249f565b826117e19190613068565b915080806117ee90612fb3565b9150506117a9565b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561183d573d6000803e3d6000fd5b50505050565b600061184e82612144565b61188d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188490612dc2565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6118d061205d565b80156118e85750600460009054906101000a900460ff165b611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90613048565b60405180910390fd5b6000828290501161196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649061361f565b60405180910390fd5b600080600090505b83839050811015611a68573373ffffffffffffffffffffffffffffffffffffffff166119b98585848181106119ad576119ac613328565b5b90506020020135611843565b73ffffffffffffffffffffffffffffffffffffffff16146119d957600080fd5b60006119fd8585848181106119f1576119f0613328565b5b90506020020135611acd565b1115611a3357611a25848483818110611a1957611a18613328565b5b9050602002013561249f565b82611a309190613068565b91505b611a55848483818110611a4957611a48613328565b5b905060200201356121b0565b8080611a6090612fb3565b915050611975565b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611aaf573d6000803e3d6000fd5b50505050565b60066020528060005260406000206000915090505481565b6000611ad882612144565b611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e90612dc2565b60405180910390fd5b611b20826125cd565b9050919050565b6000611b3282612144565b611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6890612dc2565b60405180910390fd5b6000600183611b809190612ee9565b81548110611b9157611b90613328565b5b90600052602060002001549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b8054611bd690612d44565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0290612d44565b8015611c4f5780601f10611c2457610100808354040283529160200191611c4f565b820191906000526020600020905b815481529060010190602001808311611c3257829003601f168201915b505050505081565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611cb491906126ee565b60405180910390a380600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d5f848484610bcc565b6000833b905060008163ffffffff161115611eab5760008490507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b8152600401611df89493929190613694565b602060405180830381600087803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a91906136f5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea09061376e565b60405180910390fd5b505b5050505050565b60015481565b6000611ec38261249f565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f0b573d6000803e3d6000fd5b505050565b6060600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f67b80d883611f5a85611b27565b6040518363ffffffff1660e01b8152600401611f7792919061378e565b60006040518083038186803b158015611f8f57600080fd5b505afa158015611fa3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611fcc9190613858565b9050919050565b600460009054906101000a900460ff1681565b6000806000806001600080549050611ffe9190612ee9565b8154811061200f5761200e613328565b5b9060005260206000200154612022610bb2565b43925092509250909192565b60086020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000680100000000000000004411905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790612e9a565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061223890612f89565b91905055506009600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556005600081548092919061228690612fb3565b919050555081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b336009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061238d90612fb3565b919050555060008190806001815401808255809150506001900390600052602060002001600090919091909150558273ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4828273ffffffffffffffffffffffffffffffffffffffff1673ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006124aa82611843565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e906138ed565b60405180910390fd5b6000612522836125cd565b905060008111612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e90613959565b60405180910390fd5b6000808054905090508060036000868152602001908152602001600020819055507fd35de1731aa12063cc60038fcda4de8fdd752f5b633b3fb56720dd3f36ab80698483836040516125bb93929190613979565b60405180910390a18192505050919050565b600080600060036000858152602001908152602001600020541115612607576003600084815260200190815260200160002054905061260b565b8290505b6000808054905090506512309ce5400082826126279190612ee9565b61263191906130be565b92505050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126838161264e565b811461268e57600080fd5b50565b6000813590506126a08161267a565b92915050565b6000602082840312156126bc576126bb612644565b5b60006126ca84828501612691565b91505092915050565b60008115159050919050565b6126e8816126d3565b82525050565b600060208201905061270360008301846126df565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612743578082015181840152602081019050612728565b83811115612752576000848401525b50505050565b6000601f19601f8301169050919050565b600061277482612709565b61277e8185612714565b935061278e818560208601612725565b61279781612758565b840191505092915050565b600060208201905081810360008301526127bc8184612769565b905092915050565b6000819050919050565b6127d7816127c4565b81146127e257600080fd5b50565b6000813590506127f4816127ce565b92915050565b6000602082840312156128105761280f612644565b5b600061281e848285016127e5565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061285282612827565b9050919050565b61286281612847565b82525050565b600060208201905061287d6000830184612859565b92915050565b61288c81612847565b811461289757600080fd5b50565b6000813590506128a981612883565b92915050565b600080604083850312156128c6576128c5612644565b5b60006128d48582860161289a565b92505060206128e5858286016127e5565b9150509250929050565b6128f8816127c4565b82525050565b600060208201905061291360008301846128ef565b92915050565b60006020828403121561292f5761292e612644565b5b600061293d8482850161289a565b91505092915050565b60008060006060848603121561295f5761295e612644565b5b600061296d8682870161289a565b935050602061297e8682870161289a565b925050604061298f868287016127e5565b9150509250925092565b6000819050919050565b6129ac81612999565b82525050565b60006020820190506129c760008301846129a3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126129f2576129f16129cd565b5b8235905067ffffffffffffffff811115612a0f57612a0e6129d2565b5b602083019150836020820283011115612a2b57612a2a6129d7565b5b9250929050565b60008060208385031215612a4957612a48612644565b5b600083013567ffffffffffffffff811115612a6757612a66612649565b5b612a73858286016129dc565b92509250509250929050565b612a88816126d3565b8114612a9357600080fd5b50565b600081359050612aa581612a7f565b92915050565b60008060408385031215612ac257612ac1612644565b5b6000612ad08582860161289a565b9250506020612ae185828601612a96565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b2882612758565b810181811067ffffffffffffffff82111715612b4757612b46612af0565b5b80604052505050565b6000612b5a61263a565b9050612b668282612b1f565b919050565b600067ffffffffffffffff821115612b8657612b85612af0565b5b612b8f82612758565b9050602081019050919050565b82818337600083830152505050565b6000612bbe612bb984612b6b565b612b50565b905082815260208101848484011115612bda57612bd9612aeb565b5b612be5848285612b9c565b509392505050565b600082601f830112612c0257612c016129cd565b5b8135612c12848260208601612bab565b91505092915050565b60008060008060808587031215612c3557612c34612644565b5b6000612c438782880161289a565b9450506020612c548782880161289a565b9350506040612c65878288016127e5565b925050606085013567ffffffffffffffff811115612c8657612c85612649565b5b612c9287828801612bed565b91505092959194509250565b6000606082019050612cb360008301866129a3565b612cc060208301856128ef565b612ccd60408301846128ef565b949350505050565b60008060408385031215612cec57612ceb612644565b5b6000612cfa8582860161289a565b9250506020612d0b8582860161289a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d5c57607f821691505b60208210811415612d7057612d6f612d15565b5b50919050565b7f696e76616c696400000000000000000000000000000000000000000000000000600082015250565b6000612dac600783612714565b9150612db782612d76565b602082019050919050565b60006020820190508181036000830152612ddb81612d9f565b9050919050565b7f7065726d697373696f6e00000000000000000000000000000000000000000000600082015250565b6000612e18600a83612714565b9150612e2382612de2565b602082019050919050565b60006020820190508181036000830152612e4781612e0b565b9050919050565b7f6f776e6572000000000000000000000000000000000000000000000000000000600082015250565b6000612e84600583612714565b9150612e8f82612e4e565b602082019050919050565b60006020820190508181036000830152612eb381612e77565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ef4826127c4565b9150612eff836127c4565b925082821015612f1257612f11612eba565b5b828203905092915050565b7f7a65726f00000000000000000000000000000000000000000000000000000000600082015250565b6000612f53600483612714565b9150612f5e82612f1d565b602082019050919050565b60006020820190508181036000830152612f8281612f46565b9050919050565b6000612f94826127c4565b91506000821415612fa857612fa7612eba565b5b600182039050919050565b6000612fbe826127c4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ff157612ff0612eba565b5b600182019050919050565b7f5468652067616d652069736e2774206f76657200000000000000000000000000600082015250565b6000613032601383612714565b915061303d82612ffc565b602082019050919050565b6000602082019050818103600083015261306181613025565b9050919050565b6000613073826127c4565b915061307e836127c4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130b3576130b2612eba565b5b828201905092915050565b60006130c9826127c4565b91506130d4836127c4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561310d5761310c612eba565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613152826127c4565b915061315d836127c4565b92508261316d5761316c613118565b5b828204905092915050565b7f77697468647261776e0000000000000000000000000000000000000000000000600082015250565b60006131ae600983612714565b91506131b982613178565b602082019050919050565b600060208201905081810360008301526131dd816131a1565b9050919050565b7f4d65726765206861736e27742068617070656e65642079657400000000000000600082015250565b600061321a601983612714565b9150613225826131e4565b602082019050919050565b600060208201905081810360008301526132498161320d565b9050919050565b7f596f75206469646e27742077696e000000000000000000000000000000000000600082015250565b6000613286600e83612714565b915061329182613250565b602082019050919050565b600060208201905081810360008301526132b581613279565b9050919050565b7f596f75206861766520616c72656164792077697468647261776e000000000000600082015250565b60006132f2601a83612714565b91506132fd826132bc565b602082019050919050565b60006020820190508181036000830152613321816132e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f47616d65206861732066696e6973686564000000000000000000000000000000600082015250565b600061338d601183612714565b915061339882613357565b602082019050919050565b600060208201905081810360008301526133bc81613380565b9050919050565b60008160601b9050919050565b60006133db826133c3565b9050919050565b60006133ed826133d0565b9050919050565b61340561340082612847565b6133e2565b82525050565b6000819050919050565b61342661342182612999565b61340b565b82525050565b6000819050919050565b613447613442826127c4565b61342c565b82525050565b600061345982866133f4565b6014820191506134698285613415565b6020820191506134798284613436565b602082019150819050949350505050565b7f646966666963756c747900000000000000000000000000000000000000000000600082015250565b60006134c0600a83612714565b91506134cb8261348a565b602082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f636f737400000000000000000000000000000000000000000000000000000000600082015250565b600061352c600483612714565b9150613537826134f6565b602082019050919050565b6000602082019050818103600083015261355b8161351f565b9050919050565b600061356e8285613415565b60208201915061357e8284613436565b6020820191508190509392505050565b60006080820190506135a360008301876128ef565b6135b060208301866129a3565b6135bd6040830185612859565b6135ca60608301846128ef565b95945050505050565b7f746f6b656e496473000000000000000000000000000000000000000000000000600082015250565b6000613609600883612714565b9150613614826135d3565b602082019050919050565b60006020820190508181036000830152613638816135fc565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006136668261363f565b613670818561364a565b9350613680818560208601612725565b61368981612758565b840191505092915050565b60006080820190506136a96000830187612859565b6136b66020830186612859565b6136c360408301856128ef565b81810360608301526136d5818461365b565b905095945050505050565b6000815190506136ef8161267a565b92915050565b60006020828403121561370b5761370a612644565b5b6000613719848285016136e0565b91505092915050565b7f7265636569766572000000000000000000000000000000000000000000000000600082015250565b6000613758600883612714565b915061376382613722565b602082019050919050565b600060208201905081810360008301526137878161374b565b9050919050565b60006040820190506137a360008301856128ef565b6137b060208301846129a3565b9392505050565b600067ffffffffffffffff8211156137d2576137d1612af0565b5b6137db82612758565b9050602081019050919050565b60006137fb6137f6846137b7565b612b50565b90508281526020810184848401111561381757613816612aeb565b5b613822848285612725565b509392505050565b600082601f83011261383f5761383e6129cd565b5b815161384f8482602086016137e8565b91505092915050565b60006020828403121561386e5761386d612644565b5b600082015167ffffffffffffffff81111561388c5761388b612649565b5b6138988482850161382a565b91505092915050565b7f6f776e65724f6600000000000000000000000000000000000000000000000000600082015250565b60006138d7600783612714565b91506138e2826138a1565b602082019050919050565b60006020820190508181036000830152613906816138ca565b9050919050565b7f4e6f7468696e6720746f20776974686472617700000000000000000000000000600082015250565b6000613943601383612714565b915061394e8261390d565b602082019050919050565b6000602082019050818103600083015261397281613936565b9050919050565b600060608201905061398e60008301866128ef565b61399b60208301856128ef565b6139a860408301846128ef565b94935050505056fea2646970667358221220d7fe08495e029a194aa05de74ce4c3a64f55bd9e678a3bc98546b85f9acd543464736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101ee5760003560e01c80636352211e1161010d578063b88d4fde116100a0578063c9bd58df1161006f578063c9bd58df146106ec578063d8c3697314610717578063e985e9c514610744578063ec65b1de14610781578063f3cb8385146107ac576101ee565b8063b88d4fde14610632578063c20615ed1461065b578063c311d04914610686578063c87b56dd146106af576101ee565b80637e551b75116100dc5780637e551b75146105765780638da5cb5b146105b357806395d89b41146105de578063a22cb46514610609576101ee565b80636352211e146104965780636ab49a5b146104d357806370a08231146104fc5780637daa11e314610539576101ee565b806342842e0e116101855780634a910046116101545780634a910046146103fb5780634d47489814610426578063524773ce146104425780635e3975bc1461046d576101ee565b806342842e0e1461037b57806342966c68146103a45780634311de8f146103cd57806348d37a58146103e4576101ee565b806311e36241116101c157806311e36241146102c157806313af4035146102fe57806318160ddd1461032757806323b872dd14610352576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906126a6565b6107d5565b60405161022791906126ee565b60405180910390f35b34801561023c57600080fd5b506102456107f5565b60405161025291906127a2565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906127fa565b610883565b60405161028f9190612868565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906128af565b610908565b005b3480156102cd57600080fd5b506102e860048036038101906102e391906127fa565b610ac6565b6040516102f591906128fe565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190612919565b610ade565b005b34801561033357600080fd5b5061033c610bb2565b60405161034991906128fe565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190612946565b610bcc565b005b34801561038757600080fd5b506103a2600480360381019061039d9190612946565b61101a565b005b3480156103b057600080fd5b506103cb60048036038101906103c691906127fa565b61103a565b005b3480156103d957600080fd5b506103e2611100565b005b3480156103f057600080fd5b506103f96112d8565b005b34801561040757600080fd5b506104106114a5565b60405161041d91906129b2565b60405180910390f35b610440600480360381019061043b91906127fa565b6114db565b005b34801561044e57600080fd5b50610457611755565b60405161046491906128fe565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190612a32565b61175b565b005b3480156104a257600080fd5b506104bd60048036038101906104b891906127fa565b611843565b6040516104ca9190612868565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190612a32565b6118c8565b005b34801561050857600080fd5b50610523600480360381019061051e9190612919565b611ab5565b60405161053091906128fe565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b91906127fa565b611acd565b60405161056d91906128fe565b60405180910390f35b34801561058257600080fd5b5061059d600480360381019061059891906127fa565b611b27565b6040516105aa91906129b2565b60405180910390f35b3480156105bf57600080fd5b506105c8611ba3565b6040516105d59190612868565b60405180910390f35b3480156105ea57600080fd5b506105f3611bc9565b60405161060091906127a2565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612aab565b611c57565b005b34801561063e57600080fd5b5061065960048036038101906106549190612c1b565b611d54565b005b34801561066757600080fd5b50610670611eb2565b60405161067d91906128fe565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a891906127fa565b611eb8565b005b3480156106bb57600080fd5b506106d660048036038101906106d191906127fa565b611f10565b6040516106e391906127a2565b60405180910390f35b3480156106f857600080fd5b50610701611fd3565b60405161070e91906126ee565b60405180910390f35b34801561072357600080fd5b5061072c611fe6565b60405161073b93929190612c9e565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190612cd5565b61202e565b60405161077891906126ee565b60405180910390f35b34801561078d57600080fd5b5061079661205d565b6040516107a391906126ee565b60405180910390f35b3480156107b857600080fd5b506107d360048036038101906107ce9190612919565b612070565b005b600d6020528060005260406000206000915054906101000a900460ff1681565b600a805461080290612d44565b80601f016020809104026020016040519081016040528092919081815260200182805461082e90612d44565b801561087b5780601f106108505761010080835404028352916020019161087b565b820191906000526020600020905b81548152906001019060200180831161085e57829003601f168201915b505050505081565b600061088e82612144565b6108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c490612dc2565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061091382611843565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806109d55750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612e2e565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60036020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6590612e9a565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600554600080549050610bc79190612ee9565b905090565b6000610bd782611843565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610c7157503373ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610d025750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3890612e2e565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da690612e9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690612f69565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610f1c90612f89565b9190505550600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610f7190612fb3565b9190505550600073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611014576007600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50505050565b61103583838360405180602001604052806000815250611d54565b505050565b61104261205d565b801561105a5750600460009054906101000a900460ff165b611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109090613048565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166110b982611843565b73ffffffffffffffffffffffffffffffffffffffff16146110d957600080fd5b60006110e482611acd565b11156110f4576110f381611eb8565b5b6110fd816121b0565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790612e9a565b60405180910390fd5b60006001549050600060016000805490506111ab9190612ee9565b90506000600183836111bd9190612ee9565b6111c79190613068565b90506000600283856111d99190613068565b836111e491906130be565b6111ee9190613147565b905060006064600a6611c37937e080008561120991906130be565b6512309ce540008561121b91906130be565b6112259190613068565b61122f91906130be565b6112399190613147565b90506000811161127e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611275906131c4565b60405180910390fd5b6000805490506001819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112d0573d6000803e3d6000fd5b505050505050565b6000808054905090506112e961205d565b611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90613230565b60405180910390fd5b61133181611843565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461139e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113959061329c565b60405180910390fd5b600460009054906101000a900460ff16156113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590613308565b60405180910390fd5b60006611c37937e0800060008054905061140891906130be565b9050611413826121b0565b6001600460006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611474573d6000803e3d6000fd5b507f539fffc997ddee6ffd664ceace1af168944f75f314e260eba4fac52c8201ead960405160405180910390a15050565b60008060016000805490506114ba9190612ee9565b815481106114cb576114ca613328565b5b9060005260206000200154905090565b6114e361205d565b1580156114fd5750600460009054906101000a900460ff16155b61153c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611533906133a3565b60405180910390fd5b600060016000805490506115509190613068565b9050600061155c610bb2565b905060008161138861156e91906130be565b62e4e1c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61159d9190613147565b6115a79190612ee9565b905060006064600a60646115bb9190613068565b6611c37937e08000856512309ce540006115d591906130be565b6115df9190613068565b6115e991906130be565b6115f39190613147565b90506000336000600160008054905061160c9190612ee9565b8154811061161d5761161c613328565b5b90600052602060002001548760405160200161163b9392919061344d565b604051602081830303815290604052805190602001209050828160001c10611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f906134d6565b60405180910390fd5b8134146116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d190613542565b60405180910390fd5b80426040516020016116ed929190613562565b6040516020818303038152906040528051906020012090506117108533836122eb565b7f4edc347f85a5184f93c988cdfda1be04c5a6c0483574729058a9c8b1b1ba100e85823343604051611745949392919061358e565b60405180910390a1505050505050565b60055481565b600082829050116117a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117989061361f565b60405180910390fd5b600080600090505b838390508110156117f6576117d68484838181106117ca576117c9613328565b5b9050602002013561249f565b826117e19190613068565b915080806117ee90612fb3565b9150506117a9565b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561183d573d6000803e3d6000fd5b50505050565b600061184e82612144565b61188d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188490612dc2565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6118d061205d565b80156118e85750600460009054906101000a900460ff165b611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90613048565b60405180910390fd5b6000828290501161196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649061361f565b60405180910390fd5b600080600090505b83839050811015611a68573373ffffffffffffffffffffffffffffffffffffffff166119b98585848181106119ad576119ac613328565b5b90506020020135611843565b73ffffffffffffffffffffffffffffffffffffffff16146119d957600080fd5b60006119fd8585848181106119f1576119f0613328565b5b90506020020135611acd565b1115611a3357611a25848483818110611a1957611a18613328565b5b9050602002013561249f565b82611a309190613068565b91505b611a55848483818110611a4957611a48613328565b5b905060200201356121b0565b8080611a6090612fb3565b915050611975565b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611aaf573d6000803e3d6000fd5b50505050565b60066020528060005260406000206000915090505481565b6000611ad882612144565b611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e90612dc2565b60405180910390fd5b611b20826125cd565b9050919050565b6000611b3282612144565b611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6890612dc2565b60405180910390fd5b6000600183611b809190612ee9565b81548110611b9157611b90613328565b5b90600052602060002001549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b8054611bd690612d44565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0290612d44565b8015611c4f5780601f10611c2457610100808354040283529160200191611c4f565b820191906000526020600020905b815481529060010190602001808311611c3257829003601f168201915b505050505081565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611cb491906126ee565b60405180910390a380600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d5f848484610bcc565b6000833b905060008163ffffffff161115611eab5760008490507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b8152600401611df89493929190613694565b602060405180830381600087803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a91906136f5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea09061376e565b60405180910390fd5b505b5050505050565b60015481565b6000611ec38261249f565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f0b573d6000803e3d6000fd5b505050565b6060600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f67b80d883611f5a85611b27565b6040518363ffffffff1660e01b8152600401611f7792919061378e565b60006040518083038186803b158015611f8f57600080fd5b505afa158015611fa3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611fcc9190613858565b9050919050565b600460009054906101000a900460ff1681565b6000806000806001600080549050611ffe9190612ee9565b8154811061200f5761200e613328565b5b9060005260206000200154612022610bb2565b43925092509250909192565b60086020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000680100000000000000004411905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790612e9a565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061223890612f89565b91905055506009600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556005600081548092919061228690612fb3565b919050555081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b336009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061238d90612fb3565b919050555060008190806001815401808255809150506001900390600052602060002001600090919091909150558273ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4828273ffffffffffffffffffffffffffffffffffffffff1673ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006124aa82611843565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e906138ed565b60405180910390fd5b6000612522836125cd565b905060008111612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e90613959565b60405180910390fd5b6000808054905090508060036000868152602001908152602001600020819055507fd35de1731aa12063cc60038fcda4de8fdd752f5b633b3fb56720dd3f36ab80698483836040516125bb93929190613979565b60405180910390a18192505050919050565b600080600060036000858152602001908152602001600020541115612607576003600084815260200190815260200160002054905061260b565b8290505b6000808054905090506512309ce5400082826126279190612ee9565b61263191906130be565b92505050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126838161264e565b811461268e57600080fd5b50565b6000813590506126a08161267a565b92915050565b6000602082840312156126bc576126bb612644565b5b60006126ca84828501612691565b91505092915050565b60008115159050919050565b6126e8816126d3565b82525050565b600060208201905061270360008301846126df565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612743578082015181840152602081019050612728565b83811115612752576000848401525b50505050565b6000601f19601f8301169050919050565b600061277482612709565b61277e8185612714565b935061278e818560208601612725565b61279781612758565b840191505092915050565b600060208201905081810360008301526127bc8184612769565b905092915050565b6000819050919050565b6127d7816127c4565b81146127e257600080fd5b50565b6000813590506127f4816127ce565b92915050565b6000602082840312156128105761280f612644565b5b600061281e848285016127e5565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061285282612827565b9050919050565b61286281612847565b82525050565b600060208201905061287d6000830184612859565b92915050565b61288c81612847565b811461289757600080fd5b50565b6000813590506128a981612883565b92915050565b600080604083850312156128c6576128c5612644565b5b60006128d48582860161289a565b92505060206128e5858286016127e5565b9150509250929050565b6128f8816127c4565b82525050565b600060208201905061291360008301846128ef565b92915050565b60006020828403121561292f5761292e612644565b5b600061293d8482850161289a565b91505092915050565b60008060006060848603121561295f5761295e612644565b5b600061296d8682870161289a565b935050602061297e8682870161289a565b925050604061298f868287016127e5565b9150509250925092565b6000819050919050565b6129ac81612999565b82525050565b60006020820190506129c760008301846129a3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126129f2576129f16129cd565b5b8235905067ffffffffffffffff811115612a0f57612a0e6129d2565b5b602083019150836020820283011115612a2b57612a2a6129d7565b5b9250929050565b60008060208385031215612a4957612a48612644565b5b600083013567ffffffffffffffff811115612a6757612a66612649565b5b612a73858286016129dc565b92509250509250929050565b612a88816126d3565b8114612a9357600080fd5b50565b600081359050612aa581612a7f565b92915050565b60008060408385031215612ac257612ac1612644565b5b6000612ad08582860161289a565b9250506020612ae185828601612a96565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b2882612758565b810181811067ffffffffffffffff82111715612b4757612b46612af0565b5b80604052505050565b6000612b5a61263a565b9050612b668282612b1f565b919050565b600067ffffffffffffffff821115612b8657612b85612af0565b5b612b8f82612758565b9050602081019050919050565b82818337600083830152505050565b6000612bbe612bb984612b6b565b612b50565b905082815260208101848484011115612bda57612bd9612aeb565b5b612be5848285612b9c565b509392505050565b600082601f830112612c0257612c016129cd565b5b8135612c12848260208601612bab565b91505092915050565b60008060008060808587031215612c3557612c34612644565b5b6000612c438782880161289a565b9450506020612c548782880161289a565b9350506040612c65878288016127e5565b925050606085013567ffffffffffffffff811115612c8657612c85612649565b5b612c9287828801612bed565b91505092959194509250565b6000606082019050612cb360008301866129a3565b612cc060208301856128ef565b612ccd60408301846128ef565b949350505050565b60008060408385031215612cec57612ceb612644565b5b6000612cfa8582860161289a565b9250506020612d0b8582860161289a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d5c57607f821691505b60208210811415612d7057612d6f612d15565b5b50919050565b7f696e76616c696400000000000000000000000000000000000000000000000000600082015250565b6000612dac600783612714565b9150612db782612d76565b602082019050919050565b60006020820190508181036000830152612ddb81612d9f565b9050919050565b7f7065726d697373696f6e00000000000000000000000000000000000000000000600082015250565b6000612e18600a83612714565b9150612e2382612de2565b602082019050919050565b60006020820190508181036000830152612e4781612e0b565b9050919050565b7f6f776e6572000000000000000000000000000000000000000000000000000000600082015250565b6000612e84600583612714565b9150612e8f82612e4e565b602082019050919050565b60006020820190508181036000830152612eb381612e77565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ef4826127c4565b9150612eff836127c4565b925082821015612f1257612f11612eba565b5b828203905092915050565b7f7a65726f00000000000000000000000000000000000000000000000000000000600082015250565b6000612f53600483612714565b9150612f5e82612f1d565b602082019050919050565b60006020820190508181036000830152612f8281612f46565b9050919050565b6000612f94826127c4565b91506000821415612fa857612fa7612eba565b5b600182039050919050565b6000612fbe826127c4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ff157612ff0612eba565b5b600182019050919050565b7f5468652067616d652069736e2774206f76657200000000000000000000000000600082015250565b6000613032601383612714565b915061303d82612ffc565b602082019050919050565b6000602082019050818103600083015261306181613025565b9050919050565b6000613073826127c4565b915061307e836127c4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130b3576130b2612eba565b5b828201905092915050565b60006130c9826127c4565b91506130d4836127c4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561310d5761310c612eba565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613152826127c4565b915061315d836127c4565b92508261316d5761316c613118565b5b828204905092915050565b7f77697468647261776e0000000000000000000000000000000000000000000000600082015250565b60006131ae600983612714565b91506131b982613178565b602082019050919050565b600060208201905081810360008301526131dd816131a1565b9050919050565b7f4d65726765206861736e27742068617070656e65642079657400000000000000600082015250565b600061321a601983612714565b9150613225826131e4565b602082019050919050565b600060208201905081810360008301526132498161320d565b9050919050565b7f596f75206469646e27742077696e000000000000000000000000000000000000600082015250565b6000613286600e83612714565b915061329182613250565b602082019050919050565b600060208201905081810360008301526132b581613279565b9050919050565b7f596f75206861766520616c72656164792077697468647261776e000000000000600082015250565b60006132f2601a83612714565b91506132fd826132bc565b602082019050919050565b60006020820190508181036000830152613321816132e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f47616d65206861732066696e6973686564000000000000000000000000000000600082015250565b600061338d601183612714565b915061339882613357565b602082019050919050565b600060208201905081810360008301526133bc81613380565b9050919050565b60008160601b9050919050565b60006133db826133c3565b9050919050565b60006133ed826133d0565b9050919050565b61340561340082612847565b6133e2565b82525050565b6000819050919050565b61342661342182612999565b61340b565b82525050565b6000819050919050565b613447613442826127c4565b61342c565b82525050565b600061345982866133f4565b6014820191506134698285613415565b6020820191506134798284613436565b602082019150819050949350505050565b7f646966666963756c747900000000000000000000000000000000000000000000600082015250565b60006134c0600a83612714565b91506134cb8261348a565b602082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f636f737400000000000000000000000000000000000000000000000000000000600082015250565b600061352c600483612714565b9150613537826134f6565b602082019050919050565b6000602082019050818103600083015261355b8161351f565b9050919050565b600061356e8285613415565b60208201915061357e8284613436565b6020820191508190509392505050565b60006080820190506135a360008301876128ef565b6135b060208301866129a3565b6135bd6040830185612859565b6135ca60608301846128ef565b95945050505050565b7f746f6b656e496473000000000000000000000000000000000000000000000000600082015250565b6000613609600883612714565b9150613614826135d3565b602082019050919050565b60006020820190508181036000830152613638816135fc565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006136668261363f565b613670818561364a565b9350613680818560208601612725565b61368981612758565b840191505092915050565b60006080820190506136a96000830187612859565b6136b66020830186612859565b6136c360408301856128ef565b81810360608301526136d5818461365b565b905095945050505050565b6000815190506136ef8161267a565b92915050565b60006020828403121561370b5761370a612644565b5b6000613719848285016136e0565b91505092915050565b7f7265636569766572000000000000000000000000000000000000000000000000600082015250565b6000613758600883612714565b915061376382613722565b602082019050919050565b600060208201905081810360008301526137878161374b565b9050919050565b60006040820190506137a360008301856128ef565b6137b060208301846129a3565b9392505050565b600067ffffffffffffffff8211156137d2576137d1612af0565b5b6137db82612758565b9050602081019050919050565b60006137fb6137f6846137b7565b612b50565b90508281526020810184848401111561381757613816612aeb565b5b613822848285612725565b509392505050565b600082601f83011261383f5761383e6129cd565b5b815161384f8482602086016137e8565b91505092915050565b60006020828403121561386e5761386d612644565b5b600082015167ffffffffffffffff81111561388c5761388b612649565b5b6138988482850161382a565b91505092915050565b7f6f776e65724f6600000000000000000000000000000000000000000000000000600082015250565b60006138d7600783612714565b91506138e2826138a1565b602082019050919050565b60006020820190508181036000830152613906816138ca565b9050919050565b7f4e6f7468696e6720746f20776974686472617700000000000000000000000000600082015250565b6000613943601383612714565b915061394e8261390d565b602082019050919050565b6000602082019050818103600083015261397281613936565b9050919050565b600060608201905061398e60008301866128ef565b61399b60208301856128ef565b6139a860408301846128ef565b94935050505056fea2646970667358221220d7fe08495e029a194aa05de74ce4c3a64f55bd9e678a3bc98546b85f9acd543464736f6c63430008090033

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.