POL Price: $0.0771 (+2.68%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading
Source Code Verified Exact Match

Contract Name

ThalesAMM

Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled
Yes with 200 runs
Other Settings
default evmVersion
License
-NA-
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"market","type":"address"},{"indexed":false,"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sUSDPaid","type":"uint256"},{"indexed":false,"internalType":"address","name":"susd","type":"address"},{"indexed":false,"internalType":"address","name":"asset","type":"address"}],"name":"BoughtFromAmm","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"sUSDPaid","type":"uint256"},{"indexed":false,"internalType":"bool","name":"inTheMoney","type":"bool"}],"name":"BoughtOptionType","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sUSDPaid","type":"uint256"}],"name":"BoughtWithDiscount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"PauseChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"refferer","type":"address"},{"indexed":false,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"volume","type":"uint256"}],"name":"ReferrerPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"asset","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_cap","type":"uint256"}],"name":"SetCapPerAsset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"asset","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_impliedVolatility","type":"uint256"}],"name":"SetImpliedVolatilityPerAsset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_spread","type":"uint256"}],"name":"SetMaxSpread","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"capPerMarket","type":"uint256"}],"name":"SetMinMaxSupportedPriceCapPerMarket","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_spread","type":"uint256"}],"name":"SetMinSpread","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_minimalTimeLeftToMaturity","type":"uint256"}],"name":"SetMinimalTimeLeftToMaturity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_manager","type":"address"}],"name":"SetPositionalMarketManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_priceFeed","type":"address"}],"name":"SetPriceFeed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sUSD","type":"address"}],"name":"SetSUSD","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_safeBox","type":"address"}],"name":"SetSafeBox","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_safeBoxImpact","type":"uint256"}],"name":"SetSafeBoxImpact","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"address","name":"market","type":"address"},{"indexed":false,"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sUSDPaid","type":"uint256"},{"indexed":false,"internalType":"address","name":"susd","type":"address"},{"indexed":false,"internalType":"address","name":"asset","type":"address"}],"name":"SoldToAMM","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"}],"name":"availableToBuyFromAMM","outputs":[{"internalType":"uint256","name":"_available","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"}],"name":"availableToSellToAMM","outputs":[{"internalType":"uint256","name":"_available","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"expectedPayout","type":"uint256"},{"internalType":"uint256","name":"additionalSlippage","type":"uint256"}],"name":"buyFromAMM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"expectedPayout","type":"uint256"},{"internalType":"uint256","name":"additionalSlippage","type":"uint256"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"buyFromAMMWithDifferentCollateralAndReferrer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"expectedPayout","type":"uint256"},{"internalType":"uint256","name":"additionalSlippage","type":"uint256"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"buyFromAMMWithReferrer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyFromAmmQuote","outputs":[{"internalType":"uint256","name":"_quote","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"collateral","type":"address"}],"name":"buyFromAmmQuoteWithDifferentCollateral","outputs":[{"internalType":"uint256","name":"collateralQuote","type":"uint256"},{"internalType":"uint256","name":"sUSDToPay","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyPriceImpact","outputs":[{"internalType":"int256","name":"_priceImpact","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"}],"name":"canExerciseMaturedMarket","outputs":[{"internalType":"bool","name":"_canExercise","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"capPerMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"curveOnrampEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"curveSUSD","outputs":[{"internalType":"contract ICurveSUSD","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dai","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"}],"name":"exerciseMaturedMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"asset","type":"bytes32"}],"name":"getCapPerAsset","outputs":[{"internalType":"uint256","name":"_cap","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"impliedVolatilityPerAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initNonReentrant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract IPriceFeed","name":"_priceFeed","type":"address"},{"internalType":"contract IERC20Upgradeable","name":"_sUSD","type":"address"},{"internalType":"uint256","name":"_capPerMarket","type":"uint256"},{"internalType":"address","name":"_deciMath","type":"address"},{"internalType":"uint256","name":"_min_spread","type":"uint256"},{"internalType":"uint256","name":"_max_spread","type":"uint256"},{"internalType":"uint256","name":"_minimalTimeLeftToMaturity","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"}],"name":"isMarketInAMMTrading","outputs":[{"internalType":"bool","name":"isTrading","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPauseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAllowedPegSlippagePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupportedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_spread","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSupportedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"min_spread","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"min_spreadPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimalTimeLeftToMaturity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"}],"name":"price","outputs":[{"internalType":"uint256","name":"priceToReturn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeed","outputs":[{"internalType":"contract IPriceFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referrals","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referrerFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"retrieveSUSDAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sUSD","outputs":[{"internalType":"contract IERC20Upgradeable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"safeBox","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"safeBoxFeePerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"safeBoxImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellPriceImpact","outputs":[{"internalType":"uint256","name":"_impact","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"expectedPayout","type":"uint256"},{"internalType":"uint256","name":"additionalSlippage","type":"uint256"}],"name":"sellToAMM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum ThalesAMM.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellToAmmQuote","outputs":[{"internalType":"uint256","name":"_quote","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IThalesAMMUtils","name":"_ammUtils","type":"address"}],"name":"setAmmUtils","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"asset","type":"bytes32"},{"internalType":"uint256","name":"_cap","type":"uint256"}],"name":"setCapPerAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_curveSUSD","type":"address"},{"internalType":"address","name":"_dai","type":"address"},{"internalType":"address","name":"_usdc","type":"address"},{"internalType":"address","name":"_usdt","type":"address"},{"internalType":"bool","name":"_curveOnrampEnabled","type":"bool"},{"internalType":"uint256","name":"_maxAllowedPegSlippagePercentage","type":"uint256"}],"name":"setCurveSUSD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"asset","type":"bytes32"},{"internalType":"uint256","name":"_impliedVolatility","type":"uint256"}],"name":"setImpliedVolatilityPerAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minspread","type":"uint256"},{"internalType":"uint256","name":"_maxspread","type":"uint256"}],"name":"setMinMaxSpread","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minSupportedPrice","type":"uint256"},{"internalType":"uint256","name":"_maxSupportedPrice","type":"uint256"},{"internalType":"uint256","name":"_capPerMarket","type":"uint256"}],"name":"setMinMaxSupportedPriceAndCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setMinSpreadPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimalTimeLeftToMaturity","type":"uint256"}],"name":"setMinimalTimeLeftToMaturity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"setPositionalMarketManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPriceFeed","name":"_priceFeed","type":"address"},{"internalType":"contract IERC20Upgradeable","name":"_sUSD","type":"address"}],"name":"setPriceFeedAndSUSD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_safeBox","type":"address"},{"internalType":"uint256","name":"_safeBoxImpact","type":"uint256"}],"name":"setSafeBoxData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setSafeBoxFeePerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IStakingThales","name":"_stakingThales","type":"address"},{"internalType":"address","name":"_referrals","type":"address"},{"internalType":"uint256","name":"_referrerFee","type":"uint256"}],"name":"setStakingThalesAndReferrals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setWhitelistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"spentOnMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingThales","outputs":[{"internalType":"contract IStakingThales","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proxyAddress","type":"address"}],"name":"transferOwnershipAtInit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
608060405234801561001057600080fd5b50615b7580620000216000396000f3fe608060405234801561001057600080fd5b50600436106103f15760003560e01c80638875eb8411610215578063cafb3ca211610125578063ebc79772116100b8578063f502b00311610087578063f502b003146108af578063f8debeb7146108cf578063fb91d41c146108e2578063fc1ed857146108eb578063fd8a8cc6146108fe57600080fd5b8063ebc797721461086e578063efb1fe3514610876578063efc1525114610889578063f4b9fa751461089c57600080fd5b8063d3dc7539116100f4578063d3dc753914610821578063d4a2641b14610834578063d69fb6681461085c578063df8974d01461086557600080fd5b8063cafb3ca2146107d5578063d1624924146107e8578063d333ca19146107fb578063d3c4297c1461080e57600080fd5b8063ad18f0da116101a8578063c2783f9211610177578063c2783f9214610769578063c3b83f5f1461077c578063c4dc27d71461078f578063c8f0b4ec146107af578063ca1d578e146107c257600080fd5b8063ad18f0da1461071d578063bbdf88ce14610730578063bf46c0b414610743578063bf996ae31461075657600080fd5b80639324cac7116101e45780639324cac7146106d15780639f916c9f146106e4578063a273ecf1146106f7578063a5bf660d1461070a57600080fd5b80638875eb84146106935780638da5cb5b146106a657806391b4ded9146106bf578063931b2040146106c857600080fd5b8063481c6a75116103105780636aaa81b6116102a3578063741bef1a11610272578063741bef1a1461063a57806379ba5097146106525780637b337a361461065a578063826153491461066d578063851702091461068057600080fd5b80636aaa81b6146106025780636cc5a6ff1461060b5780636e88a7bd1461061e5780636ed033f81461062757600080fd5b80635727a0f3116102df5780635727a0f3146105af5780635c975abb146105c25780635ef85b26146105cf57806365f56772146105e257600080fd5b8063481c6a751461056357806348663e951461057657806351b9181f1461058957806353a47bb71461059c57600080fd5b8063270e13ef11610388578063316425c311610357578063316425c3146105215780633443b3261461052a5780633ce1108d1461053d5780633e413bee1461055057600080fd5b8063270e13ef146104ba5780632909f51a146104cd5780632972e8ab146104d65780632f48ab7d146104f657600080fd5b806316c38b3c116103c457806316c38b3c1461047757806319b844a61461048a5780631c37d04b146104935780631fbb38e8146104a657600080fd5b806306c933d8146103f65780630f13aae81461042e57806313af40351461044f5780631627540c14610464575b600080fd5b61041961040436600461527f565b60146020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61044161043c366004615446565b610911565b604051908152602001610425565b61046261045d36600461527f565b61095b565b005b61046261047236600461527f565b610a9b565b61046261048536600461560f565b610af1565b61044160125481565b6104416104a1366004615446565b610b67565b601a5461041990600160a01b900460ff1681565b6104416104c8366004615446565b610b94565b610441601b5481565b6104416104e436600461527f565b601e6020526000908152604090205481565b601954610509906001600160a01b031681565b6040516001600160a01b039091168152602001610425565b610441600a5481565b6104626105383660046155fd565b610bed565b61044161054b3660046154d3565b610c11565b601854610509906001600160a01b031681565b600754610509906001600160a01b031681565b600e54610509906001600160a01b031681565b61046261059736600461527f565b611045565b600154610509906001600160a01b031681565b6104196105bd36600461527f565b611111565b6003546104199060ff1681565b6104626105dd36600461565f565b6112c1565b6104416105f036600461527f565b601d6020526000908152604090205481565b61044160095481565b610441610619366004615585565b6114e7565b61044160165481565b610441610635366004615412565b611866565b6005546105099061010090046001600160a01b031681565b610462611b0e565b61046261066836600461535a565b611c0b565b61046261067b36600461565f565b611c3e565b61046261068e366004615647565b611cb3565b6104416106a13660046154d3565b611cf0565b600054610509906201000090046001600160a01b031681565b61044160025481565b61044160115481565b600654610509906001600160a01b031681565b6104416106f2366004615521565b611d64565b6104626107053660046155fd565b611e58565b601754610509906001600160a01b031681565b61046261072b366004615392565b611e7c565b61046261073e3660046156db565b611fa1565b610441610751366004615446565b612050565b61046261076436600461527f565b612165565b610441610777366004615412565b6122e0565b61046261078a36600461527f565b612326565b61044161079d36600461527f565b600d6020526000908152604090205481565b6104626107bd3660046157a2565b61243f565b6104196107d036600461527f565b61249c565b6104626107e3366004615708565b612736565b6104626107f636600461565f565b612773565b61046261080936600461527f565b6127c3565b61046261081c3660046152e2565b6127ed565b601554610509906001600160a01b031681565b610847610842366004615483565b6129f1565b60408051928352602083019190915201610425565b610441600f5481565b610441600c5481565b610462612b0a565b6104626108843660046152b7565b612b68565b610441610897366004615412565b612b87565b601a54610509906001600160a01b031681565b6104416108bd366004615647565b600b6020526000908152604090205481565b6104416108dd366004615647565b612bd4565b61044160085481565b6104626108f93660046155fd565b612c8b565b601054610509906001600160a01b031681565b60008061091e8585611866565b9050601254811161092f5780610933565b6012545b90506000610942868684612ce3565b90506109518686868585612f5a565b9695505050505050565b6001600160a01b0381166109b65760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600154600160a01b900460ff1615610a225760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b60648201526084016109ad565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b03831662010000810262010000600160b01b03199092169190911782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91015b60405180910390a150565b610aa3613086565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610a90565b610af9613086565b60035460ff1615158115151415610b0d5750565b6003805460ff191682151590811790915560ff1615610b2b57426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610a90565b50565b600080610b7485856122e0565b9050808311610b8c57610b8985858584613100565b91505b509392505050565b600080610ba18585611866565b90506000610bb782670de0b6b3a7640000615a93565b90508115610be4576011548210610bce5781610bd2565b6011545b91506109518686868585600f54613185565b50509392505050565b610bf5613086565b6001600160a01b039091166000908152601e6020526040902055565b6000600160046000828254610c269190615958565b909155505060045460035460ff1615610c515760405162461bcd60e51b81526004016109ad90615883565b610c5a87611111565b610ca65760405162461bcd60e51b815260206004820152601e60248201527f4d61726b6574206973206e6f7420696e2054726164696e67207068617365000060448201526064016109ad565b6000610cb28888611866565b90506012548111610cc35780610cc7565b6012545b90506000610cd6898984612ce3565b9050600081118015610ce85750808711155b610d2c5760405162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b4103634b8bab4b234ba3c9760591b60448201526064016109ad565b6000610d3b8a8a8a8686612f5a565b9050610d4f86670de0b6b3a7640000615958565b81610d62670de0b6b3a76400008a615a35565b610d6c919061599e565b1115610dae5760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b60448201526064016109ad565b6000610dba8b8b613414565b9050610dd16001600160a01b03821633308c6134bb565b6007546040516314edbee160e31b81523060048201526000916001600160a01b039081169163edc892e1918f169063a76df7089060240160206040518083038186803b158015610e2057600080fd5b505afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190615767565b6040518263ffffffff1660e01b8152600401610e7691815260200190565b60206040518083038186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec69190615767565b90508015610f22578b6001600160a01b031663f5571beb6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b505050505b600654610f39906001600160a01b0316338561352c565b6010546001600160a01b031615610faf576010546040516302c7739b60e01b8152336004820152602481018590526001600160a01b03909116906302c7739b90604401600060405180830381600087803b158015610f9657600080fd5b505af1158015610faa573d6000803e3d6000fd5b505050505b610fbb8c848333613561565b7f1d6ff70c632edb1e6aba7fbc0148db68c8392e30f9dfaadae2543a2543757cf6338d8d8d87600660009054906101000a90046001600160a01b03168860405161100b97969594939291906157e9565b60405180910390a150909450505050600454811461103b5760405162461bcd60e51b81526004016109ad906158e0565b5095945050505050565b61104e8161249c565b61109a5760405162461bcd60e51b815260206004820152601a60248201527f43616e27742065786572636973652074686174206d61726b657400000000000060448201526064016109ad565b806001600160a01b031663851492586040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d9190615767565b5050565b600754604051633761c52760e11b81526001600160a01b0383811660048301526000921690636ec38a4e9060240160206040518083038186803b15801561115757600080fd5b505afa15801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118f919061562b565b156112bc5760008290506000816001600160a01b03166341bc7b1f6040518163ffffffff1660e01b815260040160606040518083038186803b1580156111d457600080fd5b505afa1580156111e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120c9190615680565b505090506000826001600160a01b0316639e3b34bf6040518163ffffffff1660e01b8152600401604080518083038186803b15801561124a57600080fd5b505afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611282919061577f565b506000838152600b602052604090205490915015806112a057504281105b6112b85760006112b04283615a93565b600c54109450505b5050505b919050565b3360009081526014602052604090205460ff16806112ef57506000546201000090046001600160a01b031633145b6113565760405162461bcd60e51b815260206004820152603260248201527f4f6e6c792077686974656c697374656420616464726573736573206f72206f776044820152716e65722063616e206368616e67652049562160701b60648201526084016109ad565b611369670de0b6b3a7640000600a615a35565b811180156113895750611386670de0b6b3a764000061012c615a35565b81105b6113d55760405162461bcd60e51b815260206004820152601960248201527f4956206f757473696465206d696e2f6d61782072616e6765210000000000000060448201526064016109ad565b6005546040516315905ec160e31b8152600481018490526101009091046001600160a01b03169063ac82f6089060240160206040518083038186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114559190615767565b6114975760405162461bcd60e51b8152602060048201526013602482015272417373657420686173206e6f2070726963652160681b60448201526064016109ad565b6000828152600b602090815260409182902083905581518481529081018390527f715e0a52c0b74c77d2d2012a363ac95b494302ad2abb78ac7406ec93451f1adb91015b60405180910390a15050565b60006001600460008282546114fc9190615958565b909155505060045460035460ff16156115275760405162461bcd60e51b81526004016109ad90615883565b6001600160a01b0383161561159c5760155460405163bbddaca360e01b81526001600160a01b0385811660048301523360248301529091169063bbddaca390604401600060405180830381600087803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b505050505b60006115a785613879565b9050600081600f0b1380156115c55750601a54600160a01b900460ff165b61160a5760405162461bcd60e51b81526020600482015260166024820152751d5b9cdd5c1c1bdc9d19590818dbdb1b185d195c985b60521b60448201526064016109ad565b6000806116198c8c8c8a6129f1565b60185491935091506000906001600160a01b038981169116148061164a57506019546001600160a01b038981169116145b6116545782611663565b6116638364e8d4a51000615a35565b90506000601b541180156116a95750670de0b6b3a7640000601b54670de0b6b3a76400006116919190615a93565b61169b9084615a35565b6116a5919061599e565b8110155b6117035760405162461bcd60e51b815260206004820152602560248201527f416d6f756e742062656c6f77206d617820616c6c6f7765642070656720736c69604482015264707061676560d81b60648201526084016109ad565b61171589670de0b6b3a7640000615958565b8a611728670de0b6b3a764000086615a35565b611732919061599e565b11156117755760405162461bcd60e51b8152602060048201526012602482015271536c69707061676520746f6f20686967682160701b60448201526064016109ad565b8761178b6001600160a01b0382163330876134bb565b601754604051635320bf6b60e11b8152600f87900b60048201526000602482015260448101869052606481018590526001600160a01b039091169063a6417ed690608401602060405180830381600087803b1580156117e957600080fd5b505af11580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118219190615767565b506118328e8e8e868e6000896138de565b96505050505050600454811461185a5760405162461bcd60e51b81526004016109ad906158e0565b50979650505050505050565b600061187183611111565b15611b085760008390506000816001600160a01b0316639e3b34bf6040518163ffffffff1660e01b8152600401604080518083038186803b1580156118b557600080fd5b505afa1580156118c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ed919061577f565b50905060006118fc4283615a93565b9050600062015180611916670de0b6b3a764000084615a35565b611920919061599e565b90506000846001600160a01b031663668aa8246040518163ffffffff1660e01b815260040160206040518083038186803b15801561195d57600080fd5b505afa158015611971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119959190615767565b9050600080866001600160a01b03166341bc7b1f6040518163ffffffff1660e01b815260040160606040518083038186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190615680565b50601c546000838152600b602052604090819020549051631519a0dd60e31b815260048101889052602481018490526044810189905260648082019290925293955091935090916001600160a01b039091169063a8cd06e89060840160206040518083038186803b158015611a7f57600080fd5b505afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab79190615767565b611ac1919061599e565b97506001896001811115611ae557634e487b7160e01b600052602160045260246000fd5b1415611b0057611afd88670de0b6b3a7640000615a93565b97505b505050505050505b92915050565b6001546001600160a01b03163314611b865760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084016109ad565b60005460015460408051620100009093046001600160a01b03908116845290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1600180546000805462010000600160b01b0319166001600160a01b03831662010000021790556001600160a01b0319169055565b611c13613086565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b611c46613086565b6009829055600a8190556040518281527f1e6a338a58debcc786781a079c4459466b102ad0156cc84f51d25ef7dd8cb9b09060200160405180910390a16040518181527f4af6d03c4624e0a6b868b8f6453e047f23f3ea15e9d08c938bd4c445d7ef19b3906020016114db565b611cbb613086565b600c8190556040518181527fdc469b5583fa9b7ebd3245e1665334cd758c4bef4c5a132c62baca85effacfec90602001610a90565b6000600160046000828254611d059190615958565b909155505060045460035460ff1615611d305760405162461bcd60e51b81526004016109ad90615883565b611d418787878787600160006138de565b9150600454811461103b5760405162461bcd60e51b81526004016109ad906158e0565b6000600160046000828254611d799190615958565b909155505060045460035460ff1615611da45760405162461bcd60e51b81526004016109ad90615883565b6001600160a01b03831615611e195760155460405163bbddaca360e01b81526001600160a01b0385811660048301523360248301529091169063bbddaca390604401600060405180830381600087803b158015611e0057600080fd5b505af1158015611e14573d6000803e3d6000fd5b505050505b611e2a8888888888600160006138de565b91506004548114611e4d5760405162461bcd60e51b81526004016109ad906158e0565b509695505050505050565b611e60613086565b6001600160a01b039091166000908152601d6020526040902055565b600054610100900460ff16611e975760005460ff1615611e9b565b303b155b611efe5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109ad565b600054610100900460ff16158015611f20576000805461ffff19166101011790555b611f298961095b565b611f31612b0a565b60058054610100600160a81b0319166101006001600160a01b038b81169190910291909117909155600680546001600160a01b03191691891691909117905560088690556009849055600a839055600c8290558015611f96576000805461ff00191690555b505050505050505050565b611fa9613086565b60058054610100600160a81b0319166101006001600160a01b038516908102919091179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d9060200160405180910390a1600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f74a8764fc8d62d2d844c8c54426bd94ad034e0e92abdf5280ff75e2cbd678fb6906020016114db565b6000808084600181111561207457634e487b7160e01b600052602160045260246000fd5b14612080576000612083565b60015b905060006120918686611866565b905060115481101580156120a757506012548111155b15610be45760006120c082670de0b6b3a7640000615a93565b905060006120d18888856001613e22565b905060006120e28986856001613e22565b90506000871180156120f45750818711155b15612159576121566040518060c001604052808b6001600160a01b031681526020018a600181111561213657634e487b7160e01b600052602160045260246000fd5b815260200189815260200184815260200183815260200186815250614003565b95505b50505050509392505050565b61216d613086565b6007546001600160a01b0316156122085760065460075460405163095ea7b360e01b81526001600160a01b0391821660048201526000602482015291169063095ea7b390604401602060405180830381600087803b1580156121ce57600080fd5b505af11580156121e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612206919061562b565b505b600780546001600160a01b0319166001600160a01b0383811691821790925560065460405163095ea7b360e01b8152600481019290925260001960248301529091169063095ea7b390604401602060405180830381600087803b15801561226e57600080fd5b505af1158015612282573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a6919061562b565b506040516001600160a01b03821681527f9987372437ace1af79923f26b948aa04afef92b2b7786144c5aae621ea84eb0a90602001610a90565b60006122eb83611111565b15611b085760006122fc8484611866565b9050601254811161230d5780612311565b6012545b905061231e848483612ce3565b949350505050565b61232e613086565b6001600160a01b0381166123765760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016109ad565b600154600160a81b900460ff16156123c65760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b60448201526064016109ad565b600080546001600160a01b038381166201000081810262010000600160b01b031990941693909317938490556001805460ff60a81b1916600160a81b1790556040805193909404909116825260208201527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9101610a90565b612447613086565b60118390556012829055600881905560408051848152602081018490529081018290527f0e8c2ebd67ea2d796a34f02c777ec06f5faedd1669b272dc08dc7875486ae0809060600160405180910390a1505050565b60075460405163e62b888960e01b81526001600160a01b038381166004830152600092169063e62b88899060240160206040518083038186803b1580156124e257600080fd5b505afa1580156124f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251a919061562b565b80156125b557506001826001600160a01b031663b1c9fe6e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561255c57600080fd5b505afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190615748565b60028111156125b357634e487b7160e01b600052602160045260246000fd5b145b156112bc57600080836001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b1580156125f557600080fd5b505afa158015612609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262d91906156ad565b604051634dcb776760e11b815230600482015291935091506000906001600160a01b03841690639b96eece9060240160206040518083038186803b15801561267457600080fd5b505afa158015612688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ac9190615767565b118061231e5750604051634dcb776760e11b81523060048201526000906001600160a01b03831690639b96eece9060240160206040518083038186803b1580156126f557600080fd5b505afa158015612709573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272d9190615767565b11949350505050565b61273e613086565b601080546001600160a01b039485166001600160a01b0319918216179091556015805493909416921691909117909155601655565b61277b613086565b60008281526013602090815260409182902083905581518481529081018390527f5af395595015797b4d0f26b77c38dd4831298dabc7906ee3d62b80fa75d35c1e91016114db565b6127cb613086565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6127f5613086565b601780546001600160a01b03199081166001600160a01b03898116918217909355601a80548316898516908117909155601880548416898616179055601980549093169387169390931790915560405163095ea7b360e01b81526004810191909152600019602482015263095ea7b390604401602060405180830381600087803b15801561288257600080fd5b505af1158015612896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ba919061562b565b5060185460405163095ea7b360e01b81526001600160a01b03888116600483015260001960248301529091169063095ea7b390604401602060405180830381600087803b15801561290a57600080fd5b505af115801561291e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612942919061562b565b5060195460405163095ea7b360e01b81526001600160a01b03888116600483015260001960248301529091169063095ea7b390604401602060405180830381600087803b15801561299257600080fd5b505af11580156129a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ca919061562b565b50601a8054921515600160a01b0260ff60a01b1990931692909217909155601b5550505050565b60008060006129ff84613879565b9050600081600f0b138015612a1d5750601a54600160a01b900460ff165b15612b0057612a2d878787610b94565b9150670de0b6b3a7640000612a4a6005662386f26fc1000061599e565b612a5c90670de0b6b3a7640000615958565b6017546040516307211ef760e01b815260006004820152600f85900b6024820152604481018690526001600160a01b03909116906307211ef79060640160206040518083038186803b158015612ab157600080fd5b505afa158015612ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae99190615767565b612af39190615a35565b612afd919061599e565b92505b5094509492505050565b60055460ff1615612b535760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016109ad565b6005805460ff19166001908117909155600455565b612b70613086565b60065461110d906001600160a01b0316838361352c565b6000612b9283611111565b15611b08576000612ba38484611866565b90508015612bcd576011548110612bba5780612bbe565b6011545b905061231e8484836000613e22565b5092915050565b6005546040516315905ec160e31b81526004810183905260009161010090046001600160a01b03169063ac82f6089060240160206040518083038186803b158015612c1e57600080fd5b505afa158015612c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c569190615767565b156112bc5760008281526013602052604090205415612c8357600082815260136020526040902054611b08565b505060085490565b612c93613086565b600f819055600e80546001600160a01b0319166001600160a01b0384161790556040518181527f01edd423db862fb00774918e3b06d9c1dd3db9a99b5a194c439d2f141876f444906020016114db565b600080612cef836142be565b90508015610b8c57600080866001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b158015612d3257600080fd5b505afa158015612d46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6a91906156ad565b9092509050600080876001811115612d9257634e487b7160e01b600052602160045260246000fd5b14612e1357604051634dcb776760e11b81523060048201526001600160a01b03841690639b96eece9060240160206040518083038186803b158015612dd657600080fd5b505afa158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e9190615767565b612e8a565b604051634dcb776760e11b81523060048201526001600160a01b03831690639b96eece9060240160206040518083038186803b158015612e5257600080fd5b505afa158015612e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8a9190615767565b90506000670de0b6b3a7640000612ea18684615a35565b612eab919061599e565b9050600082612eb98b614315565b612ec39190615958565b6001600160a01b038b166000908152600d6020526040902054909150612eea908390615958565b8110612f4d576001600160a01b038a166000908152600d60205260408120548390612f159084615a93565b612f1f9190615a93565b905083670de0b6b3a7640000612f35898461599e565b612f3f9190615a35565b612f499190615958565b9750505b5050505050509392505050565b600081841161307d57600954612f709084615a93565b92506000670de0b6b3a764000080612f8a89898988613100565b612f9c90670de0b6b3a7640000615a93565b612fa69087615a35565b612fb0919061599e565b612fba9087615a35565b612fc4919061599e565b90506000670de0b6b3a7640000600f54670de0b6b3a7640000612fe79190615a93565b612ff19084615a35565b612ffb919061599e565b60075460405163edc892e160e01b8152600481018390529192506001600160a01b03169063edc892e19060240160206040518083038186803b15801561304057600080fd5b505afa158015613054573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130789190615767565b925050505b95945050505050565b6000546201000090046001600160a01b031633146130fe5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016109ad565b565b600080600061310f878761439d565b915091506000808311613139578582116131325761312d8287615a93565b613143565b6000613143565b6131438684615958565b9050600086831161315557600061315f565b61315f8784615a93565b90508082106131795761317687848684868b614659565b94505b50505050949350505050565b6000806131958888876000613e22565b905060006131d589828a60018111156131be57634e487b7160e01b600052602160045260246000fd5b146131ca5760006131cd565b60015b876001613e22565b90508187116134085760008061323e6040518060c001604052808d6001600160a01b031681526020018c600181111561321e57634e487b7160e01b600052602160045260246000fd5b81526020018b81526020018681526020018581526020018a815250614003565b336000908152601e602052604090205490915061325d5760095461326e565b336000908152601e60205260409020545b6132789089615958565b975060008112613320576000670de0b6b3a7640000826132988b83615a54565b6132a291906159b2565b6132ac9190615970565b9050670de0b6b3a76400006132c9662386f26fc1000060026159b2565b6132db90670de0b6b3a7640000615917565b6132e590836159b2565b6132ef9190615970565b9050670de0b6b3a7640000613304828b615917565b61330e908c6159b2565b6133189190615970565b92505061335f565b670de0b6b3a7640000806133348382615917565b61333e908b6159b2565b6133489190615970565b613352908b6159b2565b61335c9190615970565b91505b670de0b6b3a76400006133728782615917565b61337c90846159b2565b6133869190615970565b60075460405163edc892e160e01b8152600481018390529193506001600160a01b03169063edc892e19060240160206040518083038186803b1580156133cb57600080fd5b505afa1580156133df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134039190615767565b945050505b50509695505050505050565b6000806000846001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b15801561345157600080fd5b505afa158015613465573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348991906156ad565b909250905060008460018111156134b057634e487b7160e01b600052602160045260246000fd5b14610b8c578061307d565b6040516001600160a01b03808516602483015283166044820152606481018290526135269085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261475d565b50505050565b6040516001600160a01b03831660248201526044810182905261355c90849063a9059cbb60e01b906064016134ef565b505050565b600083600f54670de0b6b3a764000061357a9190615a93565b61358c670de0b6b3a764000087615a35565b613596919061599e565b6135a09190615a93565b600f54909150156135cd57600e546006546135c8916001600160a01b0391821691168361352c565b6135d1565b5060005b6007546001600160a01b03166317fd849a6135ec8387615958565b6040518263ffffffff1660e01b815260040161360a91815260200190565b60206040518083038186803b15801561362257600080fd5b505afa158015613636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365a9190615767565b6001600160a01b0386166000908152600d602052604090205461367d9190615958565b6001600160a01b038681166000908152600d602052604090819020929092556007549151630bfec24d60e11b8152600481018690529116906317fd849a9060240160206040518083038186803b1580156136d657600080fd5b505afa1580156136ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370e9190615767565b6001600160a01b0386166000908152600d60205260409020541161374a576001600160a01b0385166000908152600d6020526040812055613803565b600754604051630bfec24d60e11b8152600481018590526001600160a01b03909116906317fd849a9060240160206040518083038186803b15801561378e57600080fd5b505afa1580156137a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c69190615767565b6001600160a01b0386166000908152600d60205260409020546137e99190615a93565b6001600160a01b0386166000908152600d60205260409020555b600060165411801561381f57506015546001600160a01b031615155b1561387257600084601654670de0b6b3a764000061383d9190615a93565b61384f670de0b6b3a764000088615a35565b613859919061599e565b6138639190615a93565b905061387083828761482f565b505b5050505050565b601a546000906001600160a01b038381169116141561389a57506001919050565b6018546001600160a01b03838116911614156138b857506002919050565b6019546001600160a01b03838116911614156138d657506003919050565b506000919050565b60006138e988611111565b6139355760405162461bcd60e51b815260206004820152601e60248201527f4d61726b6574206973206e6f7420696e2054726164696e67207068617365000060448201526064016109ad565b508060006139438989611866565b9050600061395982670de0b6b3a7640000615a93565b9050601154821061396a578161396e565b6011545b9150600061397f8b8b856000613e22565b90506000891180156139915750808911155b6139d55760405162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b4103634b8bab4b234ba3c9760591b60448201526064016109ad565b8515613aa557336000908152601d6020526040902054613a1a908c908c908c9087908790613a0557600f54613185565b336000908152601d6020526040902054613185565b9350613a2e87670de0b6b3a7640000615958565b88613a41670de0b6b3a764000087615a35565b613a4b919061599e565b1115613a8d5760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b60448201526064016109ad565b600654613aa5906001600160a01b03163330876134bb565b6000613ab28c8c8c61493d565b90508015613c975760075460405163edc892e160e01b8152600481018390526001600160a01b039091169063edc892e19060240160206040518083038186803b158015613afe57600080fd5b505afa158015613b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b369190615767565b6006546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015613b7957600080fd5b505afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190615767565b1015613bff5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f756768207355534420696e20636f6e74726163742e0000000060448201526064016109ad565b60405163140e25ad60e31b8152600481018290526001600160a01b038d169063a0712d6890602401600060405180830381600087803b158015613c4157600080fd5b505af1158015613c55573d6000803e3d6000fd5b5050506001600160a01b038d166000908152600d6020526040902054613c7d91508290615958565b6001600160a01b038d166000908152600d60205260409020555b6000613ca38d8d613414565b9050613cb96001600160a01b038216338d61352c565b6010546001600160a01b031615613d2f576010546040516302c7739b60e01b8152336004820152602481018890526001600160a01b03909116906302c7739b90604401600060405180830381600087803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b505050505b613d3a8d873361495e565b818b1115613dae576000613d4e838d615a93565b905060008c613d5d838a615a35565b613d67919061599e565b60408051338152602081018590529081018290529091507ff8a5b21533fcaaeee91cd7b3c6ccbaa3f4ab6dd200e61bc560713565b20b1e9a9060600160405180910390a150505b7ff3bfbc0822d1ed667a2b298e71e0304f2c1f4685398189d7c39e412f733150f4338e8e8e8a600660009054906101000a90046001600160a01b031687604051613dfe97969594939291906157e9565b60405180910390a1613e128d8d8833614be5565b5050505050979650505050505050565b60008180613e31575060125483105b1561231e57600954613e439084615958565b9250670de0b6b3a764000083101561231e576000670de0b6b3a76400006004600a54613e6f919061599e565b613e8190670de0b6b3a7640000615a93565b613e8b9086615a35565b613e95919061599e565b90506000613ea38787614d69565b90506000670de0b6b3a7640000613eba8484615a35565b613ec4919061599e565b6001600160a01b0389166000908152600d602052604090205490915081613eea8a614315565b613ef49190615958565b1115613ff8576001600160a01b0388166000908152600d602052604081205482613f1d8b614315565b613f279190615958565b613f319190615a93565b9050613f3c89614315565b811115613f4f57613f4c89614315565b90505b6000670de0b6b3a76400006002600a54613f69919061599e565b613f7b8a670de0b6b3a7640000615a93565b613f859190615a35565b613f8f919061599e565b9050670de0b6b3a7640000613fa4828a615958565b1015613ff5576000613fb6828a615958565b613fc890670de0b6b3a7640000615a93565b905080613fdd670de0b6b3a764000085615a35565b613fe7919061599e565b613ff19086615958565b9650505b50505b505050949350505050565b60006011548260a001511015801561402157506012548260a0015111155b156112bc5760008061403b8460000151856020015161439d565b91509150600084604001518311614053576000614062565b60408501516140629084615a93565b9050600085604001518411614086578386604001516140819190615a93565b614089565b60005b6140939084615958565b90508082106140d4576140cd6040518060800160405280868152602001858152602001886040015181526020018860800151815250614efd565b94506142b5565b8386604001511180156140e75750600084115b156142755760008487604001516140fe9190615a93565b9050600061415b6040518060c0016040528084815260200188886141229190615958565b8152600060208201526040016141388589615958565b815260200160008152602001888b606001516141549190615a93565b905261503f565b9050600061417189600001518a60200151611866565b89519091506000906141b590828c6020015160018111156141a257634e487b7160e01b600052602160045260246000fd5b146141ae576000611866565b6001611866565b90506000826141c48584615a35565b6141ce919061599e565b905060006141ff60405180608001604052808c81526020018b81526020018c81526020018e60800151815250614efd565b9050600061420d828c6159b2565b9050600061421b8489615a35565b90506000614229898e615958565b9050806142368385615917565b6142409190615970565b9d5060008e13156142675760006142578f896159b2565b90506142638782615970565b9e50505b5050505050505050506142b5565b6142b26040518060c0016040528088604001518152602001858152602001868152602001838152602001848152602001886060015181525061503f565b94505b50505050919050565b60006011548211156112bc57670de0b6b3a76400006002600a546142e2919061599e565b6142f490670de0b6b3a7640000615a93565b6009546143019085615a93565b61430b9190615a35565b611b08919061599e565b600080826001600160a01b03166341bc7b1f6040518163ffffffff1660e01b815260040160606040518083038186803b15801561435157600080fd5b505afa158015614365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143899190615680565b5050905061439681612bd4565b9392505050565b600080600080856001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b1580156143db57600080fd5b505afa1580156143ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441391906156ad565b9092509050600085600181111561443a57634e487b7160e01b600052602160045260246000fd5b146144bb57604051634dcb776760e11b81523060048201526001600160a01b03821690639b96eece9060240160206040518083038186803b15801561447e57600080fd5b505afa158015614492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b69190615767565b614532565b604051634dcb776760e11b81523060048201526001600160a01b03831690639b96eece9060240160206040518083038186803b1580156144fa57600080fd5b505afa15801561450e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145329190615767565b9350600085600181111561455657634e487b7160e01b600052602160045260246000fd5b146145d757604051634dcb776760e11b81523060048201526001600160a01b03831690639b96eece9060240160206040518083038186803b15801561459a57600080fd5b505afa1580156145ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145d29190615767565b61464e565b604051634dcb776760e11b81523060048201526001600160a01b03821690639b96eece9060240160206040518083038186803b15801561461657600080fd5b505afa15801561462a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464e9190615767565b925050509250929050565b600080866146678488615958565b6146719190615a93565b9050600061467f8686615a93565b90506000670de0b6b3a7640000836146978285615a35565b6146a1919061599e565b600a546146ae9190615a35565b6146b8919061599e565b905088156146fb5760006146cd60028361599e565b90506000816146dc8b8e615a93565b6146e69190615a35565b90506146f28c8261599e565b95505050614750565b876000670de0b6b3a7640000856147128285615a35565b61471c919061599e565b600a546147299190615a35565b614733919061599e565b905060026147418285615958565b61474b919061599e565b955050505b5050509695505050505050565b60006147b2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166151759092919063ffffffff16565b80519091501561355c57808060200190518101906147d0919061562b565b61355c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109ad565b601554604051639ca423b360e01b81526001600160a01b0385811660048301526000921690639ca423b39060240160206040518083038186803b15801561487557600080fd5b505afa158015614889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148ad919061529b565b90506001600160a01b038116158015906148c957506000601654115b15613526576006546148e5906001600160a01b0316828561352c565b604080516001600160a01b03808416825286166020820152908101849052606081018390527f8fa68a6a8e2fc9ff758a6e64afba8bc2f66fb082999a2c5225c8c49633faded49060800160405180910390a150505050565b60008061494a8585614d69565b905082811015610b8c57610b898184615a93565b600f54600090156149ee57336000908152601d602052604090205461498557600f54614996565b336000908152601d60205260409020545b6149a890670de0b6b3a7640000615958565b6149ba670de0b6b3a764000085615a35565b6149c4919061599e565b6149ce9084615a93565b600e546006549192506149ee916001600160a01b0390811691168361352c565b6007546001600160a01b03166317fd849a614a098386615a93565b6040518263ffffffff1660e01b8152600401614a2791815260200190565b60206040518083038186803b158015614a3f57600080fd5b505afa158015614a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a779190615767565b6001600160a01b0385166000908152600d602052604090205411614ab3576001600160a01b0384166000908152600d6020526040812055614b79565b6007546001600160a01b03166317fd849a614ace8386615a93565b6040518263ffffffff1660e01b8152600401614aec91815260200190565b60206040518083038186803b158015614b0457600080fd5b505afa158015614b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b3c9190615767565b6001600160a01b0385166000908152600d6020526040902054614b5f9190615a93565b6001600160a01b0385166000908152600d60205260409020555b6000601654118015614b9557506015546001600160a01b031615155b15613526576000601654670de0b6b3a7640000614bb29190615958565b614bc4670de0b6b3a764000086615a35565b614bce919061599e565b614bd89085615a93565b905061387283828661482f565b600080856001600160a01b03166341bc7b1f6040518163ffffffff1660e01b815260040160606040518083038186803b158015614c2157600080fd5b505afa158015614c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c599190615680565b506005546040516315905ec160e31b8152600481018490529294509092506000916101009091046001600160a01b03169063ac82f6089060240160206040518083038186803b158015614cab57600080fd5b505afa158015614cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ce39190615767565b9050600080876001811115614d0857634e487b7160e01b600052602160045260246000fd5b14614d1557828210614d1a565b828210155b60408051338152602081018990528215158183015290519192507f80631c28c8a8100630a9d2bce38b276a55426b59f4d47fb06072105118083ec1919081900360600190a15050505050505050565b6000806000846001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b158015614da657600080fd5b505afa158015614dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dde91906156ad565b90925090506000846001811115614e0557634e487b7160e01b600052602160045260246000fd5b14614e8657604051634dcb776760e11b81523060048201526001600160a01b03821690639b96eece9060240160206040518083038186803b158015614e4957600080fd5b505afa158015614e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e819190615767565b61307d565b604051634dcb776760e11b81523060048201526001600160a01b03831690639b96eece9060240160206040518083038186803b158015614ec557600080fd5b505afa158015614ed9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307d9190615767565b600080614fb36040518060c00160405280856040015181526020018560000151815260200185602001518152602001670de0b6b3a7640000866020015111614f67576020860151614f5690670de0b6b3a7640000615a93565b8651614f629190615958565b614f6a565b85515b8152602001670de0b6b3a7640000866020015111614f89576000614fa1565b670de0b6b3a76400008660200151614fa19190615a93565b8152602001856060015181525061503f565b90506000614fc260028361599e565b9050600084604001518560000151614fda9190615a93565b90506000670de0b6b3a7640000808760000151670de0b6b3a7640000856150019190615a35565b61500b919061599e565b6150159190615958565b61502060028661599e565b61502a9190615a35565b615034919061599e565b90506142b281615ad6565b60008082604001518360a00151846020015161505b9190615958565b6150659190615a93565b905060008360800151846060015161507d9190615a93565b90506000670de0b6b3a7640000836150958285615a35565b61509f919061599e565b600a546150ac9190615a35565b6150b6919061599e565b60408601519091501561512b5760006150d060028361599e565b9050600081876040015188600001516150e99190615a93565b6150f39190615a35565b8751909150670de0b6b3a76400009061510c8284615a35565b615116919061599e565b615120919061599e565b979650505050505050565b60208501516000670de0b6b3a7640000856151468285615a35565b615150919061599e565b600a5461515d9190615a35565b615167919061599e565b905060026151168285615958565b606061231e848460008585843b6151ce5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109ad565b600080866001600160a01b031685876040516151ea91906157cd565b60006040518083038185875af1925050503d8060008114615227576040519150601f19603f3d011682016040523d82523d6000602084013e61522c565b606091505b509150915061512082828660608315615246575081614396565b8251156152565782518084602001fd5b8160405162461bcd60e51b81526004016109ad9190615850565b8035600281106112bc57600080fd5b600060208284031215615290578081fd5b813561439681615b1c565b6000602082840312156152ac578081fd5b815161439681615b1c565b600080604083850312156152c9578081fd5b82356152d481615b1c565b946020939093013593505050565b60008060008060008060c087890312156152fa578182fd5b863561530581615b1c565b9550602087013561531581615b1c565b9450604087013561532581615b1c565b9350606087013561533581615b1c565b9250608087013561534581615b31565b8092505060a087013590509295509295509295565b6000806040838503121561536c578182fd5b823561537781615b1c565b9150602083013561538781615b31565b809150509250929050565b600080600080600080600080610100898b0312156153ae578182fd5b88356153b981615b1c565b975060208901356153c981615b1c565b965060408901356153d981615b1c565b95506060890135945060808901356153f081615b1c565b979a969950949793969560a0850135955060c08501359460e001359350915050565b60008060408385031215615424578182fd5b823561542f81615b1c565b915061543d60208401615270565b90509250929050565b60008060006060848603121561545a578283fd5b833561546581615b1c565b925061547360208501615270565b9150604084013590509250925092565b60008060008060808587031215615498578182fd5b84356154a381615b1c565b93506154b160208601615270565b92506040850135915060608501356154c881615b1c565b939692955090935050565b600080600080600060a086880312156154ea578283fd5b85356154f581615b1c565b945061550360208701615270565b94979496505050506040830135926060810135926080909101359150565b60008060008060008060c08789031215615539578384fd5b863561554481615b1c565b955061555260208801615270565b945060408701359350606087013592506080870135915060a087013561557781615b1c565b809150509295509295509295565b600080600080600080600060e0888a03121561559f578081fd5b87356155aa81615b1c565b96506155b860208901615270565b955060408801359450606088013593506080880135925060a08801356155dd81615b1c565b915060c08801356155ed81615b1c565b8091505092959891949750929550565b600080604083850312156152c9578182fd5b600060208284031215615620578081fd5b813561439681615b31565b60006020828403121561563c578081fd5b815161439681615b31565b600060208284031215615658578081fd5b5035919050565b60008060408385031215615671578182fd5b50508035926020909101359150565b600080600060608486031215615694578081fd5b8351925060208401519150604084015190509250925092565b600080604083850312156156bf578182fd5b82516156ca81615b1c565b602084015190925061538781615b1c565b600080604083850312156156ed578182fd5b82356156f881615b1c565b9150602083013561538781615b1c565b60008060006060848603121561571c578081fd5b833561572781615b1c565b9250602084013561573781615b1c565b929592945050506040919091013590565b600060208284031215615759578081fd5b815160038110614396578182fd5b600060208284031215615778578081fd5b5051919050565b60008060408385031215615791578182fd5b505080516020909101519092909150565b6000806000606084860312156157b6578081fd5b505081359360208301359350604090920135919050565b600082516157df818460208701615aaa565b9190910192915050565b6001600160a01b038881168252878116602083015260e08201906002881061582157634e487b7160e01b600052602160045260246000fd5b87604084015286606084015285608084015280851660a084015280841660c08401525098975050505050505050565b602081526000825180602084015261586f816040850160208701615aaa565b601f01601f19169190910160400192915050565b6020808252603c908201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060408201527f7768696c652074686520636f6e74726163742069732070617573656400000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600080821280156001600160ff1b038490038513161561593957615939615af0565b600160ff1b839003841281161561595257615952615af0565b50500190565b6000821982111561596b5761596b615af0565b500190565b60008261597f5761597f615b06565b600160ff1b82146000198414161561599957615999615af0565b500590565b6000826159ad576159ad615b06565b500490565b60006001600160ff1b03818413828413808216868404861116156159d8576159d8615af0565b600160ff1b848712828116878305891216156159f6576159f6615af0565b858712925087820587128484161615615a1157615a11615af0565b87850587128184161615615a2757615a27615af0565b505050929093029392505050565b6000816000190483118215151615615a4f57615a4f615af0565b500290565b60008083128015600160ff1b850184121615615a7257615a72615af0565b6001600160ff1b0384018313811615615a8d57615a8d615af0565b50500390565b600082821015615aa557615aa5615af0565b500390565b60005b83811015615ac5578181015183820152602001615aad565b838111156135265750506000910152565b6000600160ff1b821415615aec57615aec615af0565b0390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114610b6457600080fd5b8015158114610b6457600080fdfea2646970667358221220e8ab368ae8a0f80002551789887e7ed12c0b65066712b47fe0654050533da9c864736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103f15760003560e01c80638875eb8411610215578063cafb3ca211610125578063ebc79772116100b8578063f502b00311610087578063f502b003146108af578063f8debeb7146108cf578063fb91d41c146108e2578063fc1ed857146108eb578063fd8a8cc6146108fe57600080fd5b8063ebc797721461086e578063efb1fe3514610876578063efc1525114610889578063f4b9fa751461089c57600080fd5b8063d3dc7539116100f4578063d3dc753914610821578063d4a2641b14610834578063d69fb6681461085c578063df8974d01461086557600080fd5b8063cafb3ca2146107d5578063d1624924146107e8578063d333ca19146107fb578063d3c4297c1461080e57600080fd5b8063ad18f0da116101a8578063c2783f9211610177578063c2783f9214610769578063c3b83f5f1461077c578063c4dc27d71461078f578063c8f0b4ec146107af578063ca1d578e146107c257600080fd5b8063ad18f0da1461071d578063bbdf88ce14610730578063bf46c0b414610743578063bf996ae31461075657600080fd5b80639324cac7116101e45780639324cac7146106d15780639f916c9f146106e4578063a273ecf1146106f7578063a5bf660d1461070a57600080fd5b80638875eb84146106935780638da5cb5b146106a657806391b4ded9146106bf578063931b2040146106c857600080fd5b8063481c6a75116103105780636aaa81b6116102a3578063741bef1a11610272578063741bef1a1461063a57806379ba5097146106525780637b337a361461065a578063826153491461066d578063851702091461068057600080fd5b80636aaa81b6146106025780636cc5a6ff1461060b5780636e88a7bd1461061e5780636ed033f81461062757600080fd5b80635727a0f3116102df5780635727a0f3146105af5780635c975abb146105c25780635ef85b26146105cf57806365f56772146105e257600080fd5b8063481c6a751461056357806348663e951461057657806351b9181f1461058957806353a47bb71461059c57600080fd5b8063270e13ef11610388578063316425c311610357578063316425c3146105215780633443b3261461052a5780633ce1108d1461053d5780633e413bee1461055057600080fd5b8063270e13ef146104ba5780632909f51a146104cd5780632972e8ab146104d65780632f48ab7d146104f657600080fd5b806316c38b3c116103c457806316c38b3c1461047757806319b844a61461048a5780631c37d04b146104935780631fbb38e8146104a657600080fd5b806306c933d8146103f65780630f13aae81461042e57806313af40351461044f5780631627540c14610464575b600080fd5b61041961040436600461527f565b60146020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61044161043c366004615446565b610911565b604051908152602001610425565b61046261045d36600461527f565b61095b565b005b61046261047236600461527f565b610a9b565b61046261048536600461560f565b610af1565b61044160125481565b6104416104a1366004615446565b610b67565b601a5461041990600160a01b900460ff1681565b6104416104c8366004615446565b610b94565b610441601b5481565b6104416104e436600461527f565b601e6020526000908152604090205481565b601954610509906001600160a01b031681565b6040516001600160a01b039091168152602001610425565b610441600a5481565b6104626105383660046155fd565b610bed565b61044161054b3660046154d3565b610c11565b601854610509906001600160a01b031681565b600754610509906001600160a01b031681565b600e54610509906001600160a01b031681565b61046261059736600461527f565b611045565b600154610509906001600160a01b031681565b6104196105bd36600461527f565b611111565b6003546104199060ff1681565b6104626105dd36600461565f565b6112c1565b6104416105f036600461527f565b601d6020526000908152604090205481565b61044160095481565b610441610619366004615585565b6114e7565b61044160165481565b610441610635366004615412565b611866565b6005546105099061010090046001600160a01b031681565b610462611b0e565b61046261066836600461535a565b611c0b565b61046261067b36600461565f565b611c3e565b61046261068e366004615647565b611cb3565b6104416106a13660046154d3565b611cf0565b600054610509906201000090046001600160a01b031681565b61044160025481565b61044160115481565b600654610509906001600160a01b031681565b6104416106f2366004615521565b611d64565b6104626107053660046155fd565b611e58565b601754610509906001600160a01b031681565b61046261072b366004615392565b611e7c565b61046261073e3660046156db565b611fa1565b610441610751366004615446565b612050565b61046261076436600461527f565b612165565b610441610777366004615412565b6122e0565b61046261078a36600461527f565b612326565b61044161079d36600461527f565b600d6020526000908152604090205481565b6104626107bd3660046157a2565b61243f565b6104196107d036600461527f565b61249c565b6104626107e3366004615708565b612736565b6104626107f636600461565f565b612773565b61046261080936600461527f565b6127c3565b61046261081c3660046152e2565b6127ed565b601554610509906001600160a01b031681565b610847610842366004615483565b6129f1565b60408051928352602083019190915201610425565b610441600f5481565b610441600c5481565b610462612b0a565b6104626108843660046152b7565b612b68565b610441610897366004615412565b612b87565b601a54610509906001600160a01b031681565b6104416108bd366004615647565b600b6020526000908152604090205481565b6104416108dd366004615647565b612bd4565b61044160085481565b6104626108f93660046155fd565b612c8b565b601054610509906001600160a01b031681565b60008061091e8585611866565b9050601254811161092f5780610933565b6012545b90506000610942868684612ce3565b90506109518686868585612f5a565b9695505050505050565b6001600160a01b0381166109b65760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600154600160a01b900460ff1615610a225760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b60648201526084016109ad565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b03831662010000810262010000600160b01b03199092169190911782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91015b60405180910390a150565b610aa3613086565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610a90565b610af9613086565b60035460ff1615158115151415610b0d5750565b6003805460ff191682151590811790915560ff1615610b2b57426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610a90565b50565b600080610b7485856122e0565b9050808311610b8c57610b8985858584613100565b91505b509392505050565b600080610ba18585611866565b90506000610bb782670de0b6b3a7640000615a93565b90508115610be4576011548210610bce5781610bd2565b6011545b91506109518686868585600f54613185565b50509392505050565b610bf5613086565b6001600160a01b039091166000908152601e6020526040902055565b6000600160046000828254610c269190615958565b909155505060045460035460ff1615610c515760405162461bcd60e51b81526004016109ad90615883565b610c5a87611111565b610ca65760405162461bcd60e51b815260206004820152601e60248201527f4d61726b6574206973206e6f7420696e2054726164696e67207068617365000060448201526064016109ad565b6000610cb28888611866565b90506012548111610cc35780610cc7565b6012545b90506000610cd6898984612ce3565b9050600081118015610ce85750808711155b610d2c5760405162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b4103634b8bab4b234ba3c9760591b60448201526064016109ad565b6000610d3b8a8a8a8686612f5a565b9050610d4f86670de0b6b3a7640000615958565b81610d62670de0b6b3a76400008a615a35565b610d6c919061599e565b1115610dae5760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b60448201526064016109ad565b6000610dba8b8b613414565b9050610dd16001600160a01b03821633308c6134bb565b6007546040516314edbee160e31b81523060048201526000916001600160a01b039081169163edc892e1918f169063a76df7089060240160206040518083038186803b158015610e2057600080fd5b505afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190615767565b6040518263ffffffff1660e01b8152600401610e7691815260200190565b60206040518083038186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec69190615767565b90508015610f22578b6001600160a01b031663f5571beb6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b505050505b600654610f39906001600160a01b0316338561352c565b6010546001600160a01b031615610faf576010546040516302c7739b60e01b8152336004820152602481018590526001600160a01b03909116906302c7739b90604401600060405180830381600087803b158015610f9657600080fd5b505af1158015610faa573d6000803e3d6000fd5b505050505b610fbb8c848333613561565b7f1d6ff70c632edb1e6aba7fbc0148db68c8392e30f9dfaadae2543a2543757cf6338d8d8d87600660009054906101000a90046001600160a01b03168860405161100b97969594939291906157e9565b60405180910390a150909450505050600454811461103b5760405162461bcd60e51b81526004016109ad906158e0565b5095945050505050565b61104e8161249c565b61109a5760405162461bcd60e51b815260206004820152601a60248201527f43616e27742065786572636973652074686174206d61726b657400000000000060448201526064016109ad565b806001600160a01b031663851492586040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d9190615767565b5050565b600754604051633761c52760e11b81526001600160a01b0383811660048301526000921690636ec38a4e9060240160206040518083038186803b15801561115757600080fd5b505afa15801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118f919061562b565b156112bc5760008290506000816001600160a01b03166341bc7b1f6040518163ffffffff1660e01b815260040160606040518083038186803b1580156111d457600080fd5b505afa1580156111e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120c9190615680565b505090506000826001600160a01b0316639e3b34bf6040518163ffffffff1660e01b8152600401604080518083038186803b15801561124a57600080fd5b505afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611282919061577f565b506000838152600b602052604090205490915015806112a057504281105b6112b85760006112b04283615a93565b600c54109450505b5050505b919050565b3360009081526014602052604090205460ff16806112ef57506000546201000090046001600160a01b031633145b6113565760405162461bcd60e51b815260206004820152603260248201527f4f6e6c792077686974656c697374656420616464726573736573206f72206f776044820152716e65722063616e206368616e67652049562160701b60648201526084016109ad565b611369670de0b6b3a7640000600a615a35565b811180156113895750611386670de0b6b3a764000061012c615a35565b81105b6113d55760405162461bcd60e51b815260206004820152601960248201527f4956206f757473696465206d696e2f6d61782072616e6765210000000000000060448201526064016109ad565b6005546040516315905ec160e31b8152600481018490526101009091046001600160a01b03169063ac82f6089060240160206040518083038186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114559190615767565b6114975760405162461bcd60e51b8152602060048201526013602482015272417373657420686173206e6f2070726963652160681b60448201526064016109ad565b6000828152600b602090815260409182902083905581518481529081018390527f715e0a52c0b74c77d2d2012a363ac95b494302ad2abb78ac7406ec93451f1adb91015b60405180910390a15050565b60006001600460008282546114fc9190615958565b909155505060045460035460ff16156115275760405162461bcd60e51b81526004016109ad90615883565b6001600160a01b0383161561159c5760155460405163bbddaca360e01b81526001600160a01b0385811660048301523360248301529091169063bbddaca390604401600060405180830381600087803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b505050505b60006115a785613879565b9050600081600f0b1380156115c55750601a54600160a01b900460ff165b61160a5760405162461bcd60e51b81526020600482015260166024820152751d5b9cdd5c1c1bdc9d19590818dbdb1b185d195c985b60521b60448201526064016109ad565b6000806116198c8c8c8a6129f1565b60185491935091506000906001600160a01b038981169116148061164a57506019546001600160a01b038981169116145b6116545782611663565b6116638364e8d4a51000615a35565b90506000601b541180156116a95750670de0b6b3a7640000601b54670de0b6b3a76400006116919190615a93565b61169b9084615a35565b6116a5919061599e565b8110155b6117035760405162461bcd60e51b815260206004820152602560248201527f416d6f756e742062656c6f77206d617820616c6c6f7765642070656720736c69604482015264707061676560d81b60648201526084016109ad565b61171589670de0b6b3a7640000615958565b8a611728670de0b6b3a764000086615a35565b611732919061599e565b11156117755760405162461bcd60e51b8152602060048201526012602482015271536c69707061676520746f6f20686967682160701b60448201526064016109ad565b8761178b6001600160a01b0382163330876134bb565b601754604051635320bf6b60e11b8152600f87900b60048201526000602482015260448101869052606481018590526001600160a01b039091169063a6417ed690608401602060405180830381600087803b1580156117e957600080fd5b505af11580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118219190615767565b506118328e8e8e868e6000896138de565b96505050505050600454811461185a5760405162461bcd60e51b81526004016109ad906158e0565b50979650505050505050565b600061187183611111565b15611b085760008390506000816001600160a01b0316639e3b34bf6040518163ffffffff1660e01b8152600401604080518083038186803b1580156118b557600080fd5b505afa1580156118c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ed919061577f565b50905060006118fc4283615a93565b9050600062015180611916670de0b6b3a764000084615a35565b611920919061599e565b90506000846001600160a01b031663668aa8246040518163ffffffff1660e01b815260040160206040518083038186803b15801561195d57600080fd5b505afa158015611971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119959190615767565b9050600080866001600160a01b03166341bc7b1f6040518163ffffffff1660e01b815260040160606040518083038186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190615680565b50601c546000838152600b602052604090819020549051631519a0dd60e31b815260048101889052602481018490526044810189905260648082019290925293955091935090916001600160a01b039091169063a8cd06e89060840160206040518083038186803b158015611a7f57600080fd5b505afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab79190615767565b611ac1919061599e565b97506001896001811115611ae557634e487b7160e01b600052602160045260246000fd5b1415611b0057611afd88670de0b6b3a7640000615a93565b97505b505050505050505b92915050565b6001546001600160a01b03163314611b865760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084016109ad565b60005460015460408051620100009093046001600160a01b03908116845290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1600180546000805462010000600160b01b0319166001600160a01b03831662010000021790556001600160a01b0319169055565b611c13613086565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b611c46613086565b6009829055600a8190556040518281527f1e6a338a58debcc786781a079c4459466b102ad0156cc84f51d25ef7dd8cb9b09060200160405180910390a16040518181527f4af6d03c4624e0a6b868b8f6453e047f23f3ea15e9d08c938bd4c445d7ef19b3906020016114db565b611cbb613086565b600c8190556040518181527fdc469b5583fa9b7ebd3245e1665334cd758c4bef4c5a132c62baca85effacfec90602001610a90565b6000600160046000828254611d059190615958565b909155505060045460035460ff1615611d305760405162461bcd60e51b81526004016109ad90615883565b611d418787878787600160006138de565b9150600454811461103b5760405162461bcd60e51b81526004016109ad906158e0565b6000600160046000828254611d799190615958565b909155505060045460035460ff1615611da45760405162461bcd60e51b81526004016109ad90615883565b6001600160a01b03831615611e195760155460405163bbddaca360e01b81526001600160a01b0385811660048301523360248301529091169063bbddaca390604401600060405180830381600087803b158015611e0057600080fd5b505af1158015611e14573d6000803e3d6000fd5b505050505b611e2a8888888888600160006138de565b91506004548114611e4d5760405162461bcd60e51b81526004016109ad906158e0565b509695505050505050565b611e60613086565b6001600160a01b039091166000908152601d6020526040902055565b600054610100900460ff16611e975760005460ff1615611e9b565b303b155b611efe5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109ad565b600054610100900460ff16158015611f20576000805461ffff19166101011790555b611f298961095b565b611f31612b0a565b60058054610100600160a81b0319166101006001600160a01b038b81169190910291909117909155600680546001600160a01b03191691891691909117905560088690556009849055600a839055600c8290558015611f96576000805461ff00191690555b505050505050505050565b611fa9613086565b60058054610100600160a81b0319166101006001600160a01b038516908102919091179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d9060200160405180910390a1600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f74a8764fc8d62d2d844c8c54426bd94ad034e0e92abdf5280ff75e2cbd678fb6906020016114db565b6000808084600181111561207457634e487b7160e01b600052602160045260246000fd5b14612080576000612083565b60015b905060006120918686611866565b905060115481101580156120a757506012548111155b15610be45760006120c082670de0b6b3a7640000615a93565b905060006120d18888856001613e22565b905060006120e28986856001613e22565b90506000871180156120f45750818711155b15612159576121566040518060c001604052808b6001600160a01b031681526020018a600181111561213657634e487b7160e01b600052602160045260246000fd5b815260200189815260200184815260200183815260200186815250614003565b95505b50505050509392505050565b61216d613086565b6007546001600160a01b0316156122085760065460075460405163095ea7b360e01b81526001600160a01b0391821660048201526000602482015291169063095ea7b390604401602060405180830381600087803b1580156121ce57600080fd5b505af11580156121e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612206919061562b565b505b600780546001600160a01b0319166001600160a01b0383811691821790925560065460405163095ea7b360e01b8152600481019290925260001960248301529091169063095ea7b390604401602060405180830381600087803b15801561226e57600080fd5b505af1158015612282573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a6919061562b565b506040516001600160a01b03821681527f9987372437ace1af79923f26b948aa04afef92b2b7786144c5aae621ea84eb0a90602001610a90565b60006122eb83611111565b15611b085760006122fc8484611866565b9050601254811161230d5780612311565b6012545b905061231e848483612ce3565b949350505050565b61232e613086565b6001600160a01b0381166123765760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016109ad565b600154600160a81b900460ff16156123c65760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b60448201526064016109ad565b600080546001600160a01b038381166201000081810262010000600160b01b031990941693909317938490556001805460ff60a81b1916600160a81b1790556040805193909404909116825260208201527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9101610a90565b612447613086565b60118390556012829055600881905560408051848152602081018490529081018290527f0e8c2ebd67ea2d796a34f02c777ec06f5faedd1669b272dc08dc7875486ae0809060600160405180910390a1505050565b60075460405163e62b888960e01b81526001600160a01b038381166004830152600092169063e62b88899060240160206040518083038186803b1580156124e257600080fd5b505afa1580156124f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251a919061562b565b80156125b557506001826001600160a01b031663b1c9fe6e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561255c57600080fd5b505afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190615748565b60028111156125b357634e487b7160e01b600052602160045260246000fd5b145b156112bc57600080836001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b1580156125f557600080fd5b505afa158015612609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262d91906156ad565b604051634dcb776760e11b815230600482015291935091506000906001600160a01b03841690639b96eece9060240160206040518083038186803b15801561267457600080fd5b505afa158015612688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ac9190615767565b118061231e5750604051634dcb776760e11b81523060048201526000906001600160a01b03831690639b96eece9060240160206040518083038186803b1580156126f557600080fd5b505afa158015612709573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272d9190615767565b11949350505050565b61273e613086565b601080546001600160a01b039485166001600160a01b0319918216179091556015805493909416921691909117909155601655565b61277b613086565b60008281526013602090815260409182902083905581518481529081018390527f5af395595015797b4d0f26b77c38dd4831298dabc7906ee3d62b80fa75d35c1e91016114db565b6127cb613086565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6127f5613086565b601780546001600160a01b03199081166001600160a01b03898116918217909355601a80548316898516908117909155601880548416898616179055601980549093169387169390931790915560405163095ea7b360e01b81526004810191909152600019602482015263095ea7b390604401602060405180830381600087803b15801561288257600080fd5b505af1158015612896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ba919061562b565b5060185460405163095ea7b360e01b81526001600160a01b03888116600483015260001960248301529091169063095ea7b390604401602060405180830381600087803b15801561290a57600080fd5b505af115801561291e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612942919061562b565b5060195460405163095ea7b360e01b81526001600160a01b03888116600483015260001960248301529091169063095ea7b390604401602060405180830381600087803b15801561299257600080fd5b505af11580156129a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ca919061562b565b50601a8054921515600160a01b0260ff60a01b1990931692909217909155601b5550505050565b60008060006129ff84613879565b9050600081600f0b138015612a1d5750601a54600160a01b900460ff165b15612b0057612a2d878787610b94565b9150670de0b6b3a7640000612a4a6005662386f26fc1000061599e565b612a5c90670de0b6b3a7640000615958565b6017546040516307211ef760e01b815260006004820152600f85900b6024820152604481018690526001600160a01b03909116906307211ef79060640160206040518083038186803b158015612ab157600080fd5b505afa158015612ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae99190615767565b612af39190615a35565b612afd919061599e565b92505b5094509492505050565b60055460ff1615612b535760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016109ad565b6005805460ff19166001908117909155600455565b612b70613086565b60065461110d906001600160a01b0316838361352c565b6000612b9283611111565b15611b08576000612ba38484611866565b90508015612bcd576011548110612bba5780612bbe565b6011545b905061231e8484836000613e22565b5092915050565b6005546040516315905ec160e31b81526004810183905260009161010090046001600160a01b03169063ac82f6089060240160206040518083038186803b158015612c1e57600080fd5b505afa158015612c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c569190615767565b156112bc5760008281526013602052604090205415612c8357600082815260136020526040902054611b08565b505060085490565b612c93613086565b600f819055600e80546001600160a01b0319166001600160a01b0384161790556040518181527f01edd423db862fb00774918e3b06d9c1dd3db9a99b5a194c439d2f141876f444906020016114db565b600080612cef836142be565b90508015610b8c57600080866001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b158015612d3257600080fd5b505afa158015612d46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6a91906156ad565b9092509050600080876001811115612d9257634e487b7160e01b600052602160045260246000fd5b14612e1357604051634dcb776760e11b81523060048201526001600160a01b03841690639b96eece9060240160206040518083038186803b158015612dd657600080fd5b505afa158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e9190615767565b612e8a565b604051634dcb776760e11b81523060048201526001600160a01b03831690639b96eece9060240160206040518083038186803b158015612e5257600080fd5b505afa158015612e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8a9190615767565b90506000670de0b6b3a7640000612ea18684615a35565b612eab919061599e565b9050600082612eb98b614315565b612ec39190615958565b6001600160a01b038b166000908152600d6020526040902054909150612eea908390615958565b8110612f4d576001600160a01b038a166000908152600d60205260408120548390612f159084615a93565b612f1f9190615a93565b905083670de0b6b3a7640000612f35898461599e565b612f3f9190615a35565b612f499190615958565b9750505b5050505050509392505050565b600081841161307d57600954612f709084615a93565b92506000670de0b6b3a764000080612f8a89898988613100565b612f9c90670de0b6b3a7640000615a93565b612fa69087615a35565b612fb0919061599e565b612fba9087615a35565b612fc4919061599e565b90506000670de0b6b3a7640000600f54670de0b6b3a7640000612fe79190615a93565b612ff19084615a35565b612ffb919061599e565b60075460405163edc892e160e01b8152600481018390529192506001600160a01b03169063edc892e19060240160206040518083038186803b15801561304057600080fd5b505afa158015613054573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130789190615767565b925050505b95945050505050565b6000546201000090046001600160a01b031633146130fe5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016109ad565b565b600080600061310f878761439d565b915091506000808311613139578582116131325761312d8287615a93565b613143565b6000613143565b6131438684615958565b9050600086831161315557600061315f565b61315f8784615a93565b90508082106131795761317687848684868b614659565b94505b50505050949350505050565b6000806131958888876000613e22565b905060006131d589828a60018111156131be57634e487b7160e01b600052602160045260246000fd5b146131ca5760006131cd565b60015b876001613e22565b90508187116134085760008061323e6040518060c001604052808d6001600160a01b031681526020018c600181111561321e57634e487b7160e01b600052602160045260246000fd5b81526020018b81526020018681526020018581526020018a815250614003565b336000908152601e602052604090205490915061325d5760095461326e565b336000908152601e60205260409020545b6132789089615958565b975060008112613320576000670de0b6b3a7640000826132988b83615a54565b6132a291906159b2565b6132ac9190615970565b9050670de0b6b3a76400006132c9662386f26fc1000060026159b2565b6132db90670de0b6b3a7640000615917565b6132e590836159b2565b6132ef9190615970565b9050670de0b6b3a7640000613304828b615917565b61330e908c6159b2565b6133189190615970565b92505061335f565b670de0b6b3a7640000806133348382615917565b61333e908b6159b2565b6133489190615970565b613352908b6159b2565b61335c9190615970565b91505b670de0b6b3a76400006133728782615917565b61337c90846159b2565b6133869190615970565b60075460405163edc892e160e01b8152600481018390529193506001600160a01b03169063edc892e19060240160206040518083038186803b1580156133cb57600080fd5b505afa1580156133df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134039190615767565b945050505b50509695505050505050565b6000806000846001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b15801561345157600080fd5b505afa158015613465573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348991906156ad565b909250905060008460018111156134b057634e487b7160e01b600052602160045260246000fd5b14610b8c578061307d565b6040516001600160a01b03808516602483015283166044820152606481018290526135269085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261475d565b50505050565b6040516001600160a01b03831660248201526044810182905261355c90849063a9059cbb60e01b906064016134ef565b505050565b600083600f54670de0b6b3a764000061357a9190615a93565b61358c670de0b6b3a764000087615a35565b613596919061599e565b6135a09190615a93565b600f54909150156135cd57600e546006546135c8916001600160a01b0391821691168361352c565b6135d1565b5060005b6007546001600160a01b03166317fd849a6135ec8387615958565b6040518263ffffffff1660e01b815260040161360a91815260200190565b60206040518083038186803b15801561362257600080fd5b505afa158015613636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365a9190615767565b6001600160a01b0386166000908152600d602052604090205461367d9190615958565b6001600160a01b038681166000908152600d602052604090819020929092556007549151630bfec24d60e11b8152600481018690529116906317fd849a9060240160206040518083038186803b1580156136d657600080fd5b505afa1580156136ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370e9190615767565b6001600160a01b0386166000908152600d60205260409020541161374a576001600160a01b0385166000908152600d6020526040812055613803565b600754604051630bfec24d60e11b8152600481018590526001600160a01b03909116906317fd849a9060240160206040518083038186803b15801561378e57600080fd5b505afa1580156137a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c69190615767565b6001600160a01b0386166000908152600d60205260409020546137e99190615a93565b6001600160a01b0386166000908152600d60205260409020555b600060165411801561381f57506015546001600160a01b031615155b1561387257600084601654670de0b6b3a764000061383d9190615a93565b61384f670de0b6b3a764000088615a35565b613859919061599e565b6138639190615a93565b905061387083828761482f565b505b5050505050565b601a546000906001600160a01b038381169116141561389a57506001919050565b6018546001600160a01b03838116911614156138b857506002919050565b6019546001600160a01b03838116911614156138d657506003919050565b506000919050565b60006138e988611111565b6139355760405162461bcd60e51b815260206004820152601e60248201527f4d61726b6574206973206e6f7420696e2054726164696e67207068617365000060448201526064016109ad565b508060006139438989611866565b9050600061395982670de0b6b3a7640000615a93565b9050601154821061396a578161396e565b6011545b9150600061397f8b8b856000613e22565b90506000891180156139915750808911155b6139d55760405162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b4103634b8bab4b234ba3c9760591b60448201526064016109ad565b8515613aa557336000908152601d6020526040902054613a1a908c908c908c9087908790613a0557600f54613185565b336000908152601d6020526040902054613185565b9350613a2e87670de0b6b3a7640000615958565b88613a41670de0b6b3a764000087615a35565b613a4b919061599e565b1115613a8d5760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b60448201526064016109ad565b600654613aa5906001600160a01b03163330876134bb565b6000613ab28c8c8c61493d565b90508015613c975760075460405163edc892e160e01b8152600481018390526001600160a01b039091169063edc892e19060240160206040518083038186803b158015613afe57600080fd5b505afa158015613b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b369190615767565b6006546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015613b7957600080fd5b505afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190615767565b1015613bff5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f756768207355534420696e20636f6e74726163742e0000000060448201526064016109ad565b60405163140e25ad60e31b8152600481018290526001600160a01b038d169063a0712d6890602401600060405180830381600087803b158015613c4157600080fd5b505af1158015613c55573d6000803e3d6000fd5b5050506001600160a01b038d166000908152600d6020526040902054613c7d91508290615958565b6001600160a01b038d166000908152600d60205260409020555b6000613ca38d8d613414565b9050613cb96001600160a01b038216338d61352c565b6010546001600160a01b031615613d2f576010546040516302c7739b60e01b8152336004820152602481018890526001600160a01b03909116906302c7739b90604401600060405180830381600087803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b505050505b613d3a8d873361495e565b818b1115613dae576000613d4e838d615a93565b905060008c613d5d838a615a35565b613d67919061599e565b60408051338152602081018590529081018290529091507ff8a5b21533fcaaeee91cd7b3c6ccbaa3f4ab6dd200e61bc560713565b20b1e9a9060600160405180910390a150505b7ff3bfbc0822d1ed667a2b298e71e0304f2c1f4685398189d7c39e412f733150f4338e8e8e8a600660009054906101000a90046001600160a01b031687604051613dfe97969594939291906157e9565b60405180910390a1613e128d8d8833614be5565b5050505050979650505050505050565b60008180613e31575060125483105b1561231e57600954613e439084615958565b9250670de0b6b3a764000083101561231e576000670de0b6b3a76400006004600a54613e6f919061599e565b613e8190670de0b6b3a7640000615a93565b613e8b9086615a35565b613e95919061599e565b90506000613ea38787614d69565b90506000670de0b6b3a7640000613eba8484615a35565b613ec4919061599e565b6001600160a01b0389166000908152600d602052604090205490915081613eea8a614315565b613ef49190615958565b1115613ff8576001600160a01b0388166000908152600d602052604081205482613f1d8b614315565b613f279190615958565b613f319190615a93565b9050613f3c89614315565b811115613f4f57613f4c89614315565b90505b6000670de0b6b3a76400006002600a54613f69919061599e565b613f7b8a670de0b6b3a7640000615a93565b613f859190615a35565b613f8f919061599e565b9050670de0b6b3a7640000613fa4828a615958565b1015613ff5576000613fb6828a615958565b613fc890670de0b6b3a7640000615a93565b905080613fdd670de0b6b3a764000085615a35565b613fe7919061599e565b613ff19086615958565b9650505b50505b505050949350505050565b60006011548260a001511015801561402157506012548260a0015111155b156112bc5760008061403b8460000151856020015161439d565b91509150600084604001518311614053576000614062565b60408501516140629084615a93565b9050600085604001518411614086578386604001516140819190615a93565b614089565b60005b6140939084615958565b90508082106140d4576140cd6040518060800160405280868152602001858152602001886040015181526020018860800151815250614efd565b94506142b5565b8386604001511180156140e75750600084115b156142755760008487604001516140fe9190615a93565b9050600061415b6040518060c0016040528084815260200188886141229190615958565b8152600060208201526040016141388589615958565b815260200160008152602001888b606001516141549190615a93565b905261503f565b9050600061417189600001518a60200151611866565b89519091506000906141b590828c6020015160018111156141a257634e487b7160e01b600052602160045260246000fd5b146141ae576000611866565b6001611866565b90506000826141c48584615a35565b6141ce919061599e565b905060006141ff60405180608001604052808c81526020018b81526020018c81526020018e60800151815250614efd565b9050600061420d828c6159b2565b9050600061421b8489615a35565b90506000614229898e615958565b9050806142368385615917565b6142409190615970565b9d5060008e13156142675760006142578f896159b2565b90506142638782615970565b9e50505b5050505050505050506142b5565b6142b26040518060c0016040528088604001518152602001858152602001868152602001838152602001848152602001886060015181525061503f565b94505b50505050919050565b60006011548211156112bc57670de0b6b3a76400006002600a546142e2919061599e565b6142f490670de0b6b3a7640000615a93565b6009546143019085615a93565b61430b9190615a35565b611b08919061599e565b600080826001600160a01b03166341bc7b1f6040518163ffffffff1660e01b815260040160606040518083038186803b15801561435157600080fd5b505afa158015614365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143899190615680565b5050905061439681612bd4565b9392505050565b600080600080856001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b1580156143db57600080fd5b505afa1580156143ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441391906156ad565b9092509050600085600181111561443a57634e487b7160e01b600052602160045260246000fd5b146144bb57604051634dcb776760e11b81523060048201526001600160a01b03821690639b96eece9060240160206040518083038186803b15801561447e57600080fd5b505afa158015614492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b69190615767565b614532565b604051634dcb776760e11b81523060048201526001600160a01b03831690639b96eece9060240160206040518083038186803b1580156144fa57600080fd5b505afa15801561450e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145329190615767565b9350600085600181111561455657634e487b7160e01b600052602160045260246000fd5b146145d757604051634dcb776760e11b81523060048201526001600160a01b03831690639b96eece9060240160206040518083038186803b15801561459a57600080fd5b505afa1580156145ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145d29190615767565b61464e565b604051634dcb776760e11b81523060048201526001600160a01b03821690639b96eece9060240160206040518083038186803b15801561461657600080fd5b505afa15801561462a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464e9190615767565b925050509250929050565b600080866146678488615958565b6146719190615a93565b9050600061467f8686615a93565b90506000670de0b6b3a7640000836146978285615a35565b6146a1919061599e565b600a546146ae9190615a35565b6146b8919061599e565b905088156146fb5760006146cd60028361599e565b90506000816146dc8b8e615a93565b6146e69190615a35565b90506146f28c8261599e565b95505050614750565b876000670de0b6b3a7640000856147128285615a35565b61471c919061599e565b600a546147299190615a35565b614733919061599e565b905060026147418285615958565b61474b919061599e565b955050505b5050509695505050505050565b60006147b2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166151759092919063ffffffff16565b80519091501561355c57808060200190518101906147d0919061562b565b61355c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109ad565b601554604051639ca423b360e01b81526001600160a01b0385811660048301526000921690639ca423b39060240160206040518083038186803b15801561487557600080fd5b505afa158015614889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148ad919061529b565b90506001600160a01b038116158015906148c957506000601654115b15613526576006546148e5906001600160a01b0316828561352c565b604080516001600160a01b03808416825286166020820152908101849052606081018390527f8fa68a6a8e2fc9ff758a6e64afba8bc2f66fb082999a2c5225c8c49633faded49060800160405180910390a150505050565b60008061494a8585614d69565b905082811015610b8c57610b898184615a93565b600f54600090156149ee57336000908152601d602052604090205461498557600f54614996565b336000908152601d60205260409020545b6149a890670de0b6b3a7640000615958565b6149ba670de0b6b3a764000085615a35565b6149c4919061599e565b6149ce9084615a93565b600e546006549192506149ee916001600160a01b0390811691168361352c565b6007546001600160a01b03166317fd849a614a098386615a93565b6040518263ffffffff1660e01b8152600401614a2791815260200190565b60206040518083038186803b158015614a3f57600080fd5b505afa158015614a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a779190615767565b6001600160a01b0385166000908152600d602052604090205411614ab3576001600160a01b0384166000908152600d6020526040812055614b79565b6007546001600160a01b03166317fd849a614ace8386615a93565b6040518263ffffffff1660e01b8152600401614aec91815260200190565b60206040518083038186803b158015614b0457600080fd5b505afa158015614b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b3c9190615767565b6001600160a01b0385166000908152600d6020526040902054614b5f9190615a93565b6001600160a01b0385166000908152600d60205260409020555b6000601654118015614b9557506015546001600160a01b031615155b15613526576000601654670de0b6b3a7640000614bb29190615958565b614bc4670de0b6b3a764000086615a35565b614bce919061599e565b614bd89085615a93565b905061387283828661482f565b600080856001600160a01b03166341bc7b1f6040518163ffffffff1660e01b815260040160606040518083038186803b158015614c2157600080fd5b505afa158015614c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c599190615680565b506005546040516315905ec160e31b8152600481018490529294509092506000916101009091046001600160a01b03169063ac82f6089060240160206040518083038186803b158015614cab57600080fd5b505afa158015614cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ce39190615767565b9050600080876001811115614d0857634e487b7160e01b600052602160045260246000fd5b14614d1557828210614d1a565b828210155b60408051338152602081018990528215158183015290519192507f80631c28c8a8100630a9d2bce38b276a55426b59f4d47fb06072105118083ec1919081900360600190a15050505050505050565b6000806000846001600160a01b031663cc2ee1966040518163ffffffff1660e01b8152600401604080518083038186803b158015614da657600080fd5b505afa158015614dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dde91906156ad565b90925090506000846001811115614e0557634e487b7160e01b600052602160045260246000fd5b14614e8657604051634dcb776760e11b81523060048201526001600160a01b03821690639b96eece9060240160206040518083038186803b158015614e4957600080fd5b505afa158015614e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e819190615767565b61307d565b604051634dcb776760e11b81523060048201526001600160a01b03831690639b96eece9060240160206040518083038186803b158015614ec557600080fd5b505afa158015614ed9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307d9190615767565b600080614fb36040518060c00160405280856040015181526020018560000151815260200185602001518152602001670de0b6b3a7640000866020015111614f67576020860151614f5690670de0b6b3a7640000615a93565b8651614f629190615958565b614f6a565b85515b8152602001670de0b6b3a7640000866020015111614f89576000614fa1565b670de0b6b3a76400008660200151614fa19190615a93565b8152602001856060015181525061503f565b90506000614fc260028361599e565b9050600084604001518560000151614fda9190615a93565b90506000670de0b6b3a7640000808760000151670de0b6b3a7640000856150019190615a35565b61500b919061599e565b6150159190615958565b61502060028661599e565b61502a9190615a35565b615034919061599e565b90506142b281615ad6565b60008082604001518360a00151846020015161505b9190615958565b6150659190615a93565b905060008360800151846060015161507d9190615a93565b90506000670de0b6b3a7640000836150958285615a35565b61509f919061599e565b600a546150ac9190615a35565b6150b6919061599e565b60408601519091501561512b5760006150d060028361599e565b9050600081876040015188600001516150e99190615a93565b6150f39190615a35565b8751909150670de0b6b3a76400009061510c8284615a35565b615116919061599e565b615120919061599e565b979650505050505050565b60208501516000670de0b6b3a7640000856151468285615a35565b615150919061599e565b600a5461515d9190615a35565b615167919061599e565b905060026151168285615958565b606061231e848460008585843b6151ce5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109ad565b600080866001600160a01b031685876040516151ea91906157cd565b60006040518083038185875af1925050503d8060008114615227576040519150601f19603f3d011682016040523d82523d6000602084013e61522c565b606091505b509150915061512082828660608315615246575081614396565b8251156152565782518084602001fd5b8160405162461bcd60e51b81526004016109ad9190615850565b8035600281106112bc57600080fd5b600060208284031215615290578081fd5b813561439681615b1c565b6000602082840312156152ac578081fd5b815161439681615b1c565b600080604083850312156152c9578081fd5b82356152d481615b1c565b946020939093013593505050565b60008060008060008060c087890312156152fa578182fd5b863561530581615b1c565b9550602087013561531581615b1c565b9450604087013561532581615b1c565b9350606087013561533581615b1c565b9250608087013561534581615b31565b8092505060a087013590509295509295509295565b6000806040838503121561536c578182fd5b823561537781615b1c565b9150602083013561538781615b31565b809150509250929050565b600080600080600080600080610100898b0312156153ae578182fd5b88356153b981615b1c565b975060208901356153c981615b1c565b965060408901356153d981615b1c565b95506060890135945060808901356153f081615b1c565b979a969950949793969560a0850135955060c08501359460e001359350915050565b60008060408385031215615424578182fd5b823561542f81615b1c565b915061543d60208401615270565b90509250929050565b60008060006060848603121561545a578283fd5b833561546581615b1c565b925061547360208501615270565b9150604084013590509250925092565b60008060008060808587031215615498578182fd5b84356154a381615b1c565b93506154b160208601615270565b92506040850135915060608501356154c881615b1c565b939692955090935050565b600080600080600060a086880312156154ea578283fd5b85356154f581615b1c565b945061550360208701615270565b94979496505050506040830135926060810135926080909101359150565b60008060008060008060c08789031215615539578384fd5b863561554481615b1c565b955061555260208801615270565b945060408701359350606087013592506080870135915060a087013561557781615b1c565b809150509295509295509295565b600080600080600080600060e0888a03121561559f578081fd5b87356155aa81615b1c565b96506155b860208901615270565b955060408801359450606088013593506080880135925060a08801356155dd81615b1c565b915060c08801356155ed81615b1c565b8091505092959891949750929550565b600080604083850312156152c9578182fd5b600060208284031215615620578081fd5b813561439681615b31565b60006020828403121561563c578081fd5b815161439681615b31565b600060208284031215615658578081fd5b5035919050565b60008060408385031215615671578182fd5b50508035926020909101359150565b600080600060608486031215615694578081fd5b8351925060208401519150604084015190509250925092565b600080604083850312156156bf578182fd5b82516156ca81615b1c565b602084015190925061538781615b1c565b600080604083850312156156ed578182fd5b82356156f881615b1c565b9150602083013561538781615b1c565b60008060006060848603121561571c578081fd5b833561572781615b1c565b9250602084013561573781615b1c565b929592945050506040919091013590565b600060208284031215615759578081fd5b815160038110614396578182fd5b600060208284031215615778578081fd5b5051919050565b60008060408385031215615791578182fd5b505080516020909101519092909150565b6000806000606084860312156157b6578081fd5b505081359360208301359350604090920135919050565b600082516157df818460208701615aaa565b9190910192915050565b6001600160a01b038881168252878116602083015260e08201906002881061582157634e487b7160e01b600052602160045260246000fd5b87604084015286606084015285608084015280851660a084015280841660c08401525098975050505050505050565b602081526000825180602084015261586f816040850160208701615aaa565b601f01601f19169190910160400192915050565b6020808252603c908201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060408201527f7768696c652074686520636f6e74726163742069732070617573656400000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600080821280156001600160ff1b038490038513161561593957615939615af0565b600160ff1b839003841281161561595257615952615af0565b50500190565b6000821982111561596b5761596b615af0565b500190565b60008261597f5761597f615b06565b600160ff1b82146000198414161561599957615999615af0565b500590565b6000826159ad576159ad615b06565b500490565b60006001600160ff1b03818413828413808216868404861116156159d8576159d8615af0565b600160ff1b848712828116878305891216156159f6576159f6615af0565b858712925087820587128484161615615a1157615a11615af0565b87850587128184161615615a2757615a27615af0565b505050929093029392505050565b6000816000190483118215151615615a4f57615a4f615af0565b500290565b60008083128015600160ff1b850184121615615a7257615a72615af0565b6001600160ff1b0384018313811615615a8d57615a8d615af0565b50500390565b600082821015615aa557615aa5615af0565b500390565b60005b83811015615ac5578181015183820152602001615aad565b838111156135265750506000910152565b6000600160ff1b821415615aec57615aec615af0565b0390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114610b6457600080fd5b8015158114610b6457600080fdfea2646970667358221220e8ab368ae8a0f80002551789887e7ed12c0b65066712b47fe0654050533da9c864736f6c63430008040033
🤖 Code Reader

Generate instant answers for your smart contract questions using Al Models. Read more.

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.