0 txs
167.1k calls
constructor
No constructor.
functions
customCooldownWhitelist
viewfunction customCooldownWhitelist(address) view returns (bool)
daoAddress
viewfunction daoAddress() view returns (address)
deployedFunds
viewfunction deployedFunds(uint256) view returns (address)
feeDenominator
viewfunction feeDenominator() view returns (uint256)
getAssetGuard
viewfunction getAssetGuard(address _extAsset) view returns (address guard)
getAssetHandler
viewfunction getAssetHandler() view returns (address)
getAssetPrice
viewfunction getAssetPrice(address _asset) view returns (uint256 price)
getAssetType
viewfunction getAssetType(address _asset) view returns (uint16 assetType)
getContractGuard
viewfunction getContractGuard(address _extContract) view returns (address guard)
getDaoFee
viewfunction getDaoFee() view returns (uint256, uint256)
getDeployedFunds
viewfunction getDeployedFunds() view returns (address[])
getExitCooldown
viewfunction getExitCooldown() view returns (uint256)
getInvestedPools
viewfunction getInvestedPools(address _user) view returns (address[] investedPools)
getLogic
viewfunction getLogic(uint8 _proxyType) view returns (address)
getManagedPools
viewfunction getManagedPools(address _manager) view returns (address[] managedPools)
getMaximumFee
viewfunction getMaximumFee() view returns (uint256, uint256, uint256, uint256, uint256)
getMaximumSupportedAssetCount
viewfunction getMaximumSupportedAssetCount() view returns (uint256)
governanceAddress
viewfunction governanceAddress() view returns (address)
isPaused
viewfunction isPaused() view returns (bool)
isPool
viewfunction isPool(address) view returns (bool)
isValidAsset
viewfunction isValidAsset(address _asset) view returns (bool)
maximumPerformanceFeeNumeratorChange
viewfunction maximumPerformanceFeeNumeratorChange() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pausedPools
viewfunction pausedPools(address) view returns (bool)
performanceFeeNumeratorChangeDelay
viewfunction performanceFeeNumeratorChangeDelay() view returns (uint256)
poolPerformanceAddress
viewfunction poolPerformanceAddress() view returns (address)
poolStorageVersion
viewfunction poolStorageVersion() view returns (uint256)
poolVersion
viewfunction poolVersion(address) view returns (uint256)
receiverWhitelist
viewfunction receiverWhitelist(address) view returns (bool)
tradingPausedPools
viewfunction tradingPausedPools(address) view returns (bool)
addCustomCooldownWhitelist
nonpayablefunction addCustomCooldownWhitelist(address _extAddress)
addReceiverWhitelist
nonpayablefunction addReceiverWhitelist(address _extAddress)
createFund
nonpayablefunction createFund(bool _privatePool, address _manager, string _managerName, string _fundName, string _fundSymbol, uint256 _performanceFeeNumerator, uint256 _managerFeeNumerator, uint256 _entryFeeNumerator, uint256 _exitFeeNum, tuple[] _supportedAssets) returns (address poolLogic)
deploy
nonpayablefunction deploy(bytes _data, uint8 _proxyType) returns (address)
emitPoolEvent
nonpayablefunction emitPoolEvent()
emitPoolManagerEvent
nonpayablefunction emitPoolManagerEvent()
initialize
nonpayablefunction initialize(address _poolLogic, address _managerLogic, address _assetHandlerAddress, address _daoAddress, address _governanceAddress)
pause
nonpayablefunction pause()
removeCustomCooldownWhitelist
nonpayablefunction removeCustomCooldownWhitelist(address _extAddress)
removeReceiverWhitelist
nonpayablefunction removeReceiverWhitelist(address _extAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
setAssetHandler
nonpayablefunction setAssetHandler(address _handler)
setDAOAddress
nonpayablefunction setDAOAddress(address _daoAddress)
setDaoFee
nonpayablefunction setDaoFee(uint256 _numerator, uint256 _denominator)
setExitCooldown
nonpayablefunction setExitCooldown(uint256 _cooldown)
setGovernanceAddress
nonpayablefunction setGovernanceAddress(address _governanceAddress)
setLogic
nonpayablefunction setLogic(address _poolLogic, address _poolManagerLogic)
setMaximumFee
nonpayablefunction setMaximumFee(uint256 _maxPerformanceFeeNumerator, uint256 _maxManagerFeeNumerator, uint256 _maxEntryFeeNumerator, uint256 _maxExitFeeNumerator)
setMaximumPerformanceFeeNumeratorChange
nonpayablefunction setMaximumPerformanceFeeNumeratorChange(uint256 _amount)
setMaximumSupportedAssetCount
nonpayablefunction setMaximumSupportedAssetCount(uint256 _count)
setPerformanceFeeNumeratorChangeDelay
nonpayablefunction setPerformanceFeeNumeratorChangeDelay(uint256 _delay)
setPoolsPaused
nonpayablefunction setPoolsPaused(tuple[] _pools)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
DAOAddressSet
event DAOAddressSet(address daoAddress)
DaoFeeSet
event DaoFeeSet(uint256 numerator, uint256 denominator)
ExitCooldownSet
event ExitCooldownSet(uint256 cooldown)
FundCreated
event FundCreated(address fundAddress, bool isPoolPrivate, string fundName, string managerName, address manager, uint256 time, uint256 performanceFeeNumerator, uint256 managerFeeNumerator, uint256 managerFeeDenominator)
GovernanceAddressSet
event GovernanceAddressSet(address governanceAddress)
MaximumSupportedAssetCountSet
event MaximumSupportedAssetCountSet(uint256 count)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PoolEvent
event PoolEvent(address poolAddress)
PoolManagerEvent
event PoolManagerEvent(address poolManagerAddress)
PoolPauseStatusChanged
event PoolPauseStatusChanged(address pool, bool pausedShares, bool pausedTrading)
ProxyCreated
event ProxyCreated(address proxy)
SetAssetHandler
event SetAssetHandler(address assetHandler)
SetMaximumFee
event SetMaximumFee(uint256 performanceFeeNumerator, uint256 managerFeeNumerator, uint256 entryFeeNumerator, uint256 exitFeeNumerator, uint256 denominator)
SetMaximumPerformanceFeeNumeratorChange
event SetMaximumPerformanceFeeNumeratorChange(uint256 amount)
SetPerformanceFeeNumeratorChangeDelay
event SetPerformanceFeeNumeratorChangeDelay(uint256 delay)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506135da806100206000396000f3fe608060405234801561001057600080fd5b506004361061028d5760003560e01c80637b7d612b116101635780637b7d612b14610461578063808ae5fb146104745780638456cb591461048757806389da8ad71461048f5780638da5cb5b146104a2578063965afa89146104aa5780639a068bd6146104bd5780639cada6e4146104d0578063aa12ae4d146104e6578063aa7d664e146104ee578063af89021514610501578063b187bd2614610509578063b3596f0714610511578063b7274c1914610524578063bdcede0c14610537578063c5310d991461054a578063cb6f3bbc1461055d578063cc435bf314610565578063cdf04c0714610578578063cfc162541461058b578063d77268e61461059e578063e0cb5996146105a6578063e5ac13a9146105b9578063eb849a04146105cc578063ecef89d5146105df578063eec16c44146105f2578063f2fde38b14610605578063fcc08cbc146106185761028d565b8063032c49ed1461029257806308d7ce02146102bb57806309ed4893146102d45780630ddefe14146102e95780630f6559c4146102fe5780631459457a14610313578063180b0d7e146103265780632131c68c1461032e57806325c4121b146103365780632927233b1461033e5780632ea970e11461035e5780633f4ba83a146103715780633f7f5c72146103795780634501b0881461038157806345812ca5146103895780634da0be1d1461039c5780634f8419b9146103bc57806354d8a5bd146103cf5780635556ee55146103d757806359895719146103ea5780635a97284b146103fd5780635b16ebb7146104105780635c975abb146104235780635fbf37a31461042b578063715018a61461043e578063771d1baf14610446578063795053d314610459575b600080fd5b6102a56102a03660046129ae565b61062b565b6040516102b291906130f2565b60405180910390f35b6102c36106b2565b6040516102b2959493929190613118565b6102dc6106c8565b6040516102b29190612dbb565b6102fc6102f73660046129ae565b6106d7565b005b61030661075d565b6040516102b29190613101565b6102fc610321366004612a1e565b610763565b610306610884565b6102dc61088a565b6102fc610899565b61035161034c3660046129ae565b61090f565b6040516102b29190612fa2565b6102fc61036c366004612a8e565b610924565b6102fc610a94565b6102fc610b00565b610306610c7a565b6102dc610397366004612bee565b610c80565b6103af6103aa3660046129ae565b610c93565b6040516102b29190612f55565b6102dc6103ca3660046129ae565b610dff565b6103af610e80565b6103066103e53660046129ae565b610ee2565b6103516103f83660046129ae565b610ef4565b6102fc61040b3660046129ae565b610f09565b61035161041e3660046129ae565b610f8c565b610351610fa1565b6102fc610439366004612cd4565b610faa565b6102fc611041565b6102fc610454366004612d04565b6110db565b6102dc61114b565b6102fc61046f366004612cd4565b61115a565b6102fc6104823660046129e6565b6111f1565b6102fc611326565b6102fc61049d3660046129ae565b611390565b6102dc611413565b6102fc6104b83660046129ae565b611422565b6102dc6104cb366004612cd4565b611490565b6104d86114ba565b6040516102b292919061310a565b6103066114c4565b6102fc6104fc366004612cd4565b6114ca565b6102dc611535565b610351611544565b61030661051f3660046129ae565b611553565b6102dc610532366004612afd565b6115d4565b6102fc6105453660046129ae565b6117df565b6102fc610558366004612d25565b611865565b6103066118d6565b6103516105733660046129ae565b6118dc565b6103516105863660046129ae565b611974565b6102fc6105993660046129ae565b611989565b6103066119f4565b6103516105b43660046129ae565b6119fa565b6102fc6105c73660046129ae565b611a0f565b6103af6105da3660046129ae565b611a7a565b6102dc6105ed366004612d56565b611c4a565b6102fc610600366004612cd4565b611c7c565b6102fc6106133660046129ae565b611ce7565b6102dc6106263660046129ae565b611dd8565b60ce5460405163b02e786f60e01b81526000916001600160a01b03169063b02e786f9061065c908590600401612dbb565b60206040518083038186803b15801561067457600080fd5b505afa158015610688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac9190612cb2565b92915050565b60d25460de5460e05460e25460d3549091929394565b60ce546001600160a01b031690565b6106df611ee9565b6001600160a01b03166106f0611413565b6001600160a01b031614610739576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b6001600160a01b0316600090815260df60205260409020805460ff19166001179055565b60d75481565b600054610100900460ff168061077c575061077c611eed565b8061078a575060005460ff16155b6107c55760405162461bcd60e51b815260040180806020018281038252602e815260200180613537602e913960400191505060405180910390fd5b600054610100900460ff161580156107f0576000805460ff1961ff0019909116610100171660011790555b6107fa8686611efe565b610802611f06565b61080b84611fb7565b61081483612028565b61081d82612099565b61083161138861012c60648061271061210a565b61083d600a60646121ae565b61084962015180612216565b6108556212750061115a565b6108606103e8610faa565b61086a600c61224b565b801561087c576000805461ff00191690555b505050505050565b60d35481565b60cc546001600160a01b031681565b33600090815260d1602052604090205460ff1615156001146108d65760405162461bcd60e51b81526004016108cd9061301b565b60405180910390fd5b7fdbd4d7b818d776167ae42054b0831aa269b1eb3ea73bd2e7ef6091f2879b1837336040516109059190612dbb565b60405180910390a1565b60dd6020526000908152604090205460ff1681565b61092c611ee9565b6001600160a01b031661093d611413565b6001600160a01b031614610986576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b8060005b81811015610a8e5760008484838181106109a057fe5b9050606002018036038101906109b69190612c4c565b80516001600160a01b0316600090815260d1602052604090205490915060ff166109f25760405162461bcd60e51b81526004016108cd906130cc565b6020808201805183516001600160a01b03908116600090815260e185526040808220805494151560ff1995861617905580870180518851909416835260e3909652908190208054921515929093169190911790915583519151925190517f9796c51c7ad45bce77a8cbf05030d06182bfa90c08762d773376942b293c400893610a7d93929091612e7a565b60405180910390a15060010161098a565b50505050565b610a9c611ee9565b6001600160a01b0316610aad611413565b6001600160a01b031614610af6576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b610afe612280565b565b6000336001600160a01b03166339b81fd96040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3b57600080fd5b505afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7391906129ca565b6001600160a01b038116600090815260d1602052604090205490915060ff1615156001148015610c245750336001600160a01b0316816001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b158015610be157600080fd5b505afa158015610bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1991906129ca565b6001600160a01b0316145b610c405760405162461bcd60e51b81526004016108cd90612fad565b7f686c28f13f997a49532b3373c8e5b4a6e22e6b06b66d06487a8241a599717f4933604051610c6f9190612dbb565b60405180910390a150565b60d45490565b6000610c8c8383612320565b9392505050565b60cb54606090806001600160401b0381118015610caf57600080fd5b50604051908082528060200260200182016040528015610cd9578160200160208202803683370190505b5091506000805b82811015610de457600060cb8281548110610cf757fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610d30908990600401612dbb565b60206040518083038186803b158015610d4857600080fd5b505afa158015610d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d809190612cec565b1115610ddc5760cb8181548110610d9357fe5b9060005260206000200160009054906101000a90046001600160a01b0316848381518110610dbd57fe5b6001600160a01b03909216602092830291909101909101526001909101905b600101610ce0565b506000610df1838361244e565b845103845250919392505050565b60cd5460405163174dbff160e21b81526000916001600160a01b031690635d36ffc490610e30908590600401612dbb565b60206040518083038186803b158015610e4857600080fd5b505afa158015610e5c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac91906129ca565b606060cb805480602002602001604051908101604052809291908181526020018280548015610ed857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610eba575b5050505050905090565b60d66020526000908152604090205481565b60e36020526000908152604090205460ff1681565b610f11611ee9565b6001600160a01b0316610f22611413565b6001600160a01b031614610f6b576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b6001600160a01b0316600090815260dd60205260409020805460ff19169055565b60d16020526000908152604090205460ff1681565b60335460ff1690565b610fb2611ee9565b6001600160a01b0316610fc3611413565b6001600160a01b03161461100c576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b60d88190556040517fbe762d516a09c899b785daf0c0f9bea93fd44a062d9ecc24c2ddba4c6f8b47ed90610c6f908390613101565b611049611ee9565b6001600160a01b031661105a611413565b6001600160a01b0316146110a3576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b031690600080516020613585833981519152908390a3606580546001600160a01b0319169055565b6110e3611ee9565b6001600160a01b03166110f4611413565b6001600160a01b03161461113d576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b61114782826121ae565b5050565b60cd546001600160a01b031681565b611162611ee9565b6001600160a01b0316611173611413565b6001600160a01b0316146111bc576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b60d98190556040517f5c7a1f308b9ecdacddd5f035f458158e6a2581b1921b2ca7de3732bd1dd6e59090610c6f908390613101565b6111f9611ee9565b6001600160a01b031661120a611413565b6001600160a01b031614611253576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b6001600160a01b0382166112a2576040805162461bcd60e51b8152602060048201526011602482015270496e76616c696420706f6f6c4c6f67696360781b604482015290519081900360640190fd5b6001600160a01b0381166112f8576040805162461bcd60e51b8152602060048201526018602482015277496e76616c696420706f6f6c4d616e616765724c6f67696360401b604482015290519081900360640190fd5b609780546001600160a01b039384166001600160a01b03199182161790915560988054929093169116179055565b61132e611ee9565b6001600160a01b031661133f611413565b6001600160a01b031614611388576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b610afe6124ab565b611398611ee9565b6001600160a01b03166113a9611413565b6001600160a01b0316146113f2576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b6001600160a01b0316600090815260df60205260409020805460ff19169055565b6065546001600160a01b031690565b61142a611ee9565b6001600160a01b031661143b611413565b6001600160a01b031614611484576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b61148d81612028565b50565b60cb81815481106114a057600080fd5b6000918252602090912001546001600160a01b0316905081565b60cf5460d0549091565b60d55490565b6114d2611ee9565b6001600160a01b03166114e3611413565b6001600160a01b03161461152c576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b61148d81612216565b60da546001600160a01b031681565b600061154e610fa1565b905090565b60ce54604051638b2f0f4f60e01b81526000916001600160a01b031690638b2f0f4f90611584908590600401612dbb565b60206040518083038186803b15801561159c57600080fd5b505afa1580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac9190612cec565b60006115de610fa1565b156115fb5760405162461bcd60e51b81526004016108cd90612ffe565b611646308c8a8a6040516024016116159493929190612e9d565b60408051601f198184030181529190526020810180516001600160e01b0316635426f81d60e01b1790526002610c80565b9050600061169f308c8c858b8b8b8b8b60405160240161166e99989796959493929190612dcf565b60408051601f198184030181529190526020810180516001600160e01b0316636aca78fd60e11b1790526001610c80565b604051633a81136f60e11b81529091506001600160a01b0383169063750226de906116ce908490600401612dbb565b600060405180830381600087803b1580156116e857600080fd5b505af11580156116fc573d6000803e3d6000fd5b5050505060cb829080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160d16000846001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7568e63260f13515e4b3208667c411fbf4c7dce047496ca5f9a56f1c92440d93828d8b8d8f428d8d60d3546040516117c899989796959493929190612ee6565b60405180910390a1509a9950505050505050505050565b6117e7611ee9565b6001600160a01b03166117f8611413565b6001600160a01b031614611841576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b6001600160a01b0316600090815260dd60205260409020805460ff19166001179055565b61186d611ee9565b6001600160a01b031661187e611413565b6001600160a01b0316146118c7576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b610a8e8484848460d35461210a565b60d95481565b60ce5460405163b4fb127960e01b815260009182916001600160a01b039091169063b4fb127990611911908690600401612dbb565b60206040518083038186803b15801561192957600080fd5b505afa15801561193d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196191906129ca565b6001600160a01b0316141590505b919050565b60e16020526000908152604090205460ff1681565b611991611ee9565b6001600160a01b03166119a2611413565b6001600160a01b0316146119eb576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b61148d81612099565b60d85481565b60df6020526000908152604090205460ff1681565b611a17611ee9565b6001600160a01b0316611a28611413565b6001600160a01b031614611a71576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b61148d81611fb7565b60cb54606090806001600160401b0381118015611a9657600080fd5b50604051908082528060200260200182016040528015611ac0578160200160208202803683370190505b5091506000805b82811015610de457600060cb8281548110611ade57fe5b6000918252602091829020015460408051630f28525360e11b815290516001600160a01b0390921692631e50a4a692600480840193829003018186803b158015611b2757600080fd5b505afa158015611b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5f91906129ca565b9050856001600160a01b0316816001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba457600080fd5b505afa158015611bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdc91906129ca565b6001600160a01b03161415611c415760cb8281548110611bf857fe5b9060005260206000200160009054906101000a90046001600160a01b0316858481518110611c2257fe5b6001600160a01b03909216602092830291909101909101526001909201915b50600101611ac7565b60008160ff1660011415611c6a57506098546001600160a01b031661196f565b506097546001600160a01b031661196f565b611c84611ee9565b6001600160a01b0316611c95611413565b6001600160a01b031614611cde576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b61148d8161224b565b611cef611ee9565b6001600160a01b0316611d00611413565b6001600160a01b031614611d49576040805162461bcd60e51b81526020600482018190526024820152600080516020613565833981519152604482015290519081900360640190fd5b6001600160a01b038116611d8e5760405162461bcd60e51b81526004018080602001828103825260268152602001806135116026913960400191505060405180910390fd5b6065546040516001600160a01b0380841692169060008051602061358583398151915290600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611de3826118dc565b1561196f5760ce5460405163b02e786f60e01b81526000916001600160a01b03169063b02e786f90611e19908690600401612dbb565b60206040518083038186803b158015611e3157600080fd5b505afa158015611e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e699190612cb2565b60cd5460405162a950c360e81b81529192506001600160a01b03169063a950c30090611e999084906004016130f2565b60206040518083038186803b158015611eb157600080fd5b505afa158015611ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c91906129ca565b3390565b6000611ef83061252e565b15905090565b611253612534565b600054610100900460ff1680611f1f5750611f1f611eed565b80611f2d575060005460ff16155b611f685760405162461bcd60e51b815260040180806020018281038252602e815260200180613537602e913960400191505060405180910390fd5b600054610100900460ff16158015611f93576000805460ff1961ff0019909116610100171660011790555b611f9b6125d1565b611fa3612671565b801561148d576000805461ff001916905550565b6001600160a01b038116611fdd5760405162461bcd60e51b81526004016108cd9061303f565b60ce80546001600160a01b0319166001600160a01b0383161790556040517faca6dca39d79ebceec9b32e3a681f32c1368a5b373cc24d96a02a896a1457ed890610c6f908390612dbb565b6001600160a01b03811661204e5760405162461bcd60e51b81526004016108cd906130a0565b60cc80546001600160a01b0319166001600160a01b0383161790556040517f7138c17e9cd38b1f65ba47723efdaec045a981aa53992018fd215e5c09a22fc490610c6f908390612dbb565b6001600160a01b0381166120bf5760405162461bcd60e51b81526004016108cd9061306d565b60cd80546001600160a01b0319166001600160a01b0383161790556040517fbdb80a7ad60bd8133ed6b01049f9065c4cad1fa0a8e074da74b480f2aa83c93690610c6f908390612dbb565b80851115801561211a5750808411155b80156121265750808311155b80156121325750808211155b61214e5760405162461bcd60e51b81526004016108cd90612fd4565b60d285905560de84905560e083905560e282905560d38190556040517fa6589946250f159a6bccfdf2e354d22a949e4180d87bfaccec1611ad00a8b6869061219f9087908790879087908790613118565b60405180910390a15050505050565b808211156121ce5760405162461bcd60e51b81526004016108cd90612fd4565b60cf82905560d08190556040517fb10da2958bf5ec1bff3164ff753a09e0460ed44d3abf73e79b817b500ed0f2f19061220a908490849061310a565b60405180910390a15050565b60d48190556040517f20d916c976f3971e8200089411b0b712ef4612d98380b8ad2e3d8a8a376d85c790610c6f908390613101565b60d58190556040517f0cd8fcb5e08d7632af461f0ad793e5c63dc0d7595c301f5880650175e37a874890610c6f908390613101565b612288610fa1565b6122d0576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612303611ee9565b604080516001600160a01b039092168252519081900360200190a1565b60008061232b61271c565b604080516001600160a01b038316815290519192507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349919081900360200190a1806001600160a01b031663e74a474a3086866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001806020018360ff168152602001828103825284818151815260200191508051906020019080838360005b838110156123e05781810151838201526020016123c8565b50505050905090810190601f16801561240d5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561242e57600080fd5b505af1158015612442573d6000803e3d6000fd5b50929695505050505050565b6000828211156124a5576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6124b3610fa1565b156124f8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612303611ee9565b3b151590565b600054610100900460ff168061254d575061254d611eed565b8061255b575060005460ff16155b6125965760405162461bcd60e51b815260040180806020018281038252602e815260200180613537602e913960400191505060405180910390fd5b600054610100900460ff161580156125c1576000805460ff1961ff0019909116610100171660011790555b6125c96125d1565b611fa3612763565b600054610100900460ff16806125ea57506125ea611eed565b806125f8575060005460ff16155b6126335760405162461bcd60e51b815260040180806020018281038252602e815260200180613537602e913960400191505060405180910390fd5b600054610100900460ff16158015611fa3576000805460ff1961ff001990911661010017166001179055801561148d576000805461ff001916905550565b600054610100900460ff168061268a575061268a611eed565b80612698575060005460ff16155b6126d35760405162461bcd60e51b815260040180806020018281038252602e815260200180613537602e913960400191505060405180910390fd5b600054610100900460ff161580156126fe576000805460ff1961ff0019909116610100171660011790555b6033805460ff19169055801561148d576000805461ff001916905550565b6000806000604051806020016127319061284a565b6020820181038252601f19601f8201166040525090508051602082016000f09150813b61275d57600080fd5b50905090565b600054610100900460ff168061277c575061277c611eed565b8061278a575060005460ff16155b6127c55760405162461bcd60e51b815260040180806020018281038252602e815260200180613537602e913960400191505060405180910390fd5b600054610100900460ff161580156127f0576000805460ff1961ff0019909116610100171660011790555b60006127fa611ee9565b606580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020613585833981519152908290a350801561148d576000805461ff001916905550565b61039d8061317483390190565b60006001600160401b0383111561286a57fe5b61287d601f8401601f191660200161313b565b905082815283838301111561289157600080fd5b828260208301376000602084830101529392505050565b803561196f8161315e565b600082601f8301126128c3578081fd5b813560206001600160401b03808311156128d957fe5b6128e6828385020161313b565b838152828101908684016040808702890186018a1015612904578788fd5b875b8781101561295f5781838c03121561291c578889fd5b8151828101818110888211171561292f57fe5b8352833561293c8161315e565b815261294984890161296e565b8189015285529386019391810191600101612906565b50919998505050505050505050565b8035801515811461196f57600080fd5b600082601f83011261298e578081fd5b610c8c83833560208501612857565b803560ff8116811461196f57600080fd5b6000602082840312156129bf578081fd5b8135610c8c8161315e565b6000602082840312156129db578081fd5b8151610c8c8161315e565b600080604083850312156129f8578081fd5b8235612a038161315e565b91506020830135612a138161315e565b809150509250929050565b600080600080600060a08688031215612a35578081fd5b8535612a408161315e565b94506020860135612a508161315e565b93506040860135612a608161315e565b92506060860135612a708161315e565b91506080860135612a808161315e565b809150509295509295909350565b60008060208385031215612aa0578182fd5b82356001600160401b0380821115612ab6578384fd5b818501915085601f830112612ac9578384fd5b813581811115612ad7578485fd5b866020606083028501011115612aeb578485fd5b60209290920196919550909350505050565b6000806000806000806000806000806101408b8d031215612b1c578485fd5b612b258b61296e565b9950612b3360208c016128a8565b985060408b01356001600160401b0380821115612b4e578687fd5b612b5a8e838f0161297e565b995060608d0135915080821115612b6f578687fd5b612b7b8e838f0161297e565b985060808d0135915080821115612b90578687fd5b612b9c8e838f0161297e565b975060a08d0135965060c08d0135955060e08d013594506101008d013593506101208d0135915080821115612bcf578283fd5b50612bdc8d828e016128b3565b9150509295989b9194979a5092959850565b60008060408385031215612c00578182fd5b82356001600160401b03811115612c15578283fd5b8301601f81018513612c25578283fd5b612c3485823560208401612857565b925050612c436020840161299d565b90509250929050565b600060608284031215612c5d578081fd5b604051606081018181106001600160401b0382111715612c7957fe5b6040528235612c878161315e565b8152612c956020840161296e565b6020820152612ca66040840161296e565b60408201529392505050565b600060208284031215612cc3578081fd5b815161ffff81168114610c8c578182fd5b600060208284031215612ce5578081fd5b5035919050565b600060208284031215612cfd578081fd5b5051919050565b60008060408385031215612d16578182fd5b50508035926020909101359150565b60008060008060808587031215612d3a578182fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215612d67578081fd5b610c8c8261299d565b60008151808452815b81811015612d9557602081850181015186830182015201612d79565b81811115612da65782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b600061012060018060a01b03808d1684526020818d168186015260408381870152612dfc8487018e612d70565b9350828c1660608701528a60808701528960a08701528860c08701528760e087015285840361010087015283875180865283860191508389019550865b81811015612e625786518051871684528501511515858401529584019591830191600101612e39565b505080955050505050509a9950505050505050505050565b6001600160a01b0393909316835290151560208301521515604082015260600190565b6001600160a01b03851681528315156020820152608060408201819052600090612ec990830185612d70565b8281036060840152612edb8185612d70565b979650505050505050565b6001600160a01b038a81168252891515602083015261012060408301819052600091612f148483018c612d70565b91508382036060850152612f28828b612d70565b98166080840152505060a081019490945260c084019290925260e083015261010090910152949350505050565b6020808252825182820181905260009190848201906040850190845b81811015612f965783516001600160a01b031683529284019291840191600101612f71565b50909695505050505050565b901515815260200190565b6020808252600d908201526c6f6e6c79206d616e616765727360981b604082015260600190565b60208082526010908201526f34b73b30b634b210333930b1ba34b7b760811b604082015260600190565b60208082526003908201526264683160e81b604082015260600190565b6020808252600a90820152696f6e6c7920706f6f6c7360b01b604082015260600190565b60208082526014908201527324b73b30b634b21030b9b9b2ba2430b7323632b960611b604082015260600190565b602080825260199082015278496e76616c696420676f7665726e616e63654164647265737360381b604082015260600190565b602080825260129082015271496e76616c69642064616f4164647265737360701b604082015260600190565b6020808252600c908201526b1a5b9d985b1a59081c1bdbdb60a21b604082015260600190565b61ffff91909116815260200190565b90815260200190565b918252602082015260400190565b948552602085019390935260408401919091526060830152608082015260a00190565b6040518181016001600160401b038111828210171561315657fe5b604052919050565b6001600160a01b038116811461148d57600080fdfe608060405234801561001057600080fd5b5061037d806100206000396000f3fe6080604052600436106100225760003560e01c8063e74a474a1461003957610031565b366100315761002f6100f2565b005b61002f6100f2565b61002f6004803603606081101561004f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561007957600080fd5b82018360208201111561008b57600080fd5b803590602001918460018302840111600160201b831117156100ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff16915061010c9050565b6100fa61010a565b61010a61010561019c565b61025d565b565b600061011661019c565b6001600160a01b031614610161576040805162461bcd60e51b815260206004820152600d60248201526c496d706c206e6f74207a65726f60981b604482015290519081900360640190fd5b61016a83610281565b610173816102ff565b815115610197576101958261018661019c565b6001600160a01b031690610307565b505b505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546000916001600160a01b0382166101db5760009250505061025a565b816001600160a01b031663ecef89d56101f2610338565b6040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b15801561022957600080fd5b505afa15801561023d573d6000803e3d6000fd5b505050506040513d602081101561025357600080fd5b5051925050505b90565b3660008037600080366000845af43d6000803e80801561027c573d6000f35b3d6000fd5b61028a81610341565b6102db576040805162461bcd60e51b815260206004820181905260248201527f43616e6e6f742073657420696d706c656d656e746174696f6e20746f20454f41604482015290519081900360640190fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b600160fc1b55565b6000806000835160208501865af4905080156001811461032657610331565b3d806000803e806000fd5b5092915050565b600160fc1b5490565b3b15159056fea264697066735822122046cc3e12f680ea22129db2dec82a5fe701f9cc775c36329ed55dcef4673119e064736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220ae44c86da6e8441f374be229f9c85d142e5018c3ac2aec4ace17ed35439874c464736f6c63430007060033