Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CannotRefuelMoreThanTankCapacity", "type": "error" }, { "inputs": [], "name": "DoNotBurnYourMoneyHere", "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": [], "name": "FlamesNotOut", "type": "error" }, { "inputs": [], "name": "FlamesOut", "type": "error" }, { "inputs": [], "name": "NOPE", "type": "error" }, { "inputs": [], "name": "NeedToRefuelForNextCycle", "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": true, "internalType": "address", "name": "savior", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "jumpStartCost", "type": "uint256" } ], "name": "JumpStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "steward", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "refuelCost", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "T_minus", "type": "uint256" } ], "name": "Refueled", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amountWithdrawn", "type": "uint256" } ], "name": "TreasuryWithdraw", "type": "event" }, { "inputs": [], "name": "FLAMES_OUT_IN", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "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": "currentTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "difficulty", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "flameOutIn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "hydrogen", "outputs": [ { "internalType": "contract Hydrogen", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "increaseDenominator", "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": [], "name": "jumpStart", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "jumpStartSupplyNeeded", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastRefuelOn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minimumRefuelPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "refuel", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "refuelPerDifficulty", "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": "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526010600655600a60075560016009553480156200002057600080fd5b506040518060400160405280600e81526020016d119b185b59481bdb88109b185cdd60921b81525060405180604001604052806005815260200164464c414d4560d81b8152508160009081620000779190620005a1565b506001620000868282620005a1565b5050506040516200009790620004ef565b604051809103906000f080158015620000b4573d6000803e3d6000fd5b50600880546001600160a01b03929092166001600160a01b0319928316179055600b805490911633179055620000e9620000ef565b62000695565b42600a55600980546000918262000106836200066d565b9091555090506200011833826200011b565b50565b6001600160a01b0382166200014b57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006200015a8383836200018e565b90506001600160a01b0381161562000189576040516339e3563760e11b81526000600482015260240162000142565b505050565b6000828152600260205260408120546001600160a01b0390811690831615620001be57620001be8184866200028d565b6001600160a01b03811615620001fe57620001dd6000858180620002f7565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156200022e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6200029a83838362000425565b62000189576001600160a01b038316620002cb57604051637e27328960e01b81526004810182905260240162000142565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440162000142565b80806200030c57506001600160a01b03821615155b15620003f55760006200031f84620004ae565b90506001600160a01b038316158015906200034c5750826001600160a01b0316816001600160a01b031614155b80156200037f57506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620003aa5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240162000142565b8115620003f35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620004a65750826001600160a01b0316846001600160a01b031614806200048157506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620004a657506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b031680620004e957604051637e27328960e01b81526004810184905260240162000142565b92915050565b610b948062001ce283390190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200052857607f821691505b6020821081036200054957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200018957600081815260208120601f850160051c81016020861015620005785750805b601f850160051c820191505b81811015620005995782815560010162000584565b505050505050565b81516001600160401b03811115620005bd57620005bd620004fd565b620005d581620005ce845462000513565b846200054f565b602080601f8311600181146200060d5760008415620005f45750858301515b600019600386901b1c1916600185901b17855562000599565b600085815260208120601f198616915b828110156200063e578886015182559484019460019091019084016200061d565b50858210156200065d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000600182016200068e57634e487b7160e01b600052601160045260246000fd5b5060010190565b61163d80620006a56000396000f3fe6080604052600436106101695760003560e01c80636352211e116100d1578063981b286d1161008a578063c87b56dd11610064578063c87b56dd146103f1578063d7e6ddfd14610411578063e985e9c514610431578063eee0052d1461045157600080fd5b8063981b286d1461039b578063a22cb465146103b1578063b88d4fde146103d157600080fd5b80636352211e1461030157806367eedde0146103215780636885daaa1461033657806370a082311461034b578063847a31891461036b57806395d89b411461038657600080fd5b80630d1803b3116101235780630d1803b31461027757806319cae4621461028d57806323b872dd146102a35780633f14c5ca146102c357806342842e0e146102d95780634c1ec9aa146102f957600080fd5b80629a9b7b1461018c57806301a78f04146101b557806301ffc9a7146101cb57806306fdde03146101fb578063081812fc1461021d578063095ea7b31461025557600080fd5b36610187576040516301a4b00160e51b815260040160405180910390fd5b600080fd5b34801561019857600080fd5b506101a260095481565b6040519081526020015b60405180910390f35b3480156101c157600080fd5b506101a2600a5481565b3480156101d757600080fd5b506101eb6101e6366004611206565b610466565b60405190151581526020016101ac565b34801561020757600080fd5b506102106104b8565b6040516101ac9190611273565b34801561022957600080fd5b5061023d610238366004611286565b61054a565b6040516001600160a01b0390911681526020016101ac565b34801561026157600080fd5b506102756102703660046112bb565b610573565b005b34801561028357600080fd5b506101a260075481565b34801561029957600080fd5b506101a260065481565b3480156102af57600080fd5b506102756102be3660046112e5565b610582565b3480156102cf57600080fd5b506101a261271081565b3480156102e557600080fd5b506102756102f43660046112e5565b610612565b610275610632565b34801561030d57600080fd5b5061023d61031c366004611286565b61080d565b34801561032d57600080fd5b506101a2610818565b34801561034257600080fd5b50610275610857565b34801561035757600080fd5b506101a2610366366004611321565b610a05565b34801561037757600080fd5b506101a266071afd498d000081565b34801561039257600080fd5b50610210610a4d565b3480156103a757600080fd5b506101a261546081565b3480156103bd57600080fd5b506102756103cc36600461133c565b610a5c565b3480156103dd57600080fd5b506102756103ec36600461138e565b610a67565b3480156103fd57600080fd5b5061021061040c366004611286565b610a7e565b34801561041d57600080fd5b5060085461023d906001600160a01b031681565b34801561043d57600080fd5b506101eb61044c36600461146a565b610af3565b34801561045d57600080fd5b506101a2604b81565b60006001600160e01b031982166380ac58cd60e01b148061049757506001600160e01b03198216635b5e139f60e01b145b806104b257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546104c79061149d565b80601f01602080910402602001604051908101604052809291908181526020018280546104f39061149d565b80156105405780601f1061051557610100808354040283529160200191610540565b820191906000526020600020905b81548152906001019060200180831161052357829003601f168201915b5050505050905090565b600061055582610b21565b506000828152600460205260409020546001600160a01b03166104b2565b61057e828233610b5a565b5050565b6001600160a01b0382166105b157604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006105be838333610b67565b9050836001600160a01b0316816001600160a01b03161461060c576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105a8565b50505050565b61062d83838360405180602001604052806000815250610a67565b505050565b42615460600a5461064391906114ed565b10156106625760405163d1588ae960e01b815260040160405180910390fd5b600042615460600a5461067591906114ed565b61067f9190611500565b905066071afd498d00003410156106a95760405163364eec1f60e01b815260040160405180910390fd5b60006007546009546106bb9190611513565b90506000816006546106cd9190611500565b905060006127106106de8334611535565b6106e89190611535565b9050600060646106f9346019611535565b6107039190611513565b905061070d610c60565b600b546001600160a01b03166107238234611500565b604051600081818185875af1925050503d806000811461075f576040519150601f19603f3d011682016040523d82523d6000602084013e610764565b606091505b5050600854604051632192d17360e21b8152600481018590523360248201526001600160a01b03909116915063864b45cc90604401600060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505060408051348152602081018990523393507fe0e9ba8d5051018d4999cd724a9828344ede7fe734fd04223a965c7eb2930a5c92500160405180910390a25050505050565b60006104b282610b21565b600042615460600a5461082b91906114ed565b10156108375750600090565b42615460600a5461084891906114ed565b6108529190611500565b905090565b42615460600a5461086891906114ed565b111561088757604051632099713160e21b815260040160405180910390fd5b60006064604b600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610904919061154c565b61090e9190611535565b6109189190611513565b60085460405163c85dbfe960e01b8152600481018390523360248201529192506001600160a01b03169063c85dbfe990604401600060405180830381600087803b15801561096557600080fd5b505af1158015610979573d6000803e3d6000fd5b50505050610985610c60565b60405133904790600081818185875af1925050503d80600081146109c5576040519150601f19603f3d011682016040523d82523d6000602084013e6109ca565b606091505b50506040518281523391507f7f8cb5224d7fb8169b9cf3291cc5a3d4093768a5c76b590b18a348d54781f7809060200160405180910390a250565b60006001600160a01b038216610a31576040516322718ad960e21b8152600060048201526024016105a8565b506001600160a01b031660009081526003602052604090205490565b6060600180546104c79061149d565b61057e338383610c88565b610a72848484610582565b61060c84848484610d27565b6060610a8982610b21565b506000610aa160408051602081019091526000815290565b90506000815111610ac15760405180602001604052806000815250610aec565b80610acb84610e50565b604051602001610adc929190611565565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806104b257604051637e27328960e01b8152600481018490526024016105a8565b61062d8383836001610ee3565b6000828152600260205260408120546001600160a01b0390811690831615610b9457610b94818486610fe9565b6001600160a01b03811615610bd257610bb1600085600080610ee3565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610c01576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b42600a556009805460009182610c7583611594565b919050559050610c85338261104d565b50565b6001600160a01b038216610cba57604051630b61174360e31b81526001600160a01b03831660048201526024016105a8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561060c57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610d699033908890879087906004016115ad565b6020604051808303816000875af1925050508015610da4575060408051601f3d908101601f19168201909252610da1918101906115ea565b60015b610e0d573d808015610dd2576040519150601f19603f3d011682016040523d82523d6000602084013e610dd7565b606091505b508051600003610e0557604051633250574960e11b81526001600160a01b03851660048201526024016105a8565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610e4957604051633250574960e11b81526001600160a01b03851660048201526024016105a8565b5050505050565b60606000610e5d836110b2565b600101905060008167ffffffffffffffff811115610e7d57610e7d611378565b6040519080825280601f01601f191660200182016040528015610ea7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610eb157509392505050565b8080610ef757506001600160a01b03821615155b15610fb9576000610f0784610b21565b90506001600160a01b03831615801590610f335750826001600160a01b0316816001600160a01b031614155b8015610f465750610f448184610af3565b155b15610f6f5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016105a8565b8115610fb75783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610ff483838361118a565b61062d576001600160a01b03831661102257604051637e27328960e01b8152600481018290526024016105a8565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016105a8565b6001600160a01b03821661107757604051633250574960e11b8152600060048201526024016105a8565b600061108583836000610b67565b90506001600160a01b0381161561062d576040516339e3563760e11b8152600060048201526024016105a8565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106110f15772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061111d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061113b57662386f26fc10000830492506010015b6305f5e1008310611153576305f5e100830492506008015b612710831061116757612710830492506004015b60648310611179576064830492506002015b600a83106104b25760010192915050565b60006001600160a01b038316158015906111e85750826001600160a01b0316846001600160a01b031614806111c457506111c48484610af3565b806111e857506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b031981168114610c8557600080fd5b60006020828403121561121857600080fd5b8135610aec816111f0565b60005b8381101561123e578181015183820152602001611226565b50506000910152565b6000815180845261125f816020860160208601611223565b601f01601f19169290920160200192915050565b602081526000610aec6020830184611247565b60006020828403121561129857600080fd5b5035919050565b80356001600160a01b03811681146112b657600080fd5b919050565b600080604083850312156112ce57600080fd5b6112d78361129f565b946020939093013593505050565b6000806000606084860312156112fa57600080fd5b6113038461129f565b92506113116020850161129f565b9150604084013590509250925092565b60006020828403121561133357600080fd5b610aec8261129f565b6000806040838503121561134f57600080fd5b6113588361129f565b91506020830135801515811461136d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156113a457600080fd5b6113ad8561129f565b93506113bb6020860161129f565b925060408501359150606085013567ffffffffffffffff808211156113df57600080fd5b818701915087601f8301126113f357600080fd5b81358181111561140557611405611378565b604051601f8201601f19908116603f0116810190838211818310171561142d5761142d611378565b816040528281528a602084870101111561144657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561147d57600080fd5b6114868361129f565b91506114946020840161129f565b90509250929050565b600181811c908216806114b157607f821691505b6020821081036114d157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104b2576104b26114d7565b818103818111156104b2576104b26114d7565b60008261153057634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176104b2576104b26114d7565b60006020828403121561155e57600080fd5b5051919050565b60008351611577818460208801611223565b83519083019061158b818360208801611223565b01949350505050565b6000600182016115a6576115a66114d7565b5060010190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906115e090830184611247565b9695505050505050565b6000602082840312156115fc57600080fd5b8151610aec816111f056fea2646970667358221220bf08619b683c1d087bfa10eb2448ae22effd89886ca42085885757b24ea45e2564736f6c6343000814003360a060405234801561001057600080fd5b5060405180604001604052806008815260200167243cb23937b3b2b760c11b81525060405180604001604052806002815260200161241960f11b815250816003908161005c9190610114565b5060046100698282610114565b505033608052506101d3565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57600081815260208120601f850160051c810160208610156100ec5750805b601f850160051c820191505b8181101561010b578281556001016100f8565b5050505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b602080601f831160018114610176576000841561015e5750858301515b600019600386901b1c1916600185901b17855561010b565b600085815260208120601f198616915b828110156101a557888601518255948401946001909101908401610186565b50858210156101c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161099f6101f560003960008181610174015261050c015261099f6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a896125211610066578063a89612521461021c578063a9059cbb1461022f578063c85dbfe914610242578063dd62ed3e1461025557600080fd5b806370a08231146101b6578063864b45cc146101df57806390ebe630146101f457806395d89b411461021457600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063603a552e1461016f5780636e99d52f146101ae57600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261028e565b60405161010f91906107c6565b60405180910390f35b61012b610126366004610830565b610320565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b36600461085a565b61033a565b6040516012815260200161010f565b6101967f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010f565b61013f603c81565b61013f6101c4366004610896565b6001600160a01b031660009081526020819052604090205490565b6101f26101ed3660046108b8565b61035e565b005b61013f610202366004610896565b60056020526000908152604090205481565b610102610374565b6101f261022a366004610830565b610383565b61012b61023d366004610830565b6103ed565b6101f26102503660046108b8565b6103fb565b61013f6102633660046108e4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461029d9061090e565b80601f01602080910402602001604051908101604052809291908181526020018280546102c99061090e565b80156103165780601f106102eb57610100808354040283529160200191610316565b820191906000526020600020905b8154815290600101906020018083116102f957829003601f168201915b5050505050905090565b60003361032e81858561040d565b60019150505b92915050565b60003361034885828561041f565b6103538585856104a2565b506001949350505050565b610366610501565b610370818361054c565b5050565b60606004805461029d9061090e565b3360009081526005602052604090205442906103a190603c90610948565b11156103c057604051636c1a50bf60e01b815260040160405180910390fd5b3360009081526005602052604090204290556103706103de83610582565b6103e733610582565b836104a2565b60003361032e8185856104a2565b610403610501565b6103708183610591565b61041a83838360016105c7565b505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461049c578181101561048d57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61049c848484840360006105c7565b50505050565b6001600160a01b0383166104cc57604051634b637e8f60e11b815260006004820152602401610484565b6001600160a01b0382166104f65760405163ec442f0560e01b815260006004820152602401610484565b61041a83838361069c565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461054a5760405163746411c760e11b815260040160405180910390fd5b565b6001600160a01b0382166105765760405163ec442f0560e01b815260006004820152602401610484565b6103706000838361069c565b60005a60a01b82179050919050565b6001600160a01b0382166105bb57604051634b637e8f60e11b815260006004820152602401610484565b6103708260008361069c565b6001600160a01b0384166105f15760405163e602df0560e01b815260006004820152602401610484565b6001600160a01b03831661061b57604051634a1406b160e11b815260006004820152602401610484565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561049c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161068e91815260200190565b60405180910390a350505050565b6001600160a01b0383166106c75780600260008282546106bc9190610948565b909155506107399050565b6001600160a01b0383166000908152602081905260409020548181101561071a5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610484565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661075557600280548290039055610774565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b991815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107f3578581018301518582016040015282016107d7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461082b57600080fd5b919050565b6000806040838503121561084357600080fd5b61084c83610814565b946020939093013593505050565b60008060006060848603121561086f57600080fd5b61087884610814565b925061088660208501610814565b9150604084013590509250925092565b6000602082840312156108a857600080fd5b6108b182610814565b9392505050565b600080604083850312156108cb57600080fd5b823591506108db60208401610814565b90509250929050565b600080604083850312156108f757600080fd5b61090083610814565b91506108db60208401610814565b600181811c9082168061092257607f821691505b60208210810361094257634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561033457634e487b7160e01b600052601160045260246000fdfea2646970667358221220711affb615f00c3e9b86e0fc00b58a906e1a053c5027a76af2be3551d2f522f164736f6c63430008140033