23 txs
32 calls
constructor
constructor(address priceData_, address reporter_, uint256 anchorToleranceMantissa_, uint256 anchorPeriod_, (address slToken, address underlying, bytes32 symbolHash, uint256 baseUnit, uint8 priceSource, uint256 fixedPrice, address uniswapMarket, address sashimiswapMarket, bool isUniswapReversed, bool isSashimiswapReversed, uint256 uniswapWeight, uint256 sashimiswapWeight, bool isDoubleAnchorTolerance)[] configs)
functions
anchorPeriod
viewfunction anchorPeriod() view returns (uint256)
ethBaseUnit
viewfunction ethBaseUnit() view returns (uint256)
expScale
viewfunction expScale() view returns (uint256)
getTokenConfig
viewfunction getTokenConfig(uint256 i) view returns (tuple)
getTokenConfigBySLToken
viewfunction getTokenConfigBySLToken(address slToken) view returns (tuple)
getTokenConfigBySymbol
viewfunction getTokenConfigBySymbol(string symbol) view returns (tuple)
getTokenConfigBySymbolHash
viewfunction getTokenConfigBySymbolHash(bytes32 symbolHash) view returns (tuple)
getTokenConfigByUnderlying
viewfunction getTokenConfigByUnderlying(address underlying) view returns (tuple)
getUnderlyingPrice
viewfunction getUnderlyingPrice(address slToken) view returns (uint256)
lowerBoundAnchorRatio
viewfunction lowerBoundAnchorRatio() view returns (uint256)
lowerBoundAnchorRatio2
viewfunction lowerBoundAnchorRatio2() view returns (uint256)
maxTokens
viewfunction maxTokens() view returns (uint256)
newSashimiswapObservations
viewfunction newSashimiswapObservations(bytes32) view returns (uint256 timestamp, uint256 acc)
newUniswapObservations
viewfunction newUniswapObservations(bytes32) view returns (uint256 timestamp, uint256 acc)
numTokens
viewfunction numTokens() view returns (uint256)
oldSashimiswapObservations
viewfunction oldSashimiswapObservations(bytes32) view returns (uint256 timestamp, uint256 acc)
oldUniswapObservations
viewfunction oldUniswapObservations(bytes32) view returns (uint256 timestamp, uint256 acc)
price
viewfunction price(string symbol) view returns (uint256)
priceData
viewfunction priceData() view returns (address)
prices
viewfunction prices(bytes32) view returns (uint256)
reporter
viewfunction reporter() view returns (address)
reporterInvalidated
viewfunction reporterInvalidated() view returns (bool)
source
purefunction source(bytes message, bytes signature) pure returns (address)
upperBoundAnchorRatio
viewfunction upperBoundAnchorRatio() view returns (uint256)
upperBoundAnchorRatio2
viewfunction upperBoundAnchorRatio2() view returns (uint256)
invalidateReporter
nonpayablefunction invalidateReporter(bytes message, bytes signature)
postPrices
nonpayablefunction postPrices(bytes[] messages, bytes[] signatures, string[] symbols)
events
AnchorPriceUpdated
event AnchorPriceUpdated(string symbol, uint256 anchorPrice, uint256 oldTimestamp, uint256 newTimestamp)
PriceGuarded
event PriceGuarded(string symbol, uint256 reporter, uint256 anchor)
PriceUpdated
event PriceUpdated(string symbol, uint256 price)
ReporterInvalidated
event ReporterInvalidated(address reporter)
SashimiswapWindowUpdated
event SashimiswapWindowUpdated(bytes32 indexed symbolHash, uint256 oldTimestamp, uint256 newTimestamp, uint256 oldPrice, uint256 newPrice)
UniswapWindowUpdated
event UniswapWindowUpdated(bytes32 indexed symbolHash, uint256 oldTimestamp, uint256 newTimestamp, uint256 oldPrice, uint256 newPrice)
errors
No errors.
creation bytecode
0x610cc06040523480156200001257600080fd5b50604051620054113803806200541183398101604081905262000035916200153d565b80601e81511115620000645760405162461bcd60e51b81526004016200005b9062001726565b60405180910390fd5b805160805260005b8151811015620001d65760008282815181106200008557fe5b6020908102919091018101518254600181810185556000948552938390208251600b9092020180546001600160a01b039283166001600160a01b0319918216178255938301518186018054919093169416939093179055604081015160028084019190915560608201516003840155608082015160048401805493959193909260ff19909116919084908111156200011957fe5b021790555060a0820151600582015560c08201516006820180546001600160a01b039283166001600160a01b03199182161790915560e08401516007840180546101008701516101208801511515600160a81b0260ff60a81b19911515600160a01b0260ff60a01b199590971692909516919091179290921693909317161790556101408201516008820155610160820151600982015561018090910151600a909101805491151560ff199092169190911790556001016200006c565b50620001ed8160006001600160e01b0362000fe816565b5160601b6001600160601b03191660a0526200020b81600162000fe8565b5160601b6001600160601b03191660c0526200022981600262000fe8565b5160601b6001600160601b03191660e0526200024781600362000fe8565b5160601b6001600160601b031916610100526200026681600462000fe8565b5160601b6001600160601b031916610120526200028581600562000fe8565b5160601b6001600160601b03191661014052620002a481600662000fe8565b5160601b6001600160601b03191661016052620002c381600762000fe8565b5160601b6001600160601b03191661018052620002e281600862000fe8565b5160601b6001600160601b0319166101a0526200030181600962000fe8565b5160601b6001600160601b0319166101c0526200032081600a62000fe8565b5160601b6001600160601b0319166101e0526200033f81600b62000fe8565b5160601b6001600160601b031916610200526200035e81600c62000fe8565b5160601b6001600160601b031916610220526200037d81600d62000fe8565b5160601b6001600160601b031916610240526200039c81600e62000fe8565b5160601b6001600160601b03191661026052620003bb81600f62000fe8565b5160601b6001600160601b03191661028052620003da81601062000fe8565b5160601b6001600160601b0319166102a052620003f981601162000fe8565b5160601b6001600160601b0319166102c0526200041881601262000fe8565b5160601b6001600160601b0319166102e0526200043781601362000fe8565b5160601b6001600160601b031916610300526200045681601462000fe8565b5160601b6001600160601b031916610320526200047581601562000fe8565b5160601b6001600160601b031916610340526200049481601662000fe8565b5160601b6001600160601b03191661036052620004b381601762000fe8565b5160601b6001600160601b03191661038052620004d281601862000fe8565b5160601b6001600160601b0319166103a052620004f181601962000fe8565b5160601b6001600160601b0319166103c0526200051081601a62000fe8565b5160601b6001600160601b0319166103e0526200052f81601b62000fe8565b5160601b6001600160601b031916610400526200054e81601c62000fe8565b5160601b6001600160601b031916610420526200056d81601d62000fe8565b5160601b6001600160601b031916610440526200058c81600062000fe8565b6020015160601b6001600160601b03191661046052620005ae81600162000fe8565b6020015160601b6001600160601b03191661048052620005d081600262000fe8565b6020015160601b6001600160601b0319166104a052620005f281600362000fe8565b6020015160601b6001600160601b0319166104c0526200061481600462000fe8565b6020015160601b6001600160601b0319166104e0526200063681600562000fe8565b6020015160601b6001600160601b031916610500526200065881600662000fe8565b6020015160601b6001600160601b031916610520526200067a81600762000fe8565b6020015160601b6001600160601b031916610540526200069c81600862000fe8565b6020015160601b6001600160601b03191661056052620006be81600962000fe8565b6020015160601b6001600160601b03191661058052620006e081600a62000fe8565b6020015160601b6001600160601b0319166105a0526200070281600b62000fe8565b6020015160601b6001600160601b0319166105c0526200072481600c62000fe8565b6020015160601b6001600160601b0319166105e0526200074681600d62000fe8565b6020015160601b6001600160601b031916610600526200076881600e62000fe8565b6020015160601b6001600160601b031916610620526200078a81600f62000fe8565b6020015160601b6001600160601b03191661064052620007ac81601062000fe8565b6020015160601b6001600160601b03191661066052620007ce81601162000fe8565b6020015160601b6001600160601b03191661068052620007f081601262000fe8565b6020015160601b6001600160601b0319166106a0526200081281601362000fe8565b6020015160601b6001600160601b0319166106c0526200083481601462000fe8565b6020015160601b6001600160601b0319166106e0526200085681601562000fe8565b6020015160601b6001600160601b031916610700526200087881601662000fe8565b6020015160601b6001600160601b031916610720526200089a81601762000fe8565b6020015160601b6001600160601b03191661074052620008bc81601862000fe8565b6020015160601b6001600160601b03191661076052620008de81601962000fe8565b6020015160601b6001600160601b031916610780526200090081601a62000fe8565b6020015160601b6001600160601b0319166107a0526200092281601b62000fe8565b6020015160601b6001600160601b0319166107c0526200094481601c62000fe8565b6020015160601b6001600160601b0319166107e0526200096681601d62000fe8565b6020015160601b6001600160601b031916610800526200098881600062000fe8565b6040015161082052620009a68160016001600160e01b0362000fe816565b6040015161084052620009c48160026001600160e01b0362000fe816565b6040015161086052620009e28160036001600160e01b0362000fe816565b604001516108805262000a008160046001600160e01b0362000fe816565b604001516108a05262000a1e8160056001600160e01b0362000fe816565b604001516108c05262000a3c8160066001600160e01b0362000fe816565b604001516108e05262000a5a8160076001600160e01b0362000fe816565b604001516109005262000a788160086001600160e01b0362000fe816565b604001516109205262000a968160096001600160e01b0362000fe816565b604001516109405262000ab481600a6001600160e01b0362000fe816565b604001516109605262000ad281600b6001600160e01b0362000fe816565b604001516109805262000af081600c6001600160e01b0362000fe816565b604001516109a05262000b0e81600d6001600160e01b0362000fe816565b604001516109c05262000b2c81600e6001600160e01b0362000fe816565b604001516109e05262000b4a81600f6001600160e01b0362000fe816565b60400151610a005262000b688160106001600160e01b0362000fe816565b60400151610a205262000b868160116001600160e01b0362000fe816565b60400151610a405262000ba48160126001600160e01b0362000fe816565b60400151610a605262000bc28160136001600160e01b0362000fe816565b60400151610a805262000be08160146001600160e01b0362000fe816565b60400151610aa05262000bfe8160156001600160e01b0362000fe816565b60400151610ac05262000c1c8160166001600160e01b0362000fe816565b60400151610ae05262000c3a8160176001600160e01b0362000fe816565b60400151610b005262000c588160186001600160e01b0362000fe816565b60400151610b205262000c768160196001600160e01b0362000fe816565b60400151610b405262000c9481601a6001600160e01b0362000fe816565b60400151610b605262000cb281601b6001600160e01b0362000fe816565b60400151610b805262000cd081601c6001600160e01b0362000fe816565b60400151610ba05262000cee81601d6001600160e01b0362000fe816565b60400151610bc052506001600160601b0319606086811b8216610be05285901b16610c0052610ca0829052670de0b6b3a764000019831162000d3b5782670de0b6b3a76400000162000d3f565b6000195b610c2052670de0b6b3a7640000831062000d5b57600162000d67565b82670de0b6b3a7640000035b610c4052600062000d838460026001600160e01b036200108a16565b9050670de0b6b3a764000019811162000da75780670de0b6b3a76400000162000dab565b6000195b610c6052670de0b6b3a7640000811062000dc757600162000dd3565b80670de0b6b3a7640000035b610c805260005b825181101562000fdb5762000dee6200139b565b83828151811062000dfb57fe5b60200260200101519050600081606001511162000e2c5760405162461bcd60e51b81526004016200005b90620016ad565b60c081015160028260800151600281111562000e4457fe5b14801562000e5a57506001600160a01b03811615155b1562000fa657604082015160c083015161010084015160009162000e87916001600160e01b03620010d116565b600083815260036020908152604080832042808255600490935292819020828155600193840185905592909201839055905191925083917fe37d39315e3419c0937360f1ac88f2c52ecf67e3b22b367f82047ddb4591904a9162000ef191819086908190620017cd565b60405180910390a260e08401516001600160a01b03161562000f9e57600062000f2a8560e00151866101200151620010d160201b60201c565b600084815260056020908152604080832042808255600690935292819020828155600193840185905592909201839055905191925084917f1408e570dc8fa64171429feed07b85786234eb1b766f022ba5c81622002559039162000f9491819086908190620017cd565b60405180910390a2505b505062000fd0565b6001600160a01b0381161562000fd05760405162461bcd60e51b81526004016200005b9062001787565b505060010162000dda565b505050505050506200183e565b62000ff26200139b565b825182101562001019578282815181106200100957fe5b6020026020010151905062001084565b50604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290526101808101919091525b92915050565b6000826200109b5750600062001084565b82820282848281620010a957fe5b0414620010ca5760405162461bcd60e51b81526004016200005b90620016ef565b9392505050565b6000806000620010ec856200110b60201b62000ba41760201c565b5091509150831562001102579150620010849050565b50905062001084565b60008080620011226001600160e01b036200131716565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b1580156200115e57600080fd5b505afa15801562001173573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001199919062001694565b9250836001600160a01b0316635a3d54936040518163ffffffff1660e01b815260040160206040518083038186803b158015620011d557600080fd5b505afa158015620011ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001210919062001694565b91506000806000866001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156200125157600080fd5b505afa15801562001266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200128c91906200163a565b9250925092508363ffffffff168163ffffffff16146200130d57600081850390508063ffffffff16620012cb84866200132160201b62000d791760201c565b600001516001600160e01b031602870196508063ffffffff16620012fb85856200132160201b62000d791760201c565b516001600160e01b0316029590950194505b5050509193909250565b63ffffffff421690565b6200132b62001404565b6000826001600160701b031611620013575760405162461bcd60e51b81526004016200005b9062001750565b6040805160208101909152806001600160701b038416600160701b600160e01b03607087901b16816200138657fe5b046001600160e01b0316815250905092915050565b604080516101a08101825260008082526020820181905291810182905260608101829052906080820190815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101009091015290565b60408051602081019091526000815290565b805162001084816200180f565b805180151581146200108457600080fd5b8051600381106200108457600080fd5b60006101a080838503121562001458578182fd5b6200146381620017e8565b91505062001472838362001416565b815262001483836020840162001416565b60208201526040820151604082015260608201516060820152620014ab836080840162001434565b608082015260a082015160a0820152620014c98360c0840162001416565b60c0820152620014dd8360e0840162001416565b60e0820152610100620014f38482850162001423565b90820152610120620015088484830162001423565b9082015261014082810151908201526101608083015190820152610180620015338482850162001423565b9082015292915050565b600080600080600060a0868803121562001555578081fd5b855162001562816200180f565b8095505060208087015162001577816200180f565b6040880151606089015160808a015192975090955093506001600160401b0380821115620015a3578384fd5b8189018a601f820112620015b5578485fd5b8051925081831115620015c6578485fd5b620015d58485850201620017e8565b83815284810192508185016101a0808602840187018e1015620015f6578788fd5b8793505b8584101562001626576200160f8e8362001444565b8552938601936001939093019290810190620015fa565b505080955050505050509295509295909350565b6000806000606084860312156200164f578283fd5b83516200165c8162001828565b60208501519093506200166f8162001828565b604085015190925063ffffffff8116811462001689578182fd5b809150509250925092565b600060208284031215620016a6578081fd5b5051919050565b60208082526022908201527f62617365556e6974206d7573742062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b60208082526017908201527f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000604082015260600190565b60208082526010908201526f746f6f206d616e7920636f6e6669677360801b604082015260600190565b60208082526017908201527f4669786564506f696e743a204449565f42595f5a45524f000000000000000000604082015260600190565b60208082526026908201527f6f6e6c79207265706f7274656420707269636573207574696c697a6520616e2060408201526530b731b437b960d11b606082015260800190565b93845260208401929092526040830152606082015260800190565b6040518181016001600160401b03811182821017156200180757600080fd5b604052919050565b6001600160a01b03811681146200182557600080fd5b50565b6001600160701b03811681146200182557600080fd5b60805160a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c6101805160601c6101a05160601c6101c05160601c6101e05160601c6102005160601c6102205160601c6102405160601c6102605160601c6102805160601c6102a05160601c6102c05160601c6102e05160601c6103005160601c6103205160601c6103405160601c6103605160601c6103805160601c6103a05160601c6103c05160601c6103e05160601c6104005160601c6104205160601c6104405160601c6104605160601c6104805160601c6104a05160601c6104c05160601c6104e05160601c6105005160601c6105205160601c6105405160601c6105605160601c6105805160601c6105a05160601c6105c05160601c6105e05160601c6106005160601c6106205160601c6106405160601c6106605160601c6106805160601c6106a05160601c6106c05160601c6106e05160601c6107005160601c6107205160601c6107405160601c6107605160601c6107805160601c6107a05160601c6107c05160601c6107e05160601c6108005160601c610820516108405161086051610880516108a0516108c0516108e05161090051610920516109405161096051610980516109a0516109c0516109e051610a0051610a2051610a4051610a6051610a8051610aa051610ac051610ae051610b0051610b2051610b4051610b6051610b8051610ba051610bc051610be05160601c610c005160601c610c2051610c4051610c6051610c8051610ca0516136fb62001d166000398061096952806129fc5280612b6b52508061057e528061292752508061087a52806128fc525080610856528061297f5250806103eb5280612954525080610372528061076e52806107fe528061240152508061094052806109b752806123d25250806113685250806113385250806113085250806112d85250806112a85250806112785250806112485250806112185250806111e85250806111b85250806111885250806111585250806111285250806110f85250806110c8525080611098525080611068525080611038525080611008525080610fd8525080610fa8525080610f78525080610f48525080610f18525080610ee8525080610eb8525080610e88525080610e58525080610e28525080610df8525080611b1d525080611adb525080611a99525080611a57525080611a155250806119d352508061199152508061194f52508061190d5250806118cb5250806118895250806118475250806118055250806117c352508061178152508061173f5250806116fd5250806116bb5250806116795250806116375250806115f55250806115b352508061157152508061152f5250806114ed5250806114ab5250806114695250806114275250806113e55250806113a35250806122db5250806122995250806122575250806122155250806121d352508061219152508061214f52508061210d5250806120cb525080612089525080612047525080612005525080611fc3525080611f81525080611f3f525080611efd525080611ebb525080611e79525080611e37525080611df5525080611db3525080611d71525080611d2f525080611ced525080611cab525080611c69525080611c27525080611be5525080611ba3525080611b615250806105aa528061083252506136fb6000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638a003888116100f9578063e61a5fe411610097578063ecc1e98411610071578063ecc1e98414610324578063fc57d4df14610337578063fe2c61981461034a578063fee4075b1461035d576101a9565b8063e61a5fe41461030c578063e831574214610314578063e9206d781461031c576101a9565b806392b84357116100d357806392b84357146102e9578063b8c2b50f146102f1578063d1b353b414610296578063e37949e8146102f9576101a9565b80638a003888146102b95780638aba91b4146102cc5780638e499bcf146102e1576101a9565b806360846bc61161016657806369a446921161014057806369a446921461028357806369aa3ac6146102965780636b1873d01461029e5780638848c0ab146102b1576101a9565b806360846bc61461023a578063651ed7881461024d57806367b94b9c14610262576101a9565b8063010ec441146101ae5780631a125204146101cc57806324105209146101ec578063276c2cba14610201578063482a6193146102145780634da2194214610227575b600080fd5b6101b6610370565b6040516101c3919061319f565b60405180910390f35b6101df6101da366004612ebd565b610394565b6040516101c391906134bd565b6101f46103e9565b6040516101c3919061358e565b6101df61020f366004612f73565b61040d565b6101b6610222366004612f12565b61044a565b6101df610235366004612def565b6104f7565b6101f4610248366004612ebd565b61050a565b61025561051c565b6040516101c391906131d7565b610275610270366004612ebd565b610525565b6040516101c3929190613597565b610275610291366004612ebd565b61053e565b6101f4610557565b6102756102ac366004612ebd565b610563565b6101f461057c565b6101df6102c7366004612ebd565b6105a0565b6102df6102da366004612f12565b6106ea565b005b6101f4610830565b6101f4610854565b6101f4610878565b6101df610307366004612def565b61089c565b6101b661093e565b6101f4610962565b6101f4610967565b6102df610332366004612e27565b61098b565b6101f4610345366004612def565b610b25565b6101f4610358366004612f73565b610b6d565b61027561036b366004612ebd565b610b8b565b7f000000000000000000000000000000000000000000000000000000000000000081565b61039c612c71565b60006103a783610df4565b905060001981146103c3576103bb816105a0565b9150506103e4565b60405162461bcd60e51b81526004016103db906132d4565b60405180910390fd5b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610415612c71565b610444826040516020016104299190613131565b60405160208183030381529060405280519060200120610394565b92915050565b600080600080848060200190518101906104649190612ed5565b92509250925060008680519060200120604051602001610484919061314d565b604051602081830303815290604052805190602001209050600181838686604051600081526020016040526040516104bf94939291906131e2565b6020604051602081039080840390855afa1580156104e1573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b6104ff612c71565b60006103a78361139f565b60016020526000908152604090205481565b60025460ff1681565b6003602052600090815260409020805460019091015482565b6005602052600090815260409020805460019091015482565b670de0b6b3a764000081565b6004602052600090815260409020805460019091015482565b7f000000000000000000000000000000000000000000000000000000000000000081565b6105a8612c71565b7f000000000000000000000000000000000000000000000000000000000000000082106105e75760405162461bcd60e51b81526004016103db906132d4565b600082815481106105f457fe5b6000918252602091829020604080516101a081018252600b90930290910180546001600160a01b0390811684526001820154169383019390935260028084015491830191909152600383015460608301526004830154919291608084019160ff9091169081111561066157fe5b600281111561066c57fe5b81526005820154602082015260068201546001600160a01b0390811660408301526007830154908116606083015260ff600160a01b8204811615156080840152600160a81b9091048116151560a0830152600883015460c0830152600983015460e0830152600a909201549091161515610100909101529050919050565b6060828060200190518101906107009190612fe1565b5090506040516020016107129061317e565b60405160208183030381529060405280519060200120816040516020016107399190613131565b604051602081830303815290604052805190602001201461076c5760405162461bcd60e51b81526004016103db906133c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107a0848461044a565b6001600160a01b0316146107c65760405162461bcd60e51b81526004016103db90613304565b6002805460ff191660011790556040517f98a13f7b181a3a1f99c871e7a3507d4a037d386d157279f978e0d555ae9fe74d90610823907f00000000000000000000000000000000000000000000000000000000000000009061319f565b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108a4612c71565b60006108af83611b5d565b905060001981146108c3576103bb816105a0565b610937836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ff57600080fd5b505afa158015610913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102359190612e0b565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601e81565b7f000000000000000000000000000000000000000000000000000000000000000081565b8483146109aa5760405162461bcd60e51b81526004016103db906133f7565b60005b85811015610a9e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166338636e9a8888848181106109f057fe5b9050602002810190610a0291906135c0565b888886818110610a0e57fe5b9050602002810190610a2091906135c0565b6040518563ffffffff1660e01b8152600401610a3f9493929190613200565b600060405180830381600087803b158015610a5957600080fd5b505af1158015610a6d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a959190810190612fae565b506001016109ad565b506000610aa961231b565b905060005b82811015610b1b57610b13848483818110610ac557fe5b9050602002810190610ad79190613607565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250612361915050565b600101610aae565b5050505050505050565b6000610b2f612c71565b610b388361089c565b90508060600151610b5e6c0c9f2c9cd04674edea40000000610b59846125cf565b6126bf565b81610b6557fe5b049392505050565b6000610b77612c71565b610b808361040d565b9050610937816125cf565b6006602052600090815260409020805460019091015482565b6000806000610bb16126f9565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c24919061307a565b9250836001600160a01b0316635a3d54936040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5f57600080fd5b505afa158015610c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c97919061307a565b91506000806000866001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610cd757600080fd5b505afa158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f9190613031565b9250925092508363ffffffff168163ffffffff1614610d6f5780840363ffffffff8116610d3c8486610d79565b516001600160e01b031602969096019563ffffffff8116610d5d8585610d79565b516001600160e01b0316029590950194505b5050509193909250565b610d81612cda565b6000826001600160701b031611610daa5760405162461bcd60e51b81526004016103db90613486565b6040805160208101909152806001600160701b0384166dffffffffffffffffffffffffffff60701b607087901b1681610ddf57fe5b046001600160e01b0316815250905092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000821415610e26575060006103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415610e56575060016103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415610e86575060026103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415610eb6575060036103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415610ee6575060046103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415610f16575060056103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415610f46575060066103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415610f76575060076103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415610fa6575060086103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415610fd6575060096103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156110065750600a6103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156110365750600b6103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156110665750600c6103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156110965750600d6103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156110c65750600e6103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156110f65750600f6103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415611126575060106103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415611156575060116103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415611186575060126103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156111b6575060136103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156111e6575060146103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415611216575060156103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415611246575060166103e4565b7f0000000000000000000000000000000000000000000000000000000000000000821415611276575060176103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156112a6575060186103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156112d6575060196103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156113065750601a6103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156113365750601b6103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156113665750601c6103e4565b7f00000000000000000000000000000000000000000000000000000000000000008214156113965750601d6103e4565b50600019919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156113e3575060006103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611425575060016103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611467575060026103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156114a9575060036103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156114eb575060046103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561152d575060056103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561156f575060066103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156115b1575060076103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156115f3575060086103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611635575060096103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156116775750600a6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156116b95750600b6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156116fb5750600c6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561173d5750600d6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561177f5750600e6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156117c15750600f6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611803575060106103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611845575060116103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611887575060126103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156118c9575060136103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561190b575060146103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561194d575060156103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561198f575060166103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156119d1575060176103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611a13575060186103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611a55575060196103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611a975750601a6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611ad95750601b6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611b1b5750601c6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156113965750601d6103e4565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611ba1575060006103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611be3575060016103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611c25575060026103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611c67575060036103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611ca9575060046103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611ceb575060056103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611d2d575060066103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611d6f575060076103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611db1575060086103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611df3575060096103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611e355750600a6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611e775750600b6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611eb95750600c6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611efb5750600d6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611f3d5750600e6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611f7f5750600f6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611fc1575060106103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415612003575060116103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415612045575060126103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415612087575060136103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156120c9575060146103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561210b575060156103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561214d575060166103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561218f575060176103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156121d1575060186103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415612213575060196103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156122555750601a6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156122975750601b6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156122d95750601c6103e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156113965750601d6103e4565b600061235c6040518060400160405280600381526020016221272160e91b81525061234e60405160200161042990613190565b670de0b6b3a7640000612703565b905090565b612369612c71565b6123728361040d565b905060028160800151600281111561238657fe5b146123a35760405162461bcd60e51b81526004016103db90613354565b6000836040516020016123b69190613131565b60405160208183030381529060405280519060200120905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166376977a3a7f0000000000000000000000000000000000000000000000000000000000000000876040518363ffffffff1660e01b815260040161243e9291906131b3565b60206040518083038186803b15801561245657600080fd5b505afa15801561246a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248e9190613092565b67ffffffffffffffff16905060006040516020016124ab90613190565b604051602081830303815290604052805190602001208314156124cf5750836124dd565b6124da868587612703565b90505b60025460ff16156125385760008381526001602052604090819020829055517f159e83f4712ba2552e68be9d848e49bf6dd35c24f19564ffd523b6549450a2f49061252b9088908490613227565b60405180910390a16125c7565b6125438282866128ae565b1561258b5760008381526001602052604090819020839055517f159e83f4712ba2552e68be9d848e49bf6dd35c24f19564ffd523b6549450a2f49061252b9088908590613227565b7f90756d4c8646a4591078abac0e4e32dfa8437921729e36d51b88b659d265bfde8683836040516125be93929190613249565b60405180910390a15b505050505050565b60006002826080015160028111156125e357fe5b141561260157506040808201516000908152600160205220546103e4565b60018260800151600281111561261357fe5b1415612624575060a08101516103e4565b60008260800151600281111561263657fe5b14156103e45760006001600060405160200161265190613190565b604051602081830303815290604052805190602001208152602001908152602001600020549050600081116126985760405162461bcd60e51b81526004016103db9061343a565b670de0b6b3a76400006126af828560a001516126bf565b816126b657fe5b049150506103e4565b6000826126ce57506000610444565b828202828482816126db57fe5b04146109375760405162461bcd60e51b81526004016103db9061329d565b63ffffffff421690565b60c08201516000906001600160a01b031661272057506000610937565b600080600061273d86604001518760c001518861010001516129b1565b9250925092506000612750848484612ab8565b60e08801519091506001600160a01b0316156127d05760008060006127838a604001518b60e001518c6101200151612b20565b9250925092506000612796848484612ab8565b905080156127cb576127106127b0828d61016001516126bf565b6127bf878e61014001516126bf565b01816127c757fe5b0494505b505050505b60006127dc82886126bf565b905060008861010001511561280057886060015182816127f857fe5b04905061282b565b670de0b6b3a764000080612818848c606001516126bf565b8161281f57fe5b048161282757fe5b0490505b60405160200161283a90613190565b60405160208183030381529060405280519060200120896040015114156128645764e8d4a5100090045b7ff63d078e0de851897107641e96093a59e5ddc3c25e7b85a2585e3eba9e774a7b8a828642604051612899949392919061326e565b60405180910390a19998505050505050505050565b600083156129a75760c08201516001600160a01b03166128d057506001610937565b6000846128e585670de0b6b3a76400006126bf565b816128ec57fe5b04905082610180015115612952577f0000000000000000000000000000000000000000000000000000000000000000811115801561294a57507f00000000000000000000000000000000000000000000000000000000000000008110155b915050610937565b7f0000000000000000000000000000000000000000000000000000000000000000811115801561294a57507f000000000000000000000000000000000000000000000000000000000000000011159050610937565b5060009392505050565b6000806000806129c18686612c27565b90506129cb612cec565b50600087815260046020908152604091829020825180840190935280548084526001909101549183019190915242037f00000000000000000000000000000000000000000000000000000000000000008110612a9357815160008a815260036020908152604080832093845581860180516001958601556004909252918290204280825593018690558451905191518c937fe37d39315e3419c0937360f1ac88f2c52ecf67e3b22b367f82047ddb4591904a93612a8a939289906135a5565b60405180910390a25b5050600096875260036020526040909620600181015490549697909695509350505050565b6000814211612ad95760405162461bcd60e51b81526004016103db9061338b565b42829003612ae5612cda565b60405180602001604052808387890381612afb57fe5b046001600160e01b031681525090506000612b1582612c59565b979650505050505050565b600080600080612b308686612c27565b9050612b3a612cec565b50600087815260066020908152604091829020825180840190935280548084526001909101549183019190915242037f00000000000000000000000000000000000000000000000000000000000000008110612c0257815160008a815260056020908152604080832093845581860180516001958601556006909252918290204280825593018690558451905191518c937f1408e570dc8fa64171429feed07b85786234eb1b766f022ba5c816220025590393612bf9939289906135a5565b60405180910390a25b5050600096875260056020526040909620600181015490549697909695509350505050565b6000806000612c3585610ba4565b50915091508315612c495791506104449050565b509050610444565b505092915050565b516612725dd1d243ab6001600160e01b039091160490565b604080516101a08101825260008082526020820181905291810182905260608101829052906080820190815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101009091015290565b60408051602081019091526000815290565b604051806040016040528060008152602001600081525090565b60008083601f840112612d17578182fd5b50813567ffffffffffffffff811115612d2e578182fd5b6020830191508360208083028501011115612d4857600080fd5b9250929050565b600082601f830112612d5f578081fd5b8135612d72612d6d82613644565b61361d565b9150808252836020828501011115612d8957600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612db2578081fd5b8151612dc0612d6d82613644565b9150808252836020828501011115612dd757600080fd5b612de8816020840160208601613668565b5092915050565b600060208284031215612e00578081fd5b813561093781613698565b600060208284031215612e1c578081fd5b815161093781613698565b60008060008060008060608789031215612e3f578182fd5b863567ffffffffffffffff80821115612e56578384fd5b612e628a838b01612d06565b90985096506020890135915080821115612e7a578384fd5b612e868a838b01612d06565b90965094506040890135915080821115612e9e578384fd5b50612eab89828a01612d06565b979a9699509497509295939492505050565b600060208284031215612ece578081fd5b5035919050565b600080600060608486031215612ee9578283fd5b8351925060208401519150604084015160ff81168114612f07578182fd5b809150509250925092565b60008060408385031215612f24578182fd5b823567ffffffffffffffff80821115612f3b578384fd5b612f4786838701612d4f565b93506020850135915080821115612f5c578283fd5b50612f6985828601612d4f565b9150509250929050565b600060208284031215612f84578081fd5b813567ffffffffffffffff811115612f9a578182fd5b612fa684828501612d4f565b949350505050565b600060208284031215612fbf578081fd5b815167ffffffffffffffff811115612fd5578182fd5b612fa684828501612da2565b60008060408385031215612ff3578182fd5b825167ffffffffffffffff811115613009578283fd5b61301585828601612da2565b925050602083015161302681613698565b809150509250929050565b600080600060608486031215613045578283fd5b8351613050816136b0565b6020850151909350613061816136b0565b604085015190925063ffffffff81168114612f07578182fd5b60006020828403121561308b578081fd5b5051919050565b6000602082840312156130a3578081fd5b815167ffffffffffffffff81168114610937578182fd5b6001600160a01b03169052565b15159052565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6003811061310157fe5b9052565b6000815180845261311d816020860160208601613668565b601f01601f19169290920160200192915050565b60008251613143818460208701613668565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b65726f7461746560d01b815260060190565b6221272160e91b815260030190565b6001600160a01b0391909116815260200190565b6001600160a01b0383168152604060208201819052600090612fa690830184613105565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6000604082526132146040830186886130cd565b8281036020840152612b158185876130cd565b60006040825261323a6040830185613105565b90508260208301529392505050565b60006060825261325c6060830186613105565b60208301949094525060400152919050565b6000608082526132816080830187613105565b6020830195909552506040810192909252606090910152919050565b60208082526017908201527f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000604082015260600190565b6020808252601690820152751d1bdad95b8818dbdb999a59c81b9bdd08199bdd5b9960521b604082015260600190565b60208082526030908201527f696e76616c69646174696f6e206d657373616765206d75737420636f6d65206660408201526f3937b6903a3432903932b837b93a32b960811b606082015260800190565b6020808252601f908201527f6f6e6c79207265706f72746572207072696365732067657420706f7374656400604082015260600190565b6020808252601a908201527f6e6f77206d75737420636f6d65206166746572206265666f7265000000000000604082015260600190565b6020808252818101527f696e76616c6964206d657373616765206d7573742062652027726f7461746527604082015260600190565b60208082526023908201527f6d6573736167657320616e64207369676e617475726573206d75737420626520604082015262313a3160e81b606082015260800190565b6020808252602c908201527f424e42207072696365206e6f74207365742c2063616e6e6f7420636f6e76657260408201526b7420746f20646f6c6c61727360a01b606082015260800190565b60208082526017908201527f4669786564506f696e743a204449565f42595f5a45524f000000000000000000604082015260600190565b60006101a0820190506134d18284516130ba565b60208301516134e360208401826130ba565b506040830151604083015260608301516060830152608083015161350a60808401826130f7565b5060a083015160a083015260c083015161352760c08401826130ba565b5060e083015161353a60e08401826130ba565b506101008084015161354e828501826130c7565b505061012080840151613563828501826130c7565b50506101408381015190830152610160808401519083015261018080840151612c51828501826130c7565b90815260200190565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6000808335601e198436030181126135d6578283fd5b8084018035925067ffffffffffffffff8311156135f1578384fd5b60200192505036819003821315612d4857600080fd5b6000808335601e198436030181126135d6578182fd5b60405181810167ffffffffffffffff8111828210171561363c57600080fd5b604052919050565b600067ffffffffffffffff82111561365a578081fd5b50601f01601f191660200190565b60005b8381101561368357818101518382015260200161366b565b83811115613692576000848401525b50505050565b6001600160a01b03811681146136ad57600080fd5b50565b6001600160701b03811681146136ad57600080fdfea264697066735822122001f850b0a420bc835b6d9f8915f6ab09945a046f40529d2da09071f8bb1f2df164736f6c634300060a003300000000000000000000000084ee348617563944ffd4a23843e086a7dc0224f30000000000000000000000001919c581373b161cf6a04a6da86b8f80c8e8909300000000000000000000000000000000000000000000000002c68af0bb140000000000000000000000000000000000000000000000000000000000000000070800000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001c3390c139e461f8075dcbf43c98b31d9e44894e0000000000000000000000001af3f329e8be154074d8769d1ffa4ee058b1dbc3a5e92f3efb6826155f1f728e162af9d7cda33a574a1153b58f03ea01cc37e5680000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000319c4979044e7108d0b5656a13fea5dfc26e9c0b000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d5654c512ac779647672b8d02e2fe2dc10f79bbf19f719d887221696215fd24e9f10000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087dcfe452b631f670e76dd25593363ea9ef4cc1100000000000000000000000055d398326f99059ff775485246999027b31979558b1a1d9c2b109e527c9134b25b1a1833b16b6594f92daa9f6d9b7a6024bce9d00000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006cb9d7ecf84b0d3e7704ed91046e16f9d45c00fa0000000000000000000000002170ed0880ac9a755fd29b2688956bd959f933f8aaaebeba3810b1e6b70781f14b2d72c1cb89c0b2b320c43bb67ff79f562f5ff40000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d8929d04b60af4fb9b58713ebcf18765ade422000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5ef94c09439fb1018c1f51029be7df96a833a840000000000000000000000007130d2a12b9bcbfae4f2634d864a1ee1ce3ead9ca8f4e2415d2cbdfc918e4c626eb18bd2b69c91e0b198be3316062051fea519970000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000007561eee90e24f3b348e1087a005f78b4c84535240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006df484f552115fa7f54be4a6d7ae2999cadb2324000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c3ed03c38e59dc60c7b69c2a4bf68f9214acd953252b5a90e8f5f59583e9bc3ae0000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b96b92314c44b159149f7e0303511fb2fc4774f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000