0 txs
1 call
constructor
No constructor.
functions
addressManager
viewfunction addressManager() view returns (address)
balancePerUserAndCollateral
viewfunction balancePerUserAndCollateral(address, address) view returns (uint256)
freeBetExpiration
viewfunction freeBetExpiration(address, address) view returns (uint256)
freeBetExpirationPeriod
viewfunction freeBetExpirationPeriod() view returns (uint256)
freeBetExpirationUpgrade
viewfunction freeBetExpirationUpgrade() view returns (uint256)
getActiveTicketsPerUser
viewfunction getActiveTicketsPerUser(uint256 _index, uint256 _pageSize, address _user) view returns (address[])
getResolvedTicketsPerUser
viewfunction getResolvedTicketsPerUser(uint256 _index, uint256 _pageSize, address _user) view returns (address[])
getUsersFreeBetDataPerCollateral
viewfunction getUsersFreeBetDataPerCollateral(address _collateral, uint256 _index, uint256 _pageSize) view returns (address[] allUsers, uint256[] freeBetAmounts, bool[] isValid, uint256[] timeToExpiration)
getUsersWithFreeBetPerCollateral
viewfunction getUsersWithFreeBetPerCollateral(address _collateral, uint256 _index, uint256 _pageSize) view returns (address[])
isFreeBetValid
viewfunction isFreeBetValid(address _user, address _collateral) view returns (bool isValid, uint256 timeToExpiration)
lastPauseTime
viewfunction lastPauseTime() view returns (uint256)
liveRequestsPerUser
viewfunction liveRequestsPerUser(bytes32) view returns (address)
liveTradingProcessor
viewfunction liveTradingProcessor() view returns (address)
nominatedOwner
viewfunction nominatedOwner() view returns (address)
numOfActiveTicketsPerUser
viewfunction numOfActiveTicketsPerUser(address _user) view returns (uint256)
numOfResolvedTicketsPerUser
viewfunction numOfResolvedTicketsPerUser(address _user) view returns (uint256)
numOfUsersWithFreeBetPerCollateral
viewfunction numOfUsersWithFreeBetPerCollateral(address _collateral) view returns (uint256)
owner
viewfunction owner() view returns (address)
paidPerTicket
viewfunction paidPerTicket(address) view returns (uint256)
paused
viewfunction paused() view returns (bool)
sgpRequestsPerUser
viewfunction sgpRequestsPerUser(bytes32) view returns (address)
sgpTradingProcessor
viewfunction sgpTradingProcessor() view returns (address)
speedMarketRequestToUser
viewfunction speedMarketRequestToUser(bytes32) view returns (address)
sportsAMM
viewfunction sportsAMM() view returns (address)
supportedCollateral
viewfunction supportedCollateral(address) view returns (bool)
ticketToUser
viewfunction ticketToUser(address) view returns (address)
ticketType
viewfunction ticketType(address) view returns (uint8)
acceptOwnership
nonpayablefunction acceptOwnership()
addSupportedCollateral
nonpayablefunction addSupportedCollateral(address _collateral, bool _supported)
confirmLiveTrade
nonpayablefunction confirmLiveTrade(bytes32 requestId, address _createdTicket, uint256 _buyInAmount, address _collateral)
confirmSGPTrade
nonpayablefunction confirmSGPTrade(bytes32 requestId, address _createdTicket, uint256 _buyInAmount, address _collateral)
confirmSpeedMarketResolved
nonpayablefunction confirmSpeedMarketResolved(address _resolvedTicket, uint256 _exercized, uint256 _buyInAmount, address _collateral)
confirmSpeedOrChainedSpeedMarketTrade
nonpayablefunction confirmSpeedOrChainedSpeedMarketTrade(bytes32 requestId, address _createdTicket, address _collateral, uint256 _buyInAmount, bool _isChainedSpeedMarket)
confirmTicketResolved
nonpayablefunction confirmTicketResolved(address _resolvedTicket)
fund
nonpayablefunction fund(address _user, address _collateral, uint256 _amount)
fundBatch
nonpayablefunction fundBatch(address[] _users, address _collateral, uint256 _amountPerUser)
initialize
nonpayablefunction initialize(address _owner, address _sportsAMMV2, address _liveTradingProcessor)
initNonReentrant
nonpayablefunction initNonReentrant()
nominateNewOwner
nonpayablefunction nominateNewOwner(address _owner)
removeExpiredUserFunding
nonpayablefunction removeExpiredUserFunding(address[] _users, address _collateral)
removeUserFunding
nonpayablefunction removeUserFunding(address _user, address _collateral, address _receiver)
removeUserFundingBatch
nonpayablefunction removeUserFundingBatch(address[] _users, address _collateral, address _receiver)
retrieveFunds
nonpayablefunction retrieveFunds(address _collateral, uint256 _amount)
setAddressManager
nonpayablefunction setAddressManager(address _addressManager)
setFreeBetExpirationPeriod
nonpayablefunction setFreeBetExpirationPeriod(uint256 _freeBetExpirationPeriod, uint256 _freeBetExpirationUpgrade)
setLiveTradingProcessor
nonpayablefunction setLiveTradingProcessor(address _liveTradingProcessor)
setOwner
nonpayablefunction setOwner(address _owner)
setPaused
nonpayablefunction setPaused(bool _paused)
setSGPTradingProcessor
nonpayablefunction setSGPTradingProcessor(address _sgpTradingProcessor)
setSportsAMM
nonpayablefunction setSportsAMM(address _sportsAMM)
setUserFreeBetExpiration
nonpayablefunction setUserFreeBetExpiration(address _user, address _collateral, uint256 _freeBetExpiration)
setUsersWithAlreadyFundedFreeBetPerCollateral
nonpayablefunction setUsersWithAlreadyFundedFreeBetPerCollateral(address[] _users, address _collateral)
trade
nonpayablefunction trade(tuple[] _tradeData, uint256 _buyInAmount, uint256 _expectedQuote, uint256 _additionalSlippage, address _referrer, address _collateral)
tradeChainedSpeedMarket
nonpayablefunction tradeChainedSpeedMarket(tuple _params)
tradeLive
nonpayablefunction tradeLive(tuple _liveTradeData)
tradeSGP
nonpayablefunction tradeSGP(tuple _sgpTradeData)
tradeSpeedMarket
nonpayablefunction tradeSpeedMarket(tuple _params)
tradeSystemBet
nonpayablefunction tradeSystemBet(tuple[] _tradeData, uint256 _buyInAmount, uint256 _expectedQuote, uint256 _additionalSlippage, address _referrer, address _collateral, uint8 _systemBetDenominator)
transferOwnershipAtInit
nonpayablefunction transferOwnershipAtInit(address proxyAddress)
updateApprovalForSpeedMarketsAMM
nonpayablefunction updateApprovalForSpeedMarketsAMM(address _collateral)
events
CollateralSupportChanged
event CollateralSupportChanged(address collateral, bool supported)
FreeBetChainedSpeedMarketTradeRequested
event FreeBetChainedSpeedMarketTradeRequested(address user, bytes32 requestId, uint256 buyInAmount, bytes32 asset, uint64 timeFrame, uint256 directionsCount)
FreeBetLiveTradeRequested
event FreeBetLiveTradeRequested(address user, uint256 buyInAmount, bytes32 requestId)
FreeBetSGPTradeRequested
event FreeBetSGPTradeRequested(address user, uint256 buyInAmount, bytes32 requestId)
FreeBetSpeedMarketTradeRequested
event FreeBetSpeedMarketTradeRequested(address user, bytes32 requestId, uint256 buyInAmount, bytes32 asset, uint64 strikeTime, uint8 direction)
FreeBetTicketResolved
event FreeBetTicketResolved(address ticket, address user, uint256 earned)
FreeBetTrade
event FreeBetTrade(address createdTicket, uint256 buyInAmount, address user, bool isLive)
Initialized
event Initialized(uint64 version)
OwnerChanged
event OwnerChanged(address oldOwner, address newOwner)
OwnerNominated
event OwnerNominated(address newOwner)
PauseChanged
event PauseChanged(bool isPaused)
SetAddressManager
event SetAddressManager(address addressManager)
SetFreeBetExpirationPeriod
event SetFreeBetExpirationPeriod(uint256 freeBetExpirationPeriod, uint256 freeBetExpirationUpgrade)
SetLiveTradingProcessor
event SetLiveTradingProcessor(address liveTradingProcessor)
SetSGPTradingProcessor
event SetSGPTradingProcessor(address sgpTradingProcessor)
SetSportsAMM
event SetSportsAMM(address sportsAMM)
UpdateMaxApprovalSpeedMarketsAMM
event UpdateMaxApprovalSpeedMarketsAMM(address collateral)
UserFunded
event UserFunded(address user, address collateral, uint256 amount, address funder)
UserFundingRemoved
event UserFundingRemoved(address _user, address _collateral, address _receiver, uint256 _amount)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
CallerNotAllowed
error CallerNotAllowed()
DirectionsCannotBeEmpty
error DirectionsCannotBeEmpty()
FailedInnerCall
error FailedInnerCall()
FreeBetExpired
error FreeBetExpired()
FreeBetNotExpired
error FreeBetNotExpired()
InsufficientBalance
error InsufficientBalance()
InvalidAddress
error InvalidAddress()
InvalidInitialization
error InvalidInitialization()
InvalidTicketType
error InvalidTicketType()
NotInitializing
error NotInitializing()
OnlyCallableFromLiveTradingProcessor
error OnlyCallableFromLiveTradingProcessor()
OnlyCallableFromSGPTradingProcessor
error OnlyCallableFromSGPTradingProcessor()
OnlyCallableFromSpeedMarketsAMMCreator
error OnlyCallableFromSpeedMarketsAMMCreator()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SpeedMarketsAMMCreatorNotSet
error SpeedMarketsAMMCreatorNotSet()
UnknownActiveTicket
error UnknownActiveTicket()
UnknownLiveTicket
error UnknownLiveTicket()
UnknownSGPTicket
error UnknownSGPTicket()
UnknownSpeedMarketTicketOwner
error UnknownSpeedMarketTicketOwner()
UnknownTicket
error UnknownTicket()
UnsupportedCollateral
error UnsupportedCollateral()
creation bytecode
0x608060405234801561001057600080fd5b506151b9806100206000396000f3fe608060405234801561001057600080fd5b50600436106103245760003560e01c80638da5cb5b116101a9578063c9925288116100ef578063e94cdf5f1161009d578063e94cdf5f1461081d578063ebc7977214610830578063edc5de8e14610838578063efac480d14610841578063f0a34b8c14610854578063f38329d914610867578063fa550eba1461088a578063fecc198b146108ad57600080fd5b8063c992528814610763578063cab7bf561461077b578063cf6bf6f8146107a6578063dd1d9773146107b9578063dd37861d146107cc578063e74e33e0146107df578063e81e52ee1461080a57600080fd5b8063a12d5b0711610157578063a12d5b07146106be578063a13d6b6a146106d1578063aba84bb1146106e4578063b1b5823b1461070e578063be899c8914610717578063bea4ae201461072a578063c0c53b8b1461073d578063c3b83f5f1461075057600080fd5b80638da5cb5b146106175780638f974cd91461062a57806390e3afb2146106535780639168fdd11461066657806391b4ded91461068f578063924fbde11461069857806394bd2313146106ab57600080fd5b80633a687e2b1161026e5780634d1ac4741161021c5780634d1ac4741461056a5780634fa98ca51461057d57806352aa17a21461059057806353a47bb7146105a35780635c975abb146105b65780635fd5528c146105d357806379ba5097146105fc5780637eda2d7b1461060457600080fd5b80633a687e2b146104a55780633ab76e9f146104b857806342d851ed146104cb57806344cab7ee146104f4578063454d20b814610507578063485b23bf146105375780634a54bcac1461055757600080fd5b80631627540c116102d65780631627540c146103f757806316c38b3c1461040a578063188aa45d1461041d57806318b030f3146104305780631a10bd7614610443578063275fd24714610456578063285e51f9146104695780633a5721211461047c57600080fd5b806304143d311461032957806304de96c51461033e5780630652b57a14610367578063084a2fa41461037a57806311e9c08d1461038d57806313af4035146103bb5780631590a4a4146103ce575b600080fd5b61033c610337366004613ec9565b6108d6565b005b600654610351906001600160a01b031681565b60405161035e9190613efd565b60405180910390f35b61033c610375366004613f36565b610aa0565b61033c610388366004613f53565b610b25565b6103ad61039b366004613f36565b600a6020526000908152604090205481565b60405190815260200161035e565b61033c6103c9366004613f36565b610b59565b6103ad6103dc366004613f36565b6001600160a01b03166000908152600c602052604090205490565b61033c610405366004613f36565b610c65565b61033c610418366004613fa2565b610cb8565b61033c61042b366004613fbf565b610d2a565b61033c61043e366004613feb565b610d4a565b61033c610451366004614035565b610f1b565b61033c6104643660046140b2565b61109d565b61033c61047736600461410e565b611197565b61035161048a366004614149565b600b602052600090815260409020546001600160a01b031681565b61033c6104b3366004614162565b6114ab565b601454610351906001600160a01b031681565b6103516104d9366004614149565b600f602052600090815260409020546001600160a01b031681565b600e54610351906001600160a01b031681565b61052a610515366004613f36565b60156020526000908152604090205460ff1681565b60405161035e91906141fe565b61054a610545366004614218565b6115d4565b60405161035e9190614295565b61033c6105653660046142a8565b611604565b61033c6105783660046142c5565b611890565b61033c61058b366004614310565b611a3e565b61033c61059e366004614350565b611ab0565b600154610351906001600160a01b031681565b6003546105c39060ff1681565b604051901515815260200161035e565b6103516105e1366004614149565b6016602052600090815260409020546001600160a01b031681565b61033c611c62565b61033c61061236600461438a565b611d3a565b600054610351906001600160a01b031681565b610351610638366004613f36565b6009602052600090815260409020546001600160a01b031681565b61033c6106613660046142c5565b611fac565b6103ad610674366004613f36565b6001600160a01b03166000908152600d602052604090205490565b6103ad60025481565b61054a6106a63660046143c9565b612017565b61033c6106b9366004613f36565b61203d565b61033c6106cc36600461438a565b6120b7565b61033c6106df366004613f36565b612156565b6106f76106f23660046143fe565b6123c7565b60408051921515835260208301919091520161035e565b6103ad60125481565b61033c610725366004613f53565b6123df565b61033c61073836600461442c565b612477565b61033c61074b366004614310565b612562565b61033c61075e366004613f36565b6126b8565b6005546103519061010090046001600160a01b031681565b6103ad6107893660046143fe565b600760209081526000928352604080842090915290825290205481565b61033c6107b4366004614488565b6127a8565b61033c6107c73660046144e7565b61281c565b61054a6107da366004614218565b612870565b6103ad6107ed3660046143fe565b601060209081526000928352604080842090915290825290205481565b61033c610818366004613f36565b612896565b61033c61082b366004613f36565b612915565b61033c61298f565b6103ad60115481565b61033c61084f36600461451a565b6129ed565b61033c610862366004613f36565b612b16565b61087a6108753660046143c9565b612d8a565b60405161035e94939291906145de565b6105c3610898366004613f36565b60086020526000908152604090205460ff1681565b6103ad6108bb366004613f36565b6001600160a01b031660009081526013602052604090205490565b60035460ff16156109025760405162461bcd60e51b81526004016108f99061465c565b60405180910390fd5b3361091561014083016101208401613f36565b6001600160a01b03811660009081526008602052604090205460a08401359060ff166109545760405163621a135560e01b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083209386168352929052205481111561099a57604051631e9acf1760e31b815260040160405180910390fd5b6109a48383613000565b6109c15760405163b79adbed60e01b815260040160405180910390fd5b600654604051631a921eb960e21b81526000916001600160a01b031690636a487ae4906109f290889060040161474b565b6020604051808303816000875af1158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a35919061484b565b6000818152600b60205260409081902080546001600160a01b0319163390811790915590519192507ff226e2c0a5c137f1fc5331d8dabe76ea9810e121bc9b18737125bcaa884daa8091610a91919060a0890135908590614864565b60405180910390a15050505050565b610aa861307a565b6001600160a01b038116610acf5760405163e6c4247b60e01b815260040160405180910390fd5b601480546001600160a01b0319166001600160a01b0383161790556040517f954328d28753080b3c499697bde218fd8b53e924669801835383aa346e6940ee90610b1a908390613efd565b60405180910390a150565b610b2d61307a565b6001600160a01b0392831660009081526010602090815260408083209490951682529290925291902055565b6001600160a01b038116610bab5760405162461bcd60e51b815260206004820152601960248201527804f776e657220616464726573732063616e6e6f74206265203603c1b60448201526064016108f9565b600154600160a01b900460ff1615610c175760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b60648201526084016108f9565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b0383166001600160a01b031990911617815560405160008051602061516483398151915291610b1a918490614885565b610c6d61307a565b600180546001600160a01b0319166001600160a01b0383161790556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290610b1a908390613efd565b610cc061307a565b60035460ff16151581151514610d27576003805460ff191682151590811790915560ff1615610cee57426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610b1a565b50565b610d3261307a565b610d466001600160a01b03831633836130ee565b5050565b60145460405163bf40fac160e01b815260206004820152601760248201527629b832b2b226b0b935b2ba39a0a6a6a932b9b7b63b32b960491b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddf919061489f565b9050336001600160a01b03821614610e0a5760405163015783e960e51b815260040160405180910390fd5b6001600160a01b038086166000908152600960205260409020541680610e4357604051634f8c20e160e01b815260040160405180910390fd5b6001600160a01b0381166000908152600c60205260409020610e65908761314b565b610e825760405163e31c3b0360e01b815260040160405180910390fd5b6000610e90828588886131c1565b6001600160a01b0383166000908152600c60205260409020909150610eb5908861325a565b6001600160a01b0382166000908152600d60205260409020610ed790886133b3565b7f66c0cec01a971dcd7f2bb22f7cc4b244c8f9ee6deb5540b073d0f10b4539e8b5878383604051610f0a939291906148bc565b60405180910390a150505050505050565b610f2361307a565b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155610fd55760055460405163095ea7b360e01b81526001600160a01b038085169263095ea7b392610f8c9261010090920490911690600019906004016148e0565b6020604051808303816000875af1158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf91906148f9565b50611055565b60055460405163095ea7b360e01b81526001600160a01b038085169263095ea7b39261101092610100909204909116906000906004016148e0565b6020604051808303816000875af115801561102f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105391906148f9565b505b604080516001600160a01b038416815282151560208201527fb44b294feae8400b9db26080aaedb6cd054001acc015182a0d4216d9e0e7d49091015b60405180910390a15050565b60035460ff16156110c05760405162461bcd60e51b81526004016108f99061465c565b6001600460008282546110d3919061492c565b90915550506004546110e361307a565b6001600160a01b03831660009081526008602052604090205460ff1661111c5760405163621a135560e01b815260040160405180910390fd5b60005b8481101561116e57600086868381811061113b5761113b61493f565b90506020020160208101906111509190613f36565b905061115d818686613405565b5061116781614955565b905061111f565b5060045481146111905760405162461bcd60e51b81526004016108f99061496e565b5050505050565b60035460ff16156111ba5760405162461bcd60e51b81526004016108f99061465c565b6001600460008282546111cd919061492c565b9091555050600454336111e660c0840160a08501613f36565b6001600160a01b03811660009081526008602052604090205460c08501359060ff166112255760405163621a135560e01b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083209386168352929052205481111561126b57604051631e9acf1760e31b815260040160405180910390fd5b6112758383613000565b6112925760405163b79adbed60e01b815260040160405180910390fd5b60145460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906112c1906004016149a5565b602060405180830381865afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611302919061489f565b90506001600160a01b03811661132b5760405163a62e3f5360e01b815260040160405180910390fd5b61133860808701876149d5565b905060000361135a5760405163f6d764fb60e01b815260040160405180910390fd5b60405163064dbc8760e21b81526000906001600160a01b03831690631936f21c90611389908a90600401614aa0565b6020604051808303816000875af11580156113a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cc919061484b565b60008181526016602090815260409182902080546001600160a01b031916339081179091559293507f4ad010e4ad2be2d7a9851444a5bc66965d9e5c19e9956c1b780a3493efaa3ce19291849160c08c0135918c3591611430918e01908e01614b7e565b61143d60808e018e6149d5565b604080516001600160a01b03909816885260208801969096529486019390935260608501919091526001600160401b031660808401525060a082015260c0015b60405180910390a150505050506004548114610d465760405162461bcd60e51b81526004016108f99061496e565b60035460ff16156114ce5760405162461bcd60e51b81526004016108f99061465c565b6001600460008282546114e1919061492c565b90915550506004546001600160a01b03821660009081526008602052604090205433908390889060ff166115285760405163621a135560e01b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083209386168352929052205481111561156e57604051631e9acf1760e31b815260040160405180910390fd5b6115788383613000565b6115955760405163b79adbed60e01b815260040160405180910390fd5b6115a68b8b8b8b8b8b8b60006135aa565b50505060045481146115ca5760405162461bcd60e51b81526004016108f99061496e565b5050505050505050565b6001600160a01b0381166000908152600d602052604090206060906115fa90858561377d565b90505b9392505050565b60035460ff16156116275760405162461bcd60e51b81526004016108f99061465c565b60016004600082825461163a919061492c565b90915550506004543361165360e0840160c08501613f36565b6001600160a01b03811660009081526008602052604090205460e08501359060ff166116925760405163621a135560e01b815260040160405180910390fd5b6001600160a01b038084166000908152600760209081526040808320938616835292905220548111156116d857604051631e9acf1760e31b815260040160405180910390fd5b6116e28383613000565b6116ff5760405163b79adbed60e01b815260040160405180910390fd5b60145460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac19061172e906004016149a5565b602060405180830381865afa15801561174b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176f919061489f565b90506001600160a01b0381166117985760405163a62e3f5360e01b815260040160405180910390fd5b604051636032a02760e01b81526000906001600160a01b03831690636032a027906117c7908a90600401614b99565b6020604051808303816000875af11580156117e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180a919061484b565b60008181526016602090815260409182902080546001600160a01b031916339081179091559293507f16b6809ad60f6976d5779745fe0a2d8bd4de64c93c39e8b200cbe1316393dd2b9291849160e08c0135918c359161186e918e01908e01614b7e565b61187e60c08e0160a08f01614c57565b60405161147d96959493929190614c72565b60035460ff16156118b35760405162461bcd60e51b81526004016108f99061465c565b6001600460008282546118c6919061492c565b909155505060045460005b83811015611a165760008585838181106118ed576118ed61493f565b90506020020160208101906119029190613f36565b6001600160a01b0380821660009081526007602090815260408083209389168352929052205490915015611a05576001600160a01b038082166000908152601060209081526040808320938816835292905220541580159061198857506001600160a01b0380821660009081526010602090815260408083209388168352929052205442115b806119cf57506001600160a01b038082166000908152601060209081526040808320938816835292905220541580156119cf5750426011546012546119cd919061492c565b105b6119ec57604051631c8b0d0d60e31b815260040160405180910390fd5b600054611a0590829086906001600160a01b0316613405565b50611a0f81614955565b90506118d1565b506004548114611a385760405162461bcd60e51b81526004016108f99061496e565b50505050565b60035460ff1615611a615760405162461bcd60e51b81526004016108f99061465c565b600160046000828254611a74919061492c565b9091555050600454611a8461307a565b611a8f848484613405565b6004548114611a385760405162461bcd60e51b81526004016108f99061496e565b60035460ff1615611ad35760405162461bcd60e51b81526004016108f99061465c565b33611ae460c0830160a08401613f36565b6001600160a01b038116600090815260086020908152604090912054908401359060ff16611b255760405163621a135560e01b815260040160405180910390fd5b6001600160a01b03808416600090815260076020908152604080832093861683529290522054811115611b6b57604051631e9acf1760e31b815260040160405180910390fd5b611b758383613000565b611b925760405163b79adbed60e01b815260040160405180910390fd5b600e546040516306fea14960e21b81526000916001600160a01b031690631bfa852490611bc3908890600401614f61565b6020604051808303816000875af1158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c06919061484b565b6000818152600f602090815260409182902080546001600160a01b0319163390811790915591519293507f2a107e8d4cba0aa559543eb234520741dac54e7db15d8a96afc8df0dcb8f752592610a919291890135908590614864565b6001546001600160a01b03163314611cda5760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084016108f9565b60005460015460405160008051602061516483398151915292611d0b926001600160a01b0391821692911690614885565b60405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60035460ff1615611d5d5760405162461bcd60e51b81526004016108f99061465c565b600160046000828254611d70919061492c565b9091555050600454600e546001600160a01b03163314611da35760405163b0a51f3b60e01b815260040160405180910390fd5b6000858152600f60205260409020546001600160a01b031680611dd957604051630b8efbb360e31b815260040160405180910390fd5b6001600160a01b038316611e6157600560019054906101000a90046001600160a01b03166001600160a01b031663aeb0f1646040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e919061489f565b92505b6001600160a01b03831660009081526008602052604090205460ff16611e9a5760405163621a135560e01b815260040160405180910390fd5b6001600160a01b03808216600090815260076020908152604080832093871683529290522054841115611ee057604051631e9acf1760e31b815260040160405180910390fd5b6001600160a01b03808216600090815260076020908152604080832093871683529290529081208054869290611f17908490614fe7565b90915550506001600160a01b03858116600090815260096020908152604080832080546001600160a01b0319169486169485179055928252600c905220611f5e90866133b3565b6000805160206151448339815191528585836001604051611f829493929190614ffa565b60405180910390a15060045481146111905760405162461bcd60e51b81526004016108f99061496e565b611fb461307a565b60005b82811015611a3857612007848483818110611fd457611fd461493f565b9050602002016020810190611fe99190613f36565b6001600160a01b0384166000908152601360205260409020906133b3565b61201081614955565b9050611fb7565b6001600160a01b03831660009081526013602052604090206060906115fa90848461377d565b61204561307a565b6001600160a01b03811661206c5760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383161790556040517f8b5670b3bc5c520b7a3580c753ba88065a561ad52a99674196859b044ea2028590610b1a908390613efd565b60035460ff16156120da5760405162461bcd60e51b81526004016108f99061465c565b6001600460008282546120ed919061492c565b90915550506004546006546001600160a01b031633146121205760405163bae55a2d60e01b815260040160405180910390fd5b6000858152600b60205260409020546001600160a01b031680611dd957604051637692dc6960e01b815260040160405180910390fd5b60055461010090046001600160a01b031633146121865760405163015783e960e51b815260040160405180910390fd5b6001600160a01b0380821660009081526009602052604090205416806121bf57604051634f8c20e160e01b815260040160405180910390fd5b6001600160a01b0381166000908152600c602052604090206121e1908361314b565b6121fe5760405163e31c3b0360e01b815260040160405180910390fd5b600080836001600160a01b031663242a8a6b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612263919061484b565b90506000846001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c9919061489f565b90506000856001600160a01b031663d165dac26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232f919061484b565b905061233d858385846131c1565b6001600160a01b0386166000908152600c60205260409020909450612362908761325a565b6001600160a01b0385166000908152600d6020526040902061238490876133b3565b7f66c0cec01a971dcd7f2bb22f7cc4b244c8f9ee6deb5540b073d0f10b4539e8b58686866040516123b7939291906148bc565b60405180910390a1505050505050565b6000806123d48484613897565b909590945092505050565b60035460ff16156124025760405162461bcd60e51b81526004016108f99061465c565b600160046000828254612415919061492c565b90915550506004546001600160a01b03831660009081526008602052604090205460ff166124565760405163621a135560e01b815260040160405180910390fd5b61246b6001600160a01b03841633308561397a565b611a8f848484336139a2565b60035460ff161561249a5760405162461bcd60e51b81526004016108f99061465c565b6001600460008282546124ad919061492c565b90915550506004546001600160a01b03831660009081526008602052604090205460ff166124ee5760405163621a135560e01b815260040160405180910390fd5b61250f33306124fd8786615024565b6001600160a01b03871692919061397a565b60005b8481101561116e57600086868381811061252e5761252e61493f565b90506020020160208101906125439190613f36565b9050612551818686336139a2565b5061255b81614955565b9050612512565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156125a75750825b90506000826001600160401b031660011480156125c35750303b155b9050811580156125d1575080155b156125ef5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561261957845460ff60401b1916600160401b1785555b61262288610b59565b61262a61298f565b60058054610100600160a81b0319166101006001600160a01b038a81169190910291909117909155600680546001600160a01b03191691881691909117905583156115ca57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050505050565b6126c061307a565b6001600160a01b0381166127085760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016108f9565b600154600160a81b900460ff16156127585760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b60448201526064016108f9565b600080546001600160a01b0383166001600160a01b031990911681179091556001805460ff60a81b1916600160a81b17905560405160008051602061516483398151915291610b1a918490614885565b60035460ff16156127cb5760405162461bcd60e51b81526004016108f99061465c565b6001600460008282546127de919061492c565b90915550506004546127f38686868686613a82565b60045481146128145760405162461bcd60e51b81526004016108f99061496e565b505050505050565b61282461307a565b601182905580156128355780612837565b425b60125560408051838152602081018390527fddd57316dedc944a54a2d4ccbec17883e25f23eebb11ea1a4800f36502a469f09101611091565b6001600160a01b0381166000908152600c602052604090206060906115fa90858561377d565b61289e61307a565b6001600160a01b0381166128c55760405163e6c4247b60e01b815260040160405180910390fd5b60058054610100600160a81b0319166101006001600160a01b038416021790556040517f9985022676a73860c32a3b91ea7a7dfe2d5e87c148f50eb519d8b0f33ab7f8b990610b1a908390613efd565b61291d61307a565b6001600160a01b0381166129445760405163e6c4247b60e01b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0383161790556040517f63bb8d8b29c197c8b58de8e513ab743bce7bf84c87adc05f2cc18e609d5d0e8690610b1a908390613efd565b60055460ff16156129d85760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016108f9565b6005805460ff19166001908117909155600455565b60035460ff1615612a105760405162461bcd60e51b81526004016108f99061465c565b600160046000828254612a23919061492c565b90915550506004546001600160a01b03831660009081526008602052604090205433908490899060ff16612a6a5760405163621a135560e01b815260040160405180910390fd5b6001600160a01b03808416600090815260076020908152604080832093861683529290522054811115612ab057604051631e9acf1760e31b815260040160405180910390fd5b612aba8383613000565b612ad75760405163b79adbed60e01b815260040160405180910390fd5b612ae78c8c8c8c8c8c8c8c6135aa565b5050506004548114612b0b5760405162461bcd60e51b81526004016108f99061496e565b505050505050505050565b612b1e61307a565b60145460405163bf40fac160e01b815260206004820152600f60248201526e53706565644d61726b657473414d4d60881b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015612b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bab919061489f565b60145460405163bf40fac160e01b8152602060048201526016602482015275436861696e656453706565644d61726b657473414d4d60501b60448201529192506000916001600160a01b039091169063bf40fac190606401602060405180830381865afa158015612c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c44919061489f565b90506001600160a01b03821615612cca5760405163095ea7b360e01b81526001600160a01b0384169063095ea7b390612c85908590600019906004016148e0565b6020604051808303816000875af1158015612ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc891906148f9565b505b6001600160a01b03811615612d4e5760405163095ea7b360e01b81526001600160a01b0384169063095ea7b390612d09908490600019906004016148e0565b6020604051808303816000875af1158015612d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4c91906148f9565b505b7f9299b4cb19938ed94afb63d68d74815fcd5b47bb9c03470bcc5c6fb1cd642c8983604051612d7d9190613efd565b60405180910390a1505050565b6001600160a01b038316600090815260136020526040902054606090819081908190851115612dcf576001600160a01b03871660009081526013602052604090205494505b846001600160401b03811115612de757612de761503b565b604051908082528060200260200182016040528015612e10578160200160208202803683370190505b509350846001600160401b03811115612e2b57612e2b61503b565b604051908082528060200260200182016040528015612e54578160200160208202803683370190505b509150846001600160401b03811115612e6f57612e6f61503b565b604051908082528060200260200182016040528015612e98578160200160208202803683370190505b509250846001600160401b03811115612eb357612eb361503b565b604051908082528060200260200182016040528015612edc578160200160208202803683370190505b50905060005b85811015612ff6576001600160a01b0388166000908152601360205260408120612f0c838a61492c565b81548110612f1c57612f1c61493f565b6000918252602090912001546001600160a01b03169050612f3d818a613897565b858481518110612f4f57612f4f61493f565b60200260200101858581518110612f6857612f6861493f565b60200260200101828152508215151515815250505080868381518110612f9057612f9061493f565b6001600160a01b039283166020918202929092018101919091528282166000908152600782526040808220938d1682529290915220548551869084908110612fda57612fda61493f565b602090810291909101015250612fef81614955565b9050612ee2565b5093509350935093565b6001600160a01b03808316600090815260106020908152604080832093851683529290529081205442108061307157506001600160a01b0380841660009081526010602090815260408083209386168352929052205415801561307157504260115460125461306f919061492c565b115b90505b92915050565b6000546001600160a01b031633146130ec5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016108f9565b565b61314683846001600160a01b031663a9059cbb85856040516024016131149291906148e0565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613d58565b505050565b8154600090810361315e57506000613074565b6001600160a01b0382166000908152600184016020526040902054801515806131b95750826001600160a01b0316846000016000815481106131a2576131a261493f565b6000918252602090912001546001600160a01b0316145b949350505050565b600082156131b95781831115613216576000546131eb906001600160a01b038681169116846130ee565b6131f58284614fe7565b90508015613211576132116001600160a01b03851686836130ee565b6131b9565b6001600160a01b0380861660009081526007602090815260408083209388168352929052908120805485929061324d90849061492c565b9091555050949350505050565b613264828261314b565b6132a65760405162461bcd60e51b815260206004820152601360248201527222b632b6b2b73a103737ba1034b71039b2ba1760691b60448201526064016108f9565b6001600160a01b03811660009081526001808401602052604082205484549092916132d091614fe7565b905080821461335c5760008460000182815481106132f0576132f061493f565b60009182526020909120015485546001600160a01b039091169150819086908590811061331f5761331f61493f565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018601909152604090208290555b835484908061336d5761336d615051565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0394909416815260019490940190925250506040812055565b6133bd828261314b565b610d465781546001600160a01b038216600081815260018086016020908152604083208590559084018655858252902090910180546001600160a01b03191690911790555050565b6001600160a01b03821660009081526008602052604090205460ff1661343e5760405163621a135560e01b815260040160405180910390fd5b6001600160a01b038084166000908152600760209081526040808320938616808452939091528082205490516370a0823160e01b81529092906370a082319061348b903090600401613efd565b602060405180830381865afa1580156134a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134cc919061484b565b90506000821180156134de5750818110155b156134f7576134f76001600160a01b03851684846130ee565b6001600160a01b03808616600090815260076020908152604080832093881683529281528282208290556013905220613530908661314b565b15613557576001600160a01b0384166000908152601360205260409020613557908661325a565b604080516001600160a01b0380881682528087166020830152851691810191909152606081018390527f5aecd162bb2e2f8d70294fe483d6a8596cf8555a650f08a962220feaba5c21fe90608001610a91565b3360009081526007602090815260408083206001600160a01b0386168452909152812080548892906135dd908490614fe7565b909155506000905060ff82161561367d576005546040516349d8615760e11b81526101009091046001600160a01b0316906393b0c2ae90613633908c908c908c908c908c908c908c906000908d90600401615067565b6020604051808303816000875af1158015613652573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613676919061489f565b9050613705565b6005546040516214e17b60e41b81526101009091046001600160a01b03169063014e17b0906136bf908c908c908c908c908c908c908c906000906004016150c3565b6020604051808303816000875af11580156136de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613702919061489f565b90505b6001600160a01b038116600090815260096020908152604080832080546001600160a01b031916339081179091558352600c909152902061374690826133b3565b600080516020615144833981519152818833600060405161376a9493929190614ffa565b60405180910390a1505050505050505050565b6060600061378b838561492c565b855490915081111561379b575083545b8381116137b85750506040805160008152602081019091526115fd565b60006137c48583614fe7565b90506000816001600160401b038111156137e0576137e061503b565b604051908082528060200260200182016040528015613809578160200160208202803683370190505b50905060005b8281101561388c5787613822888361492c565b815481106138325761383261493f565b9060005260206000200160009054906101000a90046001600160a01b03168282815181106138625761386261493f565b6001600160a01b03909216602092830291909101909101528061388481614955565b91505061380f565b509695505050505050565b6001600160a01b038116600090815260086020526040812054819060ff1680156138e557506001600160a01b0380851660009081526007602090815260408083209387168352929052205415155b15613973576001600160a01b03808516600090815260106020908152604080832093871683529290529081205461392b57601154601254613926919061492c565b613952565b6001600160a01b038086166000908152601060209081526040808320938816835292905220545b905042811192508261396557600061396f565b61396f4282614fe7565b9150505b9250929050565b611a3884856001600160a01b03166323b872dd868686604051602401613114939291906148bc565b6001600160a01b03831660009081526013602052604090206139c490856133b3565b6001600160a01b038085166000908152600760209081526040808320938716835292905290812080548492906139fb90849061492c565b9091555050601154613a0d904261492c565b6001600160a01b03858116600081815260106020908152604080832089861680855290835292819020959095558451928352820152918201849052821660608201527ff462a3a00cd477c2aa6252dfbff27a7cf55ad6f75c526f4650b5bb92ef2912689060800160405180910390a150505050565b60145460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac190613ab1906004016149a5565b602060405180830381865afa158015613ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af2919061489f565b90506001600160a01b038116613b1b5760405163a62e3f5360e01b815260040160405180910390fd5b336001600160a01b03821614613b4457604051632c58be7f60e11b815260040160405180910390fd5b6001600160a01b038416613bcc57600560019054906101000a90046001600160a01b03166001600160a01b031663aeb0f1646040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bc9919061489f565b93505b6000868152601660205260409020546001600160a01b031680613c025760405163d287b7b160e01b815260040160405180910390fd5b6001600160a01b03808216600090815260076020908152604080832093891683529290522054841115613c4857604051631e9acf1760e31b815260040160405180910390fd5b6001600160a01b03808216600090815260076020908152604080832093891683529290529081208054869290613c7f908490614fe7565b90915550506001600160a01b03868116600090815260096020526040902080546001600160a01b03191691831691909117905582613cbe576001613cc1565b60025b6001600160a01b0387166000908152601560205260409020805460ff19166001836002811115613cf357613cf36141e8565b02179055506001600160a01b0381166000908152600c60205260409020613d1a90876133b3565b60008781526016602052604080822080546001600160a01b03191690555160008051602061514483398151915291610f0a9189918891869190614ffa565b6000613d6d6001600160a01b03841683613db2565b90508051600014158015613d92575080806020019051810190613d9091906148f9565b155b156131465782604051635274afe760e01b81526004016108f99190613efd565b60606130718383600084600080856001600160a01b03168486604051613dd89190615114565b60006040518083038185875af1925050503d8060008114613e15576040519150601f19603f3d011682016040523d82523d6000602084013e613e1a565b606091505b5091509150613e2a868383613e34565b9695505050505050565b606082613e4957613e4482613e87565b6115fd565b8151158015613e6057506001600160a01b0384163b155b15613e805783604051639996b31560e01b81526004016108f99190613efd565b50806115fd565b805115613e975780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006101408284031215613ec357600080fd5b50919050565b600060208284031215613edb57600080fd5b81356001600160401b03811115613ef157600080fd5b6131b984828501613eb0565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610d2757600080fd5b8035613f3181613f11565b919050565b600060208284031215613f4857600080fd5b81356115fd81613f11565b600080600060608486031215613f6857600080fd5b8335613f7381613f11565b92506020840135613f8381613f11565b929592945050506040919091013590565b8015158114610d2757600080fd5b600060208284031215613fb457600080fd5b81356115fd81613f94565b60008060408385031215613fd257600080fd5b8235613fdd81613f11565b946020939093013593505050565b6000806000806080858703121561400157600080fd5b843561400c81613f11565b93506020850135925060408501359150606085013561402a81613f11565b939692955090935050565b6000806040838503121561404857600080fd5b823561405381613f11565b9150602083013561406381613f94565b809150509250929050565b60008083601f84011261408057600080fd5b5081356001600160401b0381111561409757600080fd5b6020830191508360208260051b850101111561397357600080fd5b600080600080606085870312156140c857600080fd5b84356001600160401b038111156140de57600080fd5b6140ea8782880161406e565b90955093505060208501356140fe81613f11565b9150604085013561402a81613f11565b60006020828403121561412057600080fd5b81356001600160401b0381111561413657600080fd5b820161010081850312156115fd57600080fd5b60006020828403121561415b57600080fd5b5035919050565b600080600080600080600060c0888a03121561417d57600080fd5b87356001600160401b0381111561419357600080fd5b61419f8a828b0161406e565b90985096505060208801359450604088013593506060880135925060808801356141c881613f11565b915060a08801356141d881613f11565b8091505092959891949750929550565b634e487b7160e01b600052602160045260246000fd5b6020810160038310614212576142126141e8565b91905290565b60008060006060848603121561422d57600080fd5b8335925060208401359150604084013561424681613f11565b809150509250925092565b600081518084526020808501945080840160005b8381101561428a5781516001600160a01b031687529582019590820190600101614265565b509495945050505050565b6020815260006130716020830184614251565b600061014082840312156142bb57600080fd5b6130718383613eb0565b6000806000604084860312156142da57600080fd5b83356001600160401b038111156142f057600080fd5b6142fc8682870161406e565b909450925050602084013561424681613f11565b60008060006060848603121561432557600080fd5b833561433081613f11565b9250602084013561434081613f11565b9150604084013561424681613f11565b60006020828403121561436257600080fd5b81356001600160401b0381111561437857600080fd5b820160c081850312156115fd57600080fd5b600080600080608085870312156143a057600080fd5b8435935060208501356143b281613f11565b925060408501359150606085013561402a81613f11565b6000806000606084860312156143de57600080fd5b83356143e981613f11565b95602085013595506040909401359392505050565b6000806040838503121561441157600080fd5b823561441c81613f11565b9150602083013561406381613f11565b6000806000806060858703121561444257600080fd5b84356001600160401b0381111561445857600080fd5b6144648782880161406e565b909550935050602085013561447881613f11565b9396929550929360400135925050565b600080600080600060a086880312156144a057600080fd5b8535945060208601356144b281613f11565b935060408601356144c281613f11565b92506060860135915060808601356144d981613f94565b809150509295509295909350565b600080604083850312156144fa57600080fd5b50508035926020909101359150565b803560ff81168114613f3157600080fd5b60008060008060008060008060e0898b03121561453657600080fd5b88356001600160401b0381111561454c57600080fd5b6145588b828c0161406e565b909950975050602089013595506040890135945060608901359350608089013561458181613f11565b925060a089013561459181613f11565b915061459f60c08a01614509565b90509295985092959890939650565b600081518084526020808501945080840160005b8381101561428a578151875295820195908201906001016145c2565b6080815260006145f16080830187614251565b60208382038185015261460482886145ae565b8481036040860152865180825282880193509082019060005b8181101561463b57845115158352938301939183019160010161461d565b5050848103606086015261464f81876145ae565b9998505050505050505050565b6020808252603c908201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060408201527f7768696c652074686520636f6e74726163742069732070617573656400000000606082015260800190565b6000808335601e198436030181126146d057600080fd5b83016020810192503590506001600160401b038111156146ef57600080fd5b80360382131561397357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803561ffff81168114613f3157600080fd5b8035600281900b8114613f3157600080fd5b60208152600061475b83846146b9565b610140806020860152614773610160860183856146fe565b925061478160208701614727565b61ffff81166040870152915061479960408701614727565b61ffff8116606087015291506147b160608701614739565b91506147c2608086018360020b9052565b6147ce60808701614509565b60ff811660a0870152915060a086013560c086015260c086013560e0860152610100915060e086013582860152614806828701613f26565b915061012061481f818701846001600160a01b03169052565b61482a818801613f26565b925050614841818601836001600160a01b03169052565b5090949350505050565b60006020828403121561485d57600080fd5b5051919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0392831681529116602082015260400190565b6000602082840312156148b157600080fd5b81516115fd81613f11565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561490b57600080fd5b81516115fd81613f94565b634e487b7160e01b600052601160045260246000fd5b8082018082111561307457613074614916565b634e487b7160e01b600052603260045260246000fd5b60006001820161496757614967614916565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526016908201527529b832b2b226b0b935b2ba39a0a6a6a1b932b0ba37b960511b604082015260600190565b6000808335601e198436030181126149ec57600080fd5b8301803591506001600160401b03821115614a0657600080fd5b6020019150600581901b360382131561397357600080fd5b80356001600160401b0381168114613f3157600080fd5b6000808335601e19843603018112614a4c57600080fd5b83016020810192503590506001600160401b03811115614a6b57600080fd5b8060051b360382131561397357600080fd5b60028110614a8d57614a8d6141e8565b9052565b803560028110613f3157600080fd5b6000602080835261012083018435828501526001600160401b03614ac5838701614a1e565b1660408501526040850135606085015260608501356080850152614aec6080860186614a35565b61010060a087018190529281905290916000919061014087015b82841015614b3257614b2081614b1b87614a91565b614a7d565b93850193600193909301928501614b06565b614b3e60a08a01613f26565b6001600160a01b03811660c08a0152955060c089013560e0890152614b6560e08a01613f26565b6001600160a01b03169190970152509395945050505050565b600060208284031215614b9057600080fd5b61307182614a1e565b813581526101408101614bae60208401614a1e565b6001600160401b03166020830152614bc860408401614a1e565b6001600160401b0381166040840152506060830135606083015260808301356080830152614bf860a08401614a91565b614c0560a0840182614a7d565b50614c1260c08401613f26565b6001600160a01b031660c083015260e08381013590830152610100614c38818501613f26565b6001600160a01b03811684830152505061012092830135919092015290565b600060208284031215614c6957600080fd5b61307182614a91565b6001600160a01b03871681526020810186905260408101859052606081018490526001600160401b038316608082015260c08101614cb360a0830184614a7d565b979650505050505050565b803562ffffff81168114613f3157600080fd5b81835260006001600160fb1b03831115614cea57600080fd5b8260051b80836020870137939093016020019392505050565b8183526000602080850194508260005b8581101561428a5761ffff614d2783614727565b16875260ff614d37848401614509565b16838801526040614d49818401614739565b60020b908801526060968701969190910190600101614d13565b81835260006020808501808196508560051b810191508460005b87811015614dea5782840389528135601e19883603018112614d9e57600080fd5b870185810190356001600160401b03811115614db957600080fd5b606081023603821315614dcb57600080fd5b614dd6868284614d03565b9a87019a9550505090840190600101614d7d565b5091979650505050505050565b6000823561015e19833603018112614e0e57600080fd5b90910192915050565b81835260006020808501808196508560051b810191508460005b87811015614dea578284038952614e488288614df7565b61016081358652614e5a878301614727565b61ffff16878701526040614e6f838201614727565b61ffff1690870152606082810135908701526080614e8e818401614509565b60ff169087015260a0614ea2838201614739565b614eb08289018260020b9052565b505060c0614ebf818401614cbe565b62ffffff169087015260e0614ed683820184614a35565b83838a0152614ee8848a018284614cd1565b9350505050610100614efc81840184614a35565b888403838a0152614f0e848284614cd1565b9350505050610120614f21818401614509565b60ff1690870152610140614f3783820184614a35565b935087830382890152614f4b838583614d63565b9c89019c97505050928601925050600101614e31565b602081526000614f718384614a35565b60c06020850152614f8660e085018284614e17565b9150506020840135604084015260408401356060840152606084013560808401526080840135614fb581613f11565b6001600160a01b0390811660a08581019190915285013590614fd682613f11565b1660c0939093019290925250919050565b8181038181111561307457613074614916565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b808202811582820484141761307457613074614916565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600061010080835261507c8184018c8e614e17565b602084019a909a525050604081019690965260608601949094526001600160a01b039283166080860152911660a0840152151560c083015260ff1660e09091015292915050565b60e0815260006150d760e083018a8c614e17565b602083019890985250604081019590955260608501939093526001600160a01b0391821660808501521660a0830152151560c09091015292915050565b6000825160005b81811015615135576020818601810151858301520161511b565b50600092019182525091905056fe7ae5c9299a3bae0b94af6ac3b4a893bc2c44adfbd65479c7882294b4b6403083b532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159ca2646970667358221220de5edebafdb2ae3d497833daeb525638012b35e3dd9605285bc0512bb549b20564736f6c63430008140033