[ { "inputs": [ { "internalType": "address", "name": "deployer", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyLinked", "type": "error" }, { "inputs": [], "name": "FnSelectorNotRecognized", "type": "error" }, { "inputs": [], "name": "NotLinked", "type": "error" }, { "inputs": [], "name": "SenderNotBase", "type": "error" }, { "inputs": [], "name": "SenderNotDeployer", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "nftOwner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseERC20", "outputs": [ { "internalType": "address", "name": "base", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "nftOwner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerAt", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pullOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b50604051620016713803806200167183398181016040528101906200003791906200010d565b8080620000496200009260201b60201c565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200013f565b6000683602298b8c10b01230905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000d582620000a8565b9050919050565b620000e781620000c8565b8114620000f357600080fd5b50565b6000815190506200010781620000dc565b92915050565b600060208284031215620001265762000125620000a3565b5b60006200013684828501620000f6565b91505092915050565b611522806200014f6000396000f3fe6080604052600436106101185760003560e01c80636cef16e6116100a0578063a22cb46511610064578063a22cb465146107c4578063b88d4fde146107ed578063c87b56dd14610809578063e8a3d48514610846578063e985e9c5146108715761012c565b80636cef16e6146106db57806370a08231146107065780638da5cb5b1461074357806395d89b411461076e57806397e5311c146107995761012c565b806318160ddd116100e757806318160ddd146105fe57806323b872dd14610629578063243598791461064557806342842e0e146106825780636352211e1461069e5761012c565b806301ffc9a71461053d57806306fdde031461057a578063081812fc146105a5578063095ea7b3146105e25761012c565b3661012c576000341461012a57600080fd5b005b60006101366108ae565b9050600060e061014660006108bf565b901c905063263c69d6810361024c578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101de576040517f363cb31200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600435602401602081033560051b81015b8082146102415781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a45050508160200191506101ef565b600160005260206000f35b63144027d3810361033d578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102e0576040517f363cb31200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600435602435604435602401602081033560051b81015b80821461033257813583857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a48160200191506102f7565b600160005260206000f35b630f4599e5810361050b57600073ffffffffffffffffffffffffffffffffffffffff168260010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610433578160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166103e560046108bf565b73ffffffffffffffffffffffffffffffffffffffff1614610432576040517fc59ec47a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104bd576040517fbf656a4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b338260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160005260206000f35b6040517f3c10b94e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561054957600080fd5b50610564600480360381019061055f9190611034565b6108ca565b604051610571919061107c565b60405180910390f35b34801561058657600080fd5b5061058f6108ef565b60405161059c9190611127565b60405180910390f35b3480156105b157600080fd5b506105cc60048036038101906105c7919061117f565b610905565b6040516105d991906111ed565b60405180910390f35b6105fc60048036038101906105f79190611234565b61091e565b005b34801561060a57600080fd5b506106136109a4565b6040516106209190611283565b60405180910390f35b610643600480360381019061063e919061129e565b6109bb565b005b34801561065157600080fd5b5061066c6004803603810190610667919061117f565b610a4a565b60405161067991906111ed565b60405180910390f35b61069c6004803603810190610697919061129e565b610a63565b005b3480156106aa57600080fd5b506106c560048036038101906106c0919061117f565b610a9d565b6040516106d291906111ed565b60405180910390f35b3480156106e757600080fd5b506106f0610ab6565b6040516106fd919061107c565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906112f1565b610bf9565b60405161073a9190611283565b60405180910390f35b34801561074f57600080fd5b50610758610c28565b60405161076591906111ed565b60405180910390f35b34801561077a57600080fd5b50610783610c5b565b6040516107909190611127565b60405180910390f35b3480156107a557600080fd5b506107ae610c71565b6040516107bb91906111ed565b60405180910390f35b3480156107d057600080fd5b506107eb60048036038101906107e6919061134a565b610d0a565b005b610807600480360381019061080291906113ef565b610d8f565b005b34801561081557600080fd5b50610830600480360381019061082b919061117f565b610e00565b60405161083d9190611127565b60405180910390f35b34801561085257600080fd5b5061085b610e21565b6040516108689190611127565b60405180910390f35b34801561087d57600080fd5b5061089860048036038101906108939190611477565b610e41565b6040516108a5919061107c565b60405180910390f35b6000683602298b8c10b01230905090565b600081359050919050565b60008160e01c635b5e139f81146380ac58cd82146301ffc9a783141717915050919050565b60606109006306fdde036000610e89565b905090565b600061091763081812fc836000610eef565b9050919050565b6000610928610c71565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d1116610968573d6000823e3d81fd5b8060405260006060528284600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a450505050565b60006109b663e2c79281600080610eef565b905090565b60006109c5610c71565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af1600182511416610a1b573d6000823e3d81fd5b8284867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a45050505050565b6000610a5c6324359879836000610eef565b9050919050565b610a6e8383836109bb565b610a7782610f3a565b15610a9857610a9783838360405180602001604052806000815250610f45565b5b505050565b6000610aaf636352211e836000610eef565b9050919050565b6000806000610ac3610c71565b9050638da5cb5b600052602060006004601c845afa80601f3d1116600c5160601c029250506000610af26108ae565b905060008160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bee57838260020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35b600194505050505090565b6000610c2163f5b100ea8373ffffffffffffffffffffffffffffffffffffffff166000610eef565b9050919050565b6000610c326108ae565b60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060610c6c6395d89b416000610e89565b905090565b6000610c7b6108ae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d07576040517f5b2a47ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90565b6000610d14610c71565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af160016000511416610d58573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a380604052600060605250505050565b610d9a8585856109bb565b610da384610f3a565b15610df957610df885858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610f45565b5b5050505050565b6060610e0b82610a9d565b50610e1a63c87b56dd83610e89565b9050919050565b60606040518060600160405280603581526020016114b860359139905090565b600080610e7f63e985e9c58573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16610eef565b1415905092915050565b60606000610e95610c71565b9050604051915083600052826020526000806024601c845afa610ebb573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016000815260208101604052505092915050565b600080610efa610c71565b9050604051856000528460205283604052602060006044601c855afa601f3d1116610f28573d6000823e3d81fd5b80604052600051925050509392505050565b6000813b9050919050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610f8c578060c08401826020870160045afa505b60208360a48301601c860160008a5af1610fb0573d15610faf573d6000843e3d83fd5b5b8160e01b835114610fc95763d1a57ed66000526004601cfd5b50505050505050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61101181610fdc565b811461101c57600080fd5b50565b60008135905061102e81611008565b92915050565b60006020828403121561104a57611049610fd2565b5b60006110588482850161101f565b91505092915050565b60008115159050919050565b61107681611061565b82525050565b6000602082019050611091600083018461106d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156110d15780820151818401526020810190506110b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006110f982611097565b61110381856110a2565b93506111138185602086016110b3565b61111c816110dd565b840191505092915050565b6000602082019050818103600083015261114181846110ee565b905092915050565b6000819050919050565b61115c81611149565b811461116757600080fd5b50565b60008135905061117981611153565b92915050565b60006020828403121561119557611194610fd2565b5b60006111a38482850161116a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111d7826111ac565b9050919050565b6111e7816111cc565b82525050565b600060208201905061120260008301846111de565b92915050565b611211816111cc565b811461121c57600080fd5b50565b60008135905061122e81611208565b92915050565b6000806040838503121561124b5761124a610fd2565b5b60006112598582860161121f565b925050602061126a8582860161116a565b9150509250929050565b61127d81611149565b82525050565b60006020820190506112986000830184611274565b92915050565b6000806000606084860312156112b7576112b6610fd2565b5b60006112c58682870161121f565b93505060206112d68682870161121f565b92505060406112e78682870161116a565b9150509250925092565b60006020828403121561130757611306610fd2565b5b60006113158482850161121f565b91505092915050565b61132781611061565b811461133257600080fd5b50565b6000813590506113448161131e565b92915050565b6000806040838503121561136157611360610fd2565b5b600061136f8582860161121f565b925050602061138085828601611335565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126113af576113ae61138a565b5b8235905067ffffffffffffffff8111156113cc576113cb61138f565b5b6020830191508360018202830111156113e8576113e7611394565b5b9250929050565b60008060008060006080868803121561140b5761140a610fd2565b5b60006114198882890161121f565b955050602061142a8882890161121f565b945050604061143b8882890161116a565b935050606086013567ffffffffffffffff81111561145c5761145b610fd7565b5b61146888828901611399565b92509250509295509295909350565b6000806040838503121561148e5761148d610fd2565b5b600061149c8582860161121f565b92505060206114ad8582860161121f565b915050925092905056fe697066733a2f2f516d5071545959584d52363242744d7958756543436632694e526a61537136524a4c504d6f6364443374486a7238a26469706673582212203fe3bf9f4b677a3bd04c09466c438611789177d74eb110bc2acc7c63740a7eb364736f6c63430008140033000000000000000000000000033da5d73bd4083577be2c6d288b3089951db5d3