ETH Price: $3,291.82 (-3.48%)
Gas: 13 Gwei

Token

 

Overview

Max Total Supply

210

Holders

29

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0x45645c8edd908a5143a1c0132ffd93324a431c52
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

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 2: ERC1155.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;
import "./ERC1155Helpers.sol";

/**
 *
 * @dev Implementation of the basic standard multi-token.
 * See https://eips.ethereum.org/EIPS/eip-1155
 * Originally based on code by Enjin: https://github.com/enjin/erc-1155
 *
 * _Available since v3.1._
 */
 
contract ERC1155 is Context,ERC165,ERC1155Holder, IERC1155, IERC1155MetadataURI,Owned {
    using SafeMath for uint256;
    using Address for address;
    using Strings for string;

    // Mapping from token ID to account balances
    mapping (uint256 => mapping(address => uint256)) private _balances;

    // Mapping from account to operator approvals
    mapping (address => mapping(address => bool)) private _operatorApprovals;

    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string private _uri;
    mapping (uint256 => uint256) private tokenSupply;

    
    //set as 6 because 6 NFTs are minted till token ID=6 in constrcuctor
    uint256 private _currentTokenID = 6;

    IERC20 public YouTokenAddress;
    IERC20 public JustTokenAddress;
    IERC20 public WinTokenAddress;
    


    /*
     *     bytes4(keccak256('balanceOf(address,uint256)')) == 0x00fdd58e
     *     bytes4(keccak256('balanceOfBatch(address[],uint256[])')) == 0x4e1273f4
     *     bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465
     *     bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5
     *     bytes4(keccak256('safeTransferFrom(address,address,uint256,uint256,bytes)')) == 0xf242432a
     *     bytes4(keccak256('safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)')) == 0x2eb2c2d6
     *
     *     => 0x00fdd58e ^ 0x4e1273f4 ^ 0xa22cb465 ^
     *        0xe985e9c5 ^ 0xf242432a ^ 0x2eb2c2d6 == 0xd9b67a26
     */
    bytes4 private constant _INTERFACE_ID_ERC1155 = 0xd9b67a26;

    /*
     *     bytes4(keccak256('uri(uint256)')) == 0x0e89341c
     */
    bytes4 private constant _INTERFACE_ID_ERC1155_METADATA_URI = 0x0e89341c;
    
    struct BurnTokens{
        uint256 youTokens;
        uint256 justTokens;
        uint256 winTokens;
    }
    
    // mapping id=>[YOU,JUST,WIN]
    mapping (uint256 =>BurnTokens) private _burnRequiredToMint;


    /**
     * @dev See {_setURI}.
     */
    constructor (string memory uri_, address _youTokenAddress, address _justTokenAddress, address _winTokenAddress, address owner ) public Owned(owner){
        _setURI(uri_);

        // register the supported interfaces to conform to ERC1155 via ERC165
        _registerInterface(_INTERFACE_ID_ERC1155);

        // register the supported interfaces to conform to ERC1155MetadataURI via ERC165
        _registerInterface(_INTERFACE_ID_ERC1155_METADATA_URI);
        
         YouTokenAddress = IERC20(_youTokenAddress);
         JustTokenAddress = IERC20(_justTokenAddress);
         WinTokenAddress = IERC20(_winTokenAddress);
         
        //mint NFTs
         _mint(address(this), 1, 50, "" );
        _burnRequiredToMint[1]=BurnTokens(0, 3 ether,1 ether);
         tokenSupply[1] = 50;

         _mint(address(this), 2, 20, "" );
        _burnRequiredToMint[2]=BurnTokens(6 ether,3 ether, 1 ether);
         tokenSupply[2] = 20;

         _mint(address(this), 3, 50, "" );
        _burnRequiredToMint[3]=BurnTokens(0, 3 ether,1 ether);
         tokenSupply[3] = 50;
 
        _mint(address(this), 4, 20, "" );
        _burnRequiredToMint[4]=BurnTokens(6 ether,3 ether, 1 ether);
         tokenSupply[4] = 20;
 
        _mint(address(this), 5, 20, "" );
        _burnRequiredToMint[5]=BurnTokens(6 ether,3 ether, 1 ether);
         tokenSupply[5] = 20;
 
        _mint(address(this), 6, 50, "" );
        _burnRequiredToMint[6]=BurnTokens(0 ether,3 ether, 1 ether);
         tokenSupply[6] = 50;
 
    }

    /**
     * @dev See {IERC1155MetadataURI-uri}.
     *
     * This implementation returns the same URI for *all* token types. It relies
     * on the token type ID substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * Clients calling this function must replace the `\{id\}` substring with the
     * actual token type ID.
     */
     
      /**
   * @dev Returns an URI for a given token ID
   */
  function uri(uint256 _tokenId) external view override returns (string memory) {
    return Strings.strConcat(
        _uri,
        Strings.uint2str(_tokenId)
    );
  }
  
    // function uri(uint256) external view override returns (string memory) {
    //     return _uri;
    // }

    /**
     * @dev See {IERC1155-balanceOf}.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    
    function balanceOf(address account, uint256 id) public view override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }
    
    
  /**
    * @dev Creates a new token type and assigns _initialSupply to an address
    * NOTE: remove onlyOwner if you want third parties to create new tokens on your contract (which may change your IDs)
    * @param _to which account NFT to be minted
    * @param _initialSupply amount to supply the first owner
    * @param _Uri Optional URI for this token type
    * @param _data Data to pass if receiver is contract
    
    * @return The newly created token ID
    */
  function create(
    address _to,
    uint256 _initialSupply,
    string calldata _Uri,
    bytes calldata _data
  ) external onlyOwner returns (uint256) {

    uint256 _id = _getNextTokenID();
    _incrementTokenTypeId();

    if (bytes(_Uri).length > 0) {
      emit URI(_Uri, _id);
    }
    
    _mint(_to, _id, _initialSupply, _data);
    tokenSupply[_id] = _initialSupply;

    return _id;
  }
  
    
    /**
    * @dev Creates a new token type and assigns _initialSupply to an address
    * NOTE: remove onlyOwner if you want third parties to create new tokens on your contract (which may change your IDs)
    * @param _initialSupply amount to supply the first owner
    * @param _Uri Optional URI for this token type
    * @param _data Data to pass if receiver is contract
    * @param  youTokensToBurn YOU tokens to be burned
    * @param  justTokensToBurn JUST tokens to be burned
    * @param  winTokensToBurn WIN tokens to be burned

    * @return The newly created token ID
    */
  function createToFarm(
    uint256 _initialSupply,
    string calldata _Uri,
    bytes calldata _data,
    uint256 youTokensToBurn, 
    uint256 justTokensToBurn, 
    uint256 winTokensToBurn
  ) external onlyOwner returns (uint256) {

    uint256 _id = _getNextTokenID();
    _incrementTokenTypeId();

    if (bytes(_Uri).length > 0) {
      emit URI(_Uri, _id);
    }
    
    _mint(address(this), _id, _initialSupply, _data);
    _burnRequiredToMint[_id]=BurnTokens(youTokensToBurn, justTokensToBurn, winTokensToBurn);
    tokenSupply[_id] = _initialSupply;

    return _id;
  }
  

  /**
    * @dev Mints some amount of tokens to an address
    * @param _id          Token ID to mint
    * @param _quantity    Amount of tokens to mint
    * @param _data        Data to pass if receiver is contract
    */
  function mint(
    uint256 _id,
    uint256 _quantity,
    bytes memory _data
  ) external onlyOwner {
    _mint(address(this), _id, _quantity, _data);
    tokenSupply[_id] = tokenSupply[_id].add(_quantity);
  }
    

 /**
    * @dev burns YOU JUST WIN and transfers NFT to sender
    * @param _id id of token which sender wants to receive in exchange of burning reqd YOU, JUST & WIN
    */
    function burnNReceiveNFT(uint256 _id) external returns (bool){
        
        uint balanceYOU = YouTokenAddress.balanceOf(msg.sender);
        uint balanceJUST = JustTokenAddress.balanceOf(msg.sender);
        uint balanceWIN = WinTokenAddress.balanceOf(msg.sender);
        
        uint reqdYOU=_burnRequiredToMint[_id].youTokens;
        uint reqdJUST=_burnRequiredToMint[_id].justTokens;
        uint reqdWIN=_burnRequiredToMint[_id].winTokens;
        
        require(balanceYOU >= reqdYOU, "YOU balance is lesser than required burn");
        require(balanceJUST >= reqdJUST, "JUST balance is lesser than required burn");
        require(balanceWIN >= reqdWIN, "WIN balance is lesser than required burn");
        
        YouTokenAddress.burnToFarm(msg.sender, reqdYOU);
        JustTokenAddress.burnToFarm(msg.sender, reqdJUST);
        WinTokenAddress.burnToFarm(msg.sender, reqdWIN);
        
        
        address operator = _msgSender();
        address from=address(this);
        
        // safe transfer
        _beforeTokenTransfer(operator, from, msg.sender, _asSingletonArray(_id), _asSingletonArray(1),"minted for burn of you,just,win");

        _balances[_id][from] = _balances[_id][from].sub(1, "ERC1155: insufficient balance for transfer");
        _balances[_id][msg.sender] = _balances[_id][msg.sender].add(1);

        emit TransferSingle(operator, from, msg.sender, _id, 1);

        _doSafeTransferAcceptanceCheck(operator, from, msg.sender, _id, 1, "");
    
        return true;
    }

    
    function burn(address account, uint256 id, uint256 value) public virtual {
        require(
            account == _msgSender() || isApprovedForAll(account, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );

        _burn(account, id, value);

    }


    function burnBatch(address account, uint256[] memory ids, uint256[] memory values) public virtual {
        require(
            account == _msgSender() || isApprovedForAll(account, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );

        _burnBatch(account, ids, values);
    }

    

    /**
     * @dev See {IERC1155-balanceOfBatch}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(
        address[] memory accounts,
        uint256[] memory ids
    )
        public
        view
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            require(accounts[i] != address(0), "ERC1155: batch balance query for the zero address");
            batchBalances[i] = _balances[ids[i]][accounts[i]];
        }

        return batchBalances;
    }

    /**
     * @dev See {IERC1155-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(_msgSender() != operator, "ERC1155: setting approval status for self");

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

    /**
     * @dev See {IERC1155-isApprovedForAll}.
     */
    function isApprovedForAll(address account, address operator) public view override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    
    /**
     * to fetch how much YOU JUST WIN need to be burnt to mint particular NFT
     */
    function getTokensToBurnForNFT(uint256 id) public view returns (uint256[3] memory) {
        return [_burnRequiredToMint[id].youTokens,_burnRequiredToMint[id].justTokens,_burnRequiredToMint[id].winTokens];
    }
    
    /**
     * @dev See {IERC1155-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    )
        public
        virtual
        override
    {
        require(to != address(0), "ERC1155: transfer to the zero address");
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][from] = _balances[id][from].sub(amount, "ERC1155: insufficient balance for transfer");
        _balances[id][to] = _balances[id][to].add(amount);

        emit TransferSingle(operator, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    /**
     * @dev See {IERC1155-safeBatchTransferFrom}.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    )
        public
        virtual
        override
    {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

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

            _balances[id][from] = _balances[id][from].sub(
                amount,
                "ERC1155: insufficient balance for transfer"
            );
            _balances[id][to] = _balances[id][to].add(amount);
        }

        emit TransferBatch(operator, from, to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    /**
     * @dev Sets a new URI for all token types, by relying on the token type ID
     * substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * By this mechanism, any occurrence of the `\{id\}` substring in either the
     * URI or any of the amounts in the JSON file at said URI will be replaced by
     * clients with the token type ID.
     *
     * For example, the `https://token-cdn-domain/\{id\}.json` URI would be
     * interpreted by clients as
     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
     * for token type ID 0x4cce0.
     *
     * See {uri}.
     *
     * Because these URIs cannot be meaningfully represented by the {URI} event,
     * this function emits no events.
     */
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }
    
    

    /**
     * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(address account, uint256 id, uint256 amount, bytes memory data) internal virtual {
        require(account != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][account] = _balances[id][account].add(amount);
        
        emit TransferSingle(operator, address(0), account, id, amount);

        _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
    }

    /**
     * @dev Destroys `amount` tokens of token type `id` from `account`
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens of token type `id`.
     */
     
     
     function _mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] = amounts[i].add(_balances[ids[i]][to]);
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }


     
    function _burn(address account, uint256 id, uint256 amount) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        _balances[id][account] = _balances[id][account].sub(
            amount,
            "ERC1155: burn amount exceeds balance"
        );
        
         tokenSupply[id] = tokenSupply[id].sub( amount);


        emit TransferSingle(operator, account, address(0), id, amount);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     */
    function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), ids, amounts, "");

        for (uint i = 0; i < ids.length; i++) {
            _balances[ids[i]][account] = _balances[ids[i]][account].sub(
                amounts[i],
                "ERC1155: burn amount exceeds balance"
            );
            
             tokenSupply[ids[i]]=tokenSupply[ids[i]].sub( amounts[i]);

        }

        emit TransferBatch(operator, account, address(0), ids, amounts);
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `id` and `amount` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    )
        internal virtual
    { }

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    )
        private
    {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver(to).onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    )
        private
    {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (bytes4 response) {
                if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
    
    function _getNextTokenID() private view returns (uint256) {
        return _currentTokenID.add(1);
    }

  /**
    * @dev increments the value of _currentTokenID
    */
   function _incrementTokenTypeId() private  {
     _currentTokenID++;
   }
   
   
  /**
    * @dev Returns the total quantity for a token ID
    * @param _id uint256 ID of the token to query
    * @return amount of token in existence
    */
  function totalSupply(
    uint256 _id
  ) public view returns (uint256) {
    return tokenSupply[_id];
  }
  
  /**
   * @dev Will update the base URL of token's URI
   * @param _newBaseMetadataURI New base URL of token's URI
   */
  function setBaseMetadataURI(
    string memory _newBaseMetadataURI
  ) public onlyOwner {
    _setURI(_newBaseMetadataURI);
  }


}

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

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


pragma solidity >=0.6.2 <0.8.0;


/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
    
}



