// Contract: Neverland
// Target function: function create_proxy(uint256 total) public onlyapproved
// SPDX-License-Identifier: MIT
// Just for Neverland.
//This contract is free to use before 2024/6/1,After that,the holders of robot or bigplayer are free to use it.
//本合约在2024年6月1日前对所有人完全免费，之后robot或者bigplayer NFT持有者仍可免费使用。
//Feel free to send eth as tip to this contract.(如需打赏，可直接发送eth到此合约)
//Before using this contract,u have to understand how to use hexadecimal data to interact with other contracts.Otherwise don't use it.
//在使用本合约前，你需要掌握如何用十六进制数据与其他合约交互,否则不要使用。

pragma solidity ^0.8.18;

interface IERC721{
    function transferFrom(address from, address to, uint256 tokenId) external;
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256 balance);
}

contract Neverland{

    address Neverlander;
    address private immutable original;
    mapping(address => uint256) private salt_nonce;
    mapping(address =>address[]) private owned_contract;
    mapping(address => bool) public approved;
    bool public approvedactive;
    IERC721 robot=IERC721(0x81Ca1F6608747285c9c001ba4f5ff6ff2b5f36F8);
    IERC721 bigplayer;

    constructor() payable {
        original = address(this);
        Neverlander = tx.origin;
    }

    modifier onlyowner(){
        require(msg.sender==Neverlander);
        _;
    }

    modifier onlyapproved(){
        if (approvedactive==true){
            require(approved[msg.sender] ||robot.balanceOf(msg.sender)>0 ||bigplayer.balanceOf(msg.sender)>0 );
        }
        _;
    }
    modifier onlyoriginal(){
        require(msg.sender==original);
        _;
    }