[ { "inputs": [ { "internalType": "address", "name": "deployer", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyLinked", "type": "error" }, { "inputs": [], "name": "CannotLink", "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": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "nftOwner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseERC20", "outputs": [ { "internalType": "address", "name": "base", "type": "address" } ], "stateMutability": "view", "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": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "result", "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": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pullOwner", "outputs": [], "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": "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": "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": "result", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "result", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "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": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
608060405234801561001057600080fd5b50604051610d97380380610d9783398101604081905261002f9161005c565b683602298b8c10b0123180546001600160a01b0319166001600160a01b039290921691909117905561008a565b60006020828403121561006d578081fd5b81516001600160a01b0381168114610083578182fd5b9392505050565b610cfe806100996000396000f3fe60806040526004361061010d5760003560e01c80636cef16e61161009557806397e5311c1161006457806397e5311c146104f3578063a22cb46514610508578063b88d4fde14610528578063c87b56dd14610548578063e985e9c5146105685761011f565b80636cef16e61461048357806370a08231146104985780638da5cb5b146104b857806395d89b41146104de5761011f565b806318160ddd116100dc57806318160ddd146103ed57806323b872dd14610410578063243598791461043057806342842e0e146104505780636352211e146104635761011f565b806301ffc9a71461032157806306fdde0314610373578063081812fc14610395578063095ea7b3146103cd5761011f565b3661011f57341561011d57600080fd5b005b683602298b8c10b0123060003560e01c63263c69d68114156101d55781546001600160a01b0316331461016557604051631b1e598960e11b815260040160405180910390fd5b600435602401602081033560051b81015b8082146101c85781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a4505050816020019150610176565b5050600160005260206000f35b8063144027d3141561026c5781546001600160a01b0316331461020b57604051631b1e598960e11b815260040160405180910390fd5b600435602435604435602401602081033560051b81015b80821461025d57813583857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a4816020019150610222565b50505050600160005260206000f35b80630f4599e514156103085760018201546001600160a01b0316156102c35760018201546001600160a01b03166004356001600160a01b0316146102c3576040516362cf623d60e11b815260040160405180910390fd5b81546001600160a01b0316156102ec57604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560016000908152602090f35b604051631e085ca760e11b815260040160405180910390fd5b34801561032d57600080fd5b5061035e61033c366004610c35565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b34801561037f57600080fd5b50610388610588565b60405161036a9190610c75565b3480156103a157600080fd5b506103b56103b0366004610c5d565b61059e565b6040516001600160a01b03909116815260200161036a565b3480156103d957600080fd5b5061011d6103e8366004610c0c565b6105b6565b3480156103f957600080fd5b5061040261063c565b60405190815260200161036a565b34801561041c57600080fd5b5061011d61042b366004610b01565b61064e565b34801561043c57600080fd5b506103b561044b366004610c5d565b6106dd565b61011d61045e366004610b01565b6106ef565b34801561046f57600080fd5b506103b561047e366004610c5d565b610721565b34801561048f57600080fd5b5061011d610733565b3480156104a457600080fd5b506104026104b3366004610aae565b6107e6565b3480156104c457600080fd5b50683602298b8c10b01232546001600160a01b03166103b5565b3480156104ea57600080fd5b50610388610801565b3480156104ff57600080fd5b506103b5610812565b34801561051457600080fd5b5061011d610523366004610bd2565b610847565b34801561053457600080fd5b5061011d610543366004610b3c565b6108ca565b34801561055457600080fd5b50610388610563366004610c5d565b610925565b34801561057457600080fd5b5061035e610583366004610acf565b610935565b60606105996306fdde036000610961565b905090565b60006105b063081812fc8360006109be565b92915050565b60006105c0610812565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d1116610600573d6000823e3d81fd5b806040525060006060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a4505050565b600061059963e2c792816000806109be565b6000610658610812565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af16001825114166106ae573d6000823e3d81fd5b508183857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a450505050565b60006105b063243598798360006109be565b6106fa83838361064e565b813b1561071c5761071c83838360405180602001604052806000815250610a06565b505050565b60006105b0636352211e8360006109be565b60008061073e610812565b9050638da5cb5b600052602060006004601c845afa601f3d11161561076657600c5160601c91505b683602298b8c10b0123254683602298b8c10b01230906001600160a01b0390811690841681146107e0576002820180546001600160a01b0319166001600160a01b0386811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b50505050565b60006105b063f5b100ea836001600160a01b031660006109be565b60606105996395d89b416000610961565b683602298b8c10b01230546001600160a01b03168061084457604051632d9523d760e11b815260040160405180910390fd5b90565b6000610851610812565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af160016000511416610895573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a36040525050600060605250565b6108d585858561064e565b833b1561091e5761091e85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0692505050565b5050505050565b60606105b063c87b56dd83610961565b600061095863e985e9c5846001600160a01b0316846001600160a01b03166109be565b15159392505050565b6060600061096d610812565b9050604051915083600052826020526000806024601c845afa610993573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016040525092915050565b6000806109c9610812565b9050604051856000528460205283604052602060006044601c855afa601f3d11166109f7573d6000823e3d81fd5b60405250506000519392505050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610a4d578060c08401826020870160045afa505b60208360a48301601c860160008a5af1610a70573d15610a70573d6000843e3d83fd5b508060e01b825114610a8a5763d1a57ed66000526004601cfd5b505050505050565b80356001600160a01b0381168114610aa957600080fd5b919050565b600060208284031215610abf578081fd5b610ac882610a92565b9392505050565b60008060408385031215610ae1578081fd5b610aea83610a92565b9150610af860208401610a92565b90509250929050565b600080600060608486031215610b15578081fd5b610b1e84610a92565b9250610b2c60208501610a92565b9150604084013590509250925092565b600080600080600060808688031215610b53578081fd5b610b5c86610a92565b9450610b6a60208701610a92565b935060408601359250606086013567ffffffffffffffff80821115610b8d578283fd5b818801915088601f830112610ba0578283fd5b813581811115610bae578384fd5b896020828501011115610bbf578384fd5b9699959850939650602001949392505050565b60008060408385031215610be4578182fd5b610bed83610a92565b915060208301358015158114610c01578182fd5b809150509250929050565b60008060408385031215610c1e578182fd5b610c2783610a92565b946020939093013593505050565b600060208284031215610c46578081fd5b81356001600160e01b031981168114610ac8578182fd5b600060208284031215610c6e578081fd5b5035919050565b6000602080835283518082850152825b81811015610ca157858101830151858201604001528201610c85565b81811115610cb25783604083870101525b50601f01601f191692909201604001939250505056fea26469706673582212201bda231c6b8997c9d6fbf4cd6b30b58bbd6bfa92fbe86fc96c92f9dbf72be32a64736f6c63430008040033000000000000000000000000dd93edd6f39df121e66d52a208ba8ed11867defe