[ { "inputs": [ { "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Mint", "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" }, { "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "burnByAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getExpiredState", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "getTokenIdByAddress", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "isHolder", "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": "to", "type": "address" } ], "name": "safeMint", "outputs": [ { "internalType": "uint256", "name": "token", "type": "uint256" } ], "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": [], "name": "setExpired", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "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": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526000600c60006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405162003757380380620037578339818101604052810190620000529190620003a6565b338282816000908162000066919062000681565b50806001908162000078919062000681565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000f05760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000e79190620007ad565b60405180910390fd5b62000101816200011260201b60201c565b5082600d81905550505050620007ca565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6200020181620001ec565b81146200020d57600080fd5b50565b6000815190506200022181620001f6565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200027c8262000231565b810181811067ffffffffffffffff821117156200029e576200029d62000242565b5b80604052505050565b6000620002b3620001d8565b9050620002c1828262000271565b919050565b600067ffffffffffffffff821115620002e457620002e362000242565b5b620002ef8262000231565b9050602081019050919050565b60005b838110156200031c578082015181840152602081019050620002ff565b60008484015250505050565b60006200033f6200033984620002c6565b620002a7565b9050828152602081018484840111156200035e576200035d6200022c565b5b6200036b848285620002fc565b509392505050565b600082601f8301126200038b576200038a62000227565b5b81516200039d84826020860162000328565b91505092915050565b600080600060608486031215620003c257620003c1620001e2565b5b6000620003d28682870162000210565b935050602084015167ffffffffffffffff811115620003f657620003f5620001e7565b5b620004048682870162000373565b925050604084015167ffffffffffffffff811115620004285762000427620001e7565b5b620004368682870162000373565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049357607f821691505b602082108103620004a957620004a86200044b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004d4565b6200051f8683620004d4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620005626200055c6200055684620001ec565b62000537565b620001ec565b9050919050565b6000819050919050565b6200057e8362000541565b620005966200058d8262000569565b848454620004e1565b825550505050565b600090565b620005ad6200059e565b620005ba81848462000573565b505050565b5b81811015620005e257620005d6600082620005a3565b600181019050620005c0565b5050565b601f8211156200063157620005fb81620004af565b6200060684620004c4565b8101602085101562000616578190505b6200062e6200062585620004c4565b830182620005bf565b50505b505050565b600082821c905092915050565b6000620006566000198460080262000636565b1980831691505092915050565b600062000671838362000643565b9150826002028217905092915050565b6200068c8262000440565b67ffffffffffffffff811115620006a857620006a762000242565b5b620006b482546200047a565b620006c1828285620005e6565b600060209050601f831160018114620006f95760008415620006e4578287015190505b620006f0858262000663565b86555062000760565b601f1984166200070986620004af565b60005b8281101562000733578489015182556001820191506020850194506020810190506200070c565b868310156200075357848901516200074f601f89168262000643565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007958262000768565b9050919050565b620007a78162000788565b82525050565b6000602082019050620007c460008301846200079c565b92915050565b612f7d80620007da6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063a56fa76c11610097578063c87b56dd11610071578063c87b56dd14610481578063d4d7b19a146104b1578063e985e9c5146104e1578063f2fde38b146105115761018e565b8063a56fa76c1461043d578063b0cd8ba114610447578063b88d4fde146104655761018e565b806370a082311461037b578063715018a6146103ab5780638cbab7e4146103b55780638da5cb5b146103e557806395d89b4114610403578063a22cb465146104215761018e565b806323b872dd1161014b57806342842e0e1161012557806342842e0e146102e357806342966c68146102ff5780634f6ccce71461031b5780636352211e1461034b5761018e565b806323b872dd146102675780632f745c591461028357806340d097c3146102b35761018e565b806301ffc9a71461019357806306fdde03146101c3578063081812fc146101e1578063095ea7b31461021157806318160ddd1461022d57806323a2d2981461024b575b600080fd5b6101ad60048036038101906101a891906124e5565b61052d565b6040516101ba919061252d565b60405180910390f35b6101cb6105a7565b6040516101d891906125d8565b60405180910390f35b6101fb60048036038101906101f69190612630565b610639565b604051610208919061269e565b60405180910390f35b61022b600480360381019061022691906126e5565b610655565b005b61023561066b565b6040516102429190612734565b60405180910390f35b6102656004803603810190610260919061274f565b610678565b005b610281600480360381019061027c919061277c565b6106dc565b005b61029d600480360381019061029891906126e5565b61075b565b6040516102aa9190612734565b60405180910390f35b6102cd60048036038101906102c8919061274f565b610804565b6040516102da9190612734565b60405180910390f35b6102fd60048036038101906102f8919061277c565b610984565b005b61031960048036038101906103149190612630565b6109a4565b005b61033560048036038101906103309190612630565b610a57565b6040516103429190612734565b60405180910390f35b61036560048036038101906103609190612630565b610acd565b604051610372919061269e565b60405180910390f35b6103956004803603810190610390919061274f565b610adf565b6040516103a29190612734565b60405180910390f35b6103b3610b99565b005b6103cf60048036038101906103ca919061274f565b610bad565b6040516103dc9190612734565b60405180910390f35b6103ed610c11565b6040516103fa919061269e565b60405180910390f35b61040b610c3b565b60405161041891906125d8565b60405180910390f35b61043b600480360381019061043691906127fb565b610ccd565b005b610445610ce3565b005b61044f610d08565b60405161045c919061252d565b60405180910390f35b61047f600480360381019061047a9190612970565b610d1f565b005b61049b60048036038101906104969190612630565b610d3c565b6040516104a891906125d8565b60405180910390f35b6104cb60048036038101906104c6919061274f565b610da5565b6040516104d8919061252d565b60405180910390f35b6104fb60048036038101906104f691906129f3565b610e0a565b604051610508919061252d565b60405180910390f35b61052b6004803603810190610526919061274f565b610e9e565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105a0575061059f82610f24565b5b9050919050565b6060600080546105b690612a62565b80601f01602080910402602001604051908101604052809291908181526020018280546105e290612a62565b801561062f5780601f106106045761010080835404028352916020019161062f565b820191906000526020600020905b81548152906001019060200180831161061257829003601f168201915b5050505050905090565b600061064482611006565b5061064e8261108e565b9050919050565b61066782826106626110cb565b6110d3565b5050565b6000600880549050905090565b600c60009054906101000a900460ff16156106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612adf565b60405180910390fd5b6106d96106d482610bad565b6109a4565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461074b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074290612b4b565b60405180910390fd5b6107568383836110e5565b505050565b600061076683610adf565b82106107ab5782826040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526004016107a2929190612b6b565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600061080e6111e7565b600c60009054906101000a900460ff161561085e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085590612adf565b60405180910390fd5b600d54600e54106108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90612be0565b60405180910390fd5b6108ad82610da5565b156108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490612c4c565b60405180910390fd5b6000600b5490506108fe838261126e565b600b600081548092919061091190612c9b565b9190505550600e600081548092919061092990612c9b565b9190505550610942610939610c11565b8285600061128c565b7f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858382604051610973929190612b6b565b60405180910390a180915050919050565b61099f83838360405180602001604052806000815250610d1f565b505050565b600c60009054906101000a900460ff16156109f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109eb90612adf565b60405180910390fd5b6109fc6111e7565b600e6000815480929190610a0f90612ce3565b9190505550610a1d81611451565b7fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb81604051610a4c9190612734565b60405180910390a150565b6000610a6161066b565b8210610aa7576000826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610a9e929190612b6b565b60405180910390fd5b60088281548110610abb57610aba612d0c565b5b90600052602060002001549050919050565b6000610ad882611006565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b525760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610b49919061269e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ba16111e7565b610bab60006114d7565b565b6000600c60009054906101000a900460ff1615610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf690612adf565b60405180910390fd5b610c0a82600061075b565b9050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c4a90612a62565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7690612a62565b8015610cc35780601f10610c9857610100808354040283529160200191610cc3565b820191906000526020600020905b815481529060010190602001808311610ca657829003601f168201915b5050505050905090565b610cdf610cd86110cb565b838361159d565b5050565b610ceb6111e7565b6001600c60006101000a81548160ff021916908315150217905550565b6000600c60009054906101000a900460ff16905090565b610d2a8484846106dc565b610d368484848461170c565b50505050565b6060610d4782611006565b506000610d526118c3565b90506000815111610d725760405180602001604052806000815250610d9d565b80610d7c846118da565b604051602001610d8d929190612d77565b6040516020818303038152906040525b915050919050565b6000600c60009054906101000a900460ff1615610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90612adf565b60405180910390fd5b6000610e0283610adf565b119050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610ea66111e7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f185760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f0f919061269e565b60405180910390fd5b610f21816114d7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fef57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610fff5750610ffe826119a8565b5b9050919050565b60008061101283611a12565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361108557826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161107c9190612734565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6110e0838383600161128c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111575760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161114e919061269e565b60405180910390fd5b600061116b83836111666110cb565b611a4f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111e1578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016111d893929190612d9b565b60405180910390fd5b50505050565b6111ef6110cb565b73ffffffffffffffffffffffffffffffffffffffff1661120d610c11565b73ffffffffffffffffffffffffffffffffffffffff161461126c576112306110cb565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611263919061269e565b60405180910390fd5b565b611288828260405180602001604052806000815250611b6c565b5050565b80806112c55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156113f95760006112d584611006565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561134057508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561135357506113518184610e0a565b155b1561139557826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161138c919061269e565b60405180910390fd5b81156113f757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006114606000836000611a4f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d357816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016114ca9190612734565b60405180910390fd5b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361160e57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611605919061269e565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116ff919061252d565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156118bd578273ffffffffffffffffffffffffffffffffffffffff1663150b7a026117506110cb565b8685856040518563ffffffff1660e01b81526004016117729493929190612e27565b6020604051808303816000875af19250505080156117ae57506040513d601f19601f820116820180604052508101906117ab9190612e88565b60015b611832573d80600081146117de576040519150601f19603f3d011682016040523d82523d6000602084013e6117e3565b606091505b50600081510361182a57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611821919061269e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146118bb57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016118b2919061269e565b60405180910390fd5b505b50505050565b606060405180602001604052806000815250905090565b6060600060016118e984611b88565b01905060008167ffffffffffffffff81111561190857611907612845565b5b6040519080825280601f01601f19166020018201604052801561193a5781602001600182028036833780820191505090505b509050600082602001820190505b60011561199d578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161199157611990612eb5565b5b04945060008503611948575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080611a5d858585611cdb565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aa157611a9c84611ef5565b611ae0565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611adf57611ade8185611f3e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611b2257611b1d8461209f565b611b61565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611b6057611b5f8585612170565b5b5b809150509392505050565b611b7683836121fb565b611b83600084848461170c565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611be6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611bdc57611bdb612eb5565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611c23576d04ee2d6d415b85acef81000000008381611c1957611c18612eb5565b5b0492506020810190505b662386f26fc100008310611c5257662386f26fc100008381611c4857611c47612eb5565b5b0492506010810190505b6305f5e1008310611c7b576305f5e1008381611c7157611c70612eb5565b5b0492506008810190505b6127108310611ca0576127108381611c9657611c95612eb5565b5b0492506004810190505b60648310611cc35760648381611cb957611cb8612eb5565b5b0492506002810190505b600a8310611cd2576001810190505b80915050919050565b600080611ce784611a12565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d2957611d288184866122f4565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611dba57611d6b60008560008061128c565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611e3d576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000611f4983610adf565b905060006007600084815260200190815260200160002054905081811461202e576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506120b39190612ee4565b90506000600960008481526020019081526020016000205490506000600883815481106120e3576120e2612d0c565b5b90600052602060002001549050806008838154811061210557612104612d0c565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061215457612153612f18565b5b6001900381819060005260206000200160009055905550505050565b6000600161217d84610adf565b6121879190612ee4565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361226d5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612264919061269e565b60405180910390fd5b600061227b83836000611a4f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146122ef5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016122e6919061269e565b60405180910390fd5b505050565b6122ff8383836123b8565b6123b357600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361237457806040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161236b9190612734565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016123aa929190612b6b565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561247057508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061243157506124308484610e0a565b5b8061246f57508273ffffffffffffffffffffffffffffffffffffffff166124578361108e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124c28161248d565b81146124cd57600080fd5b50565b6000813590506124df816124b9565b92915050565b6000602082840312156124fb576124fa612483565b5b6000612509848285016124d0565b91505092915050565b60008115159050919050565b61252781612512565b82525050565b6000602082019050612542600083018461251e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612582578082015181840152602081019050612567565b60008484015250505050565b6000601f19601f8301169050919050565b60006125aa82612548565b6125b48185612553565b93506125c4818560208601612564565b6125cd8161258e565b840191505092915050565b600060208201905081810360008301526125f2818461259f565b905092915050565b6000819050919050565b61260d816125fa565b811461261857600080fd5b50565b60008135905061262a81612604565b92915050565b60006020828403121561264657612645612483565b5b60006126548482850161261b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126888261265d565b9050919050565b6126988161267d565b82525050565b60006020820190506126b3600083018461268f565b92915050565b6126c28161267d565b81146126cd57600080fd5b50565b6000813590506126df816126b9565b92915050565b600080604083850312156126fc576126fb612483565b5b600061270a858286016126d0565b925050602061271b8582860161261b565b9150509250929050565b61272e816125fa565b82525050565b60006020820190506127496000830184612725565b92915050565b60006020828403121561276557612764612483565b5b6000612773848285016126d0565b91505092915050565b60008060006060848603121561279557612794612483565b5b60006127a3868287016126d0565b93505060206127b4868287016126d0565b92505060406127c58682870161261b565b9150509250925092565b6127d881612512565b81146127e357600080fd5b50565b6000813590506127f5816127cf565b92915050565b6000806040838503121561281257612811612483565b5b6000612820858286016126d0565b9250506020612831858286016127e6565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61287d8261258e565b810181811067ffffffffffffffff8211171561289c5761289b612845565b5b80604052505050565b60006128af612479565b90506128bb8282612874565b919050565b600067ffffffffffffffff8211156128db576128da612845565b5b6128e48261258e565b9050602081019050919050565b82818337600083830152505050565b600061291361290e846128c0565b6128a5565b90508281526020810184848401111561292f5761292e612840565b5b61293a8482856128f1565b509392505050565b600082601f8301126129575761295661283b565b5b8135612967848260208601612900565b91505092915050565b6000806000806080858703121561298a57612989612483565b5b6000612998878288016126d0565b94505060206129a9878288016126d0565b93505060406129ba8782880161261b565b925050606085013567ffffffffffffffff8111156129db576129da612488565b5b6129e787828801612942565b91505092959194509250565b60008060408385031215612a0a57612a09612483565b5b6000612a18858286016126d0565b9250506020612a29858286016126d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a7a57607f821691505b602082108103612a8d57612a8c612a33565b5b50919050565b7f436f6e7472616374206861732065787069726564000000000000000000000000600082015250565b6000612ac9601483612553565b9150612ad482612a93565b602082019050919050565b60006020820190508181036000830152612af881612abc565b9050919050565b7f546f6b656e206e6f74207472616e7366657261626c6500000000000000000000600082015250565b6000612b35601683612553565b9150612b4082612aff565b602082019050919050565b60006020820190508181036000830152612b6481612b28565b9050919050565b6000604082019050612b80600083018561268f565b612b8d6020830184612725565b9392505050565b7f537570706c792045786365656465640000000000000000000000000000000000600082015250565b6000612bca600f83612553565b9150612bd582612b94565b602082019050919050565b60006020820190508181036000830152612bf981612bbd565b9050919050565b7f4163636f756e7420616c72656164792068617320736274000000000000000000600082015250565b6000612c36601783612553565b9150612c4182612c00565b602082019050919050565b60006020820190508181036000830152612c6581612c29565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ca6826125fa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cd857612cd7612c6c565b5b600182019050919050565b6000612cee826125fa565b915060008203612d0157612d00612c6c565b5b600182039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b6000612d5182612548565b612d5b8185612d3b565b9350612d6b818560208601612564565b80840191505092915050565b6000612d838285612d46565b9150612d8f8284612d46565b91508190509392505050565b6000606082019050612db0600083018661268f565b612dbd6020830185612725565b612dca604083018461268f565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000612df982612dd2565b612e038185612ddd565b9350612e13818560208601612564565b612e1c8161258e565b840191505092915050565b6000608082019050612e3c600083018761268f565b612e49602083018661268f565b612e566040830185612725565b8181036060830152612e688184612dee565b905095945050505050565b600081519050612e82816124b9565b92915050565b600060208284031215612e9e57612e9d612483565b5b6000612eac84828501612e73565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612eef826125fa565b9150612efa836125fa565b9250828203905081811115612f1257612f11612c6c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212207ceb5b4745de622e7f162ca690ead591a12ca00df4a00572560f157d1a2915e764736f6c6343000814003300000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000be696b0446169776153425400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054e44534254000000000000000000000000000000000000000000000000000000