pragma solidity >=0.6.2 <0.8.0;

/**
 * @dev Interface of the optional ERC1155MetadataExtension interface, as defined
 * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}


pragma solidity >=0.6.0 <0.8.0;


/**
 * _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {

    /**
        @dev Handles the receipt of a single ERC1155 token type. This function is
        called at the end of a `safeTransferFrom` after the balance has been updated.
        To accept the transfer, this must return
        `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
        (i.e. 0xf23a6e61, or its own function selector).
        @param operator The address which initiated the transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param id The ID of the token being transferred
        @param value The amount of tokens being transferred
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
    */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    )
        external
        returns(bytes4);

    /**
        @dev Handles the receipt of a multiple ERC1155 token types. This function
        is called at the end of a `safeBatchTransferFrom` after the balances have
        been updated. To accept the transfer(s), this must return
        `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
        (i.e. 0xbc197c81, or its own function selector).
        @param operator The address which initiated the batch transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param ids An array containing ids of each token being transferred (order and length must match values array)
        @param values An array containing amounts of each token being transferred (order and length must match ids array)
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
    */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    )
        external
        returns(bytes4);
}


pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}



pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}



pragma solidity >=0.6.2 <0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.3._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.3._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}



/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);


     /**
     * @dev added to mint YOU tokens directly from staking contract
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
  
    function mintToFarm(address account, uint256 amount) external payable returns (bool);
    
     /**
     to burn YOU, JUST or WIN tokens by this contract
     */
    
    function burnToFarm(address account, uint256 amount)external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    
}



pragma solidity >=0.6.0 <0.8.0;


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts may inherit from this and call {_registerInterface} to declare
 * their support of an interface.
 */
abstract contract ERC165 is IERC165 {
    /*
     * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7
     */
    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;

    /**
     * @dev Mapping of interface ids to whether or not it's supported.
     */
    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor () public {
        // Derived contracts need only register support for their own interfaces,
        // we register support for ERC165 itself here
        _registerInterface(_INTERFACE_ID_ERC165);
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     *
     * Time complexity O(1), guaranteed to always use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) public view override returns (bool) {
        return _supportedInterfaces[interfaceId];
    }

    /**
     * @dev Registers the contract as an implementer of the interface defined by
     * `interfaceId`. Support of the actual ERC165 interface is automatic and
     * registering its interface id is not required.
     *
     * See {IERC165-supportsInterface}.
     *
     * Requirements:
     *
     * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).
     */
    function _registerInterface(bytes4 interfaceId) internal virtual {
        require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
        _supportedInterfaces[interfaceId] = true;
    }
}





pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev _Available since v3.1._
 */
abstract contract ERC1155Receiver is ERC165, IERC1155Receiver {
    constructor() internal {
        _registerInterface(
            ERC1155Receiver(0).onERC1155Received.selector ^
            ERC1155Receiver(0).onERC1155BatchReceived.selector
        );
    }
}

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev _Available since v3.1._
 */
contract ERC1155Holder is ERC1155Receiver {
    function onERC1155Received(address, address, uint256, uint256, bytes memory) public virtual override returns (bytes4) {
        return this.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) public virtual override returns (bytes4) {
        return this.onERC1155BatchReceived.selector;
    }
}


pragma solidity >=0.6.0 <0.8.0;


// https://docs.synthetix.io/contracts/Owned
abstract contract Owned {
    address public owner;
    address public nominatedOwner;

    constructor(address _owner) public {
        require(_owner != address(0), "Owner address cannot be 0");
        owner = _owner;
        emit OwnerChanged(address(0), _owner);
    }

    function nominateNewOwner(address _owner) external onlyOwner {
        nominatedOwner = _owner;
        emit OwnerNominated(_owner);
    }

    function acceptOwnership() external {
        require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
        emit OwnerChanged(owner, nominatedOwner);
        owner = nominatedOwner;
        nominatedOwner = address(0);
    }

    modifier onlyOwner {
        _onlyOwner();
        _;
    }

    function _onlyOwner() private view {
        require(msg.sender == owner, "Only the contract owner may perform this action");
    }

    event OwnerNominated(address newOwner);
    event OwnerChanged(address oldOwner, address newOwner);
}



