[ { "inputs": [ { "internalType": "address", "name": "_marketContract", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "_expirationTime", "type": "uint256" }, { "internalType": "uint256", "name": "_marketId", "type": "uint256" }, { "internalType": "uint256", "name": "_optionId", "type": "uint256" }, { "internalType": "address", "name": "_creator", "type": "address" }, { "internalType": "address", "name": "_platform", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "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": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBasePrice", "type": "uint256" } ], "name": "BasePriceChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "walletAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "eth", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "avgPrice", "type": "uint256" } ], "name": "BuyToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "creatorFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "platformFee", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "actionType", "type": "string" } ], "name": "FeeTransferred", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "PriceChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "walletAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "eth", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "avgPrice", "type": "uint256" } ], "name": "SellToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newSlope", "type": "uint256" } ], "name": "SlopeChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" } ], "name": "TradingPaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" } ], "name": "TradingResumed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DECIMALS", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DECIMAL_FACTOR", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "basePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "buy", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "buyFromContract", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "calculateBuyTokenAmountAddFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "supply", "type": "uint256" } ], "name": "calculatePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "calculateSellTokenAmountAddFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "calculateTokenAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "calculateTotalCost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "calculateTotalProceeds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkTradingStatus", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "expirationTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketResolved", "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": "optionId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pauseTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platform", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "resumeTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "resumeTradingTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sendLoseOptionPriceTo0Event", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newBasePrice", "type": "uint256" } ], "name": "setBasePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_resolved", "type": "bool" } ], "name": "setMarketResolved", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "setResumeTradingTimestamp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newSlope", "type": "uint256" } ], "name": "setSlope", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "slope", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234610456576124f2803803806100198161045b565b9283398101610100828203126104565761003282610480565b60208301519092906001600160401b0381116104565782610054918301610494565b604082015190926001600160401b03821161045657610074918301610494565b606082015160808301519060a08401519261009d60e061009660c08801610480565b9601610480565b865190966001600160401b0382116103535760035490600182811c9216801561044c575b60208310146103335781601f8493116103dc575b50602090601f831160011461037457600092610369575b50508160011b916000199060031b1c1916176003555b8051906001600160401b0382116103535760045490600182811c92168015610349575b60208310146103335781601f8493116102c3575b50602090601f831160011461025b57600092610250575b50508160011b916000199060031b1c1916176004555b331561023a576005546040519690336001600160a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a81b0319163360ff60a01b191617600555600f6010819055600680546001600160a01b03199081166001600160a01b0394851617909155660110d9316ec000600b55651b48eb57e000600c556007939093556008805460ff19169055600993909355600a93909355600e805482169484169490941790935580549092169216919091179055611ff290816105008239f35b631e4fbdf760e01b600052600060045260246000fd5b015190503880610150565b600460009081528281209350601f198516905b8181106102ab5750908460019594939210610292575b505050811b01600455610166565b015160001960f88460031b161c19169055388080610284565b9293602060018192878601518155019501930161026e565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610329575b90601f859493920160051c01905b81811061031a5750610139565b6000815584935060010161030d565b90915081906102ff565b634e487b7160e01b600052602260045260246000fd5b91607f1691610125565b634e487b7160e01b600052604160045260246000fd5b0151905038806100ec565b600360009081528281209350601f198516905b8181106103c457509084600195949392106103ab575b505050811b01600355610102565b015160001960f88460031b161c1916905538808061039d565b92936020600181928786015181550195019301610387565b60036000529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c81019160208510610442575b90601f859493920160051c01905b81811061043357506100d5565b60008155849350600101610426565b9091508190610418565b91607f16916100c1565b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761035357604052565b51906001600160a01b038216820361045657565b81601f82011215610456578051906001600160401b038211610353576104c3601f8301601f191660200161045b565b92828452602083830101116104565760005b8281106104ea57505060206000918301015290565b806020809284010151828287010152016104d556fe608080604052600436101561001357600080fd5b600090813560e01c90816302d05d3f14611771575080630694db1e1461170857806306fdde031461164b578063095ea7b3146115a15780631031e36e1461152e57806310cc58921461151257806318160ddd146114f457806323b872dd146114145780632e0f26251461135f5780632e1a7d4d1461137b578063313ce5671461135f57806333fdbbe51461133c57806334618c4d1461131e5780634bde38c8146112f557806353e23e2e146112cf578063569e3e02146112595780635b573962146111b25780635c975abb1461118c57806366410994146111345780636810209d14610ff65780636e9ec2d914610fd75780636ed71ede14610fb957806370a0823114610f81578063715018a614610f2457806383caf27514610f06578063853fd42114610ee35780638da5cb5b14610eba57806395d89b4114610da95780639666de2314610d7957806398efca5414610d5a578063a001ecdd14610d3c578063a1794bcd14610d13578063a24bcf4614610cf4578063a9059cbb14610cc2578063ad27179614610ca4578063ae10426514610c7d578063b575b73814610c34578063c7876ea414610c16578063d96a094a146109b3578063da284dcc14610995578063dd62ed3e14610940578063de4b3262146108ca578063e12a43e714610647578063e4849b321461029b5763f2fde38b1461021057600080fd5b34610298576020366003190112610298576102296117d7565b610231611e61565b6001600160a01b0316801561028457600580546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b80fd5b503461029857602036600319011261029857600435906102b9611ee2565b6102c16118ad565b3381528060205281604082205410610602576102dc82611acb565b906103e882028215938382046103e8148517156105ee5760105491826103e8036103e881116105da5761031f6103e8926103198661033294611a31565b90611a51565b938261032b8287611a3e565b0494611a3e565b0492476103488561034386896118a0565b6118a0565b1161059557331561058157338152806020526040812054828110610567578290338352826020520360408220558160025403600255806040518381527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3670de0b6b3a76400008502858104670de0b6b3a764000014871715610553576103d4838392611a51565b96868291610549575b8280929181923390f11561052b57808080808660018060a01b03600e5416828215610540575bf11561052b57808080808760018060a01b03600f5416828215610537575bf11561052b5750600954600a54604080518381526020808201849052339282019290925260608101889052608081019490945260a08401979097527f0baf2218b55f879cd170b80e18a05568de52b011d16e0edcfe666deec1d369819460e0949293909291907f9649ad0ee23296902c3e5aeea5c80cb0eae49caf2ca5404f032ba7707a7d5df99060c090a1600080516020611f9d8339815191526104f06104ca600254611d42565b60405191829142868a859094939260609260808301968352602083015260408201520152565b0390a1604051938452878401526040830152606082015260a06080820152600460a0820152631cd95b1b60e21b60c0820152a1604051908152f35b604051903d90823e3d90fd5b506108fc610421565b506108fc610403565b6108fc91506103dd565b634e487b7160e01b82526011600452602482fd5b9160649263391434e360e21b835233600452602452604452fd5b634b637e8f60e11b81526004819052602490fd5b60405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e74207265736572766520746f20706179206f7574006044820152606490fd5b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b83526011600452602483fd5b60405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742062616c616e636520746f2073656c6c000000006044820152606490fd5b506040366003190112610298576006546001600160a01b0316602435600435610671338414611808565b6106a9604051610682604082611868565b60158152743d3d3d62757946726f6d436f6e74726163743d3d3d60581b6020820152611f60565b6106e3476040516106bb604082611868565b601681527530b2323932b9b9943a3434b994973130b630b731b29d60511b6020820152611e8a565b61070e816040516106f5604082611868565b600781526630b6b7bab73a1d60c91b6020820152611e8a565b61073c82604051610720604082611868565b600a81526932ba3420b6b7bab73a1d60b11b6020820152611e8a565b61076b60405161074d604082611868565b600a81526936b9b3973b30b63ab29d60b11b60208201523490611e8a565b8134106108855761078b81600080516020611f9d83398151915294611f02565b6107cb60405161079c604082611868565b601a81527f3d3d3d6f7665722062757946726f6d436f6e74726163743d3d3d0000000000006020820152611f60565b7fb461cb86c12522dc130fc68e82c7889ec2ad77139953bf116fab36f27768a54360095492600a549261084960018060a01b03600654169161080d8185611a51565b60408051898152602081018990526001600160a01b03909516908501526060840194909452608083015260a082019290925290819060c0820190565b0390a161087f61085a600254611d42565b6040519384934291859094939260609260808301968352602083015260408201520152565b0390a180f35b60405162461bcd60e51b815260206004820152601860248201527f496e636f7272656374207061796d656e7420616d6f756e7400000000000000006044820152606490fd5b5034610298576020366003190112610298577fc8feb121a4b9a3f31571b042fd0ec0fcc7f4bec75a956abaaa63bed559d5555360043561091560018060a01b03600654163314611808565b80600b5560095461087f600a5492604051938493846040919493926060820195825260208201520152565b503461029857604036600319011261029857604061095c6117d7565b916109656117f2565b9260018060a01b031681526001602052209060018060a01b03166000526020526020604060002054604051908152f35b50346102985780600319360112610298576020600754604051908152f35b506020366003190112610298576004356109cb611ee2565b6109d36118ad565b6109dc81611bb1565b90601054916109eb8382611a3e565b836103e80190816103e811610bc65790610319610a0f610a209361031988856118a0565b95610a1a8186611a3e565b926118a0565b91813410610bda57610a328133611f02565b670de0b6b3a76400008202828104670de0b6b3a76400001483151715610bc65781610a6e879493600080516020611f9d83398151915293611a51565b600954600a546040805183815260208101839052339181019190915260608101879052608081019490945260a0840192909252917fb461cb86c12522dc130fc68e82c7889ec2ad77139953bf116fab36f27768a5439060c090a1610ad661085a600254611d42565b0390a1803411610b99575b508080808560018060a01b03600e5416828215610b90575bf115610b7c57828080808460018060a01b03600f5416828215610b87575bf115610b7c577f0baf2218b55f879cd170b80e18a05568de52b011d16e0edcfe666deec1d369819160e09160095491600a5460405193845260208401526040830152606082015260a06080820152600360a08201526262757960e81b60c0820152a180f35b6040513d84823e3d90fd5b506108fc610b17565b506108fc610af9565b8180610ba6819334611a31565b818115610bbd575b3390f115610b7c578238610ae1565b506108fc610bae565b634e487b7160e01b86526011600452602486fd5b60405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606490fd5b50346102985780600319360112610298576020600b54604051908152f35b503461029857602036600319011261029857600435801515809103610c7957610c6860018060a01b03600654163314611808565b60ff80196008541691161760085580f35b5080fd5b5034610298576020366003190112610298576020610c9c600435611d42565b604051908152f35b50346102985780600319360112610298576020600a54604051908152f35b503461029857604036600319011261029857610ce9610cdf6117d7565b6024359033611d5e565b602060405160018152f35b5034610298576020366003190112610298576020610c9c600435611c07565b50346102985780600319360112610298576006546040516001600160a01b039091168152602090f35b50346102985780600319360112610298576020601054604051908152f35b5034610298576020366003190112610298576020610c9c600435611bb1565b503461029857602036600319011261029857610da060018060a01b03600654163314611808565b600435600d5580f35b50346102985780600319360112610298576040519080600454908160011c91600181168015610eb0575b602084108114610e9c57838652908115610e755750600114610e18575b610e1484610e0081860382611868565b604051918291602083526020830190611796565b0390f35b600481527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b808210610e5b57509091508101602001610e0082610df0565b919260018160209254838588010152019101909291610e42565b60ff191660208087019190915292151560051b85019092019250610e009150839050610df0565b634e487b7160e01b83526022600452602483fd5b92607f1692610dd3565b50346102985780600319360112610298576005546040516001600160a01b039091168152602090f35b5034610298578060031936011261029857602060ff600854166040519015158152f35b50346102985780600319360112610298576020600c54604051908152f35b5034610298578060031936011261029857610f3d611e61565b600580546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610298576020366003190112610298576020906040906001600160a01b03610fa96117d7565b1681528083522054604051908152f35b50346102985780600319360112610298576020600954604051908152f35b5034610298576020366003190112610298576020610c9c600435611acb565b5034610298576020366003190112610298576004356103e88102908082046103e8149015171561055357601054806103e801806103e8116111205761103f9291610319916118a0565b60025490600c549161106b670de0b6b3a76400006110618560011c9386611a3e565b04600b54906118a0565b916110768380611a3e565b916001600160fe1b038116036105da57916110ae6110a96110b3936110a388966003198960011b16611a3e565b906118a0565b611e23565b611a31565b91600119169261110c57506110c9821515611a71565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156110f657602091610c9c91611a51565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b84526011600452602484fd5b503461029857806003193601126102985761115a60018060a01b03600654163314611808565b600080516020611f9d8339815191526080600954600a546040519182526020820152426040820152836060820152a180f35b5034610298578060031936011261029857602060ff60055460a01c166040519015158152f35b503461029857602036600319011261029857601054806103e8036103e881116105ee576111e56103e8926111ed92611a31565b600435611a3e565b0460025490600c5491611210670de0b6b3a76400006110618560011c9386611a3e565b9161121b8380611a3e565b916001600160fe1b038116036105da576110a961124793926110a36110ae936003198860011b16611a3e565b906001191691506110c9821515611a71565b5034610298576020366003190112610298577fb4c5c83aff60e77a0838320a228e9da812a84a9dc369946909d9ef62cb248b4e6004356112a460018060a01b03600654163314611808565b80600c5560095461087f600a5492604051938493846040919493926060820195825260208201520152565b5034610298578060031936011261029857602060ff60065460a01c166040519015158152f35b5034610298578060031936011261029857600f546040516001600160a01b039091168152602090f35b50346102985780600319360112610298576020600d54604051908152f35b50346102985780600319360112610298576020604051670de0b6b3a76400008152f35b5034610298578060031936011261029857602060405160128152f35b503461029857602036600319011261029857600654600435906001600160a01b03166113a8338214611808565b4782116113cf578280809381938282156113c6575bf11561052b5780f35b506108fc6113bd565b60405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420726573657276652062616c616e6365000000006044820152606490fd5b50346102985760603660031901126102985761142e6117d7565b6114366117f2565b6001600160a01b038216808452600160208181526040808720338852909152852054604435949290918201611472575b5050610ce99350611d5e565b8482106114d95780156114c55733156114b1576040868692610ce99852600160205281812060018060a01b033316825260205220910390553880611466565b634a1406b160e11b86526004869052602486fd5b63e602df0560e01b86526004869052602486fd5b6064868684637dc7a0d960e11b835233600452602452604452fd5b50346102985780600319360112610298576020600254604051908152f35b503461029857806003193601126102985761152b6118ad565b80f35b5034610298578060031936011261029857600654611556336001600160a01b03831614611808565b60ff60a01b1916600160a01b17600655600954600a546040805192835260208301919091527f09897bb64196ad96c20605d3138c3db57e1beb240a07d42daeed0565b1d046ad91a180f35b5034610298576040366003190112610298576115bb6117d7565b602435903315611637576001600160a01b03169182156116235760408291338152600160205281812085825260205220556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b81526004819052602490fd5b63e602df0560e01b83526004839052602483fd5b50346102985780600319360112610298576040519080600354908160011c916001811680156116fe575b602084108114610e9c57838652908115610e7557506001146116a157610e1484610e0081860382611868565b600381527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106116e457509091508101602001610e0082610df0565b9192600181602092548385880101520191019092916116cb565b92607f1692611675565b5034610298578060031936011261029857600654611730336001600160a01b03831614611808565b60ff60a01b19166006557fd1677f71a0b86e781379c353f2195da5af2e70e5c7a148f31fcbc45d26997d226040600954600a5482519182526020820152a180f35b905034610c795781600319360112610c7957600e546001600160a01b03168152602090f35b919082519283825260005b8481106117c2575050826000602080949584010152601f8019910116010190565b806020809284010151828286010152016117a1565b600435906001600160a01b03821682036117ed57565b600080fd5b602435906001600160a01b03821682036117ed57565b1561180f57565b60405162461bcd60e51b815260206004820152602b60248201527f4f6e6c79206d61726b657420636f6e74726163742063616e2063616c6c20746860448201526a34b990333ab731ba34b7b760a91b6064820152608490fd5b90601f8019910116810190811067ffffffffffffffff82111761188a57604052565b634e487b7160e01b600052604160045260246000fd5b919082018092116110f657565b60085460ff166119c75760065460405163a65726c560e01b8152906020826004816001600160a01b0385165afa9182156119bb57600092611987575b5060075491824210928315611972575b505081611963575b501561190957565b60405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574206973206578706972656420616e642074726164696e6720697360448201526b081b9bdd08185b1b1bddd95960a21b6064820152608490fd5b60ff915060a01c161538611901565b61197d9293506118a0565b42119038806118f9565b9091506020813d6020116119b3575b816119a360209383611868565b810103126117ed575190386118e9565b3d9150611996565b6040513d6000823e3d90fd5b600d5442106119d257565b60405162461bcd60e51b815260206004820152603160248201527f4d61726b6574206973207265736f6c76656420616e642074726164696e6720696044820152701cc81b9bdd08185b1b1bddd959081e595d607a1b6064820152608490fd5b919082039182116110f657565b818102929181159184041417156110f657565b8115611a5b570490565b634e487b7160e01b600052601260045260246000fd5b15611a7857565b60405162461bcd60e51b815260206004820152602560248201527f44656e6f6d696e61746f72206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608490fd5b60025490818111611b6257611b5f91670de0b6b3a7640000611b3383611b2d671bc16d674ec80000611b2385611b1b611b158683611b0e611b3a9d600b54611a3e565b049a611a31565b86611a3e565b049380611a3e565b04600c54926118a0565b90611a3e565b04906118a0565b611b596010546103e8611b3381611b518487611a3e565b049285611a3e565b90611a31565b90565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e20616d6f756e74206578636565647320746f74616c20737570706c6044820152607960f81b6064820152608490fd5b611bf0611b5f91670de0b6b3a7640000611b3360025492611b2d671bc16d674ec80000611b2385611b1b81611be887600b54611a3e565b049886611a3e565b6110a36010546103e8611b3381611b518487611a3e565b6000600254918015611d3c57600c5492611c31670de0b6b3a76400006110618660011c9387611a3e565b91611c3c8380611a3e565b916001600160fe1b0381160361112057611c68611ccf93926110a3611c99936003198960011b16611a3e565b6110a981604051611c7a604082611868565b600d81526c2234b9b1b934b6b4b730b73a1d60991b6020820152611e8a565b6110ae81604051611cab604082611868565b601281527129b8b93a102234b9b1b934b6b4b730b73a1d60711b6020820152611e8a565b91600119169050611ce1811515611a71565b670de0b6b3a7640000820291808304670de0b6b3a764000014901517156110f657611d0b91611a51565b611b5f81604051611d1d604082611868565b600d81526c2a37b5b2b71020b6b7bab73a1d60991b6020820152611e8a565b50905090565b611b5f90670de0b6b3a7640000611b33600b5492600c54611a3e565b6001600160a01b0316908115611e0d576001600160a01b0316918215611df7576000828152806020526040812054828110611ddd5791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b916064928463391434e360e21b8452600452602452604452fd5b63ec442f0560e01b600052600060045260246000fd5b634b637e8f60e11b600052600060045260246000fd5b8015611e5b57600181018082116110f65760011c90805b8210611e44575090565b611e52826103438184611a51565b60011c91611e3a565b50600090565b6005546001600160a01b03163303611e7557565b63118cdaa760e01b6000523360045260246000fd5b600091908291611ecf6040518092611ebb60208301956309710a9d60e41b8752604060248501526064840190611796565b90604483015203601f198101835282611868565b51906a636f6e736f6c652e6c6f675afa50565b60ff60055460a01c16611ef157565b63d93c066560e01b60005260046000fd5b6001600160a01b0316908115611df757611f1e816002546118a0565b6002557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602060009284845283825260408420818154019055604051908152a3565b60008091604051611ecf81611f8e602082019463104c13eb60e21b8652602060248401526044830190611796565b03601f19810183528261186856fe11db4f8d26695a880a9a2ce8b75c6f8165386916a5143ff81f66886967aabbd0a2646970667358221220a7672a83a473404cfcfe1ab1da3b8054500041d11cf654267256d9eebf9e74f564736f6c634300081a00330000000000000000000000001674035ddbfa10efd75762a3f102883f6390cdfa000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000066d3e6c0000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ee7b9c565bdd141fb2166979e1c1829504da5e6900000000000000000000000078200f6a304e216268bed6fc5289bde077fd75830000000000000000000000000000000000000000000000000000000000000003594553000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035945530000000000000000000000000000000000000000000000000000000000