0 txs
25 calls
constructor
No constructor.
functions
blocksUntilNextHalving
viewfunction blocksUntilNextHalving() view returns (uint256)
burnPct
viewfunction burnPct() view returns (uint256)
cooldown
viewfunction cooldown() view returns (uint256)
cumulativeHashcoinPerHash
viewfunction cumulativeHashcoinPerHash() view returns (uint256)
facilities
viewfunction facilities(uint256) view returns (uint256 maxMiners, uint256 cost, bool inProduction)
facilityCount
viewfunction facilityCount() view returns (uint256)
getEthPrice
viewfunction getEthPrice() view returns (uint256)
getHashcoinPerBlock
viewfunction getHashcoinPerBlock() view returns (uint256)
getInitialFacilityPrice
viewfunction getInitialFacilityPrice() view returns (uint256 price)
getMinersOnMarketplace
viewfunction getMinersOnMarketplace() view returns (tuple[])
getNextInitialFacilityPrice
viewfunction getNextInitialFacilityPrice() view returns (uint256 price)
getPlayerMinersPaginated
viewfunction getPlayerMinersPaginated(address player, uint256 startIndex, uint256 size) view returns (tuple[])
getReferrals
viewfunction getReferrals(address referrer) view returns (address[])
getTokenAmountFromEthAmount
viewfunction getTokenAmountFromEthAmount(uint256 _ethAmount) view returns (uint256)
HALVING_INTERVAL
viewfunction HALVING_INTERVAL() view returns (uint256)
halvingOvershoot
viewfunction halvingOvershoot() view returns (uint256)
hashcoin
viewfunction hashcoin() view returns (address)
hashtoshi
viewfunction hashtoshi() view returns (address)
INITIAL_HASHCOIN_PER_BLOCK
viewfunction INITIAL_HASHCOIN_PER_BLOCK() view returns (uint256)
initializedStarterFacility
viewfunction initializedStarterFacility(address) view returns (bool)
initialMinerCnt
viewfunction initialMinerCnt() view returns (uint256)
isTokenTradeable
viewfunction isTokenTradeable() view returns (bool)
lastFacilityUpgradeTimestamp
viewfunction lastFacilityUpgradeTimestamp(address) view returns (uint256)
lastRewardBlock
viewfunction lastRewardBlock() view returns (uint256)
lordztoshi
viewfunction lordztoshi() view returns (address)
marketFee
viewfunction marketFee() view returns (uint256)
MAX_SUPPLY
viewfunction MAX_SUPPLY() view returns (uint256)
miners
viewfunction miners(uint256) view returns (uint256 minerIndex, uint256 id, uint256 x, uint256 hashrate, uint256 level, uint256 cost, bool isListedSell, uint256 sellPrice, address owner, bool inProduction)
minersListedOnMarketplace
viewfunction minersListedOnMarketplace() view returns (uint256 _spacer)
miningHasStarted
viewfunction miningHasStarted() view returns (bool)
owner
viewfunction owner() view returns (address)
ownerToFacility
viewfunction ownerToFacility(address) view returns (uint256 facilityIndex, uint256 maxMiners, uint256 currMiners)
pendingRewards
viewfunction pendingRewards(address player) view returns (uint256)
playerHashcoinDebt
viewfunction playerHashcoinDebt(address) view returns (uint256)
playerHashcoinPerBlock
viewfunction playerHashcoinPerBlock(address player) view returns (uint256)
playerHashrate
viewfunction playerHashrate(address) view returns (uint256)
playerMinersId
viewfunction playerMinersId(uint256) view returns (uint256 minerIndex, uint256 id, uint256 x, uint256 hashrate, uint256 level, uint256 cost, bool isListedSell, uint256 sellPrice, address owner, bool inProduction)
playerMinersOwned
viewfunction playerMinersOwned(address) view returns (uint256 _spacer)
playerOccupiedCoords
viewfunction playerOccupiedCoords(address, uint256) view returns (bool)
playerPendingRewards
viewfunction playerPendingRewards(address) view returns (uint256)
poolAddress
viewfunction poolAddress() view returns (address)
priceFeed
viewfunction priceFeed() view returns (address)
printoshi
viewfunction printoshi() view returns (address)
referralBonusPaid
viewfunction referralBonusPaid(address) view returns (uint256)
referralFee
viewfunction referralFee() view returns (uint256)
referrals
viewfunction referrals(address) view returns (address)
referredUsers
viewfunction referredUsers(address, uint256) view returns (address)
REWARDS_PRECISION
viewfunction REWARDS_PRECISION() view returns (uint256)
startBlock
viewfunction startBlock() view returns (uint256)
STARTER_FACILITY_INDEX
viewfunction STARTER_FACILITY_INDEX() view returns (uint256)
STARTER_MINER_INDEX
viewfunction STARTER_MINER_INDEX() view returns (uint256)
timeUntilNextFacilityUpgrade
viewfunction timeUntilNextFacilityUpgrade(address player) view returns (uint256)
totalHashrate
viewfunction totalHashrate() view returns (uint256)
uniqueMinerCount
viewfunction uniqueMinerCount() view returns (uint256)
wethAddress
viewfunction wethAddress() view returns (address)
addFacility
nonpayablefunction addFacility(uint256 maxMiners, uint256 cost, bool inProduction)
addMiner
nonpayablefunction addMiner(uint256 hashrate, uint256 cost, bool inProduction)
buyMiner
nonpayablefunction buyMiner(uint256 minerIndex)
buyMinerFromMarket
payablefunction buyMinerFromMarket(uint256 minerId) payable
buyNewFacility
nonpayablefunction buyNewFacility()
cancelListForSale
nonpayablefunction cancelListForSale(uint256 minerId)
changeFacilityCost
nonpayablefunction changeFacilityCost(uint256 facilityIndex, uint256 newCost)
changeMinerCost
nonpayablefunction changeMinerCost(uint256 minerIndex, uint256 newCost)
claimRewards
nonpayablefunction claimRewards()
initialize
nonpayablefunction initialize()
listForSale
nonpayablefunction listForSale(uint256 minerId, uint256 price)
purchaseInitialFacility
payablefunction purchaseInitialFacility(address referrer) payable
purchaseInitialFacilityFree
nonpayablefunction purchaseInitialFacilityFree(address user)
removeMiner
nonpayablefunction removeMiner(uint256 minerId)
renounceOwnership
nonpayablefunction renounceOwnership()
setBurnPct
nonpayablefunction setBurnPct(uint256 burn)
setCooldown
nonpayablefunction setCooldown(uint256 _cooldown)
setHalvingInterval
nonpayablefunction setHalvingInterval(uint256 _halvingInterval)
setHashcoin
nonpayablefunction setHashcoin(address _hashcoin)
setHashtoshi
nonpayablefunction setHashtoshi(address _hashtoshi)
setInitialHashcoinPerBlock
nonpayablefunction setInitialHashcoinPerBlock(uint256 _initialHashcoinPerBlock)
setLordztoshi
nonpayablefunction setLordztoshi(address _lordztoshi)
setMarketFee
nonpayablefunction setMarketFee(uint256 _marketFee)
setPoolInfo
nonpayablefunction setPoolInfo(address _weth, address _pool, bool _isTokenTradeable)
setPriceFeed
nonpayablefunction setPriceFeed(address _priceFeed)
setPrintoshi
nonpayablefunction setPrintoshi(address _printoshi)
setReferralFee
nonpayablefunction setReferralFee(uint256 fee)
startMining
nonpayablefunction startMining(uint256 minerId, uint256 x)
stopMining
nonpayablefunction stopMining(uint256 minerId)
toggleFacilityProduction
nonpayablefunction toggleFacilityProduction(uint256 facilityIndex, bool inProduction)
toggleMinerProduction
nonpayablefunction toggleMinerProduction(uint256 minerIndex, bool inProduction)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateMiner
nonpayablefunction updateMiner(uint256 minerId)
withdraw
nonpayablefunction withdraw()
withdrawHashcoin
nonpayablefunction withdrawHashcoin(uint256 amt)
events
FacilityBought
event FacilityBought(address indexed player, uint256 indexed facilityIndex, uint256 cost)
FacilityCostChanged
event FacilityCostChanged(uint256 indexed facilityIndex, uint256 newCost)
FacilityProductionToggled
event FacilityProductionToggled(uint256 indexed facilityIndex, bool inProduction)
InitialFacilityPurchased
event InitialFacilityPurchased(address indexed player)
Initialized
event Initialized(uint8 version)
ListedForSale
event ListedForSale(address indexed player, uint256 indexed minerId)
MinerBought
event MinerBought(address indexed player, uint256 indexed minerIndex, uint256 cost, uint256 minerId, uint256 x)
MinerBoughtOnMarketplace
event MinerBoughtOnMarketplace(address indexed oldOwner, address indexed newOwner, uint256 indexed minerIndex, uint256 minerId, uint256 cost)
MinerCostChanged
event MinerCostChanged(uint256 indexed minerIndex, uint256 newCost)
MinerProductionToggled
event MinerProductionToggled(uint256 indexed minerIndex, bool inProduction)
MinerSold
event MinerSold(address indexed player, uint256 indexed minerIndex, uint256 secondHandPrice, uint256 minerId, uint256 x)
MinerUpdated
event MinerUpdated(address indexed player, uint256 indexed minerIndex, uint256 level, uint256 minerId, uint256 x)
MiningStarted
event MiningStarted(uint256 startBlock)
NewFacilityAdded
event NewFacilityAdded(uint256 indexed facilityIndex, uint256 cost, bool inProduction)
NewMinerAdded
event NewMinerAdded(uint256 indexed minerIndex, uint256 hashRate, uint256 cost, bool inProduction)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PlayerHashrateDecreased
event PlayerHashrateDecreased(address indexed player, uint256 playerHashrate, uint256 playerPendingRewards)
PlayerHashrateIncreased
event PlayerHashrateIncreased(address indexed player, uint256 playerHashrate, uint256 playerPendingRewards)
RewardsClaimed
event RewardsClaimed(address indexed player, uint256 rewards)
StartedMining
event StartedMining(address indexed player, uint256 indexed minerId, uint256 x)
StoppedMining
event StoppedMining(address indexed player, uint256 indexed minerId)
errors
AlreadyAtMaxFacility
error AlreadyAtMaxFacility()
AlreadyPurchasedInitialFactory
error AlreadyPurchasedInitialFactory()
CantBuyNewFacilityYet
error CantBuyNewFacilityYet()
CantModifyStarterFacility
error CantModifyStarterFacility()
CantModifyStarterMiner
error CantModifyStarterMiner()
IncorrectValue
error IncorrectValue()
IndexOutOfBounds
error IndexOutOfBounds()
InvalidFacilityIndex
error InvalidFacilityIndex()
InvalidFee
error InvalidFee()
InvalidMinerCoordinates
error InvalidMinerCoordinates()
InvalidMinerIndex
error InvalidMinerIndex()
InvalidReferrer
error InvalidReferrer()
MinerFullUpdated
error MinerFullUpdated()
MinerInMarket
error MinerInMarket()
MinerInMining
error MinerInMining()
MinerInStore
error MinerInStore()
MinerNotInProduction
error MinerNotInProduction()
MiningHasntStarted
error MiningHasntStarted()
NeedToInitializeFacility
error NeedToInitializeFacility()
NewFacilityNotInProduction
error NewFacilityNotInProduction()
NonExistentFacility
error NonExistentFacility()
NonExistentMiner
error NonExistentMiner()
NoRewardsPending
error NoRewardsPending()
NotListedMinerOnMarketplace
error NotListedMinerOnMarketplace()
PlayerDoesNotOwnMiner
error PlayerDoesNotOwnMiner()
TokenNotTradeable
error TokenNotTradeable()
TooPoor
error TooPoor()
WithdrawFailed
error WithdrawFailed()
creation bytecode
0x60808060405234601557615055908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c80630625708014613db45780630b5a0fdc14613d965780630ccf215614613d7857806310d9675914613d2557806312719c6b14613d0a578063157e204c14613cd15780631755ff2114613ca857806318431dde14613c8a5780631a267cd214613c515780631e57057d14613c18578063202fb05014613bd8578063234f3f1b14613b9f5780632461ca5914613b7c57806326b825d214613b595780632c35920914613b195780632ebf3d6e14613afb5780632fc96ce614613a7c57806330775a94146137d457806331d7a262146137b057806332cb6b0c1461378a578063372500ab1461368a5780633b714199146134785780633ccfd60b146133895780633d16f609146130ff5780633e89bb1314612cb657806340f5da9e14612c7d57806341a0894d14612bb657806348cd4cb114612b985780634bd0e37914612b745780634bda97da14612b4b5780634e37895814612a375780634f0e0ef314612a0e5780634fc3f41a146129eb57806353d6103d14612964578063542f9e6a1461290a5780635717b732146128c157806359058ad11461093e5780635a5ccef0146128a35780635fd9491d14612885578063613ba7601461258e57806362de3bd1146121015780636756a1c71461207d57806367c9b0171461206257806369f0ee3314611fde5780636d12ff5214611fc05780636d3d539314611f97578063713494d714611f65578063715018a614611f08578063724e78da14611ec857806372779cba14611eaa57806372d298bb14611e8f578063741bef1a14611e66578063787a08a614611e485780637a1728d614611e085780637e08b5b314611dcf578063811c508914611dab5780638129fc1c14611c4357806384ae2bc614611c2557806386b3cd2614611c0257806388e8e6fa146119215780638da5cb5b146118f857806394fc19e4146118d55780639618b31c146118b75780639ca423b3146118765780639d52cb211461185b5780639fe660b014611832578063a9f8d18114611814578063aef39abf146117db578063bd611496146117bd578063c032a93414611794578063c062c90b146115e5578063c0f9acc5146115be578063c243589414611520578063c51a2bba146114df578063c8b87ca8146114bc578063ca1811701461147d578063d0d6872a1461109a578063d147129614610ff9578063d30c3ed414610fd3578063d9d3a8a914610fb5578063da01ff3314610f08578063dd6a4c6514610e95578063e0d152af14610e1e578063e35514ba14610dde578063e681c93414610be4578063e80d7fec146109a4578063e92820e614610943578063ea26fa2d1461093e578063f2fde38b146108ad5763fc1e62f5146103fb57600080fd5b60203660031901126108aa57600435806318fb586460045260898352602483209068fbb67fda52d4bfb8bf811461089d578015918261088c575b8019541561085a576020528352604083205415155b1561084b57818352607b6020526040832090600782019081549384340361083c57600884019460018060a01b0386541690608a54606403906064821161082857888093606461049b8395849561447c565b04905af16104a761467f565b5015610819576002928660649593819360018060a01b038954168352607a602052826040812082906318fb58646004528252602482209084610809575b811980549182159260011c93600019850191600183811b17946107b157816020528652604086209485549283156107a457830360001901610785575b50505055555b338352607a602052604083206318fb58646004528352602483208183610775575b8119918254918160205282156106d9575b80875260408720928354156106bf5750505050505b6318fb58646004526089835260248320916106af575b811980549182159260011c93600019850191600183811b1794610657578160205286526040862094855492831561064a5783036000190161062b575b50505055555b60018060a01b03865416835490606b5490835460405192835260208301527f7e88d2a81696453849a2b46e8b04e17d88735ac6822ad461ad70d0b83a2e09aa60403393a460068301805460ff1916905555015580546001600160a01b0319163317905580f35b81016000199081015491830101819055855260408520553880806105bf565b50505050505050506105c5565b9450925050506001828254146106985781018281541461068957508601908154146106835750506105c5565b556105c5565b915086019081549055556105c5565b8188929350019182548155019081549055556105c5565b5068fbb67fda52d4bfb8bf610583565b60011c8092015560010180915560011b600117905561056d565b91508054801561076d5782811461076457600182018054908115610758575083811461074e578b830191825492831561074157508483146107365788526001604089205587528a6040882055865260036040872055600791610558565b50505050505061056d565b949550505050505561056d565b505050505061056d565b9394505050505561056d565b5050505061056d565b50555061056d565b5068fbb67fda52d4bfb8bf610547565b8101600019908101549183010181905585526040852055388080610520565b5050505050505050610526565b9450925050506001828254146107f2578101828154146107e357508901908154146107dd575050610526565b55610526565b91508901908154905555610526565b818b92935001918254815501908154905555610526565b5068fbb67fda52d4bfb8bf6104e4565b631d42c86760e21b8652600486fd5b634e487b7160e01b89526011600452602489fd5b636956f2ab60e11b8652600486fd5b6386db792d60e01b8352600483fd5b90600191818154146108855781838201541461088557600201541461088057508261044a565b61044a565b505061044a565b68fbb67fda52d4bfb8bf9150610435565b63f5a267f184526004601cfd5b80fd5b50346108aa5760203660031901126108aa576108c7613fe5565b6108cf614a1a565b6001600160a01b038116156108ea576108e790614e00565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b61402d565b50346108aa5760403660031901126108aa5761095d613fe5565b6001600160a01b03168152608160205260408120805460243592908310156108aa57602061098b84846140b0565b905460405160039290921b1c6001600160a01b03168152f35b50346108aa576109b336614049565b338352607a602052604083206318fb5864600452835260248320908268fbb67fda52d4bfb8bf8114610bd75783159283610bc6575b80195415610b94576020528452604084205415155b15610b8557828452607b6020526040842060ff600882015460a01c1615610b765760068101805460ff8116610b675760ff19166001179055600701556318fb58646004526089835260248320908290610b57575b811991825491816020528215610ab9575b8086526040862092835415610a9f5750505050505b337fd8e128775b7d140e398e926eac4a340f22911251358cb8069551f12bc0f5ab618380a380f35b60011c8092015560010180915560011b6001179055610a77565b915080548015610b4f57828114610b4657600182018054908115610b3a5750838114610b305760028301918254928315610b235750848314610b1857875260016040882055865260026040872055855260036040862055600791610a62565b505050505050610a77565b9495505050505055610a77565b5050505050610a77565b93945050505055610a77565b50505050610a77565b505550610a77565b5068fbb67fda52d4bfb8bf610a51565b63036201cb60e31b8752600487fd5b631551537360e31b8552600485fd5b633d9f63cb60e01b8452600484fd5b9060019181815414610bbf57818382015414610bbf576002015414610bba5750836109fd565b6109fd565b50506109fd565b68fbb67fda52d4bfb8bf91506109e8565b63f5a267f185526004601cfd5b50346108aa5760203660031901126108aa57600435610c01614a1a565b606554606654821592916001600160a01b039081169116600283901b600484820414851715610dca5760405163a9059cbb60e01b81526001600160a01b03929092166004830152600a90046024820181905290916020908390604490829089905af1908115610dbf57610cb792602092610da4575b5060655460675460405163a9059cbb60e01b81526001600160a01b039182166004820152602481019390935291938492909116908290889082906044820190565b03925af18015610d9957610d7c575b506065546068546001600160a01b0390811693911691600181901b919082046002141715610d685760405163a9059cbb60e01b81526001600160a01b03939093166004840152600a900460248301526020908290604490829086905af18015610d5d57610d31575080f35b610d529060203d602011610d56575b610d4a818361412d565b81019061448f565b5080f35b503d610d40565b6040513d84823e3d90fd5b634e487b7160e01b84526011600452602484fd5b610d949060203d602011610d5657610d4a818361412d565b610cc6565b6040513d86823e3d90fd5b610dba90833d8511610d5657610d4a818361412d565b610c76565b6040513d87823e3d90fd5b634e487b7160e01b86526011600452602486fd5b50346108aa5760203660031901126108aa57610df8613fe5565b610e00614a1a565b60018060a01b03166001600160601b0360a01b606754161760675580f35b50346108aa5760203660031901126108aa576040906004358152607860205220805490610e916001820154916002810154936003820154916004810154600582015460ff600684015416916008600785015494015495604051998a9960ff8960a01c169860018060a01b0316978b61405f565b0390f35b50346108aa5760203660031901126108aa576040906004358152607b60205220805490610e916001820154916002810154936003820154916004810154600582015460ff600684015416916008600785015494015495604051998a9960ff8960a01c169860018060a01b0316978b61405f565b50346108aa57610fa37facd28bd76121326a9c13dcb739c4632431262fe21dd53bc297abf4c60b03445c6040610f3d3661400a565b949091610f48614a1a565b6002610f55606e546144a7565b9687606e55855192610f6684614111565b835260208301858152868401911515988983528a526079602052868a209351845551600184015551151591019060ff801983541691151516179055565b606e549382519182526020820152a280f35b50346108aa57806003193601126108aa576020607154604051908152f35b50346108aa57806003193601126108aa57602060ff60885460a01c166040519015158152f35b50346108aa5760403660031901126108aa57600435611016613ffb565b61101e614a1a565b60018210801561108f575b6110805760207f0bd772fd008a8dd5673c42a4f50f72220b2603eee55113cd6c38ff78d71e644f918385526079825261107481600260408820019060ff801983541691151516179055565b6040519015158152a280f35b631dbb333f60e31b8352600483fd5b50606e548211611029565b50346108aa5760203660031901126108aa576110b4613fe5565b906110bd614a1a565b6001600160a01b038216808252607d602052604082205490929060ff1661146e578260ff938352607d602052604083206001851982541617905560018352607960205260408320908460026040519361111585614111565b805485526001810154602086015201541615156040830152808452607c602052604084209160018355516001830155808452607f60205242604085205560405191817fe424ed553a53c3a900c875ed34d63043e4dfb799427ee8ae0836b046a603c90e8680a26001855260786020526040852092611192816140de565b835481526001840154906020810191825260408101946003810154956060830196875260048201546080840190815260058301549060a085019182528b6006850154169260c086019315158452600860078601549560e0880196875201549661010087019760018060a01b038116895261012088019e8f9160a01c16151590528c8252611220606b546144a7565b80606b558152898852898d52607e60205260408d208d805260205260408d20600160ff19825416179055898d52607a6020528c60246040822091606b54926318fb58646004528152209068fbb67fda52d4bfb8bf811461146157958e9f956108e79f958e60019e9d9b9661134f9b96604060029f9c9a61130d988c60089d15611451575b8119918254918160205282156113b6575b8085528585209283541561139c5750505050505b606b548152607b6020522098518955516001890155518d880155516003870155516004860155516005850155511515600684019060ff801983541691151516179055565b516007820155925192018054915160ff60a01b1960a08a811b8b900395909516166001600160a81b03199093169290921791151590921b60ff60a01b16179055565b0161135a81546144a7565b90557f02c783c8f6fb950cd4c364db52f36a1823b864f2ef1790005074c61d9a46cf406060606b54604051908982526020820152886040820152a35190614d22565b60011c8092015560010180915560011b60011790556112c9565b9150805480156114495782811461144057600182018054908115611434575083811461142a576002830191825492831561141d5750848314611412578652600187872055855260028686205584526003858520556007916112b5565b5050505050506112c9565b94955050505050556112c9565b50505050506112c9565b939450505050556112c9565b505050506112c9565b5055506112c9565b5068fbb67fda52d4bfb8bf6112a4565b63f5a267f18f526004601cfd5b6311fcdefb60e31b8252600482fd5b50346108aa5760203660031901126108aa5760209060ff906040906001600160a01b036114a8613fe5565b168152607d84522054166040519015158152f35b50346108aa5760203660031901126108aa576114d6614a1a565b60043560845580f35b50346108aa5760203660031901126108aa576004356114fc614a1a565b670de0b6b3a764000081116115115760745580f35b6358d620b360e01b8252600482fd5b50346108aa5760403660031901126108aa5760043561153d613ffb565b611545614a1a565b6001821080156115b3575b6115a4578183526078602090815260408420600801805460ff60a01b191683151560a01b60ff60a01b161790557fd0a7ceb410ade2d440d8ed59d6b338fe480f98025101655790e0de736edddabe91611074565b633b87f10960e01b8352600483fd5b50606d548211611550565b50346108aa5760203660031901126108aa5760206115dd60043561485e565b604051908152f35b50346108aa576115f436614049565b90338352607a6020526040832081906318fb586460045284526024842068fbb67fda52d4bfb8bf8314610bd7578215611783575b80195415611751576020528352604083205415155b1561174257808352607b6020526040832091338452607c60205260408420611669600182015483614ea9565b6117335760ff600885015460a01c1615610b76576002840160648154036117245760ff6006860154166117155791600261170f9492826108e7979555338852607e6020526040882083895260205260408820600160ff19825416179055016116d181546144a7565b90556040519081527f03671d74657ab1acda7e2472be1252af630eae6aba395b0cb64302ee5f1e20a260203392a3600460038201549101549061447c565b33614d22565b63036201cb60e31b8652600486fd5b631440b27760e31b8652600486fd5b632a00382b60e21b8552600485fd5b633d9f63cb60e01b8352600483fd5b906001918181541461177c5781838201541461177c57600201541461177757508261163d565b61163d565b505061163d565b68fbb67fda52d4bfb8bf9150611628565b50346108aa57806003193601126108aa576065546040516001600160a01b039091168152602090f35b50346108aa57806003193601126108aa576020608454604051908152f35b50346108aa5760203660031901126108aa576020906040906001600160a01b03611803613fe5565b168152607783522054604051908152f35b50346108aa57806003193601126108aa576020606f54604051908152f35b50346108aa57806003193601126108aa576067546040516001600160a01b039091168152602090f35b50346108aa57806003193601126108aa5760206115dd614817565b50346108aa5760203660031901126108aa576020906001600160a01b0361189b613fe5565b16815260808252604060018060a01b0391205416604051908152f35b50346108aa57806003193601126108aa576020607454604051908152f35b50346108aa57806003193601126108aa57602060ff606a54166040519015158152f35b50346108aa57806003193601126108aa576033546040516001600160a01b039091168152602090f35b50346108aa5760203660031901126108aa57600435338252607a602052604082209080916318fb58646004528352602483209168fbb67fda52d4bfb8bf821461089d5781159283611bf1575b80195415611bbf576020528352604083205415155b1561174257808352607b6020526040832091604051906119a1826140de565b83548252600184015460208301526064600285015460ff600860408601978389526003810154606088015260048101546080880152600581015460a088015282600682015416151560c0880152600781015460e0880152015460018060a01b03811661010087015260a01c16151561012085015203611bb057338552607a602052604085206318fb586460045285526024852085918490611ba0575b811980549182159260011c93600019850191600183811b1794611b455781602052865260408620948554928315611b3857830360001901611b19575b50505055555b818452607b602052836008604082208281558260018201558260028201558260038201558260048201558260058201558260068201558260078201550155338452607e60205260408420835185526020526040842060ff19815416905551915160405191848352602083015260408201527fa3ba90dab2a94b799931cc7fdbfe68eb1ae3716f001c082a23be2c7edc59464760603392a380f35b8101600019908101549183010181905585526040852055388080611a79565b5050505050505050611a7f565b945092505050600182825414611b8857810182815414611b78575060020190815414611b72575050611a7f565b55611a7f565b9150600201908154905555611a7f565b81600292935001918254815501908154905555611a7f565b5068fbb67fda52d4bfb8bf611a3d565b631440b27760e31b8552600485fd5b9060019181815414611bea57818382015414611bea576002015414611be5575082611982565b611982565b5050611982565b68fbb67fda52d4bfb8bf915061196d565b50346108aa57806003193601126108aa576020604051670de0b6b3a76400008152f35b50346108aa57806003193601126108aa576020607354604051908152f35b50346108aa57806003193601126108aa57805460ff8160081c161590818092611d9e575b8015611d87575b15611d2b5760ff198116600117835581611d1a575b50611c9d60ff835460081c16611c9881614e49565b614e49565b611ca633614e00565b6201518060725566b1a2bc2ec50000607355670a688906bd8b00006074556014608a5562632ea06083556706f05b59d3b20000608455611ce35780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff191661010117825538611c83565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015611c6e5750600160ff821614611c6e565b50600160ff821610611c67565b50346108aa5760203660031901126108aa5760206115dd611dca613fe5565b6147ce565b50346108aa5760203660031901126108aa576020906040906001600160a01b03611df7613fe5565b168152607f83522054604051908152f35b50346108aa5760203660031901126108aa57611e22613fe5565b611e2a614a1a565b60018060a01b03166001600160601b0360a01b606554161760655580f35b50346108aa57806003193601126108aa576020607254604051908152f35b50346108aa57806003193601126108aa576086546040516001600160a01b039091168152602090f35b50346108aa57806003193601126108aa5760206115dd6147a2565b50346108aa57806003193601126108aa576020606d54604051908152f35b50346108aa5760203660031901126108aa57611ee2613fe5565b611eea614a1a565b60018060a01b03166001600160601b0360a01b608654161760865580f35b50346108aa57806003193601126108aa57611f21614a1a565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346108aa5760203660031901126108aa57600435611f82614a1a565b670de0b6b3a764000081116115115760735580f35b50346108aa57806003193601126108aa576066546040516001600160a01b039091168152602090f35b50346108aa57806003193601126108aa576020606e54604051908152f35b50346108aa57611fed36614049565b611ff5614a1a565b606e54821161205357600182146120445760207ff721e9425607d38abda58b925d2a080b3aefa127d46973d2683875dc87cb9a6b9183855260798252806001604087200155604051908152a280f35b6378fd0bb160e11b8352600483fd5b630d96812160e31b8352600483fd5b50346108aa57806003193601126108aa5760206115dd61472f565b50346108aa5761208c36614049565b612094614a1a565b606d5482116120f257600182146120e35760207ff920b24ea96b3814655944622f9eb86875e3193c5de1a9de018777e6c8705cee9183855260788252806005604087200155604051908152a280f35b6311c175a160e21b8352600483fd5b633a6c77df60e01b8352600483fd5b50346108aa5760203660031901126108aa5760043580825260786020526040822060405161212e816140de565b81548152600182015491602082019283526002810154916040810192835260038201549160608201928352600481015460808301908152600582015460a0840190815260ff6006840154169160c085019215158352600860078501549460e0870195865201549561010086019760018060a01b038816895260ff61012088019860a01c1615158852338c52607c60205260408c20548b1161257f578751156125705760ff60885460a01c1615612561576121e8845161485e565b9960018060a01b03606554168d6040516370a0823160e01b8152336004820152602081602481865afa908115610d5d578e9291612527575b5010612515576040516323b872dd60e01b8152336004820152306024820152604481018d9052908e906020908390606490829085905af190811561250957506124ec575b506065546074548e916001600160a01b031690612281908e614a72565b813b156124e8578291602483926040519485938492630852cd8d60e31b845260048401525af18015610d5d576124cf575b5050606482526122c3606b546144a7565b606b81905580825233808c528e52607a60205260408e206318fb58646004528e5260248e20908068fbb67fda52d4bfb8bf81146124c157928f6040906123be9e9d9c9a979460089c9a97946123839a97156124b1575b811991825491816020528215612416575b808552858520928354156123fc5750505050505b606b548152607b6020522098518955516001890155516002880155516003870155516004860155516005850155511515600684019060ff801983541691151516179055565b51600782015592519201805491516001600160a81b03199092166001600160a01b03939093169290921790151560a01b60ff60a01b16179055565b606b546040519182526020820152606460408201527f02c783c8f6fb950cd4c364db52f36a1823b864f2ef1790005074c61d9a46cf4060603392a380f35b60011c8092015560010180915560011b600117905561233e565b9150805480156124a9578281146124a057600182018054908115612494575083811461248a576002830191825492831561247d57508483146124725786526001878720558552600286862055845260038585205560079161232a565b50505050505061233e565b949550505050505561233e565b505050505061233e565b9394505050505561233e565b5050505061233e565b50555061233e565b5068fbb67fda52d4bfb8bf612319565b5063f5a267f18f526004601cfd5b816124d99161412d565b6124e4578c386122b2565b8c80fd5b8280fd5b6125049060203d602011610d5657610d4a818361412d565b612264565b604051903d90823e3d90fd5b6001627a6f0d60e11b03198e5260048efd5b9150506020813d602011612559575b816125436020938361412d565b81010312612554578c905138612220565b600080fd5b3d9150612536565b635168e68f60e01b8c5260048cfd5b631551537360e31b8c5260048cfd5b633b87f10960e01b8c5260048cfd5b50346108aa5760203660031901126108aa57600435338252607a6020526040822081906318fb586460045283526024832068fbb67fda52d4bfb8bf831461089d578215612874575b80195415612842576020528252604082205415155b1561283357808252607b602052604082209060ff600883015460a01c1615612824576004820190600561261e83546144a7565b808455116128165760ff60885460a01c161561280757612641600584015461485e565b6065546040516370a0823160e01b81523360048201526001600160a01b0390911690602081602481855afa80156127fc57839188916127c7575b50106127b5576040516323b872dd60e01b8152336004820152306024820152604481018390528692916020908290606490829087905af180156127aa5761278d575b506126d660018060a01b03606554169160745490614a72565b813b156124e8578291602483926040519485938492630852cd8d60e31b845260048401525af18015610d5d57612774575b5050606491835490547f347a455f665e43e98ee1b326fbba1f863e4872048da2e7c5aecc7b3ca7d4be1b6002860154809461275a6040519283923396846040919493926060820195825260208201520152565b0390a303612766575080f35b60036108e791015433614d22565b8161277e9161412d565b612789578338612707565b8380fd5b6127a59060203d602011610d5657610d4a818361412d565b6126bd565b6040513d85823e3d90fd5b6001627a6f0d60e11b03198652600486fd5b9150506020813d6020116127f4575b816127e36020938361412d565b81010312612554578290513861267b565b3d91506127d6565b6040513d89823e3d90fd5b635168e68f60e01b8452600484fd5b627af8a560e11b8452600484fd5b631551537360e31b8352600483fd5b633d9f63cb60e01b8252600482fd5b906001918181541461286d5781838201541461286d5760020154146128685750816125eb565b6125eb565b50506125eb565b68fbb67fda52d4bfb8bf91506125d6565b50346108aa57806003193601126108aa576020608354604051908152f35b50346108aa57806003193601126108aa576020607054604051908152f35b50346108aa5760403660031901126108aa5760209060ff906040906001600160a01b036128ec613fe5565b168152607e8452818120602435825284522054166040519015158152f35b50346108aa5760203660031901126108aa576040906001600160a01b0361292f613fe5565b168152607c602052208054610e9160026001840154930154604051938493846040919493926060820195825260208201520152565b50346108aa5760603660031901126108aa5761297e613fe5565b6024356001600160a01b038116908190036124e85760443591821515809303612789576129a9614a1a565b60018060a01b03166001600160601b0360a01b60875416176087556088549160ff60a01b9060a01b16916affffffffffffffffffffff60a81b16171760885580f35b50346108aa5760203660031901126108aa57612a05614a1a565b60043560725580f35b50346108aa57806003193601126108aa576087546040516001600160a01b039091168152602090f35b50346108aa577f503d0a5de9a7f19ca01f785cf229248bbcc040ff7abac38f7614777452a81c01612a673661400a565b9291612a71614a1a565b612b2885856008612a83606d546144a7565b80606d5560405190612a94826140de565b8082526123836020830186815260408401878152606085018a815260808601906001825260a08701928d845260c08801948b865260408c60e08b0199818b526101008c019e8f526101208c01809e15159052815260786020522098518955516001890155516002880155516003870155516004860155516005850155511515600684019060ff801983541691151516179055565b606d5460408051928352602083019390935293151591810191909152606090a280f35b50346108aa57806003193601126108aa576068546040516001600160a01b039091168152602090f35b50346108aa5760203660031901126108aa5760206115dd612b93613fe5565b6146bf565b50346108aa57806003193601126108aa576020606954604051908152f35b50346108aa5760203660031901126108aa576001600160a01b03612bd8613fe5565b168152608160205260408120604051908160208254918281520190819285526020852090855b818110612c5e5750505082612c1491038361412d565b604051928392602084019060208552518091526040840192915b818110612c3c575050500390f35b82516001600160a01b0316845285945060209384019390920191600101612c2e565b82546001600160a01b0316845260209093019260019283019201612bfe565b50346108aa5760203660031901126108aa576020906040906001600160a01b03612ca5613fe5565b168152607683522054604051908152f35b5060203660031901126108aa57612ccb613fe5565b612cd36147a2565b34036130f057338252607d60205260ff60408320541661146e576001600160a01b03163381146130e157338252607d60205260408220805460ff191660011790558061305e575b50600181526079602052604081209060ff600260405193612d3a85614111565b805485526001810154602086015201541615156040830152338152607c602052604081209160018355516001830155338152607f60205242604082205560405191337fe424ed553a53c3a900c875ed34d63043e4dfb799427ee8ae0836b046a603c90e8380a26001825260786020526040822090612db7846140de565b8154845260018201549360208101948552604081019060038401549360608201948552600481015460808301908152600582015460a0840190815260ff6006840154169160c085019215158352600860078501549460e0870195865201549561010086019a60018060a01b0388168c5260ff61012088019860a01c16151588528a8252612e45606b546144a7565b80606b558152338c52338b52607e60205260408b208b805260205260408b20600160ff19825416179055338b52607a60205260408b20606b54906318fb58646004528c5260248c209068fbb67fda52d4bfb8bf81146130515794612f2d98948d9e9894612383946108e79f60409060029f9e9b968b60089c15613041575b811991825491816020528215612fa6575b80855285852092835415612f8c5750505050505b606b548152607b6020522097518855516001880155518c8701558c516003870155516004860155516005850155511515600684019060ff801983541691151516179055565b01612f3881546144a7565b9055612f45606c546144a7565b606c556001606b546040519085825260208201528460408201527f02c783c8f6fb950cd4c364db52f36a1823b864f2ef1790005074c61d9a46cf4060603392a35133614d22565b60011c8092015560010180915560011b6001179055612ee8565b9150805480156130395782811461303057600182018054908115613024575083811461301a576002830191825492831561300d575084831461300257865260018787205585526002868620558452600385852055600791612ed4565b505050505050612ee8565b9495505050505055612ee8565b5050505050612ee8565b93945050505055612ee8565b50505050612ee8565b505550612ee8565b5068fbb67fda52d4bfb8bf612ec3565b63f5a267f18d526004601cfd5b338252608060205260408220816001600160601b0360a01b8254161790558152608160205260408120805490680100000000000000008210156130cd57906130ab916001820181556140b0565b81546001600160a01b0360039290921b91821b19163390911b17905538612d1a565b634e487b7160e01b83526041600452602483fd5b630c22084560e31b8252600482fd5b636956f2ab60e11b8252600482fd5b50346108aa5760203660031901126108aa57600435338252607a6020526040822081906318fb58646004528352602483209068fbb67fda52d4bfb8bf831461089d5782159182613378575b80195415613346576020528352604083205415155b1561174257816318fb5864600452608984526024842082613335575b80195415613303576020528352604083205415155b1561084b57818352607b6020526040832060ff600882015460a01c16156132f45760068101805460ff8116156132e55760ff191690556007018390556318fb58646004526089835260248320839183906132d5575b811980549182159260011c93600019850191600183811b179461327a578160205286526040862094855492831561326d5783036000190161324e575b5050505555337fd8e128775b7d140e398e926eac4a340f22911251358cb8069551f12bc0f5ab618380a380f35b8101600019908101549183010181905585526040852055388080613221565b5050505050505050610a77565b9450925050506001828254146132bd578101828154146132ad5750600201908154146132a7575050610a77565b55610a77565b9150600201908154905555610a77565b81600292935001918254815501908154905555610a77565b5068fbb67fda52d4bfb8bf6131e5565b63015f3da360e41b8652600486fd5b631551537360e31b8452600484fd5b906001918181541461332e5781838201541461332e576002015414613329575082613190565b613190565b5050613190565b68fbb67fda52d4bfb8bf915061317b565b90600191818154146133715781838201541461337157600201541461336c57508261315f565b61315f565b505061315f565b68fbb67fda52d4bfb8bf915061314a565b50346108aa57806003193601126108aa576133a2614a1a565b60665447906001600160a01b03168115600283901b6004848204148217156134645784808080808080600a819804809a5af1956133dd61467f565b506067546001600160a01b03165af1926133f561467f565b506068546001600160a01b031691600182901b91820460021417156134645784808093600a829404905af19061342961467f565b501591821561345b575b508115613452575b506134435780f35b631d42c86760e21b8152600490fd5b9050153861343b565b15915038613433565b634e487b7160e01b85526011600452602485fd5b50346108aa5760203660031901126108aa5760043590338152607a6020526040812082906318fb586460045282526024822068fbb67fda52d4bfb8bf841461367d57831561366c575b8019541561363a576020528152604081205415155b1561362b57818152607b60205260408120338252607c6020526040822060ff600883015460a01c1615612824576002820180546064811461361c5760ff60068501541661360d5760029291606491338752607e602052604087209087526020526040862060ff1981541690555501928354938415610d685761358e9394600019019055337f93e959f04e9258f824be3dc131d63051e7b16cc10c7f98bed3bdbe97f82d92a68580a3600460038201549101549061447c565b61359733614aa2565b6135a38160705461424a565b60705533825260756020526135bd6040832091825461424a565b9055338152607560205260408120543382526076602052604082205460405191825260208201527fe331ada0d0e61e9a4196bf4994f2519193d70a601daff346c4276d591664da9a60403392a280f35b63036201cb60e31b8552600485fd5b63015f3da360e41b8552600485fd5b633d9f63cb60e01b8152600490fd5b9060019181815414613665578183820154146136655760020154146136605750806134d6565b6134d6565b50506134d6565b68fbb67fda52d4bfb8bf91506134c1565b63f5a267f183526004601cfd5b50346108aa57806003193601126108aa576136a433614aa2565b33815260766020526040812054801561377b5733825260766020528160408120556136d160735482614a72565b6136e46136de828461424a565b33614b18565b338352608060205260408320546001600160a01b031680156137525761370a8282614b18565b835260826020526137206040842091825461426d565b90555b6040519081527ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe60203392a280f35b5061375d8130614b18565b30835260826020526137746040842091825461426d565b9055613723565b63037dc8f760e21b8252600482fd5b50346108aa57806003193601126108aa5760206040516a1b4c0595a86aa1c10000008152f35b50346108aa5760203660031901126108aa5760206115dd6137cf613fe5565b6144c5565b50346108aa57806003193601126108aa57338152607d60205260ff60408220541615613a6d57338152607c602052604081208054606e548114613a5e57338352607f60205261382760408420544261424a565b60725411613a4f5760018101809111613a3b578252607960205260408220906040519161385383614111565b8054835260ff6002600183015492602086019384520154161580156040850152613a2c5760ff60885460a01c16156128075761388f905161485e565b9160018060a01b03606554166040516370a0823160e01b8152336004820152602081602481855afa8015613a2157859187916139e8575b50106139d6576040516323b872dd60e01b815233600482015230602482015260448101859052906020908290606490829089905af18015610dbf576139b9575b5060655460745485916001600160a01b0316906139239086614a72565b90803b156124e857602483926040519485938492630852cd8d60e31b845260048401525af18015610dbf576139a5575b5061395e82546144a7565b8255516001820155338352607f60205242604084205554906040519081527fe2dbc44c627e3876b04b29d12596a77c7d0fa585ccb754b9fcd92e48d813dd7760203392a380f35b846139b29195929561412d565b9238613953565b6139d19060203d602011610d5657610d4a818361412d565b613906565b6001627a6f0d60e11b03198552600485fd5b9150506020813d602011613a19575b81613a046020938361412d565b81010312613a1557849051386138c6565b8580fd5b3d91506139f7565b6040513d88823e3d90fd5b6323e697d360e11b8452600484fd5b634e487b7160e01b83526011600452602483fd5b6341fde9ef60e01b8352600483fd5b6372932dd360e01b8352600483fd5b6306016a2760e11b8152600490fd5b50346108aa57806003193601126108aa576069548015613aec57613aa0814361424a565b613aad608354809261445c565b9260018401809411613ad85760206115dd43613ad386613acd878a61447c565b9061426d565b61424a565b634e487b7160e01b81526011600452602490fd5b633017f16560e11b8252600482fd5b50346108aa57806003193601126108aa576020606c54604051908152f35b50346108aa5760203660031901126108aa57613b33613fe5565b613b3b614a1a565b60018060a01b03166001600160601b0360a01b606654161760665580f35b50346108aa5760203660031901126108aa57613b73614a1a565b600435608a5580f35b50346108aa5760203660031901126108aa57613b96614a1a565b60043560835580f35b50346108aa5760203660031901126108aa576020906040906001600160a01b03613bc7613fe5565b168152607583522054604051908152f35b50346108aa5760203660031901126108aa57613bf2613fe5565b613bfa614a1a565b60018060a01b03166001600160601b0360a01b606854161760685580f35b50346108aa5760203660031901126108aa576020906040906001600160a01b03613c40613fe5565b168152607a83522054604051908152f35b50346108aa5760203660031901126108aa576020906040906001600160a01b03613c79613fe5565b168152608283522054604051908152f35b50346108aa57806003193601126108aa576020608954604051908152f35b50346108aa57806003193601126108aa576088546040516001600160a01b039091168152602090f35b50346108aa5760603660031901126108aa57610e91613cfe613cf1613fe5565b604435906024359061427a565b60405191829182613f3d565b50346108aa57806003193601126108aa5760206115dd614213565b50346108aa5760203660031901126108aa5760409060043581526079602052208054610e9160ff600260018501549401541660405193849384919260409194936060840195845260208401521515910152565b50346108aa57806003193601126108aa576020608a54604051908152f35b50346108aa57806003193601126108aa576020608554604051908152f35b50346108aa57806003193601126108aa576318fb58646004526089815260248120801954908160011c911515908054156002600183015415920154159215613f01575b505050613e0381614167565b90825b818110613e1b5760405180610e918582613f3d565b6318fb5864600452608984528060248520015468fbb67fda52d4bfb8bf81141502613e466089614ed8565b821015613ef257906001918552607b6020526040852060ff600860405192613e6d846140de565b80548452858101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a085015282600682015416151560c0850152600781015460e08501520154848060a01b03811661010084015260a01c161515610120820152613ee082866141ff565b52613eeb81856141ff565b5001613e06565b634e23d03560e01b8552600485fd5b909192508390613f365750600190613f2e5750600290613f2657506003388080613df7565b388080613df7565b908080613df7565b9180613df7565b602060408183019282815284518094520192019060005b818110613f615750505090565b9091926020610140600192610120875180518352848101518584015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c0810151151560c084015260e081015160e0840152858060a01b0361010082015116610100840152015115156101208201520194019101919091613f54565b600435906001600160a01b038216820361255457565b60243590811515820361255457565b606090600319011261255457600435906024359060443580151581036125545790565b3461255457600036600319011261255457602060405160018152f35b6040906003190112612554576004359060243590565b9895926101209895929b9a9794919b6101408b019c8b5260208b015260408a01526060890152608088015260a0870152151560c086015260e085015260018060a01b03166101008401521515910152565b80548210156140c85760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b610140810190811067ffffffffffffffff8211176140fb57604052565b634e487b7160e01b600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176140fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176140fb57604052565b67ffffffffffffffff81116140fb5760051b60200190565b906141718261414f565b61417e604051918261412d565b828152809261418f601f199161414f565b019060005b8281106141a057505050565b6020906040516141af816140de565b60008152600083820152600060408201526000606082015260006080820152600060a0820152600060c0820152600060e08201526000610100820152600061012082015282828501015201614194565b80518210156140c85760209160051b010190565b606c5460fa81101561422b575066354a6ba7a1800090565b6102ee111561423f5766470de4df82000090565b66470de4df82000090565b9190820391821161425757565b634e487b7160e01b600052601160045260246000fd5b9190820180921161425757565b6001600160a01b03166000908152607a602052604090209091606061429e83614ed8565b90818510156143d25750836142b29161424a565b90818111156143cb57505b6142c681614167565b9260005b8281106142d8575050505090565b6142e2818361426d565b9081602460006318fb586460045287815220015468fbb67fda52d4bfb8bf811415029161430e86614ed8565b11156143ba57600191600052607b602052604060002060ff600860405192614335846140de565b80548452858101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a085015282600682015416151560c0850152600781015460e08501520154848060a01b03811661010084015260a01c1615156101208201526143a882886141ff565b526143b381876141ff565b50016142ca565b634e23d03560e01b60005260046000fd5b90506142bd565b60405194509250600091506143ea905060208461412d565b8252600090815b8281106143fe5750505090565b60209060405161440d816140de565b600081526000838201526000604082015260008482015260006080820152600060a0820152600060c0820152600060e082015260006101008201526000610120820152828287010152016143f1565b8115614466570490565b634e487b7160e01b600052601260045260246000fd5b8181029291811591840414171561425757565b90816020910312612554575180151581036125545790565b60001981146142575760010190565b60ff8111614257576001901b90565b60ff606a5416156146795760705490811561463c57606f54608454906069549361450e6144f2868461424a565b93614508614503608354809761445c565b6144b6565b9061445c565b92607154955b4384106145a0575050506001600160a01b039092166000908152607660209081526040808320546075835281842054607790935292205461457895929450670de0b6b3a764000093506145719261456b919061424a565b9061447c565b049061426d565b607354670de0b6b3a764000003670de0b6b3a764000081116142575761459d91614a72565b90565b6145b3826145ae838761424a565b61445c565b60018101809111614257576145cb836145d19261447c565b8261426d565b964388101561462f576145ef6145e989965b8761424a565b8761447c565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561425757613acd8561461e9361445c565b968403614514579360011c93614514565b6145ef6145e943966145e3565b905060018060a01b03166000526076602052604060002054607354670de0b6b3a764000003670de0b6b3a764000081116142575761459d91614a72565b50600090565b3d156146ba573d9067ffffffffffffffff82116140fb57604051916146ae601f8201601f19166020018461412d565b82523d6000602084013e565b606090565b607054908115614728576146ea6084546145086145036146e16069544361424a565b6083549061445c565b6001600160a01b03909116600090815260756020526040902054808202918115918304141782021561471a570490565b63ad251c276000526004601cfd5b5050600090565b6086546040516350d25bcd60e01b815290602090829060049082906001600160a01b03165afa90811561479657600091614767575090565b90506020813d60201161478e575b816147826020938361412d565b81010312612554575190565b3d9150614775565b6040513d6000823e3d90fd5b606c5460fa8110156147ba5750662386f26fc1000090565b6102ee111561423f5766354a6ba7a1800090565b6001600160a01b03166000818152607f6020526040902054607254906147f590829061426d565b42116147285761459d91600052607f602052613ad3429160406000205461426d565b60ff606a5416156148405761459d6148346146e16069544361424a565b614508608454916144b6565b600090565b90816020910312612554575160ff811681036125545790565b61486661472f565b6065546088546040516370a0823160e01b81526001600160a01b03918216600482018190529092909116602083602481845afa928315614796576000936149e5575b5060206004916040519283809263313ce56760e01b82525afa8015614796576149c8575b506087546040516370a0823160e01b815260048101929092526001600160a01b031692602082602481875afa91821561479657600092614991575b5060206004946040519586809263313ce56760e01b82525afa9182156147965761493a946145ae93614964575b5061447c565b670de0b6b3a7640000820291808304670de0b6b3a764000014901517156142575761459d9161445c565b6149859060203d60201161498a575b61497d818361412d565b810190614845565b614934565b503d614973565b9391506020843d6020116149c0575b816149ad6020938361412d565b8101031261255457925190926020614907565b3d91506149a0565b6149e09060203d60201161498a5761497d818361412d565b6148cc565b9092506020813d602011614a12575b81614a016020938361412d565b8101031261255457519160206148a8565b3d91506149f4565b6033546001600160a01b03163303614a2e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b9080600019048211614a8e575b670de0b6b3a764000091020490565b8015614a7f5763bac65e5b6000526004601cfd5b614aaa614f3c565b60018060a01b0316806000526075602052670de0b6b3a7640000614ae860406000205461456b6071548560005260776020526040600020549061424a565b04816000526076602052614b02604060002091825461426d565b9055607154906000526077602052604060002055565b60655460405163029f490b60e21b81526000939290916020908390600490829088906001600160a01b03165af1918215610d99578492614cee575b506065546040516318160ddd60e01b81526001600160a01b039091169290602081600481875afa908115613a21579085918791614cb7575b50614b9990614b9e9361426d565b61426d565b6085546a1b4c0595a86aa1c10000000190816a1b4c0595a86aa1c100000011610dca5711614c1b57813b15612789576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019290925282908290604490829084905af18015610d5d57614c0e575050565b81614c189161412d565b50565b60405162461bcd60e51b815260206004820152606260248201527f5468652073756d206f662074686520746f74616c20737570706c792c2074686560448201527f20616d6f756e74206275726e65642c20616e6420746865206d696e7420616d6f60648201527f756e74206d757374206e6f742065786365656420746865206d617820737570706084820152616c7960f01b60a482015260c490fd5b9150506020813d602011614ce6575b81614cd36020938361412d565b81010312613a1557518490614b9e614b8b565b3d9150614cc6565b9091506020813d602011614d1a575b81614d0a6020938361412d565b8101031261278957519038614b53565b3d9150614cfd565b606a5460ff811615614dbd575b50614d3981614aa2565b614d458260705461426d565b60705560018060a01b031690816000526075602052614d6a604060002091825461426d565b905580600052607560205260406000205490600052607660205260406000205460405191825260208201527fa051d58ced8df58040b29d2c939da70a826ae40290f77c9a66b38b8b85315f6560403392a2565b60019060ff191617606a554360695543606f557fdaae9aa758637a0d349f036f099afd70aa88d8ac63fce096321de512ffebc16c6020604051438152a138614d2f565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b15614e5057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90811015614ed25733600052607e60205260406000209060005260205260ff6040600020541690565b50600190565b6318fb5864600452600052602460002090811954918260011c921515908054156002600183015415920154159215614f0f57505050565b9091929350600090614f365750600190614f31575060029061459d5750600390565b919050565b92915050565b6070541561501957606f54614f5f6084546145086145036146e16069548661424a565b905b438110614f7057505043606f55565b606954614f7d818361424a565b90614f8b608354809361445c565b6001810180911161425757614fa392613acd9161447c565b4381101561500c57614fc0614fba82935b8461424a565b8461447c565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561425757614ff1614ff9916070549061445c565b60715461426d565b6071558103614f61579060011c90614f61565b614fc0614fba4393614fb4565b43606f5556fea2646970667358221220c741cd3dccd39888d7ca52e3cc06b77e38ba3c4de3ece91d4faae73e56e7d2f564736f6c634300081c0033