library Strings {
  // via https://github.com/oraclize/ethereum-api/blob/master/oraclizeAPI_0.5.sol
  function strConcat(string memory _a, string memory _b, string memory _c, string memory _d, string memory _e) internal pure returns (string memory) {
      bytes memory _ba = bytes(_a);
      bytes memory _bb = bytes(_b);
      bytes memory _bc = bytes(_c);
      bytes memory _bd = bytes(_d);
      bytes memory _be = bytes(_e);
      string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);
      bytes memory babcde = bytes(abcde);
      uint k = 0;
      for (uint i = 0; i < _ba.length; i++) babcde[k++] = _ba[i];
      for (uint i = 0; i < _bb.length; i++) babcde[k++] = _bb[i];
      for (uint i = 0; i < _bc.length; i++) babcde[k++] = _bc[i];
      for (uint i = 0; i < _bd.length; i++) babcde[k++] = _bd[i];
      for (uint i = 0; i < _be.length; i++) babcde[k++] = _be[i];
      return string(babcde);
    }

    function strConcat(string memory _a, string memory _b, string memory _c, string memory _d) internal pure returns (string memory) {
        return strConcat(_a, _b, _c, _d, "");
    }

    function strConcat(string memory _a, string memory _b, string memory _c) internal pure returns (string memory) {
        return strConcat(_a, _b, _c, "", "");
    }

    function strConcat(string memory _a, string memory _b) internal pure returns (string memory) {
        return strConcat(_a, _b, "", "", "");
    }

    function uint2str(uint _i) internal pure returns (string memory _uintAsString) {
        if (_i == 0) {
            return "0";
        }
        uint j = _i;
        uint len;
        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len - 1;
        while (_i != 0) {
            bstr[k--] = byte(uint8(48 + _i % 10));
            _i /= 10;
        }
        return string(bstr);
    }
}


Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"uri_","type":"string"},{"internalType":"address","name":"_youTokenAddress","type":"address"},{"internalType":"address","name":"_justTokenAddress","type":"address"},{"internalType":"address","name":"_winTokenAddress","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","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":"values","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":"value","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":[],"name":"JustTokenAddress","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WinTokenAddress","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"YouTokenAddress","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"burnNReceiveNFT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_initialSupply","type":"uint256"},{"internalType":"string","name":"_Uri","type":"string"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"create","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_initialSupply","type":"uint256"},{"internalType":"string","name":"_Uri","type":"string"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"youTokensToBurn","type":"uint256"},{"internalType":"uint256","name":"justTokensToBurn","type":"uint256"},{"internalType":"uint256","name":"winTokensToBurn","type":"uint256"}],"name":"createToFarm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getTokensToBurnForNFT","outputs":[{"internalType":"uint256[3]","name":"","type":"uint256[3]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"string","name":"_newBaseMetadataURI","type":"string"}],"name":"setBaseMetadataURI","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":"uint256","name":"_id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405260066007553480156200001657600080fd5b50604051620043d7380380620043d7833981810160405260a08110156200003c57600080fd5b81019080805160405193929190846401000000008211156200005d57600080fd5b9083019060208201858111156200007357600080fd5b82516401000000008111828201881017156200008e57600080fd5b82525081516020918201929091019080838360005b83811015620000bd578181015183820152602001620000a3565b50505050905090810190601f168015620000eb5780820380516001836020036101000a031916815260200191505b50604090815260208201519082015160608301516080909301519194509250806200011d6301ffc9a760e01b620007ed565b6200012f630271189760e51b620007ed565b6001600160a01b0381166200018b576040805162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040805160008152602081019290925280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150620001f18562000872565b62000203636cdb3d1360e11b620007ed565b620002156303a24d0760e21b620007ed565b600880546001600160a01b038087166001600160a01b03199283161790925560098054868416908316179055600a805492851692909116919091179055604080516020810190915260008152620002749030906001906032906200088b565b6040805160608101825260008082526729a2241af62c00006020808401918252670de0b6b3a764000084860190815260018452600b825293517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf5590517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5d05591517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5d1556006825260327f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a315582519182019092529081526200035d9030906002906014906200088b565b604080516060810182526753444835ec58000081526729a2241af62c00006020808301918252670de0b6b3a764000083850190815260026000908152600b835293517fa50eece07c7db1631545c0069bd8f5f54d5935e215d59097edf258a44ba916345591517fa50eece07c7db1631545c0069bd8f5f54d5935e215d59097edf258a44ba916355590517fa50eece07c7db1631545c0069bd8f5f54d5935e215d59097edf258a44ba91636556006815260147f8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace2955825190810190925281526200044e9030906003906032906200088b565b6040805160608101825260008082526729a2241af62c00006020808401918252670de0b6b3a764000084860190815260038452600b825293517f64c15cc42be7899b001f818cf4433057002112c418d1d3a67cd5cb453051d33e5590517f64c15cc42be7899b001f818cf4433057002112c418d1d3a67cd5cb453051d33f5591517f64c15cc42be7899b001f818cf4433057002112c418d1d3a67cd5cb453051d340556006825260327f75f96ab15d697e93042dc45b5c896c4b27e89bb6eaf39475c5c371cb2513f7d2558251918201909252908152620005379030906004906014906200088b565b604080516060810182526753444835ec58000081526729a2241af62c00006020808301918252670de0b6b3a764000083850190815260046000908152600b835293517f12d0c11577e2f0950f57c455c117796550b79f444811db8ba2f69c57b646c7845591517f12d0c11577e2f0950f57c455c117796550b79f444811db8ba2f69c57b646c7855590517f12d0c11577e2f0950f57c455c117796550b79f444811db8ba2f69c57b646c786556006815260147fc5069e24aaadb2addc3e52e868fcf3f4f8acf5a87e24300992fd4540c2a87eed819055835191820190935290815262000629913091600591906200088b565b604080516060810182526753444835ec58000081526729a2241af62c00006020808301918252670de0b6b3a764000083850190815260056000908152600b835293517febae6141bae5521e99e0a8d610356b0f501fea54980b59c84841db43ba7204f45591517febae6141bae5521e99e0a8d610356b0f501fea54980b59c84841db43ba7204f55590517febae6141bae5521e99e0a8d610356b0f501fea54980b59c84841db43ba7204f655600680825260147fbfd358e93f18da3ed276c3afdbdba00b8f0b6008a03476a6a86bd6320ee6938b558351918201909352908152620007199130916032906200088b565b50506040805160608101825260008082526729a2241af62c00006020808401918252670de0b6b3a7640000948401948552600692839052600b815292517f0387e9d1203691d8e3362a7e4c6723de358a4010d7f31ecbec3fbfc61d1c75fc55517f0387e9d1203691d8e3362a7e4c6723de358a4010d7f31ecbec3fbfc61d1c75fd5591517f0387e9d1203691d8e3362a7e4c6723de358a4010d7f31ecbec3fbfc61d1c75fe5552505060327f697b2bd7bb2984c4e0dc14c79c987d37818484a62958b9c45a0e8b962f20650f555062000e26565b6001600160e01b031980821614156200084d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b80516200088790600590602084019062000cd4565b5050565b6001600160a01b038416620008d25760405162461bcd60e51b8152600401808060200182810382526021815260200180620043b66021913960400191505060405180910390fd5b6000620008de620009ba565b90506200090581600087620008f388620009bf565b620008fe88620009bf565b8762000a04565b60008481526003602090815260408083206001600160a01b03891684528252909120546200093e918590620021e562000a0c821b17901c565b60008581526003602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4620009b38160008787878762000a6e565b5050505050565b335b90565b604080516001808252818301909252606091829190602080830190803683370190505090508281600081518110620009f357fe5b602090810291909101015292915050565b505050505050565b60008282018381101562000a67576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b62000a8d846001600160a01b031662000cce60201b620022461760201c565b1562000a0457836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562000b1f57818101518382015260200162000b05565b50505050905090810190601f16801562000b4d5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801562000b7157600080fd5b505af192505050801562000b9857506040513d602081101562000b9357600080fd5b505160015b62000c745762000ba762000d76565b8062000bb4575062000c3c565b8060405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000c0057818101518382015260200162000be6565b50505050905090810190601f16801562000c2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60405162461bcd60e51b81526004018080602001828103825260348152602001806200435a6034913960400191505060405180910390fd5b6001600160e01b0319811663f23a6e6160e01b1462000cc55760405162461bcd60e51b81526004018080602001828103825260288152602001806200438e6028913960400191505060405180910390fd5b50505050505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000d1757805160ff191683800117855562000d47565b8280016001018555821562000d47579182015b8281111562000d4757825182559160200191906001019062000d2a565b5062000d5592915062000d59565b5090565b5b8082111562000d55576000815560010162000d5a565b60e01c90565b600060443d101562000d8857620009bc565b600481823e6308c379a062000d9e825162000d70565b1462000daa57620009bc565b6040513d600319016004823e80513d6001600160401b03808311602484018310171562000ddb5750505050620009bc565b8284019250825191508082111562000df75750505050620009bc565b503d8301602082840101111562000e1157505050620009bc565b601f01601f1916810160200160405291505090565b6135248062000e366000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806389add238116100de578063bd85b03911610097578063f23a6e6111610071578063f23a6e6114610d1c578063f242432a14610de5578063f2b399ee14610eae578063f5298aca14610ecb5761018d565b8063bd85b03914610bfe578063e38e3b2414610c1b578063e985e9c514610cee5761018d565b806389add238146109855780638da5cb5b1461098d578063a22cb46514610995578063a53d2929146109c3578063b9c2922114610a18578063bc197c8114610a205761018d565b80632eb2c2d61161014b57806353a47bb71161012557806353a47bb71461079e5780636b20c454146107a657806379ba5097146108d95780637e518ec8146108e15761018d565b80632eb2c2d6146104465780634766ac77146106075780634e1273f41461062b5761018d565b8062fdd58e1461019257806301ffc9a7146101d057806308dc9f421461020b5780630e89341c146102bd578063116ed5611461034f5780631627540c14610420575b600080fd5b6101be600480360360408110156101a857600080fd5b506001600160a01b038135169060200135610efd565b60408051918252519081900360200190f35b6101f7600480360360208110156101e657600080fd5b50356001600160e01b031916610f6c565b604080519115158252519081900360200190f35b6102bb6004803603606081101561022157600080fd5b813591602081013591810190606081016040820135600160201b81111561024757600080fd5b82018360208201111561025957600080fd5b803590602001918460018302840111600160201b8311171561027a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f8f945050505050565b005b6102da600480360360208110156102d357600080fd5b5035610fd3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103145781810151838201526020016102fc565b50505050905090810190601f1680156103415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101be600480360360c081101561036557600080fd5b81359190810190604081016020820135600160201b81111561038657600080fd5b82018360208201111561039857600080fd5b803590602001918460018302840111600160201b831117156103b957600080fd5b919390929091602081019035600160201b8111156103d657600080fd5b8201836020820111156103e857600080fd5b803590602001918460018302840111600160201b8311171561040957600080fd5b91935091508035906020810135906040013561107b565b6102bb6004803603602081101561043657600080fd5b50356001600160a01b0316611195565b6102bb600480360360a081101561045c57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561048f57600080fd5b8201836020820111156104a157600080fd5b803590602001918460208302840111600160201b831117156104c257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561051157600080fd5b82018360208201111561052357600080fd5b803590602001918460208302840111600160201b8311171561054457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561059357600080fd5b8201836020820111156105a557600080fd5b803590602001918460018302840111600160201b831117156105c657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111f1945050505050565b61060f6114f4565b604080516001600160a01b039092168252519081900360200190f35b61074e6004803603604081101561064157600080fd5b810190602081018135600160201b81111561065b57600080fd5b82018360208201111561066d57600080fd5b803590602001918460208302840111600160201b8311171561068e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106dd57600080fd5b8201836020820111156106ef57600080fd5b803590602001918460208302840111600160201b8311171561071057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611503945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561078a578181015183820152602001610772565b505050509050019250505060405180910390f35b61060f611681565b6102bb600480360360608110156107bc57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107e657600080fd5b8201836020820111156107f857600080fd5b803590602001918460208302840111600160201b8311171561081957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561086857600080fd5b82018360208201111561087a57600080fd5b803590602001918460208302840111600160201b8311171561089b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611690945050505050565b6102bb611709565b6102bb600480360360208110156108f757600080fd5b810190602081018135600160201b81111561091157600080fd5b82018360208201111561092357600080fd5b803590602001918460018302840111600160201b8311171561094457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117c5945050505050565b61060f6117d9565b61060f6117e8565b6102bb600480360360408110156109ab57600080fd5b506001600160a01b03813516906020013515156117f7565b6109e0600480360360208110156109d957600080fd5b50356118e6565b6040518082606080838360005b83811015610a055781810151838201526020016109ed565b5050505090500191505060405180910390f35b61060f611928565b610be1600480360360a0811015610a3657600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610a6957600080fd5b820183602082011115610a7b57600080fd5b803590602001918460208302840111600160201b83111715610a9c57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610aeb57600080fd5b820183602082011115610afd57600080fd5b803590602001918460208302840111600160201b83111715610b1e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610b6d57600080fd5b820183602082011115610b7f57600080fd5b803590602001918460018302840111600160201b83111715610ba057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611937945050505050565b604080516001600160e01b03199092168252519081900360200190f35b6101be60048036036020811015610c1457600080fd5b5035611948565b6101be60048036036080811015610c3157600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610c6057600080fd5b820183602082011115610c7257600080fd5b803590602001918460018302840111600160201b83111715610c9357600080fd5b919390929091602081019035600160201b811115610cb057600080fd5b820183602082011115610cc257600080fd5b803590602001918460018302840111600160201b83111715610ce357600080fd5b50909250905061195a565b6101f760048036036040811015610d0457600080fd5b506001600160a01b0381358116916020013516611a3f565b610be1600480360360a0811015610d3257600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610d7157600080fd5b820183602082011115610d8357600080fd5b803590602001918460018302840111600160201b83111715610da457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a6d945050505050565b6102bb600480360360a0811015610dfb57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610e3a57600080fd5b820183602082011115610e4c57600080fd5b803590602001918460018302840111600160201b83111715610e6d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a7e945050505050565b6101f760048036036020811015610ec457600080fd5b5035611c37565b6102bb60048036036060811015610ee157600080fd5b506001600160a01b038135169060208101359060400135612171565b60006001600160a01b038316610f445760405162461bcd60e51b815260040180806020018281038252602b815260200180613288602b913960400191505060405180910390fd5b5060009081526003602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b610f9761224c565b610fa330848484612297565b600083815260066020526040902054610fbc90836121e5565b600093845260066020526040909320929092555050565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815260609361107593919290918301828280156110625780601f1061103757610100808354040283529160200191611062565b820191906000526020600020905b81548152906001019060200180831161104557829003601f168201915b50505050506110708461238d565b612465565b92915050565b600061108561224c565b600061108f6124a1565b90506110996124b8565b871561110157807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8a8a60405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a25b61114330828c8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061229792505050565b6040805160608101825286815260208082018781528284018781526000868152600b845285812094518555915160018501555160029093019290925560069052208a9055905098975050505050505050565b61119d61224c565b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b81518351146112315760405162461bcd60e51b81526004018080602001828103825260288152602001806134a66028913960400191505060405180910390fd5b6001600160a01b0384166112765760405162461bcd60e51b81526004018080602001828103825260258152602001806133316025913960400191505060405180910390fd5b61127e6124c3565b6001600160a01b0316856001600160a01b031614806112a957506112a9856112a46124c3565b611a3f565b6112e45760405162461bcd60e51b81526004018080602001828103825260328152602001806133566032913960400191505060405180910390fd5b60006112ee6124c3565b90506112fe8187878787876114ec565b60005b845181101561140457600085828151811061131857fe5b60200260200101519050600085838151811061133057fe5b6020026020010151905061139d816040518060600160405280602a81526020016133da602a91396003600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546124c79092919063ffffffff16565b60008381526003602090815260408083206001600160a01b038e811685529252808320939093558a16815220546113d490826121e5565b60009283526003602090815260408085206001600160a01b038c1686529091529092209190915550600101611301565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561148a578181015183820152602001611472565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156114c95781810151838201526020016114b1565b5050505090500194505050505060405180910390a46114ec81878787878761255e565b505050505050565b600a546001600160a01b031681565b606081518351146115455760405162461bcd60e51b815260040180806020018281038252602981526020018061347d6029913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561155f57600080fd5b50604051908082528060200260200182016040528015611589578160200160208202803683370190505b50905060005b84518110156116795760006001600160a01b03168582815181106115af57fe5b60200260200101516001600160a01b031614156115fd5760405162461bcd60e51b81526004018080602001828103825260318152602001806132b36031913960400191505060405180910390fd5b6003600085838151811061160d57fe5b60200260200101518152602001908152602001600020600086838151811061163157fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061166657fe5b602090810291909101015260010161158f565b509392505050565b6002546001600160a01b031681565b6116986124c3565b6001600160a01b0316836001600160a01b031614806116be57506116be836112a46124c3565b6116f95760405162461bcd60e51b81526004018080602001828103825260298152602001806133086029913960400191505060405180910390fd5b6117048383836127dd565b505050565b6002546001600160a01b031633146117525760405162461bcd60e51b815260040180806020018281038252603581526020018061322a6035913960400191505060405180910390fd5b600154600254604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160028054600180546001600160a01b03199081166001600160a01b03841617909155169055565b6117cd61224c565b6117d681612ace565b50565b6008546001600160a01b031681565b6001546001600160a01b031681565b816001600160a01b03166118096124c3565b6001600160a01b0316141561184f5760405162461bcd60e51b81526004018080602001828103825260298152602001806134546029913960400191505060405180910390fd5b806004600061185c6124c3565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556118a06124c3565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6118ee613051565b50604080516060810182526000838152600b6020818152848320805485526001810154828601529590925290526002909201549082015290565b6009546001600160a01b031681565b63bc197c8160e01b95945050505050565b60009081526006602052604090205490565b600061196461224c565b600061196e6124a1565b90506119786124b8565b84156119e057807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b878760405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a25b611a2288828987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061229792505050565b600081815260066020526040902087905590509695505050505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b63f23a6e6160e01b95945050505050565b6001600160a01b038416611ac35760405162461bcd60e51b81526004018080602001828103825260258152602001806133316025913960400191505060405180910390fd5b611acb6124c3565b6001600160a01b0316856001600160a01b03161480611af15750611af1856112a46124c3565b611b2c5760405162461bcd60e51b81526004018080602001828103825260298152602001806133086029913960400191505060405180910390fd5b6000611b366124c3565b9050611b56818787611b4788612ae5565b611b5088612ae5565b876114ec565b611b9d836040518060600160405280602a81526020016133da602a913960008781526003602090815260408083206001600160a01b038d16845290915290205491906124c7565b60008581526003602090815260408083206001600160a01b038b81168552925280832093909355871681522054611bd490846121e5565b60008581526003602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a84169386169260008051602061320a83398151915292908290030190a46114ec818787878787612b29565b600854604080516370a0823160e01b8152336004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611c8757600080fd5b505afa158015611c9b573d6000803e3d6000fd5b505050506040513d6020811015611cb157600080fd5b5051600954604080516370a0823160e01b815233600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611d0457600080fd5b505afa158015611d18573d6000803e3d6000fd5b505050506040513d6020811015611d2e57600080fd5b5051600a54604080516370a0823160e01b815233600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611d8157600080fd5b505afa158015611d95573d6000803e3d6000fd5b505050506040513d6020811015611dab57600080fd5b50516000868152600b60205260409020805460018201546002909201549293509182861015611e0b5760405162461bcd60e51b815260040180806020018281038252602881526020018061342c6028913960400191505060405180910390fd5b81851015611e4a5760405162461bcd60e51b815260040180806020018281038252602981526020018061325f6029913960400191505060405180910390fd5b80841015611e895760405162461bcd60e51b81526004018080602001828103825260288152602001806134046028913960400191505060405180910390fd5b60085460408051633ea0741560e01b81523360048201526024810186905290516001600160a01b0390921691633ea07415916044808201926020929091908290030181600087803b158015611edd57600080fd5b505af1158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b505060095460408051633ea0741560e01b81523360048201526024810185905290516001600160a01b0390921691633ea07415916044808201926020929091908290030181600087803b158015611f5d57600080fd5b505af1158015611f71573d6000803e3d6000fd5b505050506040513d6020811015611f8757600080fd5b5050600a5460408051633ea0741560e01b81523360048201526024810184905290516001600160a01b0390921691633ea07415916044808201926020929091908290030181600087803b158015611fdd57600080fd5b505af1158015611ff1573d6000803e3d6000fd5b505050506040513d602081101561200757600080fd5b50600090506120146124c3565b90503061206b8282336120268e612ae5565b6120306001612ae5565b6040518060400160405280601f81526020017f6d696e74656420666f72206275726e206f6620796f752c6a7573742c77696e008152506114ec565b6120b360016040518060600160405280602a81526020016133da602a913960008d81526003602090815260408083206001600160a01b038816845290915290205491906124c7565b60008b81526003602090815260408083206001600160a01b03861684529091528082209290925533815220546120ea9060016121e5565b60008b815260036020908152604080832033808552908352928190209390935582518d8152600191810191909152825191926001600160a01b03858116939087169260008051602061320a83398151915292908290030190a46121618282338d600160405180602001604052806000815250612b29565b5060019998505050505050505050565b6121796124c3565b6001600160a01b0316836001600160a01b0316148061219f575061219f836112a46124c3565b6121da5760405162461bcd60e51b81526004018080602001828103825260298152602001806133086029913960400191505060405180910390fd5b611704838383612c9a565b60008282018381101561223f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3b151590565b6001546001600160a01b031633146122955760405162461bcd60e51b815260040180806020018281038252602f815260200180613388602f913960400191505060405180910390fd5b565b6001600160a01b0384166122dc5760405162461bcd60e51b81526004018080602001828103825260218152602001806134ce6021913960400191505060405180910390fd5b60006122e66124c3565b90506122f881600087611b4788612ae5565b60008481526003602090815260408083206001600160a01b038916845290915290205461232590846121e5565b60008581526003602090815260408083206001600160a01b03808b168086529184528285209590955581518981529283018890528151909486169260008051602061320a83398151915292908290030190a461238681600087878787612b29565b5050505050565b6060816123b257506040805180820190915260018152600360fc1b6020820152610f8a565b8160005b81156123ca57600101600a820491506123b6565b60608167ffffffffffffffff811180156123e357600080fd5b506040519080825280601f01601f19166020018201604052801561240e576020820181803683370190505b50905060001982015b851561245c57600a860660300160f81b8282806001900393508151811061243a57fe5b60200101906001600160f81b031916908160001a905350600a86049550612417565b50949350505050565b606061223f8383604051806020016040528060008152506040518060200160405280600081525060405180602001604052806000815250612dea565b6007546000906124b29060016121e5565b90505b90565b600780546001019055565b3390565b600081848411156125565760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561251b578181015183820152602001612503565b50505050905090810190601f1680156125485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b612570846001600160a01b0316612246565b156114ec57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156125fe5781810151838201526020016125e6565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561263d578181015183820152602001612625565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612679578181015183820152602001612661565b50505050905090810190601f1680156126a65780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156126cb57600080fd5b505af19250505080156126f057506040513d60208110156126eb57600080fd5b505160015b612785576126fc613108565b80612707575061274e565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561251b578181015183820152602001612503565b60405162461bcd60e51b81526004018080602001828103825260348152602001806131ae6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b146127d45760405162461bcd60e51b81526004018080602001828103825260288152602001806131e26028913960400191505060405180910390fd5b50505050505050565b6001600160a01b0383166128225760405162461bcd60e51b81526004018080602001828103825260238152602001806133b76023913960400191505060405180910390fd5b80518251146128625760405162461bcd60e51b81526004018080602001828103825260288152602001806134a66028913960400191505060405180910390fd5b600061286c6124c3565b905061288c818560008686604051806020016040528060008152506114ec565b60005b83518110156129ed576129218382815181106128a757fe5b60200260200101516040518060600160405280602481526020016132e460249139600360008886815181106128d857fe5b602002602001015181526020019081526020016000206000896001600160a01b03166001600160a01b03168152602001908152602001600020546124c79092919063ffffffff16565b6003600086848151811061293157fe5b602002602001015181526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020819055506129ba83828151811061297d57fe5b60200260200101516006600087858151811061299557fe5b602002602001015181526020019081526020016000205461300f90919063ffffffff16565b600660008684815181106129ca57fe5b60209081029190910181015182528101919091526040016000205560010161288f565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612a74578181015183820152602001612a5c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612ab3578181015183820152602001612a9b565b5050505090500194505050505060405180910390a450505050565b8051612ae190600590602084019061306f565b5050565b604080516001808252818301909252606091829190602080830190803683370190505090508281600081518110612b1857fe5b602090810291909101015292915050565b612b3b846001600160a01b0316612246565b156114ec57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612bca578181015183820152602001612bb2565b50505050905090810190601f168015612bf75780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015612c1a57600080fd5b505af1925050508015612c3f57506040513d6020811015612c3a57600080fd5b505160015b612c4b576126fc613108565b6001600160e01b0319811663f23a6e6160e01b146127d45760405162461bcd60e51b81526004018080602001828103825260288152602001806131e26028913960400191505060405180910390fd5b6001600160a01b038316612cdf5760405162461bcd60e51b81526004018080602001828103825260238152602001806133b76023913960400191505060405180910390fd5b6000612ce96124c3565b9050612d1981856000612cfb87612ae5565b612d0487612ae5565b604051806020016040528060008152506114ec565b612d60826040518060600160405280602481526020016132e46024913960008681526003602090815260408083206001600160a01b038b16845290915290205491906124c7565b60008481526003602090815260408083206001600160a01b0389168452825280832093909355858252600690522054612d99908361300f565b6000848152600660209081526040808320939093558251868152908101859052825191926001600160a01b03888116939086169260008051602061320a83398151915292908290030190a450505050565b805182518451865188516060948a948a948a948a948a948a94919092019092019091010167ffffffffffffffff81118015612e2457600080fd5b506040519080825280601f01601f191660200182016040528015612e4f576020820181803683370190505b509050806000805b8851811015612ea857888181518110612e6c57fe5b602001015160f81c60f81b838380600101945081518110612e8957fe5b60200101906001600160f81b031916908160001a905350600101612e57565b5060005b8751811015612efd57878181518110612ec157fe5b602001015160f81c60f81b838380600101945081518110612ede57fe5b60200101906001600160f81b031916908160001a905350600101612eac565b5060005b8651811015612f5257868181518110612f1657fe5b602001015160f81c60f81b838380600101945081518110612f3357fe5b60200101906001600160f81b031916908160001a905350600101612f01565b5060005b8551811015612fa757858181518110612f6b57fe5b602001015160f81c60f81b838380600101945081518110612f8857fe5b60200101906001600160f81b031916908160001a905350600101612f56565b5060005b8451811015612ffc57848181518110612fc057fe5b602001015160f81c60f81b838380600101945081518110612fdd57fe5b60200101906001600160f81b031916908160001a905350600101612fab565b50909d9c50505050505050505050505050565b600061223f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124c7565b60405180606001604052806003906020820280368337509192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106130b057805160ff19168380011785556130dd565b828001600101855582156130dd579182015b828111156130dd5782518255916020019190600101906130c2565b506130e99291506130ed565b5090565b5b808211156130e957600081556001016130ee565b60e01c90565b600060443d1015613118576124b5565b600481823e6308c379a061312c8251613102565b14613136576124b5565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561316657505050506124b5565b8284019250825191508082111561318057505050506124b5565b503d83016020828401011115613198575050506124b5565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704a5553542062616c616e6365206973206c6573736572207468616e207265717569726564206275726e455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e7366657257494e2062616c616e6365206973206c6573736572207468616e207265717569726564206275726e594f552062616c616e6365206973206c6573736572207468616e207265717569726564206275726e455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a264697066735822122004bf5eb3119d8b9a3e602881215732cde77173a6d3d7033986ab0e30a0f77e0b64736f6c634300060c0033455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a206d696e7420746f20746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ed694a861665596d22429bae9d33d1c29c4c15340000000000000000000000005044f6edf211d1828d1166d163c9cc182f93e2c2000000000000000000000000f7f0a138e22bd1ab07e4bf8df75f30caebc33035000000000000000000000000f8e7aa0890d528d1b6e19af6e2e140197be416b6000000000000000000000000000000000000000000000000000000000000003668747470733a2f2f6576656e696e672d62727573686c616e64732d38383833392e6865726f6b756170702e636f6d2f6173736574732f00000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018d5760003560e01c806389add238116100de578063bd85b03911610097578063f23a6e6111610071578063f23a6e6114610d1c578063f242432a14610de5578063f2b399ee14610eae578063f5298aca14610ecb5761018d565b8063bd85b03914610bfe578063e38e3b2414610c1b578063e985e9c514610cee5761018d565b806389add238146109855780638da5cb5b1461098d578063a22cb46514610995578063a53d2929146109c3578063b9c2922114610a18578063bc197c8114610a205761018d565b80632eb2c2d61161014b57806353a47bb71161012557806353a47bb71461079e5780636b20c454146107a657806379ba5097146108d95780637e518ec8146108e15761018d565b80632eb2c2d6146104465780634766ac77146106075780634e1273f41461062b5761018d565b8062fdd58e1461019257806301ffc9a7146101d057806308dc9f421461020b5780630e89341c146102bd578063116ed5611461034f5780631627540c14610420575b600080fd5b6101be600480360360408110156101a857600080fd5b506001600160a01b038135169060200135610efd565b60408051918252519081900360200190f35b6101f7600480360360208110156101e657600080fd5b50356001600160e01b031916610f6c565b604080519115158252519081900360200190f35b6102bb6004803603606081101561022157600080fd5b813591602081013591810190606081016040820135600160201b81111561024757600080fd5b82018360208201111561025957600080fd5b803590602001918460018302840111600160201b8311171561027a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f8f945050505050565b005b6102da600480360360208110156102d357600080fd5b5035610fd3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103145781810151838201526020016102fc565b50505050905090810190601f1680156103415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101be600480360360c081101561036557600080fd5b81359190810190604081016020820135600160201b81111561038657600080fd5b82018360208201111561039857600080fd5b803590602001918460018302840111600160201b831117156103b957600080fd5b919390929091602081019035600160201b8111156103d657600080fd5b8201836020820111156103e857600080fd5b803590602001918460018302840111600160201b8311171561040957600080fd5b91935091508035906020810135906040013561107b565b6102bb6004803603602081101561043657600080fd5b50356001600160a01b0316611195565b6102bb600480360360a081101561045c57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561048f57600080fd5b8201836020820111156104a157600080fd5b803590602001918460208302840111600160201b831117156104c257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561051157600080fd5b82018360208201111561052357600080fd5b803590602001918460208302840111600160201b8311171561054457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561059357600080fd5b8201836020820111156105a557600080fd5b803590602001918460018302840111600160201b831117156105c657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111f1945050505050565b61060f6114f4565b604080516001600160a01b039092168252519081900360200190f35b61074e6004803603604081101561064157600080fd5b810190602081018135600160201b81111561065b57600080fd5b82018360208201111561066d57600080fd5b803590602001918460208302840111600160201b8311171561068e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106dd57600080fd5b8201836020820111156106ef57600080fd5b803590602001918460208302840111600160201b8311171561071057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611503945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561078a578181015183820152602001610772565b505050509050019250505060405180910390f35b61060f611681565b6102bb600480360360608110156107bc57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107e657600080fd5b8201836020820111156107f857600080fd5b803590602001918460208302840111600160201b8311171561081957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561086857600080fd5b82018360208201111561087a57600080fd5b803590602001918460208302840111600160201b8311171561089b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611690945050505050565b6102bb611709565b6102bb600480360360208110156108f757600080fd5b810190602081018135600160201b81111561091157600080fd5b82018360208201111561092357600080fd5b803590602001918460018302840111600160201b8311171561094457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117c5945050505050565b61060f6117d9565b61060f6117e8565b6102bb600480360360408110156109ab57600080fd5b506001600160a01b03813516906020013515156117f7565b6109e0600480360360208110156109d957600080fd5b50356118e6565b6040518082606080838360005b83811015610a055781810151838201526020016109ed565b5050505090500191505060405180910390f35b61060f611928565b610be1600480360360a0811015610a3657600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610a6957600080fd5b820183602082011115610a7b57600080fd5b803590602001918460208302840111600160201b83111715610a9c57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610aeb57600080fd5b820183602082011115610afd57600080fd5b803590602001918460208302840111600160201b83111715610b1e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610b6d57600080fd5b820183602082011115610b7f57600080fd5b803590602001918460018302840111600160201b83111715610ba057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611937945050505050565b604080516001600160e01b03199092168252519081900360200190f35b6101be60048036036020811015610c1457600080fd5b5035611948565b6101be60048036036080811015610c3157600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610c6057600080fd5b820183602082011115610c7257600080fd5b803590602001918460018302840111600160201b83111715610c9357600080fd5b919390929091602081019035600160201b811115610cb057600080fd5b820183602082011115610cc257600080fd5b803590602001918460018302840111600160201b83111715610ce357600080fd5b50909250905061195a565b6101f760048036036040811015610d0457600080fd5b506001600160a01b0381358116916020013516611a3f565b610be1600480360360a0811015610d3257600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610d7157600080fd5b820183602082011115610d8357600080fd5b803590602001918460018302840111600160201b83111715610da457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a6d945050505050565b6102bb600480360360a0811015610dfb57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610e3a57600080fd5b820183602082011115610e4c57600080fd5b803590602001918460018302840111600160201b83111715610e6d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a7e945050505050565b6101f760048036036020811015610ec457600080fd5b5035611c37565b6102bb60048036036060811015610ee157600080fd5b506001600160a01b038135169060208101359060400135612171565b60006001600160a01b038316610f445760405162461bcd60e51b815260040180806020018281038252602b815260200180613288602b913960400191505060405180910390fd5b5060009081526003602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b610f9761224c565b610fa330848484612297565b600083815260066020526040902054610fbc90836121e5565b600093845260066020526040909320929092555050565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815260609361107593919290918301828280156110625780601f1061103757610100808354040283529160200191611062565b820191906000526020600020905b81548152906001019060200180831161104557829003601f168201915b50505050506110708461238d565b612465565b92915050565b600061108561224c565b600061108f6124a1565b90506110996124b8565b871561110157807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8a8a60405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a25b61114330828c8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061229792505050565b6040805160608101825286815260208082018781528284018781526000868152600b845285812094518555915160018501555160029093019290925560069052208a9055905098975050505050505050565b61119d61224c565b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b81518351146112315760405162461bcd60e51b81526004018080602001828103825260288152602001806134a66028913960400191505060405180910390fd5b6001600160a01b0384166112765760405162461bcd60e51b81526004018080602001828103825260258152602001806133316025913960400191505060405180910390fd5b61127e6124c3565b6001600160a01b0316856001600160a01b031614806112a957506112a9856112a46124c3565b611a3f565b6112e45760405162461bcd60e51b81526004018080602001828103825260328152602001806133566032913960400191505060405180910390fd5b60006112ee6124c3565b90506112fe8187878787876114ec565b60005b845181101561140457600085828151811061131857fe5b60200260200101519050600085838151811061133057fe5b6020026020010151905061139d816040518060600160405280602a81526020016133da602a91396003600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546124c79092919063ffffffff16565b60008381526003602090815260408083206001600160a01b038e811685529252808320939093558a16815220546113d490826121e5565b60009283526003602090815260408085206001600160a01b038c1686529091529092209190915550600101611301565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561148a578181015183820152602001611472565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156114c95781810151838201526020016114b1565b5050505090500194505050505060405180910390a46114ec81878787878761255e565b505050505050565b600a546001600160a01b031681565b606081518351146115455760405162461bcd60e51b815260040180806020018281038252602981526020018061347d6029913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561155f57600080fd5b50604051908082528060200260200182016040528015611589578160200160208202803683370190505b50905060005b84518110156116795760006001600160a01b03168582815181106115af57fe5b60200260200101516001600160a01b031614156115fd5760405162461bcd60e51b81526004018080602001828103825260318152602001806132b36031913960400191505060405180910390fd5b6003600085838151811061160d57fe5b60200260200101518152602001908152602001600020600086838151811061163157fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061166657fe5b602090810291909101015260010161158f565b509392505050565b6002546001600160a01b031681565b6116986124c3565b6001600160a01b0316836001600160a01b031614806116be57506116be836112a46124c3565b6116f95760405162461bcd60e51b81526004018080602001828103825260298152602001806133086029913960400191505060405180910390fd5b6117048383836127dd565b505050565b6002546001600160a01b031633146117525760405162461bcd60e51b815260040180806020018281038252603581526020018061322a6035913960400191505060405180910390fd5b600154600254604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160028054600180546001600160a01b03199081166001600160a01b03841617909155169055565b6117cd61224c565b6117d681612ace565b50565b6008546001600160a01b031681565b6001546001600160a01b031681565b816001600160a01b03166118096124c3565b6001600160a01b0316141561184f5760405162461bcd60e51b81526004018080602001828103825260298152602001806134546029913960400191505060405180910390fd5b806004600061185c6124c3565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556118a06124c3565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6118ee613051565b50604080516060810182526000838152600b6020818152848320805485526001810154828601529590925290526002909201549082015290565b6009546001600160a01b031681565b63bc197c8160e01b95945050505050565b60009081526006602052604090205490565b600061196461224c565b600061196e6124a1565b90506119786124b8565b84156119e057807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b878760405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a25b611a2288828987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061229792505050565b600081815260066020526040902087905590509695505050505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b63f23a6e6160e01b95945050505050565b6001600160a01b038416611ac35760405162461bcd60e51b81526004018080602001828103825260258152602001806133316025913960400191505060405180910390fd5b611acb6124c3565b6001600160a01b0316856001600160a01b03161480611af15750611af1856112a46124c3565b611b2c5760405162461bcd60e51b81526004018080602001828103825260298152602001806133086029913960400191505060405180910390fd5b6000611b366124c3565b9050611b56818787611b4788612ae5565b611b5088612ae5565b876114ec565b611b9d836040518060600160405280602a81526020016133da602a913960008781526003602090815260408083206001600160a01b038d16845290915290205491906124c7565b60008581526003602090815260408083206001600160a01b038b81168552925280832093909355871681522054611bd490846121e5565b60008581526003602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a84169386169260008051602061320a83398151915292908290030190a46114ec818787878787612b29565b600854604080516370a0823160e01b8152336004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611c8757600080fd5b505afa158015611c9b573d6000803e3d6000fd5b505050506040513d6020811015611cb157600080fd5b5051600954604080516370a0823160e01b815233600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611d0457600080fd5b505afa158015611d18573d6000803e3d6000fd5b505050506040513d6020811015611d2e57600080fd5b5051600a54604080516370a0823160e01b815233600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611d8157600080fd5b505afa158015611d95573d6000803e3d6000fd5b505050506040513d6020811015611dab57600080fd5b50516000868152600b60205260409020805460018201546002909201549293509182861015611e0b5760405162461bcd60e51b815260040180806020018281038252602881526020018061342c6028913960400191505060405180910390fd5b81851015611e4a5760405162461bcd60e51b815260040180806020018281038252602981526020018061325f6029913960400191505060405180910390fd5b80841015611e895760405162461bcd60e51b81526004018080602001828103825260288152602001806134046028913960400191505060405180910390fd5b60085460408051633ea0741560e01b81523360048201526024810186905290516001600160a01b0390921691633ea07415916044808201926020929091908290030181600087803b158015611edd57600080fd5b505af1158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b505060095460408051633ea0741560e01b81523360048201526024810185905290516001600160a01b0390921691633ea07415916044808201926020929091908290030181600087803b158015611f5d57600080fd5b505af1158015611f71573d6000803e3d6000fd5b505050506040513d6020811015611f8757600080fd5b5050600a5460408051633ea0741560e01b81523360048201526024810184905290516001600160a01b0390921691633ea07415916044808201926020929091908290030181600087803b158015611fdd57600080fd5b505af1158015611ff1573d6000803e3d6000fd5b505050506040513d602081101561200757600080fd5b50600090506120146124c3565b90503061206b8282336120268e612ae5565b6120306001612ae5565b6040518060400160405280601f81526020017f6d696e74656420666f72206275726e206f6620796f752c6a7573742c77696e008152506114ec565b6120b360016040518060600160405280602a81526020016133da602a913960008d81526003602090815260408083206001600160a01b038816845290915290205491906124c7565b60008b81526003602090815260408083206001600160a01b03861684529091528082209290925533815220546120ea9060016121e5565b60008b815260036020908152604080832033808552908352928190209390935582518d8152600191810191909152825191926001600160a01b03858116939087169260008051602061320a83398151915292908290030190a46121618282338d600160405180602001604052806000815250612b29565b5060019998505050505050505050565b6121796124c3565b6001600160a01b0316836001600160a01b0316148061219f575061219f836112a46124c3565b6121da5760405162461bcd60e51b81526004018080602001828103825260298152602001806133086029913960400191505060405180910390fd5b611704838383612c9a565b60008282018381101561223f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3b151590565b6001546001600160a01b031633146122955760405162461bcd60e51b815260040180806020018281038252602f815260200180613388602f913960400191505060405180910390fd5b565b6001600160a01b0384166122dc5760405162461bcd60e51b81526004018080602001828103825260218152602001806134ce6021913960400191505060405180910390fd5b60006122e66124c3565b90506122f881600087611b4788612ae5565b60008481526003602090815260408083206001600160a01b038916845290915290205461232590846121e5565b60008581526003602090815260408083206001600160a01b03808b168086529184528285209590955581518981529283018890528151909486169260008051602061320a83398151915292908290030190a461238681600087878787612b29565b5050505050565b6060816123b257506040805180820190915260018152600360fc1b6020820152610f8a565b8160005b81156123ca57600101600a820491506123b6565b60608167ffffffffffffffff811180156123e357600080fd5b506040519080825280601f01601f19166020018201604052801561240e576020820181803683370190505b50905060001982015b851561245c57600a860660300160f81b8282806001900393508151811061243a57fe5b60200101906001600160f81b031916908160001a905350600a86049550612417565b50949350505050565b606061223f8383604051806020016040528060008152506040518060200160405280600081525060405180602001604052806000815250612dea565b6007546000906124b29060016121e5565b90505b90565b600780546001019055565b3390565b600081848411156125565760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561251b578181015183820152602001612503565b50505050905090810190601f1680156125485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b612570846001600160a01b0316612246565b156114ec57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156125fe5781810151838201526020016125e6565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561263d578181015183820152602001612625565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612679578181015183820152602001612661565b50505050905090810190601f1680156126a65780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156126cb57600080fd5b505af19250505080156126f057506040513d60208110156126eb57600080fd5b505160015b612785576126fc613108565b80612707575061274e565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561251b578181015183820152602001612503565b60405162461bcd60e51b81526004018080602001828103825260348152602001806131ae6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b146127d45760405162461bcd60e51b81526004018080602001828103825260288152602001806131e26028913960400191505060405180910390fd5b50505050505050565b6001600160a01b0383166128225760405162461bcd60e51b81526004018080602001828103825260238152602001806133b76023913960400191505060405180910390fd5b80518251146128625760405162461bcd60e51b81526004018080602001828103825260288152602001806134a66028913960400191505060405180910390fd5b600061286c6124c3565b905061288c818560008686604051806020016040528060008152506114ec565b60005b83518110156129ed576129218382815181106128a757fe5b60200260200101516040518060600160405280602481526020016132e460249139600360008886815181106128d857fe5b602002602001015181526020019081526020016000206000896001600160a01b03166001600160a01b03168152602001908152602001600020546124c79092919063ffffffff16565b6003600086848151811061293157fe5b602002602001015181526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020819055506129ba83828151811061297d57fe5b60200260200101516006600087858151811061299557fe5b602002602001015181526020019081526020016000205461300f90919063ffffffff16565b600660008684815181106129ca57fe5b60209081029190910181015182528101919091526040016000205560010161288f565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612a74578181015183820152602001612a5c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612ab3578181015183820152602001612a9b565b5050505090500194505050505060405180910390a450505050565b8051612ae190600590602084019061306f565b5050565b604080516001808252818301909252606091829190602080830190803683370190505090508281600081518110612b1857fe5b602090810291909101015292915050565b612b3b846001600160a01b0316612246565b156114ec57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612bca578181015183820152602001612bb2565b50505050905090810190601f168015612bf75780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015612c1a57600080fd5b505af1925050508015612c3f57506040513d6020811015612c3a57600080fd5b505160015b612c4b576126fc613108565b6001600160e01b0319811663f23a6e6160e01b146127d45760405162461bcd60e51b81526004018080602001828103825260288152602001806131e26028913960400191505060405180910390fd5b6001600160a01b038316612cdf5760405162461bcd60e51b81526004018080602001828103825260238152602001806133b76023913960400191505060405180910390fd5b6000612ce96124c3565b9050612d1981856000612cfb87612ae5565b612d0487612ae5565b604051806020016040528060008152506114ec565b612d60826040518060600160405280602481526020016132e46024913960008681526003602090815260408083206001600160a01b038b16845290915290205491906124c7565b60008481526003602090815260408083206001600160a01b0389168452825280832093909355858252600690522054612d99908361300f565b6000848152600660209081526040808320939093558251868152908101859052825191926001600160a01b03888116939086169260008051602061320a83398151915292908290030190a450505050565b805182518451865188516060948a948a948a948a948a948a94919092019092019091010167ffffffffffffffff81118015612e2457600080fd5b506040519080825280601f01601f191660200182016040528015612e4f576020820181803683370190505b509050806000805b8851811015612ea857888181518110612e6c57fe5b602001015160f81c60f81b838380600101945081518110612e8957fe5b60200101906001600160f81b031916908160001a905350600101612e57565b5060005b8751811015612efd57878181518110612ec157fe5b602001015160f81c60f81b838380600101945081518110612ede57fe5b60200101906001600160f81b031916908160001a905350600101612eac565b5060005b8651811015612f5257868181518110612f1657fe5b602001015160f81c60f81b838380600101945081518110612f3357fe5b60200101906001600160f81b031916908160001a905350600101612f01565b5060005b8551811015612fa757858181518110612f6b57fe5b602001015160f81c60f81b838380600101945081518110612f8857fe5b60200101906001600160f81b031916908160001a905350600101612f56565b5060005b8451811015612ffc57848181518110612fc057fe5b602001015160f81c60f81b838380600101945081518110612fdd57fe5b60200101906001600160f81b031916908160001a905350600101612fab565b50909d9c50505050505050505050505050565b600061223f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124c7565b60405180606001604052806003906020820280368337509192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106130b057805160ff19168380011785556130dd565b828001600101855582156130dd579182015b828111156130dd5782518255916020019190600101906130c2565b506130e99291506130ed565b5090565b5b808211156130e957600081556001016130ee565b60e01c90565b600060443d1015613118576124b5565b600481823e6308c379a061312c8251613102565b14613136576124b5565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561316657505050506124b5565b8284019250825191508082111561318057505050506124b5565b503d83016020828401011115613198575050506124b5565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704a5553542062616c616e6365206973206c6573736572207468616e207265717569726564206275726e455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e7366657257494e2062616c616e6365206973206c6573736572207468616e207265717569726564206275726e594f552062616c616e6365206973206c6573736572207468616e207265717569726564206275726e455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a264697066735822122004bf5eb3119d8b9a3e602881215732cde77173a6d3d7033986ab0e30a0f77e0b64736f6c634300060c0033

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

00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ed694a861665596d22429bae9d33d1c29c4c15340000000000000000000000005044f6edf211d1828d1166d163c9cc182f93e2c2000000000000000000000000f7f0a138e22bd1ab07e4bf8df75f30caebc33035000000000000000000000000f8e7aa0890d528d1b6e19af6e2e140197be416b6000000000000000000000000000000000000000000000000000000000000003668747470733a2f2f6576656e696e672d62727573686c616e64732d38383833392e6865726f6b756170702e636f6d2f6173736574732f00000000000000000000

-----Decoded View---------------
Arg [0] : uri_ (string): https://evening-brushlands-88839.herokuapp.com/assets/
Arg [1] : _youTokenAddress (address): 0xED694A861665596d22429BaE9D33d1c29C4C1534
Arg [2] : _justTokenAddress (address): 0x5044f6EDf211D1828d1166d163C9cC182f93E2C2
Arg [3] : _winTokenAddress (address): 0xF7f0A138e22bD1Ab07E4Bf8df75f30cAEBc33035
Arg [4] : owner (address): 0xF8E7AA0890D528d1b6e19af6e2E140197BE416B6

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 000000000000000000000000ed694a861665596d22429bae9d33d1c29c4c1534
Arg [2] : 0000000000000000000000005044f6edf211d1828d1166d163c9cc182f93e2c2
Arg [3] : 000000000000000000000000f7f0a138e22bd1ab07e4bf8df75f30caebc33035
Arg [4] : 000000000000000000000000f8e7aa0890d528d1b6e19af6e2e140197be416b6
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [6] : 68747470733a2f2f6576656e696e672d62727573686c616e64732d3838383339
Arg [7] : 2e6865726f6b756170702e636f6d2f6173736574732f00000000000000000000


Deployed Bytecode Sourcemap

317:21504:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4730:220;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4730:220:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;25431:140:1;;;;;;;;;;;;;;;;-1:-1:-1;25431:140:1;-1:-1:-1;;;;;;25431:140:1;;:::i;:::-;;;;;;;;;;;;;;;;;;7244:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7244:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7244:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7244:211:0;;-1:-1:-1;7244:211:0;;-1:-1:-1;;;;;7244:211:0:i;:::-;;4300:169;;;;;;;;;;;;;;;;-1:-1:-1;4300:169:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6433:581;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6433:581:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6433:581:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6433:581:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6433:581:0;;;;;;;;;;;;-1:-1:-1;6433:581:0;-1:-1:-1;6433:581:0;;;;;;;;;;;;:::i;27372:138:1:-;;;;;;;;;;;;;;;;-1:-1:-1;27372:138:1;-1:-1:-1;;;;;27372:138:1;;:::i;12504:1184:0:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12504:1184:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12504:1184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12504:1184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12504:1184:0;;;;;;;;-1:-1:-1;12504:1184:0;;-1:-1:-1;;;;;12504:1184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12504:1184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12504:1184:0;;;;;;;;-1:-1:-1;12504:1184:0;;-1:-1:-1;;;;;12504:1184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12504:1184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12504:1184:0;;-1:-1:-1;12504:1184:0;;-1:-1:-1;;;;;12504:1184:0:i;1139:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1139:29:0;;;;;;;;;;;;;;9934:615;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9934:615:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9934:615:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9934:615:0;;;;;;;;-1:-1:-1;9934:615:0;;-1:-1:-1;;;;;9934:615:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9934:615:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9934:615:0;;-1:-1:-1;9934:615:0;;-1:-1:-1;;;;;9934:615:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27149:29:1;;;:::i;9459:312:0:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9459:312:0;;;;;;;;;;;;;;;-1:-1:-1;;;9459:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9459:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9459:312:0;;;;;;;;-1:-1:-1;9459:312:0;;-1:-1:-1;;;;;9459:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9459:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9459:312:0;;-1:-1:-1;9459:312:0;;-1:-1:-1;;;;;9459:312:0:i;27516:266:1:-;;;:::i;21690:127:0:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21690:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21690:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21690:127:0;;-1:-1:-1;21690:127:0;;-1:-1:-1;;;;;21690:127:0:i;1068:29::-;;;:::i;27123:20:1:-;;;:::i;10617:306:0:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10617:306:0;;;;;;;;;;:::i;11253:211::-;;;;;;;;;;;;;;;;-1:-1:-1;11253:211:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1103:30;;;:::i;26808:201:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26808:201:1;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26808:201:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26808:201:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26808:201:1;;;;;;;;-1:-1:-1;26808:201:1;;-1:-1:-1;;;;;26808:201:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26808:201:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26808:201:1;;;;;;;;-1:-1:-1;26808:201:1;;-1:-1:-1;;;;;26808:201:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26808:201:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26808:201:1;;-1:-1:-1;26808:201:1;;-1:-1:-1;;;;;26808:201:1:i;:::-;;;;-1:-1:-1;;;;;;26808:201:1;;;;;;;;;;;;;;21456:106:0;;;;;;;;;;;;;;;;-1:-1:-1;21456:106:0;;:::i;5436:399::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5436:399:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5436:399:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5436:399:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5436:399:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5436:399:0;;;;;;;;;;-1:-1:-1;5436:399:0;;-1:-1:-1;5436:399:0;-1:-1:-1;5436:399:0;:::i;10990:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10990:158:0;;;;;;;;;;:::i;26629:173:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26629:173:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26629:173:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26629:173:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26629:173:1;;-1:-1:-1;26629:173:1;;-1:-1:-1;;;;;26629:173:1:i;11535:897:0:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11535:897:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11535:897:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11535:897:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11535:897:0;;-1:-1:-1;11535:897:0;;-1:-1:-1;;;;;11535:897:0:i;7639:1521::-;;;;;;;;;;;;;;;;-1:-1:-1;7639:1521:0;;:::i;9171:281::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9171:281:0;;;;;;;;;;;;;:::i;4730:220::-;4808:7;-1:-1:-1;;;;;4835:21:0;;4827:77;;;;-1:-1:-1;;;4827:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4921:13:0;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;4921:22:0;;;;;;;;;;;;4730:220::o;25431:140:1:-;-1:-1:-1;;;;;;25531:33:1;;25508:4;25531:33;;;;;;;;;;;;;25431:140;;;;:::o;7244:211:0:-;27817:12:1;:10;:12::i;:::-;7351:43:0::1;7365:4;7372:3;7377:9;7388:5;7351;:43::i;:::-;7419:16;::::0;;;:11:::1;:16;::::0;;;;;:31:::1;::::0;7440:9;7419:20:::1;:31::i;:::-;7400:16;::::0;;;:11:::1;:16;::::0;;;;;:50;;;;-1:-1:-1;;7244:211:0:o;4300:169::-;4418:4;4391:73;;;;;;;;;;;;;-1:-1:-1;;4391:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;4363:13;;4391:73;;;;4418:4;;4391:73;;4418:4;4391:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4432:26;4449:8;4432:16;:26::i;:::-;4391:17;:73::i;:::-;4384:80;4300:169;-1:-1:-1;;4300:169:0:o;6433:581::-;6657:7;27817:12:1;:10;:12::i;:::-;6673:11:0::1;6687:17;:15;:17::i;:::-;6673:31;;6710:23;:21;:23::i;:::-;6744:22:::0;;6740:62:::1;;6791:3;6781:14;6785:4;;6781:14;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;6781:14:0::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;6781:14:0;;-1:-1:-1;;;;6781:14:0::1;6740:62;6812:48;6826:4;6833:3;6838:14;6854:5;;6812:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6812:5:0::1;::::0;-1:-1:-1;;;6812:48:0:i:1;:::-;6891:62;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;-1:-1:-1;6866:24:0;;;:19:::1;:24:::0;;;;;:87;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;6959:11:::1;:16:::0;;;:33;;;6886:3;-1:-1:-1;6433:581:0;;;;;;;;;;:::o;27372:138:1:-;27817:12;:10;:12::i;:::-;27443:14:::1;:23:::0;;-1:-1:-1;;;;;27443:23:1;::::1;-1:-1:-1::0;;;;;;27443:23:1;;::::1;::::0;::::1;::::0;;;27481:22:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;27372:138:::0;:::o;12504:1184:0:-;12758:7;:14;12744:3;:10;:28;12736:81;;;;-1:-1:-1;;;12736:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12835:16:0;;12827:66;;;;-1:-1:-1;;;12827:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12932:12;:10;:12::i;:::-;-1:-1:-1;;;;;12924:20:0;:4;-1:-1:-1;;;;;12924:20:0;;:60;;;;12948:36;12965:4;12971:12;:10;:12::i;:::-;12948:16;:36::i;:::-;12903:157;;;;-1:-1:-1;;;12903:157:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13071:16;13090:12;:10;:12::i;:::-;13071:31;;13113:60;13134:8;13144:4;13150:2;13154:3;13159:7;13168:4;13113:20;:60::i;:::-;13189:9;13184:349;13208:3;:10;13204:1;:14;13184:349;;;13239:10;13252:3;13256:1;13252:6;;;;;;;;;;;;;;13239:19;;13272:14;13289:7;13297:1;13289:10;;;;;;;;;;;;;;13272:27;;13336:123;13377:6;13336:123;;;;;;;;;;;;;;;;;:9;:13;13346:2;13336:13;;;;;;;;;;;:19;13350:4;-1:-1:-1;;;;;13336:19:0;-1:-1:-1;;;;;13336:19:0;;;;;;;;;;;;;:23;;:123;;;;;:::i;:::-;13314:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;13314:19:0;;;;;;;;;;:145;;;;13493:17;;;;;;:29;;13515:6;13493:21;:29::i;:::-;13473:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;13473:17:0;;;;;;;;;;:49;;;;-1:-1:-1;13220:3:0;;13184:349;;;;13578:2;-1:-1:-1;;;;;13548:47:0;13572:4;-1:-1:-1;;;;;13548:47:0;13562:8;-1:-1:-1;;;;;13548:47:0;;13582:3;13587:7;13548:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13606:75;13642:8;13652:4;13658:2;13662:3;13667:7;13676:4;13606:35;:75::i;:::-;12504:1184;;;;;;:::o;1139:29::-;;;-1:-1:-1;;;;;1139:29:0;;:::o;9934:615::-;10091:16;10150:3;:10;10131:8;:15;:29;10123:83;;;;-1:-1:-1;;;10123:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10217:30;10264:8;:15;10250:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10250:30:0;;10217:63;;10296:9;10291:221;10315:8;:15;10311:1;:19;10291:221;;;10382:1;-1:-1:-1;;;;;10359:25:0;:8;10368:1;10359:11;;;;;;;;;;;;;;-1:-1:-1;;;;;10359:25:0;;;10351:87;;;;-1:-1:-1;;;10351:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10471:9;:17;10481:3;10485:1;10481:6;;;;;;;;;;;;;;10471:17;;;;;;;;;;;:30;10489:8;10498:1;10489:11;;;;;;;;;;;;;;-1:-1:-1;;;;;10471:30:0;-1:-1:-1;;;;;10471:30:0;;;;;;;;;;;;;10452:13;10466:1;10452:16;;;;;;;;;;;;;;;;;:49;10332:3;;10291:221;;;-1:-1:-1;10529:13:0;9934:615;-1:-1:-1;;;9934:615:0:o;27149:29:1:-;;;-1:-1:-1;;;;;27149:29:1;;:::o;9459:312:0:-;9599:12;:10;:12::i;:::-;-1:-1:-1;;;;;9588:23:0;:7;-1:-1:-1;;;;;9588:23:0;;:66;;;;9615:39;9632:7;9641:12;:10;:12::i;9615:39::-;9567:154;;;;-1:-1:-1;;;9567:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9732:32;9743:7;9752:3;9757:6;9732:10;:32::i;:::-;9459:312;;;:::o;27516:266:1:-;27584:14;;-1:-1:-1;;;;;27584:14:1;27570:10;:28;27562:94;;;;-1:-1:-1;;;27562:94:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27684:5;;27691:14;;27671:35;;;-1:-1:-1;;;;;27684:5:1;;;27671:35;;27691:14;;;;27671:35;;;;;;;;;;;;;;;;27724:14;;;;27716:22;;-1:-1:-1;;;;;;27716:22:1;;;-1:-1:-1;;;;;27724:14:1;;27716:22;;;;27748:27;;;27516:266::o;21690:127:0:-;27817:12:1;:10;:12::i;:::-;21784:28:0::1;21792:19;21784:7;:28::i;:::-;21690:127:::0;:::o;1068:29::-;;;-1:-1:-1;;;;;1068:29:0;;:::o;27123:20:1:-;;;-1:-1:-1;;;;;27123:20:1;;:::o;10617:306:0:-;10735:8;-1:-1:-1;;;;;10719:24:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;10719:24:0;;;10711:78;;;;-1:-1:-1;;;10711:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10845:8;10800:18;:32;10819:12;:10;:12::i;:::-;-1:-1:-1;;;;;10800:32:0;;;;;;;;;;;;;;;;;-1:-1:-1;10800:32:0;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;10800:53:0;;;;;;;;;;;10883:12;:10;:12::i;:::-;-1:-1:-1;;;;;10868:48:0;;10907:8;10868:48;;;;;;;;;;;;;;;;;;;;10617:306;;:::o;11253:211::-;11317:17;;:::i;:::-;-1:-1:-1;11346:111:0;;;;;;;;-1:-1:-1;11354:23:0;;;:19;:23;;;;;;;:33;;11346:111;;11388:34;;;;11346:111;;;;11423:23;;;;;;:33;;;;;11346:111;;;;;11253:211::o;1103:30::-;;;-1:-1:-1;;;;;1103:30:0;;:::o;26808:201:1:-;-1:-1:-1;;;26808:201:1;;;;;;;:::o;21456:106:0:-;21519:7;21541:16;;;:11;:16;;;;;;;21456:106::o;5436:399::-;5581:7;27817:12:1;:10;:12::i;:::-;5597:11:0::1;5611:17;:15;:17::i;:::-;5597:31;;5634:23;:21;:23::i;:::-;5668:22:::0;;5664:62:::1;;5715:3;5705:14;5709:4;;5705:14;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;5705:14:0::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;5705:14:0;;-1:-1:-1;;;;5705:14:0::1;5664:62;5736:38;5742:3;5747;5752:14;5768:5;;5736:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5736:5:0::1;::::0;-1:-1:-1;;;5736:38:0:i:1;:::-;5780:16;::::0;;;:11:::1;:16;::::0;;;;:33;;;5792:3;-1:-1:-1;5436:399:0;;;;;;;;:::o;10990:158::-;-1:-1:-1;;;;;11104:27:0;;;11081:4;11104:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;10990:158::o;26629:173:1:-;-1:-1:-1;;;26629:173:1;;;;;;;:::o;11535:897:0:-;-1:-1:-1;;;;;11750:16:0;;11742:66;;;;-1:-1:-1;;;11742:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11847:12;:10;:12::i;:::-;-1:-1:-1;;;;;11839:20:0;:4;-1:-1:-1;;;;;11839:20:0;;:60;;;;11863:36;11880:4;11886:12;:10;:12::i;11863:36::-;11818:148;;;;-1:-1:-1;;;11818:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11977:16;11996:12;:10;:12::i;:::-;11977:31;;12019:96;12040:8;12050:4;12056:2;12060:21;12078:2;12060:17;:21::i;:::-;12083:25;12101:6;12083:17;:25::i;:::-;12110:4;12019:20;:96::i;:::-;12148:77;12172:6;12148:77;;;;;;;;;;;;;;;;;:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;12148:19:0;;;;;;;;;;;:77;:23;:77::i;:::-;12126:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;12126:19:0;;;;;;;;;;:99;;;;12255:17;;;;;;:29;;12277:6;12255:21;:29::i;:::-;12235:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;12235:17:0;;;;;;;;;;;;;:49;;;;12300:46;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12300:46:0;;;;;;;;12357:68;12388:8;12398:4;12404:2;12408;12412:6;12420:4;12357:30;:68::i;7639:1521::-;7737:15;;:37;;;-1:-1:-1;;;7737:37:0;;7763:10;7737:37;;;;;;7695:4;;;;-1:-1:-1;;;;;7737:15:0;;;;:25;;:37;;;;;;;;;;;;;;;:15;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7737:37:0;7803:16;;:38;;;-1:-1:-1;;;7803:38:0;;7830:10;7803:38;;;;;;7737:37;;-1:-1:-1;7784:16:0;;-1:-1:-1;;;;;7803:16:0;;;;:26;;:38;;;;;7737:37;;7803:38;;;;;;;;:16;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7803:38:0;7869:15;;:37;;;-1:-1:-1;;;7869:37:0;;7895:10;7869:37;;;;;;7803:38;;-1:-1:-1;7851:15:0;;-1:-1:-1;;;;;7869:15:0;;;;:25;;:37;;;;;7803:38;;7869:37;;;;;;;;:15;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7869:37:0;7925:12;7938:24;;;:19;7869:37;7938:24;;;;:34;;7996:35;;;;8054:34;;;;;7869:37;;-1:-1:-1;7938:34:0;8115:21;;;;8107:74;;;;-1:-1:-1;;;8107:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8214:8;8199:11;:23;;8191:77;;;;-1:-1:-1;;;8191:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8300:7;8286:10;:21;;8278:74;;;;-1:-1:-1;;;8278:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8371:15;;:47;;;-1:-1:-1;;;8371:47:0;;8398:10;8371:47;;;;;;;;;;;;-1:-1:-1;;;;;8371:15:0;;;;:26;;:47;;;;;;;;;;;;;;;:15;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8428:16:0;;:49;;;-1:-1:-1;;;8428:49:0;;8456:10;8428:49;;;;;;;;;;;;-1:-1:-1;;;;;8428:16:0;;;;:27;;:49;;;;;8371:47;;8428:49;;;;;;;;:16;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8487:15:0;;:47;;;-1:-1:-1;;;8487:47:0;;8514:10;8487:47;;;;;;;;;;;;-1:-1:-1;;;;;8487:15:0;;;;:26;;:47;;;;;8428:49;;8487:47;;;;;;;;:15;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8562:16:0;;-1:-1:-1;8581:12:0;:10;:12::i;:::-;8562:31;-1:-1:-1;8624:4:0;8673:128;8562:31;8624:4;8710:10;8722:22;8740:3;8722:17;:22::i;:::-;8746:20;8764:1;8746:17;:20::i;:::-;8673:128;;;;;;;;;;;;;;;;;:20;:128::i;:::-;8835:73;8860:1;8835:73;;;;;;;;;;;;;;;;;:14;;;;:9;:14;;;;;;;;-1:-1:-1;;;;;8835:20:0;;;;;;;;;;;:73;:24;:73::i;:::-;8812:14;;;;:9;:14;;;;;;;;-1:-1:-1;;;;;8812:20:0;;;;;;;;;;:96;;;;8962:10;8947:26;;;;:33;;8978:1;8947:30;:33::i;:::-;8918:14;;;;:9;:14;;;;;;;;8933:10;8918:26;;;;;;;;;;:62;;;;8996:50;;;;;9044:1;8996:50;;;;;;;;;8933:10;;-1:-1:-1;;;;;8996:50:0;;;;;;;;-1:-1:-1;;;;;;;;;;;8996:50:0;;;;;;;;9057:70;9088:8;9098:4;9104:10;9116:3;9121:1;9057:70;;;;;;;;;;;;:30;:70::i;:::-;-1:-1:-1;9149:4:0;;7639:1521;-1:-1:-1;;;;;;;;;7639:1521:0:o;9171:281::-;9286:12;:10;:12::i;:::-;-1:-1:-1;;;;;9275:23:0;:7;-1:-1:-1;;;;;9275:23:0;;:66;;;;9302:39;9319:7;9328:12;:10;:12::i;9302:39::-;9254:154;;;;-1:-1:-1;;;9254:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9419:25;9425:7;9434:2;9438:5;9419;:25::i;9215:176:1:-;9273:7;9304:5;;;9327:6;;;;9319:46;;;;;-1:-1:-1;;;9319:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;9383:1;9215:176;-1:-1:-1;;;9215:176:1:o;14238:413::-;14598:20;14636:8;;;14238:413::o;27853:131::-;27920:5;;-1:-1:-1;;;;;27920:5:1;27906:10;:19;27898:79;;;;-1:-1:-1;;;27898:79:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27853:131::o;14995:581:0:-;-1:-1:-1;;;;;15109:21:0;;15101:67;;;;-1:-1:-1;;;15101:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15179:16;15198:12;:10;:12::i;:::-;15179:31;;15221:107;15242:8;15260:1;15264:7;15273:21;15291:2;15273:17;:21::i;15221:107::-;15364:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;15364:22:0;;;;;;;;;;:34;;15391:6;15364:26;:34::i;:::-;15339:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;15339:22:0;;;;;;;;;;;;:59;;;;15422:57;;;;;;;;;;;;;15339:22;;15422:57;;;-1:-1:-1;;;;;;;;;;;15422:57:0;;;;;;;;15490:79;15521:8;15539:1;15543:7;15552:2;15556:6;15564:4;15490:30;:79::i;:::-;14995:581;;;;;:::o;29570:465:1:-;29620:27;29663:7;29659:48;;-1:-1:-1;29686:10:1;;;;;;;;;;;;-1:-1:-1;;;29686:10:1;;;;;;29659:48;29725:2;29716:6;29755:66;29762:6;;29755:66;;29784:5;;29808:2;29803:7;;;;29755:66;;;29830:17;29860:3;29850:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29850:14:1;-1:-1:-1;29830:34:1;-1:-1:-1;;;29883:7:1;;29900:100;29907:7;;29900:100;;29963:2;29958;:7;29953:2;:12;29942:25;;29930:4;29935:3;;;;;;;29930:9;;;;;;;;;;;:37;-1:-1:-1;;;;;29930:37:1;;;;;;;;-1:-1:-1;29987:2:1;29981:8;;;;29900:100;;;-1:-1:-1;30023:4:1;29570:465;-1:-1:-1;;;;29570:465:1:o;29418:146::-;29496:13;29528:29;29538:2;29542;29528:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9;:29::i;21041:104:0:-;21116:15;;21090:7;;21116:22;;21136:1;21116:19;:22::i;:::-;21109:29;;21041:104;;:::o;21214:72::-;21263:15;:17;;;;;;21214:72::o;8020:104:1:-;8107:10;8020:104;:::o;10087:187::-;10173:7;10208:12;10200:6;;;;10192:29;;;;-1:-1:-1;;;10192:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10243:5:1;;;10087:187::o;20054:778:0:-;20298:15;:2;-1:-1:-1;;;;;20298:13:0;;:15::i;:::-;20294:532;;;20350:2;-1:-1:-1;;;;;20333:43:0;;20377:8;20387:4;20393:3;20398:7;20407:4;20333:79;;;;;;;;;;;;;-1:-1:-1;;;;;20333:79:0;;;;;;-1:-1:-1;;;;;20333:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20333:79:0;;;20329:487;;;;:::i;:::-;;;;;;;;20685:14;;-1:-1:-1;;;20685:14:0;;;;;;;;;;;;;;;;;20692:6;;20685:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20329:487;20739:62;;-1:-1:-1;;;20739:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20329:487;-1:-1:-1;;;;;;20461:64:0;;-1:-1:-1;;;20461:64:0;20457:161;;20549:50;;-1:-1:-1;;;20549:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20457:161;20413:219;20054:778;;;;;;:::o;17350:790::-;-1:-1:-1;;;;;17470:21:0;;17462:69;;;;-1:-1:-1;;;17462:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17563:7;:14;17549:3;:10;:28;17541:81;;;;-1:-1:-1;;;17541:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17633:16;17652:12;:10;:12::i;:::-;17633:31;;17675:69;17696:8;17706:7;17723:1;17727:3;17732:7;17675:69;;;;;;;;;;;;:20;:69::i;:::-;17760:6;17755:305;17776:3;:10;17772:1;:14;17755:305;;;17836:128;17884:7;17892:1;17884:10;;;;;;;;;;;;;;17836:128;;;;;;;;;;;;;;;;;:9;:17;17846:3;17850:1;17846:6;;;;;;;;;;;;;;17836:17;;;;;;;;;;;:26;17854:7;-1:-1:-1;;;;;17836:26:0;-1:-1:-1;;;;;17836:26:0;;;;;;;;;;;;;:30;;:128;;;;;:::i;:::-;17807:9;:17;17817:3;17821:1;17817:6;;;;;;;;;;;;;;17807:17;;;;;;;;;;;:26;17825:7;-1:-1:-1;;;;;17807:26:0;-1:-1:-1;;;;;17807:26:0;;;;;;;;;;;;:157;;;;18012:36;18037:7;18045:1;18037:10;;;;;;;;;;;;;;18012:11;:19;18024:3;18028:1;18024:6;;;;;;;;;;;;;;18012:19;;;;;;;;;;;;:23;;:36;;;;:::i;:::-;17992:11;:19;18004:3;18008:1;18004:6;;;;;;;;;;;;;;;;;;;17992:19;;;;;;;;;;-1:-1:-1;17992:19:0;:56;17788:3;;17755:305;;;;18116:1;-1:-1:-1;;;;;18075:58:0;18099:7;-1:-1:-1;;;;;18075:58:0;18089:8;-1:-1:-1;;;;;18075:58:0;;18120:3;18125:7;18075:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17350:790;;;;:::o;14511:86::-;14577:13;;;;:4;;:13;;;;;:::i;:::-;;14511:86;:::o;20838:193::-;20957:16;;;20971:1;20957:16;;;;;;;;;20904;;;;20957;;;;;;;;;;;;-1:-1:-1;20957:16:0;20932:41;;20994:7;20983:5;20989:1;20983:8;;;;;;;;;;;;;;;;;:18;21019:5;20838:193;-1:-1:-1;;20838:193:0:o;19307:741::-;19526:15;:2;-1:-1:-1;;;;;19526:13:0;;:15::i;:::-;19522:520;;;19578:2;-1:-1:-1;;;;;19561:38:0;;19600:8;19610:4;19616:2;19620:6;19628:4;19561:72;;;;;;;;;;;;;-1:-1:-1;;;;;19561:72:0;;;;;;-1:-1:-1;;;;;19561:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19561:72:0;;;19557:475;;;;:::i;:::-;-1:-1:-1;;;;;;19682:59:0;;-1:-1:-1;;;19682:59:0;19678:156;;19765:50;;-1:-1:-1;;;19765:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16551:605;-1:-1:-1;;;;;16646:21:0;;16638:69;;;;-1:-1:-1;;;16638:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16718:16;16737:12;:10;:12::i;:::-;16718:31;;16760:105;16781:8;16791:7;16808:1;16812:21;16830:2;16812:17;:21::i;:::-;16835:25;16853:6;16835:17;:25::i;:::-;16760:105;;;;;;;;;;;;:20;:105::i;:::-;16901:108;16941:6;16901:108;;;;;;;;;;;;;;;;;:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;16901:22:0;;;;;;;;;;;:108;:26;:108::i;:::-;16876:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;16876:22:0;;;;;;;;;:133;;;;17047:15;;;:11;:15;;;;:28;;17068:6;17047:19;:28::i;:::-;17029:15;;;;:11;:15;;;;;;;;:46;;;;17092:57;;;;;;;;;;;;;17029:15;;-1:-1:-1;;;;;17092:57:0;;;;;;;;-1:-1:-1;;;;;;;;;;;17092:57:0;;;;;;;;16551:605;;;;:::o;28197:857:1:-;28617:10;;28604;;28591;;28578;;28565;;28329:13;;28377:2;;28413;;28449;;28485;;28521;;28329:13;;28565:23;;;;:36;;;:49;;;:62;28554:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28554:74:1;-1:-1:-1;28532:96:1;-1:-1:-1;28532:96:1;28678:6;;28696:58;28717:3;:10;28713:1;:14;28696:58;;;28748:3;28752:1;28748:6;;;;;;;;;;;;;;;;28734;28741:3;;;;;;28734:11;;;;;;;;;;;:20;-1:-1:-1;;;;;28734:20:1;;;;;;;;-1:-1:-1;28729:3:1;;28696:58;;;;28767:6;28762:58;28783:3;:10;28779:1;:14;28762:58;;;28814:3;28818:1;28814:6;;;;;;;;;;;;;;;;28800;28807:3;;;;;;28800:11;;;;;;;;;;;:20;-1:-1:-1;;;;;28800:20:1;;;;;;;;-1:-1:-1;28795:3:1;;28762:58;;;;28833:6;28828:58;28849:3;:10;28845:1;:14;28828:58;;;28880:3;28884:1;28880:6;;;;;;;;;;;;;;;;28866;28873:3;;;;;;28866:11;;;;;;;;;;;:20;-1:-1:-1;;;;;28866:20:1;;;;;;;;-1:-1:-1;28861:3:1;;28828:58;;;;28899:6;28894:58;28915:3;:10;28911:1;:14;28894:58;;;28946:3;28950:1;28946:6;;;;;;;;;;;;;;;;28932;28939:3;;;;;;28932:11;;;;;;;;;;;:20;-1:-1:-1;;;;;28932:20:1;;;;;;;;-1:-1:-1;28927:3:1;;28894:58;;;;28965:6;28960:58;28981:3;:10;28977:1;:14;28960:58;;;29012:3;29016:1;29012:6;;;;;;;;;;;;;;;;28998;29005:3;;;;;;28998:11;;;;;;;;;;;:20;-1:-1:-1;;;;;28998:20:1;;;;;;;;-1:-1:-1;28993:3:1;;28960:58;;;-1:-1:-1;29040:6:1;;28197:857;-1:-1:-1;;;;;;;;;;;;;28197:857:1:o;9662:134::-;9720:7;9746:43;9750:1;9753;9746:43;;;;;;;;;;;;;;;;;:3;:43::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;110:106;195:3;191:15;;163:53::o;224:739::-;;297:4;279:16;276:26;273:2;;;305:5;;273:2;339:1;-1:-1;;318:23;414:10;357:34;-1:-1;382:8;357:34;:::i;:::-;406:19;396:2;;429:5;;396:2;460;454:9;496:16;-1:-1;;492:24;339:1;454:9;468:49;543:4;537:11;624:16;576:18;624:16;617:4;609:6;605:17;602:39;576:18;568:6;565:30;556:91;553:2;;;655:5;;;;;;553:2;693:6;687:4;683:17;672:28;;725:3;719:10;705:24;;576:18;740:6;737:30;734:2;;;770:5;;;;;;734:2;;847:16;841:4;837:27;807:4;814:6;802:3;794:27;;829:36;826:2;;;868:5;;;;;826:2;89:7;73:14;-1:-1;;69:28;892:50;;807:4;892:50;460:2;881:62;900:3;-1:-1;;267:696;:::o

Swarm Source

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