0 txs
75.5k calls
constructor
No constructor.
functions
addedPayoutPercentagePerCollateral
viewfunction addedPayoutPercentagePerCollateral(address) view returns (uint256)
defaultCollateral
viewfunction defaultCollateral() view returns (address)
freeBetsHolder
viewfunction freeBetsHolder() view returns (address)
getRootsPerGames
viewfunction getRootsPerGames(bytes32[] _games) view returns (bytes32[] _roots)
lastPauseTime
viewfunction lastPauseTime() view returns (uint256)
liquidityPoolForCollateral
viewfunction liquidityPoolForCollateral(address) view returns (address)
liveTradingProcessor
viewfunction liveTradingProcessor() view returns (address)
manager
viewfunction manager() view returns (address)
multicollateralEnabled
viewfunction multicollateralEnabled() view returns (bool)
multiCollateralOnOffRamp
viewfunction multiCollateralOnOffRamp() view returns (address)
nominatedOwner
viewfunction nominatedOwner() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
referrals
viewfunction referrals() view returns (address)
resultManager
viewfunction resultManager() view returns (address)
riskManager
viewfunction riskManager() view returns (address)
rootPerGame
viewfunction rootPerGame(bytes32) view returns (bytes32)
safeBox
viewfunction safeBox() view returns (address)
safeBoxFee
viewfunction safeBoxFee() view returns (uint256)
safeBoxPerCollateral
viewfunction safeBoxPerCollateral(address) view returns (address)
sgpTradingProcessor
viewfunction sgpTradingProcessor() view returns (address)
stakingThales
viewfunction stakingThales() view returns (address)
stakingThalesBettingProxy
viewfunction stakingThalesBettingProxy() view returns (address)
ticketMastercopy
viewfunction ticketMastercopy() view returns (address)
tradeQuote
viewfunction tradeQuote(tuple[] _tradeData, uint256 _buyInAmount, address _collateral, bool _isLive) view returns (uint256 totalQuote, uint256 payout, uint256 fees, uint256[] amountsToBuy, uint256 buyInAmountInDefaultCollateral, uint8 riskStatus)
tradeQuoteSystem
viewfunction tradeQuoteSystem(tuple[] _tradeData, uint256 _buyInAmount, address _collateral, bool _isLive, uint8 _systemBetDenominator) view returns (uint256 totalQuote, uint256 payout, uint256 fees, uint256[] amountsToBuy, uint256 buyInAmountInDefaultCollateral, uint8 riskStatus)
acceptOwnership
nonpayablefunction acceptOwnership()
cancelTicket
nonpayablefunction cancelTicket(address _ticket)
exerciseTicket
nonpayablefunction exerciseTicket(address _ticket)
exerciseTicketOffRamp
nonpayablefunction exerciseTicketOffRamp(address _ticket, address _exerciseCollateral, bool _inEth)
expireTickets
nonpayablefunction expireTickets(address[] _tickets)
initialize
nonpayablefunction initialize(address _owner, address _defaultCollateral, address _manager, address _riskManager, address _resultManager, address _referrals, address _stakingThales, address _safeBox)
initNonReentrant
nonpayablefunction initNonReentrant()
nominateNewOwner
nonpayablefunction nominateNewOwner(address _owner)
setAddedPayoutPercentagePerCollateral
nonpayablefunction setAddedPayoutPercentagePerCollateral(address _collateral, uint256 _addedPayout)
setAddresses
nonpayablefunction setAddresses(address _defaultCollateral, address _manager, address _riskManager, address _resultManager, address _referrals, address _stakingThales, address _safeBox)
setAmounts
nonpayablefunction setAmounts(uint256 _safeBoxFee)
setBettingProcessors
nonpayablefunction setBettingProcessors(address _liveTradingProcessor, address _sgpTradingProcessor, address _freeBetsHolder, address _stakingThalesBettingProxy)
setLiquidityPoolForCollateral
nonpayablefunction setLiquidityPoolForCollateral(address _collateralAddress, address _liquidityPool)
setMultiCollateralOnOffRamp
nonpayablefunction setMultiCollateralOnOffRamp(address _onOffRamper, bool _enabled)
setOwner
nonpayablefunction setOwner(address _owner)
setPaused
nonpayablefunction setPaused(bool _paused)
setRootForGame
nonpayablefunction setRootForGame(bytes32 _game, bytes32 _root)
setRootsPerGames
nonpayablefunction setRootsPerGames(bytes32[] _games, bytes32[] _roots)
setSafeBoxPerCollateral
nonpayablefunction setSafeBoxPerCollateral(address _collateral, address _safeBox)
setTicketMastercopy
nonpayablefunction setTicketMastercopy(address _ticketMastercopy)
trade
payablefunction trade(tuple[] _tradeData, uint256 _buyInAmount, uint256 _expectedQuote, uint256 _additionalSlippage, address _referrer, address _collateral, bool _isEth) payable returns (address _createdTicket)
tradeLive
nonpayablefunction tradeLive(tuple[] _tradeData, uint256 _buyInAmount, uint256 _expectedQuote, address _recipient, address _referrer, address _collateral) returns (address _createdTicket)
tradeSGP
payablefunction tradeSGP(tuple[] _tradeData, uint256 _buyInAmount, uint256 _approvedQuote, address _recipient, address _referrer, address _collateral) payable returns (address _createdTicket)
tradeSystemBet
payablefunction tradeSystemBet(tuple[] _tradeData, uint256 _buyInAmount, uint256 _expectedQuote, uint256 _additionalSlippage, address _referrer, address _collateral, bool _isEth, uint8 _systemBetDenominator) payable returns (address _createdTicket)
transferOwnershipAtInit
nonpayablefunction transferOwnershipAtInit(address proxyAddress)
withdrawCollateralFromTicket
nonpayablefunction withdrawCollateralFromTicket(address ticketAddress, address recipient)
events
AddressesUpdated
event AddressesUpdated(address defaultCollateral, address manager, address riskManager, address resultManager, address referrals, address stakingThales, address safeBox)
AmountsUpdated
event AmountsUpdated(uint256 safeBoxFee)
GameRootUpdated
event GameRootUpdated(bytes32 game, bytes32 root)
Initialized
event Initialized(uint64 version)
NewTicket
event NewTicket((bytes32 gameId, uint16 sportId, uint16 typeId, uint256 maturity, uint8 status, int24 line, uint24 playerId, uint8 position, uint256 odd, (uint16 typeId, uint8 position, int24 line)[] combinedPositions)[] markets, address ticket, uint256 buyInAmount, uint256 payout, bool isLive)
OwnerChanged
event OwnerChanged(address oldOwner, address newOwner)
OwnerNominated
event OwnerNominated(address newOwner)
PauseChanged
event PauseChanged(bool isPaused)
ReferrerPaid
event ReferrerPaid(address refferer, address trader, uint256 amount, uint256 volume, address collateral)
SafeBoxFeePaid
event SafeBoxFeePaid(uint256 safeBoxFee, uint256 safeBoxAmount, address collateral)
SetAddedPayoutPercentagePerCollateral
event SetAddedPayoutPercentagePerCollateral(address _collateral, uint256 _addedPayout)
SetBettingProcessors
event SetBettingProcessors(address liveTradingProcessor, address sgpTradingProcessor, address freeBetsHolder, address stakingThalesBettingProxy)
SetLiquidityPoolForCollateral
event SetLiquidityPoolForCollateral(address liquidityPool, address collateral)
SetMultiCollateralOnOffRamp
event SetMultiCollateralOnOffRamp(address onOffRamper, bool enabled)
SetSafeBoxPerCollateral
event SetSafeBoxPerCollateral(address _collateral, address _safeBox)
TicketCreated
event TicketCreated(address ticket, address recipient, uint256 buyInAmount, uint256 fees, uint256 payout, uint256 totalQuote, address collateral)
TicketMastercopyUpdated
event TicketMastercopyUpdated(address ticketMastercopy)
TicketResolved
event TicketResolved(address ticket, address ticketOwner, bool isUserTheWinner)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC1167FailedCreateClone
error ERC1167FailedCreateClone()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801561001057600080fd5b50615c4380620000216000396000f3fe6080604052600436106103035760003560e01c806391b4ded911610190578063c3b83f5f116100dc578063eaa8ba7f11610095578063f5bf372e1161006f578063f5bf372e14610941578063f8291d2b1461096e578063fd47e5ec1461098e578063fd8a8cc6146109bb57600080fd5b8063eaa8ba7f146108ec578063ebc797721461090c578063f453ea7d1461092157600080fd5b8063c3b83f5f1461082c578063c7f3cb761461084c578063c85fda3b1461086c578063ce18a8371461088c578063d3dc7539146108ac578063e481a342146108cc57600080fd5b8063ace81b7111610149578063b6a3670411610123578063b6a3670414610796578063b8e15ed0146107b6578063c2c9e276146107ec578063c301086c1461080c57600080fd5b8063ace81b7114610736578063aeb0f16414610756578063b6826e871461077657600080fd5b806391b4ded91461068c57806393b0c2ae146106a2578063942b67dc146106b557806399c18e7e146106d55780639a23be78146106f65780639a618c0f1461071657600080fd5b8063478426631161024f57806367acf4dd1161020857806379ba5097116101e257806379ba5097146106175780638a29e2de1461062c5780638da5cb5b1461064c5780638ff9d5cf1461066c57600080fd5b806367acf4dd146105a55780636dbf6cc7146105c55780637649226c146105e557600080fd5b806347842663146104ce578063481c6a75146104ee57806348663e951461050e57806350631ddc1461052e57806353a47bb71461055b5780635c975abb1461057b57600080fd5b806316ec46d1116102bc57806319aa85bc1161029657806319aa85bc1461045757806329cf53681461047757806338ea71031461048a57806344cab7ee146104ae57600080fd5b806316ec46d1146103e1578063177957a81461040157806317b219721461043757600080fd5b8063014e17b01461030f57806304de96c51461033f5780630fe621901461035f57806313af40351461037f5780631627540c146103a157806316c38b3c146103c157600080fd5b3661030a57005b600080fd5b61032261031d366004614856565b6109db565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561034b57600080fd5b50601354610322906001600160a01b031681565b34801561036b57600080fd5b50601754610322906001600160a01b031681565b34801561038b57600080fd5b5061039f61039a3660046148ee565b610a8a565b005b3480156103ad57600080fd5b5061039f6103bc3660046148ee565b610bb7565b3480156103cd57600080fd5b5061039f6103dc36600461490b565b610c0d565b3480156103ed57600080fd5b5061039f6103fc366004614928565b610c7f565b34801561040d57600080fd5b5061032261041c3660046148ee565b6008602052600090815260409020546001600160a01b031681565b34801561044357600080fd5b5061039f6104523660046148ee565b610d22565b34801561046357600080fd5b5061039f6104723660046148ee565b610ed2565b610322610485366004614984565b610fa8565b34801561049657600080fd5b506104a060105481565b604051908152602001610336565b3480156104ba57600080fd5b50601854610322906001600160a01b031681565b3480156104da57600080fd5b50600b54610322906001600160a01b031681565b3480156104fa57600080fd5b50600a54610322906001600160a01b031681565b34801561051a57600080fd5b50600f54610322906001600160a01b031681565b34801561053a57600080fd5b506104a0610549366004614a13565b60066020526000908152604090205481565b34801561056757600080fd5b50600154610322906001600160a01b031681565b34801561058757600080fd5b506003546105959060ff1681565b6040519015158152602001610336565b3480156105b157600080fd5b5061039f6105c0366004614a2c565b6110e8565b3480156105d157600080fd5b5061039f6105e0366004614b96565b611298565b3480156105f157600080fd5b50610605610600366004614bf9565b6113f3565b60405161033696959493929190614c82565b34801561062357600080fd5b5061039f611431565b34801561063857600080fd5b5061039f610647366004614cfe565b61151b565b34801561065857600080fd5b50600054610322906001600160a01b031681565b34801561067857600080fd5b50600c54610322906001600160a01b031681565b34801561069857600080fd5b506104a060025481565b6103226106b0366004614da7565b611647565b3480156106c157600080fd5b5061039f6106d0366004614e4e565b611742565b3480156106e157600080fd5b5060115461059590600160a01b900460ff1681565b34801561070257600080fd5b5061039f610711366004614e70565b611811565b34801561072257600080fd5b50601154610322906001600160a01b031681565b34801561074257600080fd5b50610605610751366004614ea9565b611879565b34801561076257600080fd5b50600754610322906001600160a01b031681565b34801561078257600080fd5b5061039f610791366004614e70565b6118b8565b3480156107a257600080fd5b50600e54610322906001600160a01b031681565b3480156107c257600080fd5b506103226107d13660046148ee565b6016602052600090815260409020546001600160a01b031681565b3480156107f857600080fd5b5061039f610807366004614f29565b61192d565b34801561081857600080fd5b5061039f6108273660046148ee565b611aca565b34801561083857600080fd5b5061039f6108473660046148ee565b611b20565b34801561085857600080fd5b5061039f610867366004614f6a565b611c22565b34801561087857600080fd5b5061039f610887366004614e70565b611c77565b34801561089857600080fd5b50601454610322906001600160a01b031681565b3480156108b857600080fd5b50600d54610322906001600160a01b031681565b3480156108d857600080fd5b506103226108e7366004614984565b611df9565b3480156108f857600080fd5b5061039f610907366004614f96565b611f13565b34801561091857600080fd5b5061039f611f33565b34801561092d57600080fd5b5061039f61093c366004614a13565b611f91565b34801561094d57600080fd5b506104a061095c3660046148ee565b60156020526000908152604090205481565b34801561097a57600080fd5b5061039f61098936600461501c565b61201a565b34801561099a57600080fd5b506109ae6109a9366004614f29565b6121aa565b6040516103369190615085565b3480156109c757600080fd5b50601254610322906001600160a01b031681565b60006001600460008282546109f091906150ae565b909155505060045460035460ff1615610a245760405162461bcd60e51b8152600401610a1b906150c1565b60405180910390fd5b610a5a610a318a8c61526b565b60408051606081018252600080825260208201819052918101919091528a8a8a8a8a8a33612255565b91506004548114610a7d5760405162461bcd60e51b8152600401610a1b906153dc565b5098975050505050505050565b6001600160a01b038116610ae05760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f742062652030000000000000006044820152606401610a1b565b600154600160a01b900460ff1615610b4c5760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b6064820152608401610a1b565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b0383166001600160a01b03199091161781556040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91610bac918490615413565b60405180910390a150565b610bbf61235c565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610bac565b610c1561235c565b60035460ff16151581151514610c7c576003805460ff191682151590811790915560ff1615610c4357426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610bac565b50565b610c8761235c565b601380546001600160a01b038681166001600160a01b031992831681179093556018805487831690841681179091556014805487841690851681179091556017805493871693909416831790935560408051948552602085019190915283019190915260608201527fdb78aa3baeb041658995e00fb52021b7914d0d10dbbfd7505199f4101953d64c9060800160405180910390a150505050565b600160046000828254610d3591906150ae565b909155505060045460035460ff1615610d605760405162461bcd60e51b8152600401610a1b906150c1565b600a546040516321875b5760e01b81526001600160a01b038085166004830152849216906321875b5790602401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce919061542d565b610dea5760405162461bcd60e51b8152600401610a1b9061544a565b600a5460405163e760c39560e01b81526001600160a01b039091169063e760c39590610e1d903390600290600401615471565b602060405180830381865afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5e919061542d565b610e9e5760405162461bcd60e51b81526020600482015260116024820152702ab739bab83837b93a32b229b2b73232b960791b6044820152606401610a1b565b610eac8360008060016123d0565b506004548114610ece5760405162461bcd60e51b8152600401610a1b906153dc565b5050565b600160046000828254610ee591906150ae565b909155505060045460035460ff1615610f105760405162461bcd60e51b8152600401610a1b906150c1565b600a546040516321875b5760e01b81526001600160a01b038085166004830152849216906321875b5790602401602060405180830381865afa158015610f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7e919061542d565b610f9a5760405162461bcd60e51b8152600401610a1b9061544a565b610eac8360008060006123d0565b6000600160046000828254610fbd91906150ae565b909155505060045460035460ff1615610fe85760405162461bcd60e51b8152600401610a1b906150c1565b846001600160a01b0381166110345760405162461bcd60e51b8152602060048201526012602482015271155b9919599a5b9959149958da5c1a595b9d60721b6044820152606401610a1b565b6018546001600160a01b031633146110815760405162461bcd60e51b815260206004820152601060248201526f27b7363ca9a3a8283937b1b2b9b9b7b960811b6044820152606401610a1b565b6110b861108e8a8c61526b565b60408051606081018252600080825260016020830152918101829052908b908b908a8a828e612255565b92505060045481146110dc5760405162461bcd60e51b8152600401610a1b906153dc565b50979650505050505050565b6001600460008282546110fb91906150ae565b909155505060045460035460ff16156111265760405162461bcd60e51b8152600401610a1b906150c1565b600a546040516321875b5760e01b81526001600160a01b038087166004830152869216906321875b5790602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611194919061542d565b6111b05760405162461bcd60e51b8152600401610a1b9061544a565b846001600160a01b031662641e8b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611211919061549e565b6001600160a01b0316336001600160a01b0316146112635760405162461bcd60e51b815260206004820152600f60248201526e27b7363caa34b1b5b2ba27bbb732b960891b6044820152606401610a1b565b61127085858560006123d0565b5060045481146112925760405162461bcd60e51b8152600401610a1b906153dc565b50505050565b600a5460405163e760c39560e01b81526001600160a01b039091169063e760c395906112cb903390600090600401615471565b602060405180830381865afa1580156112e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130c919061542d565b8061132157506000546001600160a01b031633145b61135d5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b229b2b73232b960991b6044820152606401610a1b565b805182511461139e5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c898cadccee8d609b1b6044820152606401610a1b565b60005b82518110156113ee576113e68382815181106113bf576113bf6154bb565b60200260200101518383815181106113d9576113d96154bb565b6020026020010151612ae1565b6001016113a1565b505050565b6000806000606060008061140c8b8b8b8b8b6000612b29565b809650819750829850839950849a50859b505050505050509550955095509550955095565b6001546001600160a01b031633146114a95760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610a1b565b6000546001546040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c926114ec926001600160a01b0391821692911690615413565b60405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156115605750825b90506000826001600160401b0316600114801561157c5750303b155b90508115801561158a575080155b156115a85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156115d257845460ff60401b1916600160401b1785555b6115db8d610a8a565b6115e3611f33565b6115f28c8c8c8c8c8c8c612d93565b831561163857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b600060016004600082825461165c91906150ae565b909155505060045460035460ff16156116875760405162461bcd60e51b8152600401610a1b906150c1565b60018360ff1611801561169c575060ff83168a115b6116d85760405162461bcd60e51b815260206004820152600d60248201526c5342444f75744f6652616e676560981b6044820152606401610a1b565b6117116116e58b8d61526b565b6040805160608101825260ff87168152600060208201819052918101919091528b8b8b8b8b8b33612255565b915060045481146117345760405162461bcd60e51b8152600401610a1b906153dc565b509998505050505050505050565b600a5460405163e760c39560e01b81526001600160a01b039091169063e760c39590611775903390600090600401615471565b602060405180830381865afa158015611792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b6919061542d565b806117cb57506000546001600160a01b031633145b6118075760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b229b2b73232b960991b6044820152606401610a1b565b610ece8282612ae1565b61181961235c565b604051634946980760e11b81526001600160a01b03828116600483015283169063928d300e906024015b600060405180830381600087803b15801561185d57600080fd5b505af1158015611871573d6000803e3d6000fd5b505050505050565b600080600060606000806118918c8c8c8c8c8c612b29565b809650819750829850839950849a50859b5050505050505096509650965096509650969050565b6118c061235c565b6001600160a01b038281166000908152601660205260409081902080546001600160a01b03191692841692909217909155517f816627206d3603b8e7b726c3839a96614c37bfedbdd5847eaa27c7c290e142b3906119219084908490615413565b60405180910390a15050565b61193561235c565b60005b818110156113ee576000838383818110611954576119546154bb565b905060200201602081019061196991906148ee565b90506000816001600160a01b031662641e8b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ce919061549e565b6014549091506001600160a01b038083169116148015906119fd57506017546001600160a01b03828116911614155b15611ac05760405163646d919f60e11b81523360048201526001600160a01b0383169063c8db233e90602401600060405180830381600087803b158015611a4357600080fd5b505af1158015611a57573d6000803e3d6000fd5b5050600a5460405163f033d0f960e01b81526001600160a01b03909116925063f033d0f99150611a8d9085908590600401615413565b600060405180830381600087803b158015611aa757600080fd5b505af1158015611abb573d6000803e3d6000fd5b505050505b5050600101611938565b611ad261235c565b600e80546001600160a01b0319166001600160a01b0383169081179091556040519081527fab496e3942a33c5a729be5985af46209e18077a462af550b750246460950eb7f90602001610bac565b611b2861235c565b6001600160a01b038116611b705760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610a1b565b600154600160a81b900460ff1615611bc05760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b6044820152606401610a1b565b600080546001600160a01b0383166001600160a01b031990911681179091556001805460ff60a81b1916600160a81b1790556040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91610bac918490615413565b611c2a61235c565b6001600160a01b03821660009081526015602052604090819020829055517f20cc02667abe11414c23d536b9f6358e9007b7da4d9c5f319162d4f95c05a8939061192190849084906154d1565b611c7f61235c565b6001600160a01b03808316600090815260086020526040902054168015611d145760405163095ea7b360e01b81526001600160a01b0384169063095ea7b390611ccf9084906000906004016154d1565b6020604051808303816000875af1158015611cee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d12919061542d565b505b6001600160a01b03838116600090815260086020526040902080546001600160a01b031916918416918217905515611dbb5760405163095ea7b360e01b81526001600160a01b0384169063095ea7b390611d76908590600019906004016154d1565b6020604051808303816000875af1158015611d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db9919061542d565b505b7fcc18b45b30e79ac9e3ea579f16d3467d70f3b5faed5097c791850fc52cc0e75c8284604051611dec929190615413565b60405180910390a1505050565b6000600160046000828254611e0e91906150ae565b909155505060045460035460ff1615611e395760405162461bcd60e51b8152600401610a1b906150c1565b846001600160a01b038116611e855760405162461bcd60e51b8152602060048201526012602482015271155b9919599a5b9959149958da5c1a595b9d60721b6044820152606401610a1b565b6013546001600160a01b03163314611ed35760405162461bcd60e51b815260206004820152601160248201527027b7363ca634bb32a83937b1b2b9b9b7b960791b6044820152606401610a1b565b6110b8611ee08a8c61526b565b6040518060600160405280600060ff168152602001600015158152602001600115158152508a8a60008a8a60008e612255565b611f1b61235c565b611f2a87878787878787612d93565b50505050505050565b60055460ff1615611f7c5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610a1b565b6005805460ff19166001908117909155600455565b611f9961235c565b67016345785d8a0000811115611fe55760405162461bcd60e51b81526020600482015260116024820152700a6c2ccca84def08ccacaa8dede90d2ced607b1b6044820152606401610a1b565b60108190556040518181527f5da87bc83066ddf563cfd9de25e562860f147b358751f50766847996202e5d3390602001610bac565b61202261235c565b6011546001600160a01b031680156120ac5760075460405163095ea7b360e01b81526001600160a01b039091169063095ea7b3906120679084906000906004016154d1565b6020604051808303816000875af1158015612086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120aa919061542d565b505b6011805483158015600160a01b026001600160a81b03199092166001600160a01b038716179190911790915582906120ec57506001600160a01b03831615155b1561216a5760075460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390612125908690600019906004016154d1565b6020604051808303816000875af1158015612144573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612168919061542d565b505b604080516001600160a01b038516815283151560208201527f7ed317979883517e462a7e4dbfde66a0b837cf91abff298bfa10d966a545298c9101611dec565b606081806001600160401b038111156121c5576121c5614a77565b6040519080825280602002602001820160405280156121ee578160200160208202803683370190505b50915060005b8181101561224d5760066000868684818110612212576122126154bb565b9050602002013581526020019081526020016000205483828151811061223a5761223a6154bb565b60209081029190910101526001016121f4565b505092915050565b600080871180156122665750600088115b6122a85760405162461bcd60e51b8152602060048201526013602482015272496c6c6567616c496e707574416d6f756e747360681b6044820152606401610a1b565b6122b28583612ee1565b6000806122c18a878688612f22565b604080516101208101909152828152919d509850919350915061234c908d90602081016122ee8e8e6133b1565b81526020018b8152602001876001600160a01b031681526020018e6040015115158152602001896001600160a01b03168152602001856001600160a01b031681526020018481526020018e6020015115158152508d600001516133d9565b9c9b505050505050505050505050565b6000546001600160a01b031633146123ce5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610a1b565b565b8360008261244957604051630d8acc1560e11b81526001600160a01b038681166004830152831690631b15982a906024016020604051808303816000875af1158015612420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244491906154ea565b6124ad565b816001600160a01b031663ea8a1af06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ad91906154ea565b90506000826001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612513919061549e565b90506000836001600160a01b031662641e8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612554573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612578919061549e565b6014549091506001600160a01b03808316911614806125a457506017546001600160a01b038281169116145b156126055760405163509eb5b560e11b81526001600160a01b03898116600483015282169063a13d6b6a90602401600060405180830381600087803b1580156125ec57600080fd5b505af1158015612600573d6000803e3d6000fd5b505050505b836001600160a01b0316639a82a09a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612643573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612667919061542d565b6126d9576126d7846001600160a01b031663d165dac26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d091906154ea565b82846138d2565b505b600a546040516306ef036760e01b81526001600160a01b03909116906306ef03679061270b908b908590600401615413565b600060405180830381600087803b15801561272557600080fd5b505af1158015612739573d6000803e3d6000fd5b505050507f1a208f07d825103c5b1eb3bb1109b420fd544123300beb9e220fc951cbd7dd0b8882866001600160a01b0316633356a35a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561279e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c2919061542d565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a160008311801561280557506001600160a01b03871615155b80156128235750816001600160a01b0316876001600160a01b031614155b156129f4576007546001600160a01b038381169116146128915760405162461bcd60e51b815260206004820152602360248201527f4f666672616d704f6e6c7944656661756c74436f6c6c61746572616c416c6c6f6044820152621dd95960ea1b6064820152608401610a1b565b85156129685760115460405163b45e98d960e01b8152600481018590526001600160a01b03838116926108fc9291169063b45e98d9906024016020604051808303816000875af11580156128e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290d91906154ea565b6040518115909202916000818181858888f193505050506129635760405162461bcd60e51b815260206004820152601060248201526f11551214d95b991a5b99d1985a5b195960821b6044820152606401610a1b565b6129f4565b601154604051630992646d60e31b81526129f49183916001600160a01b0390911690634c932368906129a0908c9089906004016154d1565b6020604051808303816000875af11580156129bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e391906154ea565b6001600160a01b038a169190613b93565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015612a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5f91906154ea565b90508015612ad6576001600160a01b038084166000908152600860205260409081902054905163d7efa12960e01b815291169063d7efa12990612aa8908c9085906004016154d1565b600060405180830381600087803b158015612ac257600080fd5b505af1158015611638573d6000803e3d6000fd5b505050505050505050565b60008281526006602090815260409182902083905581518481529081018390527fc6fa3d673d901ef180e5a314ff8ede38ac8ba226ce71c9d822ed8a438020a1ab9101611921565b6000808060608782816001600160a01b038a1615801590612b5857506007546001600160a01b038b8116911614155b15612ce0576001600160a01b03808b166000908152600860205260409020541680612c0b57601160009054906101000a90046001600160a01b03166001600160a01b031663cb4ba5248c8e6040518363ffffffff1660e01b8152600401612bc09291906154d1565b602060405180830381865afa158015612bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0191906154ea565b9350839150612cde565b612cdb8c826001600160a01b031663f7683bbc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7191906154ea565b6009548e6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd691906154ea565b613beb565b93505b505b60008111612d1d5760405162461bcd60e51b815260206004820152600a60248201526916995c9bd05b5bdd5b9d60b21b6044820152606401610a1b565b612d6f612d2a8d8f61526b565b6040805160e081018252848152600160208201529081018690526001600160a01b038d1660608201528b15156080820152600060a0820181905260c08201528a613c59565b809650819850829950839a50849b5050505050505096509650965096509650969050565b600780546001600160a01b0319166001600160a01b0389169081179091556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa158015612dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1091906154ea565b600955600a80546001600160a01b038881166001600160a01b03199283168117909355600b80548983169084168117909155600c80548984169085168117909155600d80548985169086168117909155601280548986169087168117909155600f805489871697168717905560408051958f1686526020860197909752958401929092526060830152608082015260a081019290925260c08201527fcb29180f408c8c442748098a6e19db3c0250e43df9c736398b76abfc104ade8f9060e00160405180910390a150505050505050565b6001600160a01b03821615610ece57600d5460405163bbddaca360e01b81526001600160a01b039091169063bbddaca3906118439085908590600401615413565b60008085856001600160a01b0381161580612f4a57506007546001600160a01b038881169116145b15612f6d57506007546001600160a01b0316612f688187308b6141dd565b613388565b841561309f57601160009054906101000a90046001600160a01b03166001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fea919061549e565b6001600160a01b0316876001600160a01b031614801561300a5750873410155b6130465760405162461bcd60e51b815260206004820152600d60248201526c125b9cdd599991551214d95b9d609a1b6044820152606401610a1b565b866001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561308157600080fd5b505af1158015613095573d6000803e3d6000fd5b50505050506130b4565b6130b46001600160a01b03881687308b6141dd565b6001600160a01b03808816600090815260086020526040902054169350831561318457836001600160a01b031663f7683bbc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613115573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313991906154ea565b925060008311612f685760405162461bcd60e51b815260206004820152601660248201527516995c9bd41c9a58d9519bdc90dbdb1b185d195c985b60521b6044820152606401610a1b565b601154600160a01b900460ff166131d45760405162461bcd60e51b8152602060048201526014602482015273135d5b1d1a4b58dbdb1b185d111a5cd8589b195960621b6044820152606401610a1b565b6011546040516332d2e94960e21b81526000916001600160a01b03169063cb4ba52490613207908b908d906004016154d1565b602060405180830381865afa158015613224573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324891906154ea565b60115460405163095ea7b360e01b81529192506001600160a01b03808b169263095ea7b39261327d9216908d906004016154d1565b6020604051808303816000875af115801561329c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c0919061542d565b506011546040516322ceb11360e21b81526001600160a01b0390911690638b3ac44c906132f3908b908d906004016154d1565b6020604051808303816000875af1158015613312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333691906154ea565b9250808310156133795760405162461bcd60e51b815260206004820152600e60248201526d125b9cdd5999949958d95a5d995960921b6044820152606401610a1b565b50506007546001600160a01b03165b6001600160a01b0380821660009081526008602052604090205416989297509095509350915050565b6000816133c684670de0b6b3a7640000615503565b6133d0919061551a565b90505b92915050565b600061340d6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60a08401516001600160a01b0316600090815260156020526040902054606082015260808401516134ba576134a7856040518060e0016040528087600001518152602001600015158152602001600081526020018760a001516001600160a01b031681526020018760800151151581526020018761010001511515815260200161349f886000015189602001516133b1565b905285613c59565b5050604084015260208301528152613541565b6134cc846000015185602001516133b1565b80825260608201516134dd91614216565b60608201516134f490670de0b6b3a76400006150ae565b6134fe919061553c565b815161351390670de0b6b3a764000090615503565b61351d919061551a565b808252845161352b916133b1565b6020820152835161353b9061422b565b60408201525b8060400151816020015161355591906150ae565b60808201528051602082015161356e918791878761424e565b600061357e868360600151614404565b600e54909150600090613599906001600160a01b031661460c565b9050806001600160a01b031663b5ac8d98604051806101600160405280858152602001896000015181526020018660400151815260200186600001518152602001306001600160a01b0316815260200189606001516001600160a01b031681526020018960a001516001600160a01b03168152602001600b60009054906101000a90046001600160a01b03166001600160a01b031663b3ee14246040518163ffffffff1660e01b8152600401602060405180830381865afa158015613662573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368691906154ea565b61369090426150ae565b81526020018960800151151581526020018860ff16815260200189610100015115158152506040518263ffffffff1660e01b81526004016136d1919061567e565b600060405180830381600087803b1580156136eb57600080fd5b505af11580156136ff573d6000803e3d6000fd5b5050600a54606089015160405163514dd41d60e11b81526001600160a01b03909216935063a29ba83a925061373a918b9186916004016158c1565b600060405180830381600087803b15801561375457600080fd5b505af1158015613768573d6000803e3d6000fd5b505050508560c001516001600160a01b03166358c09cc08288600001518660800151613794919061553c565b6040518363ffffffff1660e01b81526004016137b19291906154d1565b600060405180830381600087803b1580156137cb57600080fd5b505af11580156137df573d6000803e3d6000fd5b505050608084015160a088015161380292506001600160a01b0316908390613b93565b8551602084015160808801516040517fece8b280c05fcdb1e6f073f39266f576f9ee1f91bfe098dbb5f7b5e3dce305ba9361384093879387936158f4565b60405180910390a16060868101518751604086810151602080890151895160a0808f015186516001600160a01b038c81168252998a16958101959095528487019790975297830193909352608082015294850152911660c0830152517fddd6ef4a731d70ec093d7f6a82160e586a40dde73b44129dcb771a5b64557d8a9181900360e00190a1925050505b9392505050565b600d54604051630293b59d60e31b81526001600160a01b038481166004830152600092839283929091169063149dace890602401602060405180830381865afa158015613923573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613947919061549e565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038616906370a0823190602401602060405180830381865afa158015613991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b591906154ea565b90506001600160a01b03821615613acc57600d5460405163c7d1f5f160e01b81526001600160a01b038481166004830152600092169063c7d1f5f190602401602060405180830381865afa158015613a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3591906154ea565b90508015613aca57613a478882614216565b9350838210613aca57613a646001600160a01b0387168486613b93565b604080516001600160a01b0385811682528981166020830152818301879052606082018b90528816608082015290517f2f60e9c3fac363f0b03efb55d381f3d47475dbf1230e99201c9cdf4b9f577fc79181900360a00190a1613ac7848361553c565b91505b505b613ad58761422b565b935082841115613b89576000613aeb848661553c565b9050808210613b87576001600160a01b0380871660009081526016602052604090205416613b3b81613b2857600f546001600160a01b0316613b2a565b815b6001600160a01b0389169084613b93565b60105460408051918252602082018490526001600160a01b03891682820152517f05b8bddc7eed21b7839baa291868ed966dd7299b79495dadd406c782b9770fe79181900360600190a1505b505b5050509392505050565b6113ee83846001600160a01b031663a9059cbb8585604051602401613bb99291906154d1565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061467e565b6000613bf78585614216565b905082821015613c2757613c0b828461553c565b613c1690600a615a1a565b613c209082615503565b9050613c51565b82821115613c5157613c39838361553c565b613c4490600a615a1a565b613c4e908261551a565b90505b949350505050565b6000806000606060008088519050806001600160401b03811115613c7f57613c7f614a77565b604051908082528060200260200182016040528015613ca8578160200160208202803683370190505b5092506000600b60009054906101000a90046001600160a01b03166001600160a01b031663e88698bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d2491906154ea565b60608a01516001600160a01b0316600090815260156020526040812054919250600160ff8b161191905b84811015613f825760008d8281518110613d6a57613d6a6154bb565b602090810291909101810151600b548151600090815260069093526040928390205492516311b3db5760e11b81529193506001600160a01b031691632367b6ae91613db9918591600401615a26565b60006040518083038186803b158015613dd157600080fd5b505afa158015613de5573d6000803e3d6000fd5b5050505080610120015160ff168160e001515111613e375760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b22837b9b4ba34b7b760891b6044820152606401610a1b565b60008160e0015182610120015160ff1681518110613e5757613e576154bb565b60200260200101519050613e6b8482614216565b613e7d85670de0b6b3a76400006150ae565b613e87919061553c565b613e99670de0b6b3a764000083615503565b613ea3919061551a565b8e51909150613eb281836133b1565b613ebc919061553c565b898481518110613ece57613ece6154bb565b6020026020010181815250508415613f5657613ef2670de0b6b3a764000088615503565b8d60ff16670de0b6b3a76400008b8681518110613f1157613f116154bb565b6020026020010151613f239190615503565b613f2d9190615503565b613f37919061551a565b898481518110613f4957613f496154bb565b6020026020010181815250505b8b15613f6b57613f668c82614216565b613f6d565b805b9b50505080613f7b90615a48565b9050613d4e565b5088156141ce57811561402357600b60009054906101000a90046001600160a01b03166001600160a01b031663ff527ee38d8c8e60000151856040518563ffffffff1660e01b8152600401613fda9493929190615a61565b6040805180830381865afa158015613ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401a9190615a93565b99509750614088565b8a60a0015115614079578a60c00151985061403e818a614216565b61405082670de0b6b3a76400006150ae565b61405a919061553c565b61406c670de0b6b3a76400008b615503565b614076919061551a565b98505b8a51614085908a6133b1565b97505b828910156140a4578298506140a18b600001518a6133b1565b97505b8a516140af9061422b565b96508a60200151156141ce576060600b60009054906101000a90046001600160a01b03166001600160a01b031663c360aded8e8e604001518f608001518f6040518563ffffffff1660e01b815260040161410c9493929190615ab7565b600060405180830381865afa158015614129573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141519190810190615ae9565b909650905060005b858110156141a957818181518110614173576141736154bb565b6020026020010151156141a1576000888281518110614194576141946154bb565b6020026020010181815250505b600101614159565b5060008660028111156141be576141be614c6c565b146141cc5760009950600098505b505b50505050939792965093509350565b6040516001600160a01b0384811660248301528381166044830152606482018390526112929186918216906323b872dd90608401613bb9565b6000670de0b6b3a76400006133c68385615503565b6000670de0b6b3a7640000601054836142449190615503565b6133d3919061551a565b815160e0830151602084015181156142fc5760008560a001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c891906154ea565b90506142d8848460095484613beb565b93506142e8878460095484613beb565b96506142f8828460095484613beb565b9150505b600b5460808601516101008701516040516354c0545160e01b81526001600160a01b03909316926354c0545192614340928d9289928d9290918c9190600401615b9d565b600060405180830381600087803b15801561435a57600080fd5b505af115801561436e573d6000803e3d6000fd5b5050600b546040888101518c5191516318542d5360e31b815260048101899052602481018d9052604481018c905260648101879052608481019190915260a48101919091526001600160a01b03909116925063c2a16a98915060c40160006040518083038186803b1580156143e257600080fd5b505afa1580156143f6573d6000803e3d6000fd5b505050505050505050505050565b8151606090806001600160401b0381111561442157614421614a77565b6040519080825280602002602001820160405280156144a257816020015b60408051610140810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e08301829052610100830191909152610120820152825260001990920191018161443f5790505b50915060005b8181101561224d5760008582815181106144c4576144c46154bb565b6020026020010151905060008160e0015182610120015160ff16815181106144ee576144ee6154bb565b6020026020010151905060405180610140016040528083600001518152602001836020015161ffff168152602001836040015161ffff16815260200183606001518152602001836080015160ff1681526020018360a0015160020b81526020018360c0015162ffffff16815260200183610120015160ff1681526020016145758884614216565b61458789670de0b6b3a76400006150ae565b614591919061553c565b6145a3670de0b6b3a764000085615503565b6145ad919061551a565b815260200183610140015184610120015160ff16815181106145d1576145d16154bb565b60200260200101518152508584815181106145ee576145ee6154bb565b602002602001018190525050508061460590615a48565b90506144a8565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116614679576040516330be1a3d60e21b815260040160405180910390fd5b919050565b60006146936001600160a01b038416836146e1565b905080516000141580156146b85750808060200190518101906146b6919061542d565b155b156113ee57604051635274afe760e01b81526001600160a01b0384166004820152602401610a1b565b60606133d08383600084600080856001600160a01b031684866040516147079190615bde565b60006040518083038185875af1925050503d8060008114614744576040519150601f19603f3d011682016040523d82523d6000602084013e614749565b606091505b5091509150614759868383614763565b9695505050505050565b60608261477857614773826147bf565b6138cb565b815115801561478f57506001600160a01b0384163b155b156147b857604051639996b31560e01b81526001600160a01b0385166004820152602401610a1b565b50806138cb565b8051156147cf5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126147fa57600080fd5b5081356001600160401b0381111561481157600080fd5b6020830191508360208260051b850101111561482c57600080fd5b9250929050565b6001600160a01b0381168114610c7c57600080fd5b8015158114610c7c57600080fd5b60008060008060008060008060e0898b03121561487257600080fd5b88356001600160401b0381111561488857600080fd5b6148948b828c016147e8565b90995097505060208901359550604089013594506060890135935060808901356148bd81614833565b925060a08901356148cd81614833565b915060c08901356148dd81614848565b809150509295985092959890939650565b60006020828403121561490057600080fd5b81356138cb81614833565b60006020828403121561491d57600080fd5b81356138cb81614848565b6000806000806080858703121561493e57600080fd5b843561494981614833565b9350602085013561495981614833565b9250604085013561496981614833565b9150606085013561497981614833565b939692955090935050565b600080600080600080600060c0888a03121561499f57600080fd5b87356001600160401b038111156149b557600080fd5b6149c18a828b016147e8565b909850965050602088013594506040880135935060608801356149e381614833565b925060808801356149f381614833565b915060a0880135614a0381614833565b8091505092959891949750929550565b600060208284031215614a2557600080fd5b5035919050565b600080600060608486031215614a4157600080fd5b8335614a4c81614833565b92506020840135614a5c81614833565b91506040840135614a6c81614848565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614aaf57614aaf614a77565b60405290565b60405161016081016001600160401b0381118282101715614aaf57614aaf614a77565b604051601f8201601f191681016001600160401b0381118282101715614b0057614b00614a77565b604052919050565b60006001600160401b03821115614b2157614b21614a77565b5060051b60200190565b600082601f830112614b3c57600080fd5b81356020614b51614b4c83614b08565b614ad8565b82815260059290921b84018101918181019086841115614b7057600080fd5b8286015b84811015614b8b5780358352918301918301614b74565b509695505050505050565b60008060408385031215614ba957600080fd5b82356001600160401b0380821115614bc057600080fd5b614bcc86838701614b2b565b93506020850135915080821115614be257600080fd5b50614bef85828601614b2b565b9150509250929050565b600080600080600060808688031215614c1157600080fd5b85356001600160401b03811115614c2757600080fd5b614c33888289016147e8565b909650945050602086013592506040860135614c4e81614833565b91506060860135614c5e81614848565b809150509295509295909350565b634e487b7160e01b600052602160045260246000fd5b600060c082018883526020888185015287604085015260c0606085015281875180845260e086019150828901935060005b81811015614ccf57845183529383019391830191600101614cb3565b505080935050505083608083015260038310614ced57614ced614c6c565b8260a0830152979650505050505050565b600080600080600080600080610100898b031215614d1b57600080fd5b8835614d2681614833565b97506020890135614d3681614833565b96506040890135614d4681614833565b95506060890135614d5681614833565b94506080890135614d6681614833565b935060a0890135614d7681614833565b925060c0890135614d8681614833565b915060e08901356148dd81614833565b803560ff8116811461467957600080fd5b60008060008060008060008060006101008a8c031215614dc657600080fd5b89356001600160401b03811115614ddc57600080fd5b614de88c828d016147e8565b909a5098505060208a0135965060408a0135955060608a0135945060808a0135614e1181614833565b935060a08a0135614e2181614833565b925060c08a0135614e3181614848565b9150614e3f60e08b01614d96565b90509295985092959850929598565b60008060408385031215614e6157600080fd5b50508035926020909101359150565b60008060408385031215614e8357600080fd5b8235614e8e81614833565b91506020830135614e9e81614833565b809150509250929050565b60008060008060008060a08789031215614ec257600080fd5b86356001600160401b03811115614ed857600080fd5b614ee489828a016147e8565b909750955050602087013593506040870135614eff81614833565b92506060870135614f0f81614848565b9150614f1d60808801614d96565b90509295509295509295565b60008060208385031215614f3c57600080fd5b82356001600160401b03811115614f5257600080fd5b614f5e858286016147e8565b90969095509350505050565b60008060408385031215614f7d57600080fd5b8235614f8881614833565b946020939093013593505050565b600080600080600080600060e0888a031215614fb157600080fd5b8735614fbc81614833565b96506020880135614fcc81614833565b95506040880135614fdc81614833565b94506060880135614fec81614833565b93506080880135614ffc81614833565b925060a088013561500c81614833565b915060c0880135614a0381614833565b6000806040838503121561502f57600080fd5b823561503a81614833565b91506020830135614e9e81614848565b600081518084526020808501945080840160005b8381101561507a5781518752958201959082019060010161505e565b509495945050505050565b6020815260006133d0602083018461504a565b634e487b7160e01b600052601160045260246000fd5b808201808211156133d3576133d3615098565b6020808252603c908201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060408201527f7768696c652074686520636f6e74726163742069732070617573656400000000606082015260800190565b803561ffff8116811461467957600080fd5b8035600281900b811461467957600080fd5b803562ffffff8116811461467957600080fd5b600082601f83011261516657600080fd5b81356020615176614b4c83614b08565b82815260059290921b8401810191818101908684111561519557600080fd5b8286015b84811015614b8b5780356001600160401b038111156151b85760008081fd5b8701603f810189136151ca5760008081fd5b8481013560406151dc614b4c83614b08565b8281526060928302840182019288820191908d8511156151fc5760008081fd5b948301945b848610156152595780868f0312156152195760008081fd5b615221614a8d565b61522a8761511e565b81526152378b8801614d96565b8b820152615246858801615130565b8186015283529485019491890191615201565b50875250505092840192508301615199565b6000615279614b4c84614b08565b80848252602080830192508560051b85013681111561529757600080fd5b855b818110156153d05780356001600160401b03808211156152b95760008081fd5b818901915061016082360312156152d05760008081fd5b6152d8614ab5565b823581526152e786840161511e565b8682015260406152f881850161511e565b90820152606083810135908201526080615313818501614d96565b9082015260a0615324848201615130565b9082015260c0615335848201615142565b9082015260e0838101358381111561534d5760008081fd5b61535936828701614b2b565b82840152505061010080840135838111156153745760008081fd5b61538036828701614b2b565b828401525050610120615394818501614d96565b9082015261014083810135838111156153ad5760008081fd5b6153b936828701615155565b918301919091525087525050938201938201615299565b50919695505050505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b0392831681529116602082015260400190565b60006020828403121561543f57600080fd5b81516138cb81614848565b6020808252600d908201526c155b9adb9bdddb951a58dad95d609a1b604082015260600190565b6001600160a01b0383168152604081016004831061549157615491614c6c565b8260208301529392505050565b6000602082840312156154b057600080fd5b81516138cb81614833565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03929092168252602082015260400190565b6000602082840312156154fc57600080fd5b5051919050565b80820281158282048414176133d3576133d3615098565b60008261553757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156133d3576133d3615098565b600081518084526020808501945080840160005b8381101561507a578151805161ffff1688528381015160ff168489015260409081015160020b9088015260609096019590820190600101615563565b600081518084526020808501808196508360051b8101915082860160005b85811015615671578284038952815161014081518652868201516155e68888018261ffff169052565b5060408281015161ffff16908701526060808301519087015260808083015160ff169087015260a080830151600281900b82890152505060c08281015162ffffff169087015260e08083015160ff169087015261010080830151908701526101209182015191860181905261565d8187018361554f565b9a87019a95505050908401906001016155bd565b5091979650505050505050565b602081526000825161016080602085015261569d61018085018361559f565b915060208501516040850152604085015160608501526060850151608085015260808501516156d760a08601826001600160a01b03169052565b5060a08501516001600160a01b03811660c08601525060c08501516001600160a01b03811660e08601525060e0850151610100858101919091528501516101206157248187018315159052565b860151905061014061573a8682018360ff169052565b90950151151593019290925250919050565b600081518084526020808501808196508360051b8101915082860160005b8581101561567157828403895261578284835161554f565b9885019893509084019060010161576a565b60006101608251845260208301516157b2602086018261ffff169052565b5060408301516157c8604086018261ffff169052565b506060830151606085015260808301516157e7608086018260ff169052565b5060a08301516157fc60a086018260020b9052565b5060c083015161581360c086018262ffffff169052565b5060e08301518160e086015261582b8286018261504a565b9150506101008084015185830382870152615846838261504a565b925050506101208084015161585f8287018260ff169052565b50506101408084015185830382870152614759838261574c565b600081518084526020808501808196508360051b8101915082860160005b858110156156715782840389526158af848351615794565b98850198935090840190600101615897565b6060815260006158d46060830186615879565b6001600160a01b0394851660208401529290931660409091015292915050565b60a08152600061590760a083018861559f565b6001600160a01b0396909616602083015250604081019390935260608301919091521515608090910152919050565b600181815b8085111561597157816000190482111561595757615957615098565b8085161561596457918102915b93841c939080029061593b565b509250929050565b600082615988575060016133d3565b81615995575060006133d3565b81600181146159ab57600281146159b5576159d1565b60019150506133d3565b60ff8411156159c6576159c6615098565b50506001821b6133d3565b5060208310610133831016604e8410600b84101617156159f4575081810a6133d3565b6159fe8383615936565b8060001904821115615a1257615a12615098565b029392505050565b60006133d08383615979565b604081526000615a396040830185615794565b90508260208301529392505050565b600060018201615a5a57615a5a615098565b5060010190565b608081526000615a746080830187615879565b60ff959095166020830152506040810192909252606090910152919050565b60008060408385031215615aa657600080fd5b505080516020909101519092909150565b608081526000615aca6080830187615879565b602083019590955250911515604083015260ff16606090910152919050565b60008060408385031215615afc57600080fd5b825160038110615b0b57600080fd5b809250506020808401516001600160401b03811115615b2957600080fd5b8401601f81018613615b3a57600080fd5b8051615b48614b4c82614b08565b81815260059190911b82018301908381019088831115615b6757600080fd5b928401925b82841015615b8e578351615b7f81614848565b82529284019290840190615b6c565b80955050505050509250929050565b60c081526000615bb060c0830189615879565b6020830197909752506040810194909452911515606084015260ff166080830152151560a090910152919050565b6000825160005b81811015615bff5760208186018101518583015201615be5565b50600092019182525091905056fea26469706673582212208974ecfdc0c766e252ac4f46f7a4baa5268573ea3a04e14cb45c25005b24646a64736f6c63430008140033