[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "message", "type": "string" } ], "name": "CommitMessage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes4", "name": "functionId", "type": "bytes4" }, { "indexed": true, "internalType": "address", "name": "oldDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newDelegate", "type": "address" }, { "indexed": false, "internalType": "string", "name": "functionSignature", "type": "string" } ], "name": "FunctionUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "collection", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "MintWithTokenURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "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": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" } ], "internalType": "struct ERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" } ], "internalType": "struct ERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "funcSignatures", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "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": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_delegate", "type": "address" }, { "internalType": "string", "name": "_functionSignatures", "type": "string" }, { "internalType": "string", "name": "_commitMessage", "type": "string" } ], "name": "updateContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405180606001604052806021815260200162002ac460219139604051806040016040528060038152602001622c2a2160e91b815250816006908051906020019062000060929190620002f6565b50805162000076906007906020840190620002f6565b50506001600455506200008933620002a4565b600380546001600160a01b03191630179055336000908152600e6020908152604091829020805460ff1916600117905581516060810190925260398083529062002a66908301398051620000e691600d91602090910190620002f6565b5062989680601281905550600060405180606001604052806025815260200162002a9f60259139805160208083019182206003546001600160e01b031982166000908152928390526040832080546001600160a01b0319166001600160a01b03909216919091179055600180548082018255925283519394509262000191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69092019190620002f6565b50600154604051600290620001a89085906200039c565b908152604051908190036020018120919091556003546001600160a01b0316906000906001600160e01b03198416907f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53539062000206908790620003ba565b60405180910390a47faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de60405162000294906020808252603a908201527f4164646564204552433135333820757064617465436f6e74726163742066756e60408201527f6374696f6e20617420636f6e7472616374206372656174696f6e000000000000606082015260800190565b60405180910390a150506200045f565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620003049062000422565b90600052602060002090601f01602090048101928262000328576000855562000373565b82601f106200034357805160ff191683800117855562000373565b8280016001018555821562000373579182015b828111156200037357825182559160200191906001019062000356565b506200038192915062000385565b5090565b5b8082111562000381576000815560010162000386565b60008251620003b0818460208701620003ef565b9190910192915050565b6020815260008251806020840152620003db816040850160208701620003ef565b601f01601f19169190910160400192915050565b60005b838110156200040c578181015183820152602001620003f2565b838111156200041c576000848401525b50505050565b600181811c908216806200043757607f821691505b602082108114156200045957634e487b7160e01b600052602260045260246000fd5b50919050565b6125f7806200046f6000396000f3fe6080604052600436106101665760003560e01c806370a08231116100d1578063a0a2daf01161008a578063c23dc68f11610064578063c23dc68f14610500578063c87b56dd1461052d578063e985e9c51461054d578063f2fde38b1461056d57610166565b8063a0a2daf01461048a578063a22cb465146104c0578063b88d4fde146104e057610166565b806370a08231146103d5578063715018a6146103f55780638462151c1461040a5780638da5cb5b1461043757806395d89b411461045557806399a2557a1461046a57610166565b806326a6860a1161012357806326a6860a1461031357806342842e0e146103335780635bbb21771461035357806361455567146103805780636352211e146103a05780636c0360eb146103c057610166565b806301ffc9a71461021b57806306fdde0314610250578063081812fc14610272578063095ea7b3146102aa57806318160ddd146102cc57806323b872dd146102f3575b6000356001600160e01b03191615801561017f57503415155b1561018657005b600080356001600160e01b0319168152602081905260409020546001600160a01b0316806101f65760405162461bcd60e51b8152602060048201526018602482015277233ab731ba34b7b7103237b2b9903737ba1032bc34b9ba1760411b60448201526064015b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610217578184f35b8184fd5b34801561022757600080fd5b5061023b61023636600461215c565b61058d565b60405190151581526020015b60405180910390f35b34801561025c57600080fd5b506102656105df565b604051610247919061239d565b34801561027e57600080fd5b5061029261028d366004612194565b610671565b6040516001600160a01b039091168152602001610247565b3480156102b657600080fd5b506102ca6102c536600461205a565b6106b5565b005b3480156102d857600080fd5b5060055460045403600019015b604051908152602001610247565b3480156102ff57600080fd5b506102ca61030e366004611eb1565b610743565b34801561031f57600080fd5b5061026561032e366004612194565b61074e565b34801561033f57600080fd5b506102ca61034e366004611eb1565b6107fa565b34801561035f57600080fd5b5061037361036e3660046120b5565b610815565b60405161024791906122fb565b34801561038c57600080fd5b506102ca61039b366004611fdd565b610905565b3480156103ac57600080fd5b506102926103bb366004612194565b610f5d565b3480156103cc57600080fd5b50610265610f6f565b3480156103e157600080fd5b506102e56103f0366004611e65565b610f7c565b34801561040157600080fd5b506102ca610fca565b34801561041657600080fd5b5061042a610425366004611e65565b611000565b6040516102479190612365565b34801561044357600080fd5b50600c546001600160a01b0316610292565b34801561046157600080fd5b50610265611169565b34801561047657600080fd5b5061042a610485366004612083565b611178565b34801561049657600080fd5b506102926104a536600461215c565b6000602081905290815260409020546001600160a01b031681565b3480156104cc57600080fd5b506102ca6104db366004611fa3565b611366565b3480156104ec57600080fd5b506102ca6104fb366004611eec565b6113fc565b34801561050c57600080fd5b5061052061051b366004612194565b61144d565b6040516102479190612414565b34801561053957600080fd5b50610265610548366004612194565b611507565b34801561055957600080fd5b5061023b610568366004611e7f565b6115d1565b34801561057957600080fd5b506102ca610588366004611e65565b6115ff565b60006001600160e01b031982166380ac58cd60e01b14806105be57506001600160e01b03198216635b5e139f60e01b145b806105d957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600680546105ee906124ff565b80601f016020809104026020016040519081016040528092919081815260200182805461061a906124ff565b80156106675780601f1061063c57610100808354040283529160200191610667565b820191906000526020600020905b81548152906001019060200180831161064a57829003601f168201915b5050505050905090565b600061067c8261169a565b610699576040516333d1c03960e21b815260040160405180910390fd5b506000908152600a60205260409020546001600160a01b031690565b60006106c082610f5d565b9050806001600160a01b0316836001600160a01b031614156106f55760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614801590610715575061071381336115d1565b155b15610733576040516367d9dca160e11b815260040160405180910390fd5b61073e8383836116d3565b505050565b61073e83838361172f565b6001818154811061075e57600080fd5b906000526020600020016000915090508054610779906124ff565b80601f01602080910402602001604051908101604052809291908181526020018280546107a5906124ff565b80156107f25780601f106107c7576101008083540402835291602001916107f2565b820191906000526020600020905b8154815290600101906020018083116107d557829003601f168201915b505050505081565b61073e838383604051806020016040528060008152506113fc565b80516060906000816001600160401b0381111561084257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561088d57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108605790505b50905060005b8281146108fd576108ca8582815181106108bd57634e487b7160e01b600052603260045260246000fd5b602002602001015161144d565b8282815181106108ea57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152600101610893565b509392505050565b600c546001600160a01b0316331461092f5760405162461bcd60e51b81526004016101ed906123df565b60006001600160a01b038616156109b65750843b806109b65760405162461bcd60e51b815260206004820152603960248201527f5f64656c65676174652061646472657373206973206e6f74206120636f6e747260448201527f61637420616e64206973206e6f7420616464726573732830290000000000000060648201526084016101ed565b600085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870198509596508601909401938693509150819050808080805b878a1015610f1357895160001a92508260291415610f015789610a2b8161253a565b9a50610a399050878b6124a5565b808a526020808b018290206001600160e01b031981166000908152918290526040909120548c99509097506001600160a01b0390811696509094508f16610c9e57600289604051610a8a91906121d8565b90815260200160405180910390205491508160001415610ae75760405162461bcd60e51b8152602060048201526018602482015277233ab731ba34b7b7103237b2b9903737ba1032bc34b9ba1760411b60448201526064016101ed565b81610af1816124e8565b60018054919450610b039250906124a5565b9050808214610bd05760018181548110610b2d57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160018381548110610b5857634e487b7160e01b600052603260045260246000fd5b90600052602060002001908054610b6e906124ff565b610b79929190611cb5565b50610b85826001612479565b600260018381548110610ba857634e487b7160e01b600052603260045260246000fd5b90600052602060002001604051610bbf91906121f4565b908152604051908190036020019020555b6001805480610bef57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000610c0b9190611d40565b9055600289604051610c1d91906121d8565b90815260408051602092819003830181206000908190556001600160e01b03198a168082529381905291822080546001600160a01b031916905590916001600160a01b038816917f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f535390610c91908e9061239d565b60405180910390a4610efc565b600289604051610cae91906121d8565b90815260200160405180910390205460001415610e08576001600160a01b03851615610d0c5760405162461bcd60e51b815260206004820152600d60248201526c233ab731a4b21031b630b9b41760991b60448201526064016101ed565b8e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600189908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610d92929190611d7a565b50600154604051600290610da7908c906121d8565b9081526020016040518091039020819055508e6001600160a01b031660006001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610c91919061239d565b8e6001600160a01b0316600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031614610efc578e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508e6001600160a01b0316856001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610ef3919061239d565b60405180910390a45b978301975b89610f0b8161253a565b9a5050610a09565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c604051610f449291906123b0565b60405180910390a1505050505050505050505050505050565b6000610f688261191c565b5192915050565b600d8054610779906124ff565b60006001600160a01b038216610fa5576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600960205260409020546001600160401b031690565b600c546001600160a01b03163314610ff45760405162461bcd60e51b81526004016101ed906123df565b610ffe6000611a43565b565b6060600080600061101085610f7c565b90506000816001600160401b0381111561103a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611063578160200160208202803683370190505b509050611089604080516060810182526000808252602082018190529181019190915290565b60015b83861161115d57600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161580159282019290925292506110f257611155565b81516001600160a01b03161561110757815194505b876001600160a01b0316856001600160a01b03161415611155578083878060010198508151811061114857634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b60010161108c565b50909695505050505050565b6060600780546105ee906124ff565b60608183111561119b57604051631960ccad60e11b815260040160405180910390fd5b6004546000906001016111ac600190565b8510156111b857600194505b808411156111c4578093505b60006111cf87610f7c565b9050848610156111ee57858503818110156111e8578091505b506111f2565b5060005b6000816001600160401b0381111561121a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611243578160200160208202803683370190505b5090508161125657935061135f92505050565b60006112618861144d565b905060008160400151611272575080515b885b8881141580156112845750848714155b1561135357600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161580159282019290925293506112e85761134b565b82516001600160a01b0316156112fd57825191505b8a6001600160a01b0316826001600160a01b0316141561134b578084888060010199508151811061133e57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b600101611274565b50505092835250909150505b9392505050565b6001600160a01b0382163314156113905760405163b06307db60e01b815260040160405180910390fd5b336000818152600b602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61140784848461172f565b6001600160a01b0383163b15158015611429575061142784848484611a95565b155b15611447576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6040805160608082018352600080835260208084018290528385018290528451928301855281835282018190529281019290925290600183108061149357506004548310155b1561149e5792915050565b50600082815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615801592820192909252906114fe5792915050565b61135f8361191c565b60606115128261169a565b6115765760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016101ed565b6000611580611b8d565b905060008151116115a0576040518060200160405280600081525061135f565b806115aa84611b9c565b6040516020016115bb92919061228f565b6040516020818303038152906040529392505050565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b600c546001600160a01b031633146116295760405162461bcd60e51b81526004016101ed906123df565b6001600160a01b03811661168e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ed565b61169781611a43565b50565b6000816001111580156116ae575060045482105b80156105d9575050600090815260086020526040902054600160e01b900460ff161590565b6000828152600a602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061173a8261191c565b9050836001600160a01b031681600001516001600160a01b0316146117715760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b038616148061178f575061178f85336115d1565b806117aa57503361179f84610671565b6001600160a01b0316145b9050806117ca57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0384166117f157604051633a954ecd60e21b815260040160405180910390fd5b6117fd600084876116d3565b6001600160a01b038581166000908152600960209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600890945282852080546001600160e01b031916909417600160a01b429092169190910217835587018084529220805491939091166118d15760045482146118d157805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b6040805160608101825260008082526020820181905291810191909152818060011115801561194c575060045481105b15611a2a57600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905290611a285780516001600160a01b0316156119bf579392505050565b5060001901600081815260086020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215611a23579392505050565b6119bf565b505b604051636f96cda160e11b815260040160405180910390fd5b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611aca9033908990889088906004016122be565b602060405180830381600087803b158015611ae457600080fd5b505af1925050508015611b14575060408051601f3d908101601f19168201909252611b1191810190612178565b60015b611b6f573d808015611b42576040519150601f19603f3d011682016040523d82523d6000602084013e611b47565b606091505b508051611b67576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060600d80546105ee906124ff565b606081611bc05750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611bea5780611bd48161253a565b9150611be39050600a83612491565b9150611bc4565b6000816001600160401b03811115611c1257634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611c3c576020820181803683370190505b5090505b8415611b8557611c516001836124a5565b9150611c5e600a86612555565b611c69906030612479565b60f81b818381518110611c8c57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611cae600a86612491565b9450611c40565b828054611cc1906124ff565b90600052602060002090601f016020900481019282611ce35760008555611d30565b82601f10611cf45780548555611d30565b82800160010185558215611d3057600052602060002091601f016020900482015b82811115611d30578254825591600101919060010190611d15565b50611d3c929150611dee565b5090565b508054611d4c906124ff565b6000825580601f10611d5c575050565b601f0160209004906000526020600020908101906116979190611dee565b828054611d86906124ff565b90600052602060002090601f016020900481019282611da85760008555611d30565b82601f10611dc157805160ff1916838001178555611d30565b82800160010185558215611d30579182015b82811115611d30578251825591602001919060010190611dd3565b5b80821115611d3c5760008155600101611def565b80356001600160a01b0381168114611e1a57600080fd5b919050565b60008083601f840112611e30578182fd5b5081356001600160401b03811115611e46578182fd5b602083019150836020828501011115611e5e57600080fd5b9250929050565b600060208284031215611e76578081fd5b61135f82611e03565b60008060408385031215611e91578081fd5b611e9a83611e03565b9150611ea860208401611e03565b90509250929050565b600080600060608486031215611ec5578081fd5b611ece84611e03565b9250611edc60208501611e03565b9150604084013590509250925092565b60008060008060808587031215611f01578081fd5b611f0a85611e03565b93506020611f19818701611e03565b93506040860135925060608601356001600160401b0380821115611f3b578384fd5b818801915088601f830112611f4e578384fd5b813581811115611f6057611f60612595565b611f72601f8201601f19168501612449565b91508082528984828501011115611f87578485fd5b8084840185840137810190920192909252939692955090935050565b60008060408385031215611fb5578182fd5b611fbe83611e03565b915060208301358015158114611fd2578182fd5b809150509250929050565b600080600080600060608688031215611ff4578081fd5b611ffd86611e03565b945060208601356001600160401b0380821115612018578283fd5b61202489838a01611e1f565b9096509450604088013591508082111561203c578283fd5b5061204988828901611e1f565b969995985093965092949392505050565b6000806040838503121561206c578182fd5b61207583611e03565b946020939093013593505050565b600080600060608486031215612097578283fd5b6120a084611e03565b95602085013595506040909401359392505050565b600060208083850312156120c7578182fd5b82356001600160401b03808211156120dd578384fd5b818501915085601f8301126120f0578384fd5b81358181111561210257612102612595565b8060051b9150612113848301612449565b8181528481019084860184860187018a101561212d578788fd5b8795505b8386101561214f578035835260019590950194918601918601612131565b5098975050505050505050565b60006020828403121561216d578081fd5b813561135f816125ab565b600060208284031215612189578081fd5b815161135f816125ab565b6000602082840312156121a5578081fd5b5035919050565b600081518084526121c48160208601602086016124bc565b601f01601f19169290920160200192915050565b600082516121ea8184602087016124bc565b9190910192915050565b600080835482600182811c91508083168061221057607f831692505b602080841082141561223057634e487b7160e01b87526022600452602487fd5b818015612244576001811461225557612281565b60ff19861689528489019650612281565b60008a815260209020885b868110156122795781548b820152908501908301612260565b505084890196505b509498975050505050505050565b600083516122a18184602088016124bc565b8351908301906122b58183602088016124bc565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906122f1908301846121ac565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561115d5761235283855180516001600160a01b031682526020808201516001600160401b0316908301526040908101511515910152565b9284019260609290920191600101612317565b6020808252825182820181905260009190848201906040850190845b8181101561115d57835183529284019291840191600101612381565b60208152600061135f60208301846121ac565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b81516001600160a01b031681526020808301516001600160401b031690820152604080830151151590820152606081016105d9565b604051601f8201601f191681016001600160401b038111828210171561247157612471612595565b604052919050565b6000821982111561248c5761248c612569565b500190565b6000826124a0576124a061257f565b500490565b6000828210156124b7576124b7612569565b500390565b60005b838110156124d75781810151838201526020016124bf565b838111156114475750506000910152565b6000816124f7576124f7612569565b506000190190565b600181811c9082168061251357607f821691505b6020821081141561253457634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561254e5761254e612569565b5060010190565b6000826125645761256461257f565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461169757600080fdfea26469706673582212205122d644d693e65300927989272c70212341d769b582c63d1083b1bb4796c23064736f6c6343000804003368747470733a2f2f746573746170692e78616e616c69612e636f6d2f78616e616c69612f6765742d6e66742d6d6574613f746f6b656e49643d757064617465436f6e747261637428616464726573732c737472696e672c737472696e672958414e4120547265617375726520426f78203a204e6f76656d6265722032303232