0 txs
45 calls
constructor
constructor()
functions
chainalysis
viewfunction chainalysis() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
diamondV1
viewfunction diamondV1() view returns (address)
fundManagerImplementation
viewfunction fundManagerImplementation() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isPoolManager
viewfunction isPoolManager(address) view returns (bool)
isStakingPoolCreated
viewfunction isStakingPoolCreated(address) view returns (bool)
isWhitelistedToken
viewfunction isWhitelistedToken(address) view returns (bool)
poolImplementation
viewfunction poolImplementation() view returns (address)
pools
viewfunction pools(uint256) view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
ROLE_MANAGER
viewfunction ROLE_MANAGER() view returns (bytes32)
sigmaToken
viewfunction sigmaToken() view returns (address)
stakingPoolImplementation
viewfunction stakingPoolImplementation() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalPools
viewfunction totalPools() view returns (uint256)
withdrawalManagerImplementation
viewfunction withdrawalManagerImplementation() view returns (address)
addOracleManager
nonpayablefunction addOracleManager(address _pool, address _manager)
addPoolManager
nonpayablefunction addPoolManager(address _poolManager)
addTokenToWhitelist
nonpayablefunction addTokenToWhitelist(address _token)
closePool
nonpayablefunction closePool(address _pool)
createPool
nonpayablefunction createPool(string _poolName, string _poolSymbol, string _fundManagerLenderId, address _poolManager, address _poolToken, address _oracleManager, uint256 _projectedAPY, uint256 _poolSize) returns (address _poolAddress, address _fundManager)
createStakingPool
nonpayablefunction createStakingPool(address _pool, address timelock) returns (address _stakingPool)
createWithdrawalManager
nonpayablefunction createWithdrawalManager(address _pool, address _csigmaRouter) returns (address _withdrawalManager)
emergencyUpdateAUM
nonpayablefunction emergencyUpdateAUM(address _pool, uint256 _assetUnderManagement)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address _target, address _token, address _to, uint256 _amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address _account)
grantRoleTarget
nonpayablefunction grantRoleTarget(address _target, bytes32 role, address _account)
initialize
nonpayablefunction initialize(address _admin, address _fundManagerImpl, address _stakingPoolImpl, address _poolImpl, address _diamondV1, address _sigmaToken, address _chainalysis)
pauseTarget
nonpayablefunction pauseTarget(address _target)
removeOracleManager
nonpayablefunction removeOracleManager(address _pool, address _manager)
removePoolManager
nonpayablefunction removePoolManager(address _poolManager)
removeTokenFromWhitelist
nonpayablefunction removeTokenFromWhitelist(address _token)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address _account)
revokeRoleTarget
nonpayablefunction revokeRoleTarget(address _target, bytes32 role, address _account)
transferAdmin
nonpayablefunction transferAdmin(address _newOwner)
unpauseTarget
nonpayablefunction unpauseTarget(address _target)
updateAUMChangeThresholdPercentage
nonpayablefunction updateAUMChangeThresholdPercentage(address _pool, uint64 _thresholdPercentage)
updateAUMUpdateCooldownPeriod
nonpayablefunction updateAUMUpdateCooldownPeriod(address _pool, uint64 _cooldownPeriod)
updateChainalysisAddress
nonpayablefunction updateChainalysisAddress(address _newAddr)
updateCsigmaRouter
nonpayablefunction updateCsigmaRouter(address _withdrawManager, address _csigmaRouter)
updateFundManagerImplementation
nonpayablefunction updateFundManagerImplementation(address _newImpl)
updateNonReservePercentage
nonpayablefunction updateNonReservePercentage(address _pool, uint64 _percentage)
updatePauseDuration
nonpayablefunction updatePauseDuration(address _pool, uint64 _pauseDuration)
updatePauseStartTime
nonpayablefunction updatePauseStartTime(address _pool, uint64 _pauseStartTime)
updatePoolImplementation
nonpayablefunction updatePoolImplementation(address _newImpl)
updatePoolInvestmentLimit
nonpayablefunction updatePoolInvestmentLimit(address _pool, uint256 _limit)
updatePoolManager
nonpayablefunction updatePoolManager(address _pool, address _poolManager)
updatePoolSize
nonpayablefunction updatePoolSize(address _pool, uint256 _poolSize)
updateSigmaTokenAddress
nonpayablefunction updateSigmaTokenAddress(address _newAddr)
updateStakingPoolImplementation
nonpayablefunction updateStakingPoolImplementation(address _newImpl)
updateWithdrawalManagerImplementation
nonpayablefunction updateWithdrawalManagerImplementation(address _newImpl)
upgradeTarget
nonpayablefunction upgradeTarget(address _target, address _implementation)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
AdminTransferred
event AdminTransferred(address _oldOwner, address _newOwner)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
ChainalysisAddressUpdated
event ChainalysisAddressUpdated(address _prevAddress, address _newAddress)
FundManagerImplementationUpdated
event FundManagerImplementationUpdated(address _prevImpl, address _newImpl)
Initialized
event Initialized(uint8 version)
PoolCreated
event PoolCreated(address _pool, address indexed _poolManager, address _fundManager, address indexed _poolToken, address indexed _oracleManager, uint256 _poolAPY, uint256 _poolSize)
PoolImplementationUpdated
event PoolImplementationUpdated(address _prevImpl, address _newImpl)
PoolManagerAdded
event PoolManagerAdded(address _poolManager)
PoolManagerRemoved
event PoolManagerRemoved(address _poolManager)
PoolManagerUpdated
event PoolManagerUpdated(address indexed _pool, address indexed _oldManager, address indexed _newManager)
PoolSizeUpdated
event PoolSizeUpdated(address indexed _pool, uint256 _oldValue, uint256 _newValue)
PoolTokenAdded
event PoolTokenAdded(address _poolToken)
PoolTokenRemoved
event PoolTokenRemoved(address _poolToken)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SigmaTokenAddressUpdated
event SigmaTokenAddressUpdated(address _prevAddress, address _newAddress)
StakingPoolCreated
event StakingPoolCreated(address indexed _stakingPool, address indexed _pool)
StakingPoolImplementationUpdated
event StakingPoolImplementationUpdated(address _prevImpl, address _newImpl)
Upgraded
event Upgraded(address indexed implementation)
WithdrawalManagerCreated
event WithdrawalManagerCreated(address indexed _withdrawalManager, address indexed _pool)
errors
InvalidAddress
error InvalidAddress(address _poolManager)
InvalidPoolName
error InvalidPoolName(string _poolName)
StakingPoolExist
error StakingPoolExist(address _pool)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516140806200011f6000396000818161155a0152818161159d01528181611769015281816117ac015261184401526140806000f3fe608060405260043610620003bf5760003560e01c80637a773a8f11620001f7578063c539c43a1162000117578063d983388b11620000ad578063f2808d3d1162000078578063f2808d3d1462000bb2578063f2d306331462000bd7578063f5b944eb1462000bfc578063fe41af171462000c2157600080fd5b8063d983388b1462000b20578063dad8c7211462000b43578063dd35a9511462000b68578063e5f8a3091462000b8d57600080fd5b8063c8fcd48711620000ee578063c8fcd4871462000a8f578063cefa77991462000ab4578063d547741f1462000ad6578063d84c1b381462000afb57600080fd5b8063c539c43a1462000a23578063c5ac8c5c1462000a45578063c7e51a1b1462000a6a57600080fd5b8063ab3c7e52116200018d578063b092563f1162000164578063b092563f1462000981578063b193a5f414620009a6578063b571a18e14620009db578063c315537e1462000a0057600080fd5b8063ab3c7e52146200091f578063ac4afa381462000937578063ad20f66f146200095c57600080fd5b80639216267a11620001ce5780639216267a1462000879578063a217fddf146200089e578063a7d7e8a214620008b5578063ab37f48614620008ea57600080fd5b80637a773a8f146200080a5780637fd78503146200082f57806391d14854146200085457600080fd5b8063306275be11620002e35780634f1ef28611620002795780635ee1ea6c11620002505780635ee1ea6c14620007765780636c3e75fd146200079b5780636cf943a414620007c057806375829def14620007e557600080fd5b80634f1ef286146200071257806352d1902d146200072957806352fad71e146200074157600080fd5b806336568abe11620002ba57806336568abe146200067e5780633659cfe614620006a357806345077e7114620006c85780634cee8abc14620006ed57600080fd5b8063306275be146200060f57806334f17c5d146200063457806335876476146200065957600080fd5b806320d18ffa116200035957806329ca15bc116200033057806329ca15bc146200057e57806329d0cdf414620005a35780632aa8195e14620005c85780632f2ff15d14620005ea57600080fd5b806320d18ffa14620004f4578063248a9ca3146200051957806326c2a8ac146200055c57600080fd5b80630e3b2c36116200039a5780630e3b2c36146200044a57806313ba860d146200046f57806319169c8a14620004945780631c04541a14620004cf57600080fd5b806301ffc9a714620003c4578063065bc36f14620003fe57806309e15af51462000425575b600080fd5b348015620003d157600080fd5b50620003e9620003e33660046200302e565b62000c46565b60405190151581526020015b60405180910390f35b3480156200040b57600080fd5b50620004236200041d36600462003082565b62000c7e565b005b3480156200043257600080fd5b506200042362000444366004620030a2565b62000d3d565b3480156200045757600080fd5b506200042362000469366004620030d1565b62000dac565b3480156200047c57600080fd5b50620004236200048e366004620030a2565b62000dfe565b348015620004a157600080fd5b5060fc54620004b6906001600160a01b031681565b6040516001600160a01b039091168152602001620003f5565b348015620004dc57600080fd5b50620004b6620004ee3660046200311b565b62000e47565b3480156200050157600080fd5b5062000423620005133660046200311b565b62001028565b3480156200052657600080fd5b506200054d620005383660046200314e565b60009081526065602052604090206001015490565b604051908152602001620003f5565b3480156200056957600080fd5b5060fe54620004b6906001600160a01b031681565b3480156200058b57600080fd5b50620004236200059d36600462003082565b62001064565b348015620005b057600080fd5b5062000423620005c236600462003082565b62001120565b348015620005d557600080fd5b5060fd54620004b6906001600160a01b031681565b348015620005f757600080fd5b50620004236200060936600462003168565b62001194565b3480156200061c57600080fd5b50620004236200062e36600462003082565b620011c2565b3480156200064157600080fd5b50620004236200065336600462003082565b62001277565b3480156200066657600080fd5b50620004236200067836600462003190565b62001332565b3480156200068b57600080fd5b50620004236200069d36600462003168565b620014cd565b348015620006b057600080fd5b5062000423620006c236600462003082565b6200154f565b348015620006d557600080fd5b5062000423620006e736600462003082565b6200163b565b348015620006fa57600080fd5b50620004236200070c36600462003082565b62001707565b62000423620007233660046200324b565b6200175e565b3480156200073657600080fd5b506200054d62001837565b3480156200074e57600080fd5b50620003e96200076036600462003082565b6101036020526000908152604090205460ff1681565b3480156200078357600080fd5b506200042362000795366004620030d1565b620018ed565b348015620007a857600080fd5b5062000423620007ba3660046200311b565b6200193f565b348015620007cd57600080fd5b5062000423620007df3660046200331b565b62001989565b348015620007f257600080fd5b50620004236200080436600462003082565b620019f7565b3480156200081757600080fd5b506200042362000829366004620030d1565b62001a4f565b3480156200083c57600080fd5b50620004236200084e36600462003082565b62001aa1565b3480156200086157600080fd5b50620003e96200087336600462003168565b62001b5c565b3480156200088657600080fd5b50620004236200089836600462003362565b62001b87565b348015620008ab57600080fd5b506200054d600081565b348015620008c257600080fd5b50620008da620008d436600462003406565b62001c07565b604051620003f5929190620034f6565b348015620008f757600080fd5b50620003e96200090936600462003082565b6101026020526000908152604090205460ff1681565b3480156200092c57600080fd5b50610105546200054d565b3480156200094457600080fd5b50620004b6620009563660046200314e565b62001fa7565b3480156200096957600080fd5b50620004236200097b36600462003082565b62001fd3565b3480156200098e57600080fd5b5062000423620009a036600462003082565b62002090565b348015620009b357600080fd5b50620003e9620009c536600462003082565b6101016020526000908152604090205460ff1681565b348015620009e857600080fd5b5062000423620009fa3660046200311b565b620020e7565b34801562000a0d57600080fd5b5061010654620004b6906001600160a01b031681565b34801562000a3057600080fd5b5060ff54620004b6906001600160a01b031681565b34801562000a5257600080fd5b506200042362000a6436600462003082565b62002236565b34801562000a7757600080fd5b506200042362000a893660046200311b565b620022f1565b34801562000a9c57600080fd5b50620004b662000aae3660046200311b565b6200232d565b34801562000ac157600080fd5b5060fb54620004b6906001600160a01b031681565b34801562000ae357600080fd5b506200042362000af536600462003168565b6200248f565b34801562000b0857600080fd5b506200042362000b1a36600462003082565b620024b8565b34801562000b2d57600080fd5b5061010054620004b6906001600160a01b031681565b34801562000b5057600080fd5b506200042362000b623660046200331b565b62002584565b34801562000b7557600080fd5b506200042362000b87366004620030d1565b620025d5565b34801562000b9a57600080fd5b506200042362000bac36600462003082565b62002627565b34801562000bbf57600080fd5b506200042362000bd13660046200311b565b620026e4565b34801562000be457600080fd5b506200042362000bf6366004620030a2565b6200272e565b34801562000c0957600080fd5b506200054d6000805160206200400483398151915281565b34801562000c2e57600080fd5b506200042362000c40366004620030d1565b6200282e565b60006001600160e01b03198216637965db0b60e01b148062000c7857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805160206200400483398151915262000c998162002880565b6001600160a01b03821662000cd157604051634726455360e11b81526001600160a01b03831660048201526024015b60405180910390fd5b60fb546040517f139a5e40d9bb7f0b1417a2eafa8ef4e4d59408592b97a37850470b3f90922bfd9162000d12916001600160a01b03909116908590620034f6565b60405180910390a15060fb80546001600160a01b0319166001600160a01b0392909216919091179055565b600062000d4a8162002880565b604051630168e0f960e21b8152600481018390526001600160a01b038416906305a383e4906024015b600060405180830381600087803b15801562000d8e57600080fd5b505af115801562000da3573d6000803e3d6000fd5b50505050505050565b6000805160206200400483398151915262000dc78162002880565b60405163ac782c0d60e01b815267ffffffffffffffff831660048201526001600160a01b0384169063ac782c0d9060240162000d73565b6000805160206200400483398151915262000e198162002880565b60405163119ff3b960e31b8152600481018390526001600160a01b03841690638cff9dc89060240162000d73565b60006000805160206200400483398151915262000e648162002880565b61010660009054906101000a90046001600160a01b031663c0c53b8b60e01b856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000ebd57600080fd5b505afa15801562000ed2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef8919062003510565b6040516001600160a01b0391821660248201528188166044820152908616606482015260840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905162000f5d9062003020565b62000f6a9291906200358d565b604051809103906000f08015801562000f87573d6000803e3d6000fd5b5060405163fc72ed5b60e01b81526001600160a01b0380831660048301529193509085169063fc72ed5b90602401600060405180830381600087803b15801562000fd057600080fd5b505af115801562000fe5573d6000803e3d6000fd5b50506040516001600160a01b038088169350851691507fbc2c0c2bacbbc493f050e707bbc5474a598df69b85531b28a684f5d912ac731590600090a35092915050565b6000620010358162002880565b60405163fe1ebda960e01b81526001600160a01b03838116600483015284169063fe1ebda99060240162000d73565b600080516020620040048339815191526200107f8162002880565b6001600160a01b0382166000908152610101602052604090205460ff16620010c657604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b6001600160a01b03821660008181526101016020908152604091829020805460ff1916905590519182527f93217585e152675458715d48001cd6cd5439696d444586359b2fb8ff6a15e6d291015b60405180910390a15050565b600080516020620040048339815191526200113b8162002880565b816001600160a01b03166366805de56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200117757600080fd5b505af11580156200118c573d6000803e3d6000fd5b505050505050565b600082815260656020526040902060010154620011b18162002880565b620011bd83836200288c565b505050565b60008051602062004004833981519152620011dd8162002880565b6001600160a01b0382166000908152610102602052604090205460ff166200122457604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b6001600160a01b03821660008181526101026020908152604091829020805460ff1916905590519182527f6f5720f1797e65971522f72f783ff0ffb1f8743da622487296126ddd57b4aab6910162001114565b60008051602062004004833981519152620012928162002880565b6001600160a01b038216620012c657604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b60ff546040517f6cd9bd69d644d05e6ffe6eb50fec2f2cc184340b6e6640f41b9daabb51a8ba689162001307916001600160a01b03909116908590620034f6565b60405180910390a15060ff80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015620013535750600054600160ff909116105b806200136f5750303b1580156200136f575060005460ff166001145b620013d45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000cc8565b6000805460ff191660011790558015620013f8576000805461ff0019166101001790555b6200140262002916565b6200140c62002916565b620014196000896200288c565b60fc80546001600160a01b03199081166001600160a01b038a81169190911790925560fb8054821688841617905560fd8054821689841617905560fe8054821687841617905560ff8054821686841617905561010080549091169184169190911790558015620014c3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6001600160a01b03811633146200153f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840162000cc8565b6200154b828262002985565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156200159b5760405162461bcd60e51b815260040162000cc890620035b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620015e660008051602062003fe4833981519152546001600160a01b031690565b6001600160a01b0316146200160f5760405162461bcd60e51b815260040162000cc890620035ff565b6200161a81620029ef565b604080516000808252602082019092526200163891839190620029fc565b50565b60008051602062004004833981519152620016568162002880565b6001600160a01b03821615806200168657506001600160a01b0382166000908152610101602052604090205460ff165b15620016b157604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b6001600160a01b03821660008181526101016020908152604091829020805460ff1916600117905590519182527fe773cb69c5e7ed59a70302e099e593a270958a58f903abe63a5d7ab49cb368ea910162001114565b60008051602062004004833981519152620017228162002880565b816001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200117757600080fd5b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415620017aa5760405162461bcd60e51b815260040162000cc890620035b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620017f560008051602062003fe4833981519152546001600160a01b031690565b6001600160a01b0316146200181e5760405162461bcd60e51b815260040162000cc890620035ff565b6200182982620029ef565b6200154b82826001620029fc565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620018d95760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840162000cc8565b5060008051602062003fe483398151915290565b60008051602062004004833981519152620019088162002880565b60405163a663fc9f60e01b815267ffffffffffffffff831660048201526001600160a01b0384169063a663fc9f9060240162000d73565b600080516020620040048339815191526200195a8162002880565b604051636900c0d960e01b81526001600160a01b038381166004830152841690636900c0d99060240162000d73565b6000620019968162002880565b604051632f2ff15d60e01b8152600481018490526001600160a01b038381166024830152851690632f2ff15d906044015b600060405180830381600087803b158015620019e257600080fd5b505af1158015620014c3573d6000803e3d6000fd5b62001a0460008262001194565b62001a116000336200248f565b7ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec6338260405162001a44929190620034f6565b60405180910390a150565b6000805160206200400483398151915262001a6a8162002880565b6040516339eb494560e11b815267ffffffffffffffff831660048201526001600160a01b038416906373d6928a9060240162000d73565b6000805160206200400483398151915262001abc8162002880565b6001600160a01b03821662001af057604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b60fd546040517f9c49f1853cc1754a460ef9c3fc68d586ea4fbe8f94dae0d810c9d294718a820d9162001b31916001600160a01b03909116908590620034f6565b60405180910390a15060fd80546001600160a01b0319166001600160a01b0392909216919091179055565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600062001b948162002880565b604051631cc7d48160e31b81526001600160a01b03858116600483015284811660248301526044820184905286169063e63ea40890606401600060405180830381600087803b15801562001be757600080fd5b505af115801562001bfc573d6000803e3d6000fd5b505050505050505050565b6000806000805160206200400483398151915262001c258162002880565b6001600160a01b0388166000908152610101602052604090205460ff1662001c6c57604051634726455360e11b81526001600160a01b038916600482015260240162000cc8565b6001600160a01b0387166000908152610102602052604090205460ff1662001cb357604051634726455360e11b81526001600160a01b038816600482015260240162000cc8565b6101048e8e60405162001cc89291906200364b565b9081526040519081900360200190205460ff161562001cfe578d8d604051610eb560e71b815260040162000cc892919062003684565b60fc546040516001600160a01b039091169062001d1b9062003020565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001d57573d6000803e3d6000fd5b50915060fb60009054906101000a90046001600160a01b0316637378708560e01b8f8f60405160200162001d8d9291906200369a565b6040516020818303038152906040528e8e60405160200162001db19291906200369a565b60408051601f198184030181529082905262001ddd92918d9088908e908e908e908e90602401620036b7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905162001e1c9062003020565b62001e299291906200358d565b604051809103906000f08015801562001e46573d6000803e3d6000fd5b5060fe546040516309c26fb160e01b81529194506001600160a01b03808516926309c26fb19262001e85928c929116908f908f908a9060040162003723565b600060405180830381600087803b15801562001ea057600080fd5b505af115801562001eb5573d6000803e3d6000fd5b50505050610105839080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555060016101048f8f60405162001f1a9291906200364b565b9081526040805160209281900383018120805460ff1916941515949094179093556001600160a01b0386811684528581169284019290925282018790526060820186905287811691898216918b16907fbc6f53152e9aa8c4c80947b978ba84ae6d4f83b9762aa13cddad1d22cf26d1739060800160405180910390a4509b509b9950505050505050505050565b610105818154811062001fb957600080fd5b6000918252602090912001546001600160a01b0316905081565b6000805160206200400483398151915262001fee8162002880565b6001600160a01b0382166200202257604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b610100546040517fe4405c92ff82ca96a8e4bf4b5365f4d99c3d6bea79d764ca356807185f71475b9162002064916001600160a01b03909116908590620034f6565b60405180910390a15061010080546001600160a01b0319166001600160a01b0392909216919091179055565b60008051602062004004833981519152620020ab8162002880565b816001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200117757600080fd5b60008051602062004004833981519152620021028162002880565b6001600160a01b0382166000908152610101602052604090205460ff166200214957604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b816001600160a01b0316836001600160a01b031663dc4c90d36040518163ffffffff1660e01b815260040160206040518083038186803b1580156200218d57600080fd5b505afa158015620021a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021c8919062003510565b6001600160a01b0316846001600160a01b03167fa46f8130d3a4bc0cb9297e31bdbb4f99a44a09ae819118332ac98a077ed047a960405160405180910390a4604051635752475160e01b81526001600160a01b03838116600483015284169063575247519060240162000d73565b60008051602062004004833981519152620022518162002880565b6001600160a01b0382166200228557604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b60fc546040517f5870af0186e100c9354109f34258b1567d69b2ac21735dd9d07a5c96e9c3f1e591620022c6916001600160a01b03909116908590620034f6565b60405180910390a15060fc80546001600160a01b0319166001600160a01b0392909216919091179055565b6000620022fe8162002880565b604051631b2ce7f360e11b81526001600160a01b038381166004830152841690633659cfe69060240162000d73565b6000600080516020620040048339815191526200234a8162002880565b6001600160a01b0384166000908152610103602052604090205460ff16156200239257604051638270d4e960e01b81526001600160a01b038516600482015260240162000cc8565b60fd5460ff546040516001600160a01b0386811660248301528781166044830152918216606482015291169063c0c53b8b60e01b9060840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620024099062003020565b620024169291906200358d565b604051809103906000f08015801562002433573d6000803e3d6000fd5b506001600160a01b0380861660008181526101036020526040808220805460ff19166001179055519395509092918516917fdbb53b9268d1e3c84679f354bbfa5c8bccb23913fa3502fbf1b2964f58a51ece9190a35092915050565b600082815260656020526040902060010154620024ac8162002880565b620011bd838362002985565b60008051602062004004833981519152620024d38162002880565b6001600160a01b03821615806200250357506001600160a01b0382166000908152610102602052604090205460ff165b156200252e57604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b6001600160a01b03821660008181526101026020908152604091829020805460ff1916600117905590519182527f66317274834fa7f29c61f1282a5750173b389a799032724a3d0fb40879024bad910162001114565b600080516020620040048339815191526200259f8162002880565b60405163d547741f60e01b8152600481018490526001600160a01b03838116602483015285169063d547741f90604401620019c7565b60008051602062004004833981519152620025f08162002880565b604051631ff048fd60e11b815267ffffffffffffffff831660048201526001600160a01b03841690633fe091fa9060240162000d73565b60008051602062004004833981519152620026428162002880565b6001600160a01b0382166200267657604051634726455360e11b81526001600160a01b038316600482015260240162000cc8565b610106546040517f5870af0186e100c9354109f34258b1567d69b2ac21735dd9d07a5c96e9c3f1e591620026b8916001600160a01b03909116908590620034f6565b60405180910390a15061010680546001600160a01b0319166001600160a01b0392909216919091179055565b60008051602062004004833981519152620026ff8162002880565b60405163f3d6d13160e01b81526001600160a01b03838116600483015284169063f3d6d1319060240162000d73565b60008051602062004004833981519152620027498162002880565b826001600160a01b03167fa8b3134a8985c19b9e2b56869a029cbc3ded7f2df7988d62de2f7cb12c982d13846001600160a01b0316634ec18db96040518163ffffffff1660e01b815260040160206040518083038186803b158015620027ae57600080fd5b505afa158015620027c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027e9919062003765565b60408051918252602082018690520160405180910390a2604051632ab38b5f60e01b8152600481018390526001600160a01b03841690632ab38b5f9060240162000d73565b60008051602062004004833981519152620028498162002880565b6040516302c0258f60e31b815267ffffffffffffffff831660048201526001600160a01b038416906316012c789060240162000d73565b62001638813362002b84565b62002898828262001b5c565b6200154b5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620028d23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620029835760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000cc8565b565b62002991828262001b5c565b156200154b5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006200154b8162002880565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161562002a3257620011bd8362002be8565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562002a6c57600080fd5b505afa92505050801562002a9f575060408051601f3d908101601f1916820190925262002a9c9181019062003765565b60015b62002b045760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840162000cc8565b60008051602062003fe4833981519152811462002b765760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840162000cc8565b50620011bd83838362002c87565b62002b90828262001b5c565b6200154b5762002ba08162002cb8565b62002bad83602062002ccb565b60405160200162002bc09291906200377f565b60408051601f198184030181529082905262461bcd60e51b825262000cc891600401620037f8565b6001600160a01b0381163b62002c575760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000cc8565b60008051602062003fe483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62002c928362002e8c565b60008251118062002ca05750805b15620011bd5762002cb2838362002ece565b50505050565b606062000c786001600160a01b03831660145b6060600062002cdc83600262003823565b62002ce990600262003845565b67ffffffffffffffff81111562002d045762002d0462003235565b6040519080825280601f01601f19166020018201604052801562002d2f576020820181803683370190505b509050600360fc1b8160008151811062002d4d5762002d4d62003860565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062002d7f5762002d7f62003860565b60200101906001600160f81b031916908160001a905350600062002da584600262003823565b62002db290600162003845565b90505b600181111562002e34576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062002dea5762002dea62003860565b1a60f81b82828151811062002e035762002e0362003860565b60200101906001600160f81b031916908160001a90535060049490941c9362002e2c8162003876565b905062002db5565b50831562002e855760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000cc8565b9392505050565b62002e978162002be8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062002e85838360405180606001604052806027815260200162004024602791396060600080856001600160a01b03168560405162002f0f919062003890565b600060405180830381855af49150503d806000811462002f4c576040519150601f19603f3d011682016040523d82523d6000602084013e62002f51565b606091505b509150915062002f648683838762002f6e565b9695505050505050565b6060831562002fdf57825162002fd7576001600160a01b0385163b62002fd75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000cc8565b508162002feb565b62002feb838362002ff3565b949350505050565b815115620030045781518083602001fd5b8060405162461bcd60e51b815260040162000cc89190620037f8565b61073580620038af83390190565b6000602082840312156200304157600080fd5b81356001600160e01b03198116811462002e8557600080fd5b6001600160a01b03811681146200163857600080fd5b80356200307d816200305a565b919050565b6000602082840312156200309557600080fd5b813562002e85816200305a565b60008060408385031215620030b657600080fd5b8235620030c3816200305a565b946020939093013593505050565b60008060408385031215620030e557600080fd5b8235620030f2816200305a565b9150602083013567ffffffffffffffff811681146200311057600080fd5b809150509250929050565b600080604083850312156200312f57600080fd5b82356200313c816200305a565b9150602083013562003110816200305a565b6000602082840312156200316157600080fd5b5035919050565b600080604083850312156200317c57600080fd5b82359150602083013562003110816200305a565b600080600080600080600060e0888a031215620031ac57600080fd5b8735620031b9816200305a565b96506020880135620031cb816200305a565b95506040880135620031dd816200305a565b94506060880135620031ef816200305a565b9350608088013562003201816200305a565b925060a088013562003213816200305a565b915060c088013562003225816200305a565b8091505092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200325f57600080fd5b82356200326c816200305a565b9150602083013567ffffffffffffffff808211156200328a57600080fd5b818501915085601f8301126200329f57600080fd5b813581811115620032b457620032b462003235565b604051601f8201601f19908116603f01168101908382118183101715620032df57620032df62003235565b81604052828152886020848701011115620032f957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000606084860312156200333157600080fd5b83356200333e816200305a565b925060208401359150604084013562003357816200305a565b809150509250925092565b600080600080608085870312156200337957600080fd5b843562003386816200305a565b9350602085013562003398816200305a565b92506040850135620033aa816200305a565b9396929550929360600135925050565b60008083601f840112620033cd57600080fd5b50813567ffffffffffffffff811115620033e657600080fd5b602083019150836020828501011115620033ff57600080fd5b9250929050565b60008060008060008060008060008060006101008c8e0312156200342957600080fd5b67ffffffffffffffff808d3511156200344157600080fd5b620034508e8e358f01620033ba565b909c509a5060208d01358110156200346757600080fd5b620034798e60208f01358f01620033ba565b909a50985060408d01358110156200349057600080fd5b50620034a38d60408e01358e01620033ba565b9097509550620034b660608d0162003070565b9450620034c660808d0162003070565b9350620034d660a08d0162003070565b925060c08c0135915060e08c013590509295989b509295989b9093969950565b6001600160a01b0392831681529116602082015260400190565b6000602082840312156200352357600080fd5b815162002e85816200305a565b60005b838110156200354d57818101518382015260200162003533565b8381111562002cb25750506000910152565b600081518084526200357981602086016020860162003530565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009062002feb908301846200355f565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062002feb6020830184866200365b565b606360f81b81528183600183013760009101600101908152919050565b6000610100808352620036cd8184018c6200355f565b90508281036020840152620036e3818b6200355f565b6001600160a01b03998a1660408501529789166060840152505093861660808501529190941660a083015260c082019390935260e0019190915292915050565b600060018060a01b038088168352808716602084015260806040840152620037506080840186886200365b565b91508084166060840152509695505050505050565b6000602082840312156200377857600080fd5b5051919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351620037b981601785016020880162003530565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351620037ec81602884016020880162003530565b01602801949350505050565b60208152600062002e8560208301846200355f565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200384057620038406200380d565b500290565b600082198211156200385b576200385b6200380d565b500190565b634e487b7160e01b600052603260045260246000fd5b6000816200388857620038886200380d565b506000190190565b60008251620038a481846020870162003530565b919091019291505056fe60806040526040516107353803806107358339810160408190526100229161031e565b61002e82826000610035565b505061043b565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d0838360405180606001604052806027815260200161070e602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103ec565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a0578251610299576001600160a01b0385163b6102995760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102aa565b6102aa83836102b2565b949350505050565b8151156102c25781518083602001fd5b8060405162461bcd60e51b81526004016101489190610408565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561030d5781810151838201526020016102f5565b838111156100645750506000910152565b6000806040838503121561033157600080fd5b82516001600160a01b038116811461034857600080fd5b60208401519092506001600160401b038082111561036557600080fd5b818501915085601f83011261037957600080fd5b81518181111561038b5761038b6102dc565b604051601f8201601f19908116603f011681019083821181831017156103b3576103b36102dc565b816040528281528860208487010111156103cc57600080fd5b6103dd8360208301602088016102f2565b80955050505050509250929050565b600082516103fe8184602087016102f2565b9190910192915050565b60208152600082518060208401526104278160408501602087016102f2565b601f01601f19169190910160400192915050565b6102c48061044a6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e8383604051806060016040528060278152602001610268602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e09190610218565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101ac5782516101a5576001600160a01b0385163b6101a55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b6565b6101b683836101be565b949350505050565b8151156101ce5781518083602001fd5b8060405162461bcd60e51b815260040161019c9190610234565b60005b838110156102035781810151838201526020016101eb565b83811115610212576000848401525b50505050565b6000825161022a8184602087016101e8565b9190910192915050565b60208152600082518060208401526102538160408501602087016101e8565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f34a6b474a4f069f6f61e061da075e7e8c5fc5764f2b18b865db7fe6d946926864736f6c63430008090033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf206625bad3d9112d5609b8d356e6fbd514cd1f69980d4ce2b3e6e68e1789ace416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122027a2db6b2e13adbac1bdc0ef8dcbfec33809a6fb00da3180cb72fe92cc24bc0464736f6c63430008090033