0 txs
342 calls
constructor
No constructor.
functions
addressManager
viewfunction addressManager() view returns (address)
allocationPerRound
viewfunction allocationPerRound(uint256) view returns (uint256)
balancesPerRound
viewfunction balancesPerRound(uint256, address) view returns (uint256)
canCloseCurrentRound
viewfunction canCloseCurrentRound() view returns (bool)
collateral
viewfunction collateral() view returns (address)
collateralKey
viewfunction collateralKey() view returns (bytes32)
cumulativePnLBetweenRounds
viewfunction cumulativePnLBetweenRounds(uint256 _roundA, uint256 _roundB) view returns (uint256)
cumulativeProfitAndLoss
viewfunction cumulativeProfitAndLoss(uint256) view returns (uint256)
defaultLiquidityProvider
viewfunction defaultLiquidityProvider() view returns (address)
firstRoundStartTime
viewfunction firstRoundStartTime() view returns (uint256)
getCollateralPrice
viewfunction getCollateralPrice() view returns (uint256)
getNumberOfTradingTicketsPerRound
viewfunction getNumberOfTradingTicketsPerRound(uint256 _round) view returns (uint256 numOfTickets)
getRoundEndTime
viewfunction getRoundEndTime(uint256 _round) view returns (uint256)
getRoundStartTime
viewfunction getRoundStartTime(uint256 _round) view returns (uint256)
getTicketIndexInTicketRound
viewfunction getTicketIndexInTicketRound(address _ticket, uint256 _round, uint256 _startIndex, uint256 _endIndex) view returns (uint256 index, bool found)
getTicketPool
viewfunction getTicketPool(address _ticket) view returns (address roundPool)
getTicketRound
viewfunction getTicketRound(address _ticket) view returns (uint256 ticketRound)
getUsersCountInCurrentRound
viewfunction getUsersCountInCurrentRound() view returns (uint256)
hasDefaultRoundTicketsReadyToBeExercised
viewfunction hasDefaultRoundTicketsReadyToBeExercised() view returns (bool)
hasTicketsReadyToBeExercised
viewfunction hasTicketsReadyToBeExercised() view returns (bool)
isTradingTicketInARound
viewfunction isTradingTicketInARound(uint256, address) view returns (bool)
isUserLPing
viewfunction isUserLPing(address _user) view returns (bool isUserInLP)
maxAllowedDeposit
viewfunction maxAllowedDeposit() view returns (uint256)
maxAllowedUsers
viewfunction maxAllowedUsers() view returns (uint256)
minDepositAmount
viewfunction minDepositAmount() view returns (uint256)
nominatedOwner
viewfunction nominatedOwner() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
poolRoundMastercopy
viewfunction poolRoundMastercopy() view returns (address)
profitAndLossPerRound
viewfunction profitAndLossPerRound(uint256) view returns (uint256)
round
viewfunction round() view returns (uint256)
roundClosingPrepared
viewfunction roundClosingPrepared() view returns (bool)
roundLength
viewfunction roundLength() view returns (uint256)
roundPerTicket
viewfunction roundPerTicket(address) view returns (uint256)
roundPools
viewfunction roundPools(uint256) view returns (address)
safeBox
viewfunction safeBox() view returns (address)
safeBoxImpact
viewfunction safeBoxImpact() view returns (uint256)
sportsAMM
viewfunction sportsAMM() view returns (address)
started
viewfunction started() view returns (bool)
ticketAlreadyExercisedInRound
viewfunction ticketAlreadyExercisedInRound(uint256, address) view returns (bool)
totalDeposited
viewfunction totalDeposited() view returns (uint256)
tradingTicketsPerRound
viewfunction tradingTicketsPerRound(uint256, uint256) view returns (address)
userInRound
viewfunction userInRound(uint256, address) view returns (bool)
usersCurrentlyInPool
viewfunction usersCurrentlyInPool() view returns (uint256)
usersPerRound
viewfunction usersPerRound(uint256, uint256) view returns (address)
usersProcessedInRound
viewfunction usersProcessedInRound() view returns (uint256)
utilizationRate
viewfunction utilizationRate() view returns (uint256)
withdrawalRequested
viewfunction withdrawalRequested(address) view returns (bool)
withdrawalShare
viewfunction withdrawalShare(address) view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
closeRound
nonpayablefunction closeRound()
commitTrade
nonpayablefunction commitTrade(address ticket, uint256 amount)
deposit
nonpayablefunction deposit(uint256 amount)
exerciseDefaultRoundTicketsReadyToBeExercised
nonpayablefunction exerciseDefaultRoundTicketsReadyToBeExercised()
exerciseDefaultRoundTicketsReadyToBeExercisedBatch
nonpayablefunction exerciseDefaultRoundTicketsReadyToBeExercisedBatch(uint256 _batchSize)
exerciseTicketsReadyToBeExercised
nonpayablefunction exerciseTicketsReadyToBeExercised()
exerciseTicketsReadyToBeExercisedBatch
nonpayablefunction exerciseTicketsReadyToBeExercisedBatch(uint256 _batchSize)
initialize
nonpayablefunction initialize(tuple params)
initNonReentrant
nonpayablefunction initNonReentrant()
migrateBatchOfTicketsToAnotherRound
nonpayablefunction migrateBatchOfTicketsToAnotherRound(address[] _tickets, uint256 _newRound, uint256[] _ticketsIndexInRound)
migrateTicketToAnotherRound
nonpayablefunction migrateTicketToAnotherRound(address _ticket, uint256 _newRound, uint256 _ticketIndexInRound)
nominateNewOwner
nonpayablefunction nominateNewOwner(address _owner)
partialWithdrawalRequest
nonpayablefunction partialWithdrawalRequest(uint256 _share)
prepareRoundClosing
nonpayablefunction prepareRoundClosing()
processRoundClosingBatch
nonpayablefunction processRoundClosingBatch(uint256 _batchSize)
setDefaultLiquidityProvider
nonpayablefunction setDefaultLiquidityProvider(address _defaultLiquidityProvider)
setMaxAllowedDeposit
nonpayablefunction setMaxAllowedDeposit(uint256 _maxAllowedDeposit)
setMaxAllowedUsers
nonpayablefunction setMaxAllowedUsers(uint256 _maxAllowedUsers)
setMinAllowedDeposit
nonpayablefunction setMinAllowedDeposit(uint256 _minDepositAmount)
setOwner
nonpayablefunction setOwner(address _owner)
setPaused
nonpayablefunction setPaused(bool _setPausing)
setPoolRoundMastercopy
nonpayablefunction setPoolRoundMastercopy(address _poolRoundMastercopy)
setRoundLength
nonpayablefunction setRoundLength(uint256 _roundLength)
setSafeBoxParams
nonpayablefunction setSafeBoxParams(address _safeBox, uint256 _safeBoxImpact)
setSportsAMM
nonpayablefunction setSportsAMM(address _sportsAMM)
setUtilizationRate
nonpayablefunction setUtilizationRate(uint256 _utilizationRate)
start
nonpayablefunction start()
transferOwnershipAtInit
nonpayablefunction transferOwnershipAtInit(address proxyAddress)
transferToPool
nonpayablefunction transferToPool(address _ticket, uint256 _amount)
withdrawalRequest
nonpayablefunction withdrawalRequest()
events
Claimed
event Claimed(address user, uint256 amount)
DefaultLiquidityProviderChanged
event DefaultLiquidityProviderChanged(address newProvider)
Deposited
event Deposited(address user, uint256 amount, uint256 round)
Initialized
event Initialized(uint64 version)
MaxAllowedDepositChanged
event MaxAllowedDepositChanged(uint256 maxAllowedDeposit)
MaxAllowedUsersChanged
event MaxAllowedUsersChanged(uint256 maxAllowedUsersChanged)
MinAllowedDepositChanged
event MinAllowedDepositChanged(uint256 minAllowedDeposit)
OwnerChanged
event OwnerChanged(address oldOwner, address newOwner)
OwnerNominated
event OwnerNominated(address newOwner)
Paused
event Paused(address account)
PoolRoundMastercopyChanged
event PoolRoundMastercopyChanged(address newMastercopy)
PoolStarted
event PoolStarted()
RoundClosed
event RoundClosed(uint256 round, uint256 roundPnL)
RoundClosingBatchProcessed
event RoundClosingBatchProcessed(uint256 round, uint256 batchSize)
RoundClosingPrepared
event RoundClosingPrepared(uint256 round)
RoundLengthChanged
event RoundLengthChanged(uint256 roundLength)
RoundPoolCreated
event RoundPoolCreated(uint256 round, address roundPool)
SafeBoxSharePaid
event SafeBoxSharePaid(uint256 safeBoxShare, uint256 safeBoxAmount)
SetSafeBoxParams
event SetSafeBoxParams(address safeBox, uint256 safeBoxImpact)
SportAMMChanged
event SportAMMChanged(address sportAMM)
TicketMigratedToNextRound
event TicketMigratedToNextRound(address ticket, uint256 oldRound, uint256 newRound)
Unpaused
event Unpaused(address account)
UtilizationRateChanged
event UtilizationRateChanged(uint256 utilizationRate)
WithdrawalRequested
event WithdrawalRequested(address user)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
EnforcedPause
error EnforcedPause()
ERC1167FailedCreateClone
error ERC1167FailedCreateClone()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801561001057600080fd5b50615be480620000216000396000f3fe608060405234801561001057600080fd5b50600436106104805760003560e01c80636c321c8a11610257578063d03c027311610146578063ddcc8fe9116100c3578063ebc7977211610087578063ebc7977214610a70578063ee161cce14610a78578063f61fcb8b14610a80578063f7683bbc14610aa0578063ff50abdc14610aa857600080fd5b8063ddcc8fe914610a27578063e278fe6f14610a3a578063e81e52ee14610a42578063e8362b7714610a55578063e95d39ca14610a5d57600080fd5b8063d8dfeb451161010a578063d8dfeb45146109c8578063d95ad45c146109db578063db7e3648146109ee578063db7f92d414610a01578063ddc6ac2314610a1457600080fd5b8063d03c027314610988578063d27c079714610990578063d69fb66814610999578063d728e910146109a2578063d7efa129146109b557600080fd5b8063a6644f96116101d4578063bdcc22e911610198578063bdcc22e914610939578063be9a655514610942578063c3b83f5f1461094a578063c99252881461095d578063c9f4ff461461097557600080fd5b8063a6644f96146108cf578063a8df539f146108fd578063b562a1ab1461090a578063b6b55f2514610913578063b9b1be8b1461092657600080fd5b80638b649b941161021b5780638b649b94146108785780638b844412146108815780638c54c812146108895780638da5cb5b146108a95780639bd2e61b146108bc57600080fd5b80636c321c8a1461082157806374094edd1461082a57806377332fc51461084a57806379ba50971461085d5780637a1e0aa81461086557600080fd5b80634218c4d8116103735780635c7b396e116102f0578063634e0d97116102b4578063634e0d97146107ad578063645006ca146107db57806365e0e725146107e45780636685fdc2146107f7578063681312f51461080e57600080fd5b80635c7b396e146107305780635c975abb146107395780635ddd3e8314610751578063610589e11461077c5780636131dc711461078557600080fd5b80634d549a42116103375780634d549a42146106dc57806353a47bb7146106ef57806353e8bdb714610702578063582ab2f91461070a57806358c09cc01461071d57600080fd5b80634218c4d8146106655780634651f0801461066d57806348663e95146106965780634a96fc84146106a95780634ae7937f146106bc57600080fd5b80631daae17311610401578063336d30ed116103c5578063336d30ed146105f9578063343e4f9f146106195780633ab76e9f1461062c5780633b92d7581461063f57806340774ff61461065257600080fd5b80631daae173146105695780631f2698ab1461059c578063202ffce8146105b057806327c28442146105c3578063311c56df146105f157600080fd5b8063146ca53111610448578063146ca5311461051e5780631627540c1461052757806316c38b3c1461053a5780631b2a52d81461054d5780631baa88561461056057600080fd5b806303d868db1461048557806309b17b3d146104b557806312b19a13146104ca57806313af4035146104eb578063145dee7d146104fe575b600080fd5b610498610493366004615405565b610ab1565b6040516001600160a01b0390911681526020015b60405180910390f35b6104c86104c3366004615427565b610ae9565b005b6104dd6104d8366004615440565b610e0c565b6040519081526020016104ac565b6104c86104f936600461546e565b610e3a565b6104dd61050c366004615440565b6000908152600f602052604090205490565b6104dd60055481565b6104c861053536600461546e565b610f6b565b6104c8610548366004615499565b610fc1565b6104c861055b366004615440565b610fe1565b6104dd60075481565b61058c61057736600461546e565b600d6020526000908152604090205460ff1681565b60405190151581526020016104ac565b60045461058c90600160a01b900460ff1681565b6104c86105be366004615440565b611591565b61058c6105d13660046154b6565b601160209081526000928352604080842090915290825290205460ff1681565b6104c86115ce565b6104dd610607366004615440565b60146020526000908152604090205481565b610498610627366004615405565b611832565b602154610498906001600160a01b031681565b601954610498906001600160a01b031681565b6104c8610660366004615440565b61184e565b6104c86118b3565b61049861067b366004615440565b6008602052600090815260409020546001600160a01b031681565b601f54610498906001600160a01b031681565b6104c86106b7366004615440565b6118c7565b6104dd6106ca366004615440565b600c6020526000908152604090205481565b6104c86106ea36600461546e565b61193a565b600154610498906001600160a01b031681565b6104c86119b6565b6104c86107183660046154e6565b6119ec565b6104c861072b36600461551b565b611a99565b6104dd601d5481565b600080516020615b8f8339815191525460ff1661058c565b6104dd61075f3660046154b6565b600b60209081526000928352604080842090915290825290205481565b6104dd60175481565b610798610793366004615547565b611ed0565b604080519283529015156020830152016104ac565b61058c6107bb3660046154b6565b600a60209081526000928352604080842090915290825290205460ff1681565b6104dd60165481565b6104c86107f236600461546e565b611f81565b6005546000908152600960205260409020546104dd565b6104c861081c366004615440565b611ffd565b6104dd601e5481565b6104dd610838366004615440565b60136020526000908152604090205481565b61049861085836600461546e565b6120a2565b6104c86120d1565b6104c861087336600461551b565b6121bb565b6104dd60065481565b6104c8612252565b6104dd61089736600461546e565b60126020526000908152604090205481565b600054610498906001600160a01b031681565b6104c86108ca366004615440565b612530565b61058c6108dd3660046154b6565b601060209081526000928352604080842090915290825290205460ff1681565b601c5461058c9060ff1681565b6104dd60225481565b6104c8610921366004615440565b61281b565b601a54610498906001600160a01b031681565b6104dd60185481565b6104c8612a1f565b6104c861095836600461546e565b612bbc565b6003546104989061010090046001600160a01b031681565b6104dd610983366004615405565b612cc5565b61058c612d05565b6104dd60155481565b6104dd60205481565b6104c86109b0366004615658565b612d16565b6104c86109c336600461551b565b61301f565b600454610498906001600160a01b031681565b61058c6109e936600461546e565b613152565b6104dd6109fc36600461546e565b613211565b6104c8610a0f366004615440565b6134c8565b6104dd610a22366004615440565b613505565b6104c8610a35366004615440565b613516565b6104c8613553565b6104c8610a5036600461546e565b6139a9565b61058c613b42565b6104c8610a6b366004615440565b613b4f565b6104c8613ba0565b61058c613bfe565b6104dd610a8e36600461546e565b600e6020526000908152604090205481565b6104dd613d3a565b6104dd601b5481565b600f6020528160005260406000208181548110610acd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610b2f5750825b905060008267ffffffffffffffff166001148015610b4c5750303b155b905081158015610b5a575080155b15610b785760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ba257845460ff60401b1916600160401b1785555b610bb26104f9602088018861546e565b610bba613ba0565b610bca604087016020880161546e565b600380546001600160a01b039290921661010002610100600160a81b0319909216919091179055610c01606087016040880161546e565b602180546001600160a01b0319166001600160a01b0392909216919091179055610c31608087016060880161546e565b600480546001600160a01b0319166001600160a01b0392909216919091179055610160860135602255608086013560065560a086013560155560c086013560165560e0860135601755670de0b6b3a76400006101008701351115610cb05760405162461bcd60e51b8152600401610ca790615723565b60405180910390fd5b610100860135601e55610ccb6101408701610120880161546e565b601f80546001600160a01b0319166001600160a01b0392909216919091179055670de0b6b3a76400006101408701351115610d185760405162461bcd60e51b8152600401610ca790615765565b61014086013560209081556004546001600160a01b03169063095ea7b390610d469060408a01908a0161546e565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260001960248201526044016020604051808303816000875af1158015610d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db891906157a6565b5060016005558315610e0457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b600654600090610e1d6001846157d9565b610e2791906157ec565b600754610e349190615803565b92915050565b6001600160a01b038116610e905760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f742062652030000000000000006044820152606401610ca7565b600154600160a01b900460ff1615610efc5760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b6064820152608401610ca7565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b0383166001600160a01b0319909116811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91015b60405180910390a150565b610f73613e31565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610f60565b610fc9613e31565b80610fd957610fd6613ea3565b50565b610fd6613efd565b600160026000828254610ff49190615803565b9091555050600254611004613f46565b601c5460ff166110565760405162461bcd60e51b815260206004820152601a60248201527f526f756e6420636c6f73696e67206e6f742070726570617265640000000000006044820152606401610ca7565b600554600090815260096020526040902054601d54106110b85760405162461bcd60e51b815260206004820152601b60248201527f416c6c20757365727320616c72656164792070726f63657373656400000000006044820152606401610ca7565b600082116110d85760405162461bcd60e51b8152600401610ca790615816565b600554600090815260086020526040812054601d546001600160a01b039091169190611105908590615803565b60055460009081526009602052604090205490915081111561113557506005546000908152600960205260409020545b601d545b8181101561152d57600554600090815260096020526040812080548390811061116457611164615859565b6000918252602080832090910154600554835260138252604080842054600b84528185206001600160a01b0390931680865292909352832054909350670de0b6b3a7640000916111b3916157ec565b6111bd919061586f565b6001600160a01b0383166000908152600d602052604090205490915060ff161580156111f9575060055460009081526013602052604090205415155b156112e95780600b600060055460016112129190615803565b81526020019081526020016000206000846001600160a01b03166001600160a01b031681526020019081526020016000205461124e9190615803565b600b600060055460016112619190615803565b81526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020819055506009600060055460016112a99190615803565b8152602080820192909252604001600090812080546001810182559082529190200180546001600160a01b0319166001600160a01b038416179055611507565b6001600160a01b0382166000908152600e60205260409020541561145f576001600160a01b0382166000908152600e6020526040812054670de0b6b3a76400009061133490846157ec565b61133e919061586f565b600454909150611359906001600160a01b0316878584613f77565b604080516001600160a01b0385168152602081018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a16001600160a01b0383166000908152600d60209081526040808320805460ff19169055600e9091528120819055600554600991906113da906001615803565b8152602080820192909252604001600090812080546001810182559082529190200180546001600160a01b0319166001600160a01b03851617905561141f81836157d9565b600b600060055460016114329190615803565b8152602080820192909252604090810160009081206001600160a01b038816825290925290205550611507565b6000600b600060055460016114749190615803565b8152602080820192909252604090810160009081206001600160a01b038088168352935220919091556004546114ad9116868484613f77565b6001600160a01b0382166000818152600d6020908152604091829020805460ff19169055815192835282018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a15b601d54611515906001615803565b601d555081905061152581615891565b915050611139565b5060055460408051918252602082018690527f2e692c8fcabe33ba22535323e79dcb54ef22dccdb8e4ebdd9f2a7ffb1a28856c910160405180910390a15050600254811461158d5760405162461bcd60e51b8152600401610ca7906158aa565b5050565b611599613e31565b60178190556040518181527fe7c2c09f66c8b970b4a99250f4d0844e1496b9d51d4760a17b0134ddd52023e190602001610f60565b6001600260008282546115e19190615803565b9091555050600254600454600160a01b900460ff166116125760405162461bcd60e51b8152600401610ca7906158e1565b336000908152600d602052604090205460ff16156116725760405162461bcd60e51b815260206004820152601c60248201527f5769746864726177616c20616c726561647920726571756573746564000000006044820152606401610ca7565b6005546000908152600b602090815260408083203384529091529020546116d15760405162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b6044820152606401610ca7565b600b600060055460016116e49190615803565b8152602080820192909252604090810160009081203382529092529020541561171f5760405162461bcd60e51b8152600401610ca79061590f565b611727613f46565b601c5460ff161561174a5760405162461bcd60e51b8152600401610ca790615965565b6005546000908152600b60209081526040808320338452909152902054601b5411156117ab576005546000908152600b60209081526040808320338452909152812054601b8054919290916117a09084906157d9565b909155506117b19050565b6000601b555b60016018546117c091906157d9565b601855336000818152600d6020908152604091829020805460ff1916600117905590519182527fe5892ff2a8b08efb903ffbba1f0514c1d3e22eea34dd5b89cf30aabce03dde5a910160405180910390a16002548114610fd65760405162461bcd60e51b8152600401610ca7906158aa565b60096020528160005260406000208181548110610acd57600080fd5b611856613e31565b670de0b6b3a764000081111561187e5760405162461bcd60e51b8152600401610ca790615723565b601e8190556040518181527fc117ccf765672707ebe3c1606037488c1e27dc1f42b5266e3d6b496db7d4209e90602001610f60565b6118bb613f46565b6118c56001613fd1565b565b6001600260008282546118da9190615803565b90915550506002546118ea613f46565b601c5460ff161561190d5760405162461bcd60e51b8152600401610ca790615965565b6119198260055461403d565b600254811461158d5760405162461bcd60e51b8152600401610ca7906158aa565b611942613e31565b6001600160a01b0381166119685760405162461bcd60e51b8152600401610ca7906159ac565b601a80546001600160a01b0319166001600160a01b0383169081179091556040519081527fa65a5aa86bb6f8e75752296da3ebda45474c8a302fc640c3b62868793862a03390602001610f60565b601c5460ff16156119d95760405162461bcd60e51b8152600401610ca790615965565b6119e1613f46565b6118c5600554613fd1565b6119f4613e31565b601c5460ff1615611a175760405162461bcd60e51b8152600401610ca790615965565b6000611a2284613211565b90506005548114611a6f5760405162461bcd60e51b8152602060048201526017602482015276151a58dad95d139bdd125b90dd5c9c995b9d149bdd5b99604a1b6044820152606401610ca7565b611a93848415611a7f5784611a8d565b600554611a8d906001615803565b846140c9565b50505050565b600160026000828254611aac9190615803565b9091555050600254611abc613f46565b60035461010090046001600160a01b03163314611aeb5760405162461bcd60e51b8152600401610ca7906159e3565b601c5460ff1615611b0e5760405162461bcd60e51b8152600401610ca790615965565b600454600160a01b900460ff16611b375760405162461bcd60e51b8152600401610ca7906158e1565b60008211611b875760405162461bcd60e51b815260206004820152601960248201527f43616e277420636f6d6d69742061207a65726f207472616465000000000000006044820152606401610ca7565b6000611b9284613211565b6001600160a01b0385166000908152601260205260408120829055909150611bb982614583565b90506005548203611d1057600354600454611be8916001600160a01b0391821691849161010090041687613f77565b601e546005546000908152600c6020526040902054670de0b6b3a764000091611c10916157ec565b611c1a919061586f565b6005546000908152600c6020526040902054611c3691906157d9565b600480546040516370a0823160e01b81526001600160a01b03858116938201939093529116906370a0823190602401602060405180830381865afa158015611c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca69190615a29565b1015611d0b5760405162461bcd60e51b815260206004820152602e60248201527f416d6f756e74206578636565647320617661696c61626c65207574696c697a6160448201526d1d1a5bdb88199bdc881c9bdd5b9960921b6064820152608401610ca7565b611e4e565b600554821115611e0557600480546040516370a0823160e01b81526001600160a01b0384811693820193909352600092909116906370a0823190602401602060405180830381865afa158015611d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8e9190615a29565b9050848110611dc057600354600454611dbb916001600160a01b0391821691859161010090041688613f77565b611dff565b6000611dcc82876157d9565b9050611dd9818486614761565b600354600454611dfd916001600160a01b0391821691869161010090041689613f77565b505b50611e4e565b81600114611e455760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081c9bdd5b99609a1b6044820152606401610ca7565b611e4e84614876565b506000818152600f602090815260408083208054600180820183559185528385200180546001600160a01b0319166001600160a01b038a1690811790915594845260108352818420948452939091529020805460ff191690911790556002548114611ecb5760405162461bcd60e51b8152600401610ca7906158aa565b505050565b6000838152600f6020526040812054819081908410611efd576000868152600f6020526040902054611eff565b835b9050845b81811015611f6e576000878152600f6020526040902080546001600160a01b038a16919083908110611f3757611f37615859565b6000918252602090912001546001600160a01b031603611f5e57925060019150611f789050565b611f6781615891565b9050611f03565b5083600092509250505b94509492505050565b611f89613e31565b6001600160a01b038116611faf5760405162461bcd60e51b8152600401610ca7906159ac565b601980546001600160a01b0319166001600160a01b0383169081179091556040519081527faaf6f0738515c3cf390f1b3faec649d2dacb169d024089afc43bbe2fe66cd2d890602001610f60565b612005613e31565b600454600160a01b900460ff161561206d5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e676520726f756e64206c656e677468206166746572206044820152641cdd185c9d60da1b6064820152608401610ca7565b60068190556040518181527f1d1fb7111c3779798bd4aefb2daea07ee8257a13c7eaceba89b4b1ccd405050d90602001610f60565b6000600860006120b184613211565b81526020810191909152604001600020546001600160a01b031692915050565b6001546001600160a01b031633146121495760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610ca7565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6121c3613e31565b601f80546001600160a01b0319166001600160a01b038416179055602054670de0b6b3a764000010156122085760405162461bcd60e51b8152600401610ca790615765565b6020818155604080516001600160a01b03851681529182018390527fa1a8623472ca4e2879372be60dfd1ff0675778e49f7379eedd98ca57cf36b21a910160405180910390a15050565b6001600260008282546122659190615803565b9091555050600254612275613f46565b601c5460ff16156122985760405162461bcd60e51b8152600401610ca790615965565b6122a0613bfe565b6122ec5760405162461bcd60e51b815260206004820152601960248201527f43616e277420636c6f73652063757272656e7420726f756e64000000000000006044820152606401610ca7565b6122f46119b6565b600554600090815260086020526040808220546004805492516370a0823160e01b81526001600160a01b0392831691810182905290939291909116906370a0823190602401602060405180830381865afa158015612356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237a9190615a29565b6005546000908152600c602052604090205490915081111561244957602080546005546000908152600c9092526040822054670de0b6b3a764000091906123c190856157d9565b6123cb91906157ec565b6123d5919061586f565b601f546004549192506123f7916001600160a01b039081169186911684613f77565b61240181836157d9565b91507fb8379d05082aa2dd32963972d72cc2d46257811133341855b63bb2fddda6ca3e6020548260405161243f929190918252602082015260400190565b60405180910390a1505b6005546000908152600c60205260408120549003612482576005546000908152601360205260409020670de0b6b3a764000090556124c3565b6005546000908152600c60205260409020546124a6670de0b6b3a7640000836157ec565b6124b0919061586f565b6005546000908152601360205260409020555b601c805460ff191660011790556005546040517fa224cce482b24082d1d3128437615f7f5ce87b97453a11114846ea442a100272916125059190815260200190565b60405180910390a150506002548114610fd65760405162461bcd60e51b8152600401610ca7906158aa565b6001600260008282546125439190615803565b9091555050600254600454600160a01b900460ff166125745760405162461bcd60e51b8152600401610ca7906158e1565b336000908152600d602052604090205460ff16156125d45760405162461bcd60e51b815260206004820152601c60248201527f5769746864726177616c20616c726561647920726571756573746564000000006044820152606401610ca7565b6005546000908152600b602090815260408083203384529091529020546126335760405162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b6044820152606401610ca7565b600b600060055460016126469190615803565b815260208082019290925260409081016000908120338252909252902054156126815760405162461bcd60e51b8152600401610ca79061590f565b612689613f46565b601c5460ff16156126ac5760405162461bcd60e51b8152600401610ca790615965565b6126be662386f26fc10000600a6157ec565b82101580156126de57506126da662386f26fc10000605a6157ec565b8211155b6127365760405162461bcd60e51b815260206004820152602360248201527f53686172652068617320746f206265206265747765656e2031302520616e642060448201526239302560e81b6064820152608401610ca7565b6005546000908152600b60209081526040808320338452909152812054670de0b6b3a7640000906127689085906157ec565b612772919061586f565b905080601b54111561279b5780601b600082825461279091906157d9565b909155506127a19050565b6000601b555b336000818152600d60209081526040808320805460ff19166001179055600e82529182902086905590519182527fe5892ff2a8b08efb903ffbba1f0514c1d3e22eea34dd5b89cf30aabce03dde5a910160405180910390a150600254811461158d5760405162461bcd60e51b8152600401610ca7906158aa565b336000908152600d6020526040902054819060ff161561288d5760405162461bcd60e51b815260206004820152602760248201527f5769746864726177616c206973207265717565737465642c2063616e6e6f742060448201526619195c1bdcda5d60ca1b6064820152608401610ca7565b60155481601b5461289e9190615803565b11156128f65760405162461bcd60e51b815260206004820152602160248201527f4465706f73697420616d6f756e74206578636565647320414d4d204c502063616044820152600760fc1b6064820152608401610ca7565b6005546000908152600b6020908152604080832033845290915290205415801561294e5750600b6000600554600161292e9190615803565b815260208082019290925260409081016000908120338252909252902054155b156129af576016548110156129af5760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206c657373207468616e206d696e4465706f736974416d6f756e6044820152601d60fa1b6064820152608401610ca7565b6001600260008282546129c29190615803565b90915550506002546129d2613f46565b601c5460ff16156129f55760405162461bcd60e51b8152600401610ca790615965565b6129fe836149bf565b6002548114611ecb5760405162461bcd60e51b8152600401610ca7906158aa565b612a27613e31565b600454600160a01b900460ff1615612a7a5760405162461bcd60e51b81526020600482015260166024820152751314081a185cc8185b1c9958591e481cdd185c9d195960521b6044820152606401610ca7565b6002600052600c6020527f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd72054612af25760405162461bcd60e51b815260206004820152601d60248201527f43616e206e6f7420737461727420776974682030206465706f736974730000006044820152606401610ca7565b4260075560026005819055600090612b0990614583565b9050806001600160a01b0316637d3de7ce600754612b276002610e0c565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401600060405180830381600087803b158015612b6557600080fd5b505af1158015612b79573d6000803e3d6000fd5b50506004805460ff60a01b1916600160a01b17905550506040517f960682678fca98f3ed131eaf165e59544bcd738e948f0b3c64f58fa9e1c65e6090600090a150565b612bc4613e31565b6001600160a01b038116612c0c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610ca7565b600154600160a81b900460ff1615612c5c5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b6044820152606401610ca7565b600080546001600160a01b0383166001600160a01b031990911681179091556001805460ff60a81b1916600160a81b1790556040805182815260208101929092527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9101610f60565b6000828152601460208181526040808420546013835281852054868652939092528320549091612cf4916157ec565b612cfe919061586f565b9392505050565b6000612d116001614bd7565b905090565b612d1e613e31565b601c5460ff1615612d415760405162461bcd60e51b8152600401610ca790615965565b8115612d4d5781612d5b565b600554612d5b906001615803565b91508051600003612da95760005b8351811015611a9357612d97848281518110612d8757612d87615859565b60200260200101518460006140c9565b80612da181615891565b915050612d69565b8051835114612df35760405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f2e698cadccee8d0e69aeae6e89ac2e8c6d60531b6044820152606401610ca7565b6005546000908152600f6020526040812054905b8451811015613018576000838281518110612e2457612e24615859565b602002602001015111612e795760405162461bcd60e51b815260206004820152601d60248201527f5469636b6574496e6465784d7573744265477265617465725468616e300000006044820152606401610ca7565b612e8381836157d9565b838281518110612e9557612e95615859565b60200260200101511015612ee557612ee0858281518110612eb857612eb8615859565b602002602001015185858481518110612ed357612ed3615859565b60200260200101516140c9565b613006565b6000805b8451821015612f8657868381518110612f0457612f04615859565b60200260200101516001600160a01b0316600f60006005548152602001908152602001600020868481518110612f3c57612f3c615859565b602002602001015181548110612f5457612f54615859565b6000918252602090912001546001600160a01b031603612f7657506001612f86565b612f7f82615891565b9150612ee9565b80612fd35760405162461bcd60e51b815260206004820152601a60248201527f5469636b65744e6f74466f756e64496e496e70757441727261790000000000006044820152606401610ca7565b613003878481518110612fe857612fe8615859565b602002602001015187878581518110612ed357612ed3615859565b50505b8061301081615891565b915050612e07565b5050505050565b613027613f46565b601c5460ff161561304a5760405162461bcd60e51b8152600401610ca790615965565b60035461010090046001600160a01b031633146130795760405162461bcd60e51b8152600401610ca7906159e3565b600061308483613211565b9050600181118015613097575060055481105b156130a157506005545b81156130f557600060018211156130c0576130bb82614583565b6130cd565b6019546001600160a01b03165b6003546004549192506130f3916001600160a01b03908116916101009004168386613f77565b505b60008181526010602090815260408083206001600160a01b038716845290915290205460ff1615611ecb5760008181526011602090815260408083206001600160a01b03871684529091529020805460ff19166001179055505050565b6005546000908152600b602090815260408083206001600160a01b03851684529091528120541515806131c957506000600b600060055460016131959190615803565b81526020019081526020016000206000846001600160a01b03166001600160a01b0316815260200190815260200160002054115b8015610e3457506001600160a01b0382166000908152600d602052604090205460ff161580610e345750506001600160a01b03166000908152600e6020526040902054151590565b6001600160a01b038116600090815260126020526040812054908190036134c35781600080805b836001600160a01b03166362e5c8196040518163ffffffff1660e01b8152600401602060405180830381865afa158015613276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329a9190615a29565b8110156134be5760405163b1283e7760e01b8152600481018290526001600160a01b0385169063b1283e779060240161012060405180830381865afa1580156132e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330b9190615a65565b505060215460405163bf40fac160e01b815260206004820152601660248201527529b837b93a39a0a6a6ab192934b9b5a6b0b730b3b2b960511b6044820152949a5095985060009650506001600160a01b03909416935063bf40fac1925050606401602060405180830381865afa15801561338a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ae9190615b0b565b6040516349ef3bc960e11b815261ffff851660048201526001600160a01b0391909116906393de779290602401602060405180830381865afa1580156133f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341c91906157a6565b90506007548411801561342d575080155b156134a157816000036134665760065460075461344a90866157d9565b613454919061586f565b61345f906002615803565b95506134ab565b856006546007548661347891906157d9565b613482919061586f565b61348d906002615803565b1461349c5760019550506134be565b6134ab565b60019550506134be565b50806134b681615891565b915050613238565b505050505b919050565b6134d0613e31565b60168190556040518181527f990717cc219e5348c1b88bb0ff530d804f0b6f54f3b03844a2bfbe4eb1e9c5d690602001610f60565b600654600090610e1d6002846157d9565b61351e613e31565b60158190556040518181527f8c43aa02599ac8f8bab4724621ceea5e7a06b07bbbfaf3b7bd0386cbe481ea3c90602001610f60565b6001600260008282546135669190615803565b9091555050600254613576613f46565b601c5460ff166135c85760405162461bcd60e51b815260206004820152601a60248201527f526f756e6420636c6f73696e67206e6f742070726570617265640000000000006044820152606401610ca7565b600554600090815260096020526040902054601d541461362a5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420616c6c2075736572732070726f6365737365642079657400000000006044820152606401610ca7565b601c805460ff19169055600554600090815260086020908152604080832054600b83528184206019546001600160a01b03908116865293529220549116901561372457600554600090815260136020908152604080832054600b83528184206019546001600160a01b03168552909252822054670de0b6b3a7640000916136b0916157ec565b6136ba919061586f565b6019546004549192506136dc916001600160a01b039081169185911684613f77565b601954604080516001600160a01b039092168252602082018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a1505b600554600203613751576005546000908152601360209081526040808320546014909252909120556137b4565b600554600081815260136020526040812054670de0b6b3a764000092909160149161377e906001906157d9565b81526020019081526020016000205461379791906157ec565b6137a1919061586f565b6005546000908152601460205260409020555b6005600081546137c390615891565b90915550600480546040516370a0823160e01b81526001600160a01b03848116938201939093529116906370a0823190602401602060405180830381865afa158015613813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138379190615a29565b6005546000908152600c602052604081208054909190613858908490615803565b90915550506005546000818152600b602090815260408083206019546001600160a01b03168452825280832054938352600c90915290205461389a91906157d9565b601b556005546000906138ac90614583565b600480546040516370a0823160e01b81526001600160a01b038087169382019390935292935061393a928592859216906370a0823190602401602060405180830381865afa158015613902573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139269190615a29565b6004546001600160a01b0316929190613f77565b6000601d556005547fc67dda8e11f1aa941c7e74466b1859a07a32f46aaf641d29b83be348424d93cd90613970906001906157d9565b60136000600160055461398391906157d9565b815260200190815260200160002054604051612505929190918252602082015260400190565b6139b1613e31565b6001600160a01b0381166139d75760405162461bcd60e51b8152600401610ca7906159ac565b60035461010090046001600160a01b031615613a6f576004805460035460405163095ea7b360e01b81526001600160a01b0361010090920482169381019390935260006024840152169063095ea7b3906044016020604051808303816000875af1158015613a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6d91906157a6565b505b60038054610100600160a81b0319166101006001600160a01b03848116820292909217928390556004805460405163095ea7b360e01b815292909404831690820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015613ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0891906157a6565b506040516001600160a01b03821681527f576297e5fcc8cd907ee80b240284865eb3d821bdc5232e6ee9e4d78a12531c0990602001610f60565b6000612d11600554614bd7565b600160026000828254613b629190615803565b9091555050600254613b72613f46565b601c5460ff1615613b955760405162461bcd60e51b8152600401610ca790615965565b61191982600161403d565b60035460ff1615613be95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610ca7565b6003805460ff19166001908117909155600255565b600454600090600160a01b900460ff161580613c235750613c20600554610e0c565b42105b15613c2e5750600090565b60008060005b6005546000908152600f6020526040902054811015613d30576005546000908152600f60205260409020805482908110613c7057613c70615859565b600091825260208083209091015460055483526011825260408084206001600160a01b039092168085529190925291205490925060ff16613d1e57819250826001600160a01b031663b0c56f056040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1091906157a6565b613d1e576000935050505090565b80613d2881615891565b915050613c34565b5060019250505090565b60215460405163bf40fac160e01b8152602060048201526009602482015268141c9a58d95199595960ba1b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015613d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc19190615b0b565b6001600160a01b031663ac82f6086022546040518263ffffffff1660e01b8152600401613df091815260200190565b602060405180830381865afa158015613e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d119190615a29565b6000546001600160a01b031633146118c55760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610ca7565b613eab614d49565b600080516020615b8f833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001610f60565b613f05613f46565b600080516020615b8f833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833613ee5565b600080516020615b8f8339815191525460ff16156118c55760405163d93c066560e01b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a93908590614d79565b60005b6000828152600f602052604090205481101561158d576000828152600f60205260409020805461402a9184918490811061401057614010615859565b6000918252602090912001546001600160a01b0316614ddc565b508061403581615891565b915050613fd4565b6000821161405d5760405162461bcd60e51b8152600401610ca790615816565b6000805b6000838152600f6020526040902054811015611a9357818414611a93576000838152600f6020526040902080546140a49185918490811061401057614010615859565b156140b7576140b4600183615803565b91505b806140c181615891565b915050614061565b6005548211806140d95750816001145b61411a5760405162461bcd60e51b8152602060048201526012602482015271149bdd5b99105b1c9958591e50db1bdcd95960721b6044820152606401610ca7565b600061412584613211565b905060055481146141785760405162461bcd60e51b815260206004820152601b60248201527f5469636b6574206e6f7420696e2063757272656e7420726f756e6400000000006044820152606401610ca7565b60008181526010602090815260408083206001600160a01b038816845290915290205460ff166141e45760405162461bcd60e51b8152602060048201526017602482015276151a58dad95d139bdd125b90dd5c9c995b9d149bdd5b99604a1b6044820152606401610ca7565b60008181526011602090815260408083206001600160a01b038816845290915290205460ff16156142505760405162461bcd60e51b8152602060048201526016602482015275151a58dad95d105b1c9958591e515e195c98da5cd95960521b6044820152606401610ca7565b836001600160a01b0316633f6fa6556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561428e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b291906157a6565b156142f75760405162461bcd60e51b8152602060048201526015602482015274151a58dad95d105b1c9958591e54995cdbdb1d9959605a1b6044820152606401610ca7565b60008181526010602090815260408083206001600160a01b03881684529091529020805460ff1916905561432c818584615095565b600061433782614583565b9050600061434485614583565b90506000866001600160a01b031663d165dac26040518163ffffffff1660e01b8152600401602060405180830381865afa158015614386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143aa9190615a29565b600480546040516370a0823160e01b81526001600160a01b038b8116938201939093529116906370a0823190602401602060405180830381865afa1580156143f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441a9190615a29565b61442491906157d9565b600480546040516370a0823160e01b81526001600160a01b03868116938201939093529293506000929116906370a0823190602401602060405180830381865afa158015614476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061449a9190615a29565b9050808211156144bf5760006144b082846157d9565b90506144bd81858a614761565b505b6004546144d7906001600160a01b0316848685613f77565b6001600160a01b03881660008181526012602090815260408083208b90558a8352601082528083208484528252808320805460ff191660019081179091558b8452600f8352818420805491820181558452919092200180546001600160a01b031916909217909155517fd8edac6470af12f863b07d43de4b58079798e80230a8b7f899a4f55ecdac618090614571908a9088908b90615b28565b60405180910390a15050505050505050565b6000818152600860205260409020546001600160a01b0316806134c357816001036145dd575060198054600083815260086020526040902080546001600160a01b0319166001600160a01b03928316179055905416919050565b601a546001600160a01b03166146355760405162461bcd60e51b815260206004820152601d60248201527f526f756e6420706f6f6c206d6173746572636f7079206e6f74207365740000006044820152606401610ca7565b601a5460009061464d906001600160a01b0316615291565b6004549091506001600160a01b038083169163d13f90b491309116866146776104d86001836157d9565b61468089610e0c565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015260448401919091526064830152608482015260a401600060405180830381600087803b1580156146dc57600080fd5b505af11580156146f0573d6000803e3d6000fd5b50505060008481526008602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915582518781529182015292935083927f24c1b21b902a85b5039d7d72427d9376657229eea77880ec9e62031dc950f6ba92500160405180910390a150919050565b6019546001600160a01b03166147ae5760405162461bcd60e51b8152602060048201526012602482015271111959985d5b1d081314081b9bdd081cd95d60721b6044820152606401610ca7565b6019546004546147cc916001600160a01b0391821691168486613f77565b6000818152600b602090815260408083206019546001600160a01b0316845290915281208054859290614800908490615803565b90915550506000818152600c602052604081208054859290614823908490615803565b90915550506019546040517f73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca91614869916001600160a01b039091169086908590615b28565b60405180910390a1505050565b6019546001600160a01b03166148c35760405162461bcd60e51b8152602060048201526012602482015271111959985d5b1d081314081b9bdd081cd95d60721b6044820152606401610ca7565b6019546003546004546148ed926001600160a01b0391821692908216916101009091041684613f77565b6019546001600160a01b031660009081527f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf602052604081208054839290614936908490615803565b909155505060016000908152600c6020527fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c8054839290614978908490615803565b90915550506019546040517f73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca91610f60916001600160a01b03909116908490600190615b28565b600060055460016149d09190615803565b905060006149dd82614583565b6004549091506149f8906001600160a01b0316338386613f77565b6019546001600160a01b03163303614a5e5760405162461bcd60e51b8152602060048201526024808201527f43616e2774206465706f736974206469726563746c792061732064656661756c604482015263074204c560e41b6064820152608401610ca7565b6005546000908152600b60209081526040808320338452909152902054158015614a9f57506000828152600b60209081526040808320338452909152902054155b15614b385760175460185410614af75760405162461bcd60e51b815260206004820152601b60248201527f4d617820616d6f756e74206f66207573657273207265616368656400000000006044820152606401610ca7565b60008281526009602090815260408220805460018181018355918452919092200180546001600160a01b03191633179055601854614b3491615803565b6018555b6000828152600b6020908152604080832033845290915281208054859290614b61908490615803565b90915550506000828152600c602052604081208054859290614b84908490615803565b9250508190555082601b6000828254614b9d9190615803565b90915550506005546040517f73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca916148699133918791615b28565b60008080805b6000858152600f6020526040902054811015614d3e576000858152600f60205260409020805482908110614c1357614c13615859565b60009182526020808320909101548783526011825260408084206001600160a01b039092168085529190925291205490925060ff16614d2c57819250826001600160a01b031663e74d3c476040518163ffffffff1660e01b8152600401602060405180830381865afa158015614c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cb191906157a6565b8015614d1c5750826001600160a01b0316633356a35a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d1a91906157a6565b155b15614d2c57506001949350505050565b80614d3681615891565b915050614bdd565b506000949350505050565b600080516020615b8f8339815191525460ff166118c557604051638dfc202b60e01b815260040160405180910390fd5b6000614d8e6001600160a01b038416836152fe565b90508051600014158015614db3575080806020019051810190614db191906157a6565b155b15611ecb57604051635274afe760e01b81526001600160a01b0384166004820152602401610ca7565b60008281526011602090815260408083206001600160a01b038516845290915281205460ff16610e345760008290506000816001600160a01b0316633356a35a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e6f91906157a6565b905060008060016005541115614ee457836001600160a01b0316634652e3306040518163ffffffff1660e01b8152600401602060405180830381865afa158015614ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ee191906157a6565b90505b808015614ef85750614ef587610e0c565b42115b15614f0257600191505b836001600160a01b031663e74d3c476040518163ffffffff1660e01b8152600401602060405180830381865afa158015614f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f6491906157a6565b8015614f755750821580614f755750815b15614fe05760035460405163066aa16f60e21b81526001600160a01b038881166004830152610100909204909116906319aa85bc90602401600060405180830381600087803b158015614fc757600080fd5b505af1158015614fdb573d6000803e3d6000fd5b505050505b828015614feb575080155b806150535750836001600160a01b0316633f6fa6556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561502f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061505391906157a6565b1561508b5760008781526011602090815260408083206001600160a01b038a1684529091529020805460ff1916600190811790915594505b5050505092915050565b6000816000036151205760005b6000858152600f602052604090205481101561511a576000858152600f6020526040902080546001600160a01b0386169190839081106150e4576150e4615859565b6000918252602090912001546001600160a01b03160361510a576001915080925061511a565b61511381615891565b90506150a2565b5061517e565b6000848152600f60205260409020548210801561517b57506000848152600f6020526040902080546001600160a01b03851691908490811061516457615164615859565b6000918252602090912001546001600160a01b0316145b90505b806151bc5760405162461bcd60e51b815260206004820152600e60248201526d151a58dad95d139bdd119bdd5b9960921b6044820152606401610ca7565b6000848152600f6020526040902080546151d8906001906157d9565b815481106151e8576151e8615859565b6000918252602080832090910154868352600f909152604090912080546001600160a01b03909216918490811061522157615221615859565b600091825260208083209190910180546001600160a01b0319166001600160a01b039490941693909317909255858152600f9091526040902080548061526957615269615b49565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166134c3576040516330be1a3d60e21b815260040160405180910390fd5b6060612cfe8383600084600080856001600160a01b031684866040516153249190615b5f565b60006040518083038185875af1925050503d8060008114615361576040519150601f19603f3d011682016040523d82523d6000602084013e615366565b606091505b5091509150615376868383615380565b9695505050505050565b60608261539557615390826153dc565b612cfe565b81511580156153ac57506001600160a01b0384163b155b156153d557604051639996b31560e01b81526001600160a01b0385166004820152602401610ca7565b5080612cfe565b8051156153ec5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000806040838503121561541857600080fd5b50508035926020909101359150565b6000610180828403121561543a57600080fd5b50919050565b60006020828403121561545257600080fd5b5035919050565b6001600160a01b0381168114610fd657600080fd5b60006020828403121561548057600080fd5b8135612cfe81615459565b8015158114610fd657600080fd5b6000602082840312156154ab57600080fd5b8135612cfe8161548b565b600080604083850312156154c957600080fd5b8235915060208301356154db81615459565b809150509250929050565b6000806000606084860312156154fb57600080fd5b833561550681615459565b95602085013595506040909401359392505050565b6000806040838503121561552e57600080fd5b823561553981615459565b946020939093013593505050565b6000806000806080858703121561555d57600080fd5b843561556881615459565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156155c1576155c1615582565b604052919050565b600067ffffffffffffffff8211156155e3576155e3615582565b5060051b60200190565b600082601f8301126155fe57600080fd5b8135602061561361560e836155c9565b615598565b82815260059290921b8401810191818101908684111561563257600080fd5b8286015b8481101561564d5780358352918301918301615636565b509695505050505050565b60008060006060848603121561566d57600080fd5b833567ffffffffffffffff8082111561568557600080fd5b818601915086601f83011261569957600080fd5b813560206156a961560e836155c9565b82815260059290921b8401810191818101908a8411156156c857600080fd5b948201945b838610156156ef5785356156e081615459565b825294820194908201906156cd565b975050870135945050604086013591508082111561570c57600080fd5b50615719868287016155ed565b9150509250925092565b60208082526022908201527f5574696c697a6174696f6e20726174652063616e277420657863656564203130604082015261302560f01b606082015260800190565b60208082526021908201527f5361666520426f7820696d706163742063616e277420657863656564203130306040820152602560f81b606082015260800190565b6000602082840312156157b857600080fd5b8151612cfe8161548b565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e3457610e346157c3565b8082028115828204841417610e3457610e346157c3565b80820180821115610e3457610e346157c3565b60208082526023908201527f42617463682073697a652068617320746f20626520677265617465722074686160408201526206e20360ec1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261588c57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016158a3576158a36157c3565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260149082015273141bdbdb081a185cc81b9bdd081cdd185c9d195960621b604082015260600190565b60208082526036908201527f43616e277420776974686472617720617320796f7520616c72656164792064656040820152751c1bdcda5d195908199bdc881b995e1d081c9bdd5b9960521b606082015260800190565b60208082526027908201527f4e6f7420616c6c6f77656420647572696e6720726f756e64436c6f73696e67506040820152661c995c185c995960ca1b606082015260800190565b6020808252601b908201527f43616e206e6f74207365742061207a65726f2061646472657373210000000000604082015260600190565b60208082526026908201527f4f6e6c792074686520414d4d206d617920706572666f726d207468657365206d6040820152656574686f647360d01b606082015260800190565b600060208284031215615a3b57600080fd5b5051919050565b805161ffff811681146134c357600080fd5b805160ff811681146134c357600080fd5b60008060008060008060008060006101208a8c031215615a8457600080fd5b89519850615a9460208b01615a42565b9750615aa260408b01615a42565b965060608a01519550615ab760808b01615a54565b945060a08a01518060020b8114615acd57600080fd5b60c08b015190945062ffffff81168114615ae657600080fd5b9250615af460e08b01615a54565b91506101008a015190509295985092959850929598565b600060208284031215615b1d57600080fd5b8151612cfe81615459565b6001600160a01b039390931683526020830191909152604082015260600190565b634e487b7160e01b600052603160045260246000fd5b6000825160005b81811015615b805760208186018101518583015201615b66565b50600092019182525091905056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a264697066735822122059ea6ba1ffcd7100a752af43742d5df45cebb0819e395cf8c48a7e0d00c4a23064736f6c63430008140033