12 txs
33 calls
constructor
constructor(address _morphoBlue, address _admin)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
LIQUIDITY_ROLE
viewfunction LIQUIDITY_ROLE() view returns (bytes32)
LISTER_ROLE
viewfunction LISTER_ROLE() view returns (bytes32)
MORPHO
viewfunction MORPHO() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
wTokenMarketParams
viewfunction wTokenMarketParams(address) view returns (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
listWToken
nonpayablefunction listWToken(address _wToken, address _oracleOwner) returns (bytes32)
onMorphoRepay
nonpayablefunction onMorphoRepay(uint256 _assets, bytes _data)
onMorphoSupplyCollateral
nonpayablefunction onMorphoSupplyCollateral(uint256 _assets, bytes _data)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
topDownLiquidity
nonpayablefunction topDownLiquidity(address _wToken, uint256 _amount)
topUpLiquidity
nonpayablefunction topUpLiquidity(address _wToken, uint256 _amount)
events
LiquidityTopDown
event LiquidityTopDown(address indexed _wToken, uint256 _amount)
LiquidityTopUp
event LiquidityTopUp(address indexed _wToken, uint256 _amount)
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)
WTokenListed
event WTokenListed(address indexed _wToken, bytes32 _morphoMarketId)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a060405234801561000f575f80fd5b506040516130fb3803806130fb83398101604081905261002e9161010b565b6100385f8261004b565b50506001600160a01b0316608052610143565b5f828152602081815260408083206001600160a01b038516845290915281205460ff166100eb575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100a33390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100ee565b505f5b92915050565b6001600160a01b0381168114610108575f80fd5b50565b5f806040838503121561011c575f80fd5b8251610127816100f4565b6020840151909250610138816100f4565b809150509250929050565b608051612f5a6101a15f395f81816101aa015281816103630152818161040901528181610630015281816109ac01528181610a4401528181610ab601528181610b7901528181610cc401528181610d700152610f690152612f5a5ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c80639f2708ec11610093578063d20a134911610063578063d20a1349146102ae578063d547741f146102c1578063deb26b94146102d4578063e8f549ef146102fb575f80fd5b80639f2708ec146101f7578063a088d42a14610281578063a217fddf14610294578063b1022fdf1461029b575f80fd5b80632f2ff15d116100ce5780632f2ff15d1461017f57806336568abe146101925780633acb5624146101a557806391d14854146101e4575f80fd5b806301ffc9a7146100ff57806305b4591c14610127578063248a9ca31461013c57806328b59a081461016c575b5f80fd5b61011261010d366004611473565b610322565b60405190151581526020015b60405180910390f35b61013a61013536600461149a565b610358565b005b61015e61014a366004611511565b5f9081526020819052604090206001015490565b60405190815260200161011e565b61013a61017a36600461153c565b61055d565b61013a61018d366004611566565b6106f8565b61013a6101a0366004611566565b610722565b6101cc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161011e565b6101126101f2366004611566565b61075a565b610246610205366004611594565b600160208190525f9182526040909120805491810154600282015460038301546004909301546001600160a01b039485169492831693918316929091169085565b604080516001600160a01b0396871681529486166020860152928516928401929092529092166060820152608081019190915260a00161011e565b61015e61028f3660046115af565b610782565b61015e5f81565b61013a6102a936600461149a565b610cb9565b61013a6102bc36600461153c565b610e96565b61013a6102cf366004611566565b61100c565b61015e7ff94103142c1baabe9ac2b5d1487bf783de9e69cfeea9a72f5c9c94afd7877b8c81565b61015e7f39a8b3e6e97619937505a2ae24f70fc909c329e7595f016056def5c61ec407f481565b5f6001600160e01b03198216637965db0b60e01b148061035257506301ffc9a760e01b6001600160e01b03198316145b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103df5760405162461bcd60e51b815260206004820152602160248201527f6f6e4d6f7270686f52657061793a20696e76616c6964206d73672e73656e64656044820152603960f91b60648201526084015b60405180910390fd5b5f806103ed83850185611610565b604051638720316d60e01b815291935091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638720316d906104449085908990309081906004016116d7565b5f604051808303815f87803b15801561045b575f80fd5b505af115801561046d573d5f803e3d5ffd5b505050602083015160405163040b850f60e31b8152306004820152602481018890526001600160a01b03909116915063205c2878906044016020604051808303815f875af11580156104c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e5919061170b565b5060405163040b850f60e31b8152306004820152602481018690526001600160a01b0382169063205c2878906044015b6020604051808303815f875af1158015610531573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610555919061170b565b505050505050565b7f39a8b3e6e97619937505a2ae24f70fc909c329e7595f016056def5c61ec407f461058781611030565b6001600160a01b038084165f908152600160208190526040909120908101549091166105f55760405162461bcd60e51b815260206004820181905260248201527f746f70446f776e4c69717569646974793a20696e76616c69642077746f6b656e60448201526064016103d6565b5f8185604051602001610609929190611768565b60408051601f19818403018152908290526320b76e8160e01b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906320b76e819061066d90859088905f90309088906004016117bc565b60408051808303815f875af1158015610688573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ac9190611803565b5050846001600160a01b03167fac094e4e95f5a5e7e9d981b2839eac0c58cc4c891992be4ee4517213c204c5f9856040516106e991815260200190565b60405180910390a25050505050565b5f8281526020819052604090206001015461071281611030565b61071c838361103d565b50505050565b6001600160a01b038116331461074b5760405163334bd91960e11b815260040160405180910390fd5b61075582826110cc565b505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f7ff94103142c1baabe9ac2b5d1487bf783de9e69cfeea9a72f5c9c94afd7877b8c6107ad81611030565b6001600160a01b038481165f908152600160208190526040909120015416156108245760405162461bcd60e51b8152602060048201526024808201527f6c69737457546f6b656e3a2077746f6b656e20697320616c7265616479206c696044820152631cdd195960e21b60648201526084016103d6565b5f846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610861573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108859190611825565b90505f8560405161089590611459565b6001600160a01b039091168152602001604051809103905ff0801580156108be573d5f803e3d5ffd5b506040805160a0810182525f9181018290526060810182905260808101919091526001600160a01b038481168252821660208201529091506d314dc6448d9338c15b0a0000000061092060626f4b3b4ca85a86c47a098a224000000000611840565b61092a919061185f565b8660405161093790611466565b9182526001600160a01b03166020820152604001604051809103905ff080158015610964573d5f803e3d5ffd5b506001600160a01b039081166040838101919091525f60608401819052670d99a8cec7e20000608085015260a084209151632e3071cd60e11b815260048101839052919290917f000000000000000000000000000000000000000000000000000000000000000090911690635c60e39a9060240160c060405180830381865afa1580156109f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a179190611899565b905080608001516001600160801b03165f03610aa757604051634609ac5160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638c1358a290610a79908690600401611944565b5f604051808303815f87803b158015610a90575f80fd5b505af1158015610aa2573d5f803e3d5ffd5b505050505b610adc6001600160a01b0386167f00000000000000000000000000000000000000000000000000000000000000005f19611135565b610af16001600160a01b0386168a5f19611135565b60405163095ea7b360e01b81526001600160a01b0385811660048301525f1960248301528a169063095ea7b3906044016020604051808303815f875af1158015610b3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b61919061170b565b5060405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f19602483015285169063095ea7b3906044016020604051808303815f875af1158015610bce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf2919061170b565b506001600160a01b03808a165f81815260016020818152604092839020885181549087166001600160a01b03199182161782559189015192810180549387169383169390931790925582880151600283018054918716918316919091179055606088015160038301805491909616911617909355608086015160049093019290925590517fa7c6c9169715edb8962b0238511c0ed05aebab22909cce276d24b77bdfb201b690610ca59085815260200190565b60405180910390a250979650505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d465760405162461bcd60e51b815260206004820152602c60248201527f6f6e4d6f7270686f537570706c79436f6c6c61746572616c3a20696e76616c6960448201526b321036b9b39739b2b73232b960a11b60648201526084016103d6565b5f80610d5483850185611610565b6040516350d8cd4b60e01b815291935091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350d8cd4b90610dad90859089905f9030908190600401611952565b60408051808303815f875af1158015610dc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dec9190611803565b50506040516317a790f160e11b8152306004820152602481018690526001600160a01b03821690632f4f21e2906044016020604051808303815f875af1158015610e38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5c919061170b565b5060208201516040516317a790f160e11b8152306004820152602481018790526001600160a01b0390911690632f4f21e290604401610515565b7f39a8b3e6e97619937505a2ae24f70fc909c329e7595f016056def5c61ec407f4610ec081611030565b6001600160a01b038084165f90815260016020819052604090912090810154909116610f2e5760405162461bcd60e51b815260206004820152601e60248201527f746f7055704c69717569646974793a20696e76616c69642077746f6b656e000060448201526064016103d6565b5f8185604051602001610f42929190611768565b60408051601f198184030181529082905263238d657960e01b825291506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063238d657990610fa490859088903090879060040161198e565b5f604051808303815f87803b158015610fbb575f80fd5b505af1158015610fcd573d5f803e3d5ffd5b50505050846001600160a01b03167fa53938576e05c2ae38023b704e028ca8cc84dbd26727b8571036eee20381c1b2856040516106e991815260200190565b5f8281526020819052604090206001015461102681611030565b61071c83836110cc565b61103a81336111e8565b50565b5f611048838361075a565b6110c5575f838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561107d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610352565b505f610352565b5f6110d7838361075a565b156110c5575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610352565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526111868482611225565b61071c57604080516001600160a01b03851660248201525f6044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526111de9085906112c6565b61071c84826112c6565b6111f2828261075a565b6112215760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016103d6565b5050565b5f805f846001600160a01b03168460405161124091906119c3565b5f604051808303815f865af19150503d805f8114611279576040519150601f19603f3d011682016040523d82523d5f602084013e61127e565b606091505b50915091508180156112a85750805115806112a85750808060200190518101906112a8919061170b565b80156112bd57505f856001600160a01b03163b115b95945050505050565b5f6112da6001600160a01b03841683611327565b905080515f141580156112fe5750808060200190518101906112fc919061170b565b155b1561075557604051635274afe760e01b81526001600160a01b03841660048201526024016103d6565b606061133483835f61133b565b9392505050565b6060814710156113605760405163cd78605960e01b81523060048201526024016103d6565b5f80856001600160a01b0316848660405161137b91906119c3565b5f6040518083038185875af1925050503d805f81146113b5576040519150601f19603f3d011682016040523d82523d5f602084013e6113ba565b606091505b50915091506113ca8683836113d4565b9695505050505050565b6060826113e9576113e482611430565b611334565b815115801561140057506001600160a01b0384163b155b1561142957604051639996b31560e01b81526001600160a01b03851660048201526024016103d6565b5080611334565b8051156114405780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6111c4806119da83390190565b61038780612b9e83390190565b5f60208284031215611483575f80fd5b81356001600160e01b031981168114611334575f80fd5b5f805f604084860312156114ac575f80fd5b83359250602084013567ffffffffffffffff8111156114c9575f80fd5b8401601f810186136114d9575f80fd5b803567ffffffffffffffff8111156114ef575f80fd5b866020828401011115611500575f80fd5b939660209190910195509293505050565b5f60208284031215611521575f80fd5b5035919050565b6001600160a01b038116811461103a575f80fd5b5f806040838503121561154d575f80fd5b823561155881611528565b946020939093013593505050565b5f8060408385031215611577575f80fd5b82359150602083013561158981611528565b809150509250929050565b5f602082840312156115a4575f80fd5b813561133481611528565b5f80604083850312156115c0575f80fd5b82356115cb81611528565b9150602083013561158981611528565b60405160a0810167ffffffffffffffff8111828210171561160a57634e487b7160e01b5f52604160045260245ffd5b60405290565b5f8082840360c0811215611622575f80fd5b60a081121561162f575f80fd5b506116386115db565b833561164381611528565b8152602084013561165381611528565b6020820152604084013561166681611528565b6040820152606084013561167981611528565b606082015260808481013590820152915060a083013561158981611528565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260608083015190911690830152608090810151910152565b61010081016116e68287611698565b60a08201949094526001600160a01b0392831660c0820152911660e090910152919050565b5f6020828403121561171b575f80fd5b81518015158114611334575f80fd5b80546001600160a01b039081168352600182015481166020840152600282015481166040840152600382015416606083015260040154608090910152565b60c08101611776828561172a565b6001600160a01b039290921660a09190910152919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6117c6818761172a565b8460a08201528360c082015260018060a01b03831660e08201526101206101008201525f6117f861012083018461178e565b979650505050505050565b5f8060408385031215611814575f80fd5b505080516020909101519092909150565b5f60208284031215611835575f80fd5b815161133481611528565b5f8261185a57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561035257634e487b7160e01b5f52601160045260245ffd5b80516001600160801b0381168114611894575f80fd5b919050565b5f60c08284031280156118aa575f80fd5b5060405160c0810167ffffffffffffffff811182821017156118da57634e487b7160e01b5f52604160045260245ffd5b6040526118e68361187e565b81526118f46020840161187e565b60208201526119056040840161187e565b60408201526119166060840161187e565b60608201526119276080840161187e565b608082015261193860a0840161187e565b60a08201529392505050565b60a081016103528284611698565b61012081016119618288611698565b60a082019590955260c08101939093526001600160a01b0391821660e08401521661010090910152919050565b611998818661172a565b8360a082015260018060a01b03831660c082015261010060e08201525f6113ca61010083018461178e565b5f82518060208501845e5f92019182525091905056fe60a060405234801561000f575f80fd5b506040516111c43803806111c483398101604081905261002e91610210565b3381826001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561006b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100929190810190610251565b6040516020016100a29190610318565b604051602081830303815290604052836001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156100ec573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101139190810190610251565b6040516020016101239190610349565b60408051601f19818403018152919052600361013f83826103e3565b50600461014c82826103e3565b5050306001600160a01b0383160390506101805760405163438d6fe360e01b81523060048201526024015b60405180910390fd5b6001600160a01b0390811660805281166101af57604051631e4fbdf760e01b81525f6004820152602401610177565b6101b8816101bf565b505061049d565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f60208284031215610220575f80fd5b81516001600160a01b0381168114610236575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610261575f80fd5b81516001600160401b03811115610276575f80fd5b8201601f81018413610286575f80fd5b80516001600160401b0381111561029f5761029f61023d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102cd576102cd61023d565b6040528181528282016020018610156102e4575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f81518060208401855e5f93019283525090919050565b7f5065726d697373696f6e6564205772617070656420000000000000000000000081525f6102366015830184610301565b61505760f01b81525f6102366002830184610301565b600181811c9082168061037357607f821691505b60208210810361039157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103de57805f5260205f20601f840160051c810160208510156103bc5750805b601f840160051c820191505b818110156103db575f81556001016103c8565b50505b505050565b81516001600160401b038111156103fc576103fc61023d565b6104108161040a845461035f565b84610397565b6020601f821160018114610442575f831561042b5750848201515b5f19600385901b1c1916600184901b1784556103db565b5f84815260208120601f198516915b828110156104715787850151825560209485019460019092019101610451565b508482101561048e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608051610cfa6104ca5f395f818161019c0152818161036f015281816103d901526106d70152610cfa5ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c80636f307dc31161009357806395d89b411161006357806395d89b4114610217578063a9059cbb1461021f578063dd62ed3e14610232578063f2fde38b1461026a575f80fd5b80636f307dc31461019a57806370a08231146101d4578063715018a6146101fc5780638da5cb5b14610206575f80fd5b8063205c2878116100ce578063205c28781461014757806323b872dd1461015a5780632f4f21e21461016d578063313ce56714610180575f80fd5b806306fdde03146100f4578063095ea7b31461011257806318160ddd14610135575b5f80fd5b6100fc61027d565b6040516101099190610b21565b60405180910390f35b610125610120366004610b6c565b61030d565b6040519015158152602001610109565b6002545b604051908152602001610109565b610125610155366004610b6c565b610326565b610125610168366004610b94565b61039e565b61012561017b366004610b6c565b6103c3565b6101886103d6565b60405160ff9091168152602001610109565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610109565b6101396101e2366004610bce565b6001600160a01b03165f9081526020819052604090205490565b610204610460565b005b6005546001600160a01b03166101bc565b6100fc610473565b61012561022d366004610b6c565b610482565b610139610240366004610be7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610204610278366004610bce565b61048f565b60606003805461028c90610c18565b80601f01602080910402602001604051908101604052809291908181526020018280546102b890610c18565b80156103035780601f106102da57610100808354040283529160200191610303565b820191905f5260205f20905b8154815290600101906020018083116102e657829003601f168201915b5050505050905090565b5f3361031a8185856104cc565b60019150505b92915050565b5f306001600160a01b038416036103605760405163ec442f0560e01b81526001600160a01b03841660048201526024015b60405180910390fd5b61036a33836104de565b6103957f00000000000000000000000000000000000000000000000000000000000000008484610516565b50600192915050565b5f336103ab858285610575565b6103b68585856105f0565b60019150505b9392505050565b5f6103cc61064d565b6103bc838361067a565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610451575060408051601f3d908101601f1916820190925261044e91810190610c50565b60015b61045b5750601290565b919050565b61046861064d565b6104715f610708565b565b60606004805461028c90610c18565b5f3361031a8185856105f0565b61049761064d565b6001600160a01b0381166104c057604051631e4fbdf760e01b81525f6004820152602401610357565b6104c981610708565b50565b6104d98383836001610759565b505050565b6001600160a01b03821661050757604051634b637e8f60e11b81525f6004820152602401610357565b610512825f8361082b565b5050565b6040516001600160a01b038381166024830152604482018390526104d991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610951565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146105ea57818110156105dc57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610357565b6105ea84848484035f610759565b50505050565b6001600160a01b03831661061957604051634b637e8f60e11b81525f6004820152602401610357565b6001600160a01b0382166106425760405163ec442f0560e01b81525f6004820152602401610357565b6104d983838361082b565b6005546001600160a01b031633146104715760405163118cdaa760e01b8152336004820152602401610357565b5f3330810361069e57604051634b637e8f60e11b8152306004820152602401610357565b306001600160a01b038516036106d25760405163ec442f0560e01b81526001600160a01b0385166004820152602401610357565b6106fe7f00000000000000000000000000000000000000000000000000000000000000008230866109b2565b61031a84846109eb565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0384166107825760405163e602df0560e01b81525f6004820152602401610357565b6001600160a01b0383166107ab57604051634a1406b160e11b81525f6004820152602401610357565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156105ea57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161081d91815260200190565b60405180910390a350505050565b6001600160a01b038316610855578060025f82825461084a9190610c70565b909155506108c59050565b6001600160a01b0383165f90815260208190526040902054818110156108a75760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610357565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166108e1576002805482900390556108ff565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161094491815260200190565b60405180910390a3505050565b5f6109656001600160a01b03841683610a1f565b905080515f141580156109895750808060200190518101906109879190610c8f565b155b156104d957604051635274afe760e01b81526001600160a01b0384166004820152602401610357565b6040516001600160a01b0384811660248301528381166044830152606482018390526105ea9186918216906323b872dd90608401610543565b6001600160a01b038216610a145760405163ec442f0560e01b81525f6004820152602401610357565b6105125f838361082b565b60606103bc83835f845f80856001600160a01b03168486604051610a439190610cae565b5f6040518083038185875af1925050503d805f8114610a7d576040519150601f19603f3d011682016040523d82523d5f602084013e610a82565b606091505b5091509150610a92868383610a9c565b9695505050505050565b606082610ab157610aac82610af8565b6103bc565b8151158015610ac857506001600160a01b0384163b155b15610af157604051639996b31560e01b81526001600160a01b0385166004820152602401610357565b50806103bc565b805115610b085780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461045b575f80fd5b5f8060408385031215610b7d575f80fd5b610b8683610b56565b946020939093013593505050565b5f805f60608486031215610ba6575f80fd5b610baf84610b56565b9250610bbd60208501610b56565b929592945050506040919091013590565b5f60208284031215610bde575f80fd5b6103bc82610b56565b5f8060408385031215610bf8575f80fd5b610c0183610b56565b9150610c0f60208401610b56565b90509250929050565b600181811c90821680610c2c57607f821691505b602082108103610c4a57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610c60575f80fd5b815160ff811681146103bc575f80fd5b8082018082111561032057634e487b7160e01b5f52601160045260245ffd5b5f60208284031215610c9f575f80fd5b815180151581146103bc575f80fd5b5f82518060208501845e5f92019182525091905056fea2646970667358221220f9a3f6c7249186d76a751c3cad51d30feda8304765d4a5cbacb07ca47a0d2fdc64736f6c634300081a0033608060405234801561000f575f80fd5b5060405161038738038061038783398101604081905261002e916100f4565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610065816100a5565b5060018290556040518281527f6bfd5e75539a9d2626425a2e2922675256b219fe546d63dad56011759b9a2f669060200160405180910390a1505061012e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8060408385031215610105575f80fd5b825160208401519092506001600160a01b0381168114610123575f80fd5b809150509250929050565b61024c8061013b5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c8063715018a6146100595780638da5cb5b1461006357806391b7f5ed14610082578063a035b1fe14610095578063f2fde38b146100ac575b5f80fd5b6100616100bf565b005b5f546040516001600160a01b0390911681526020015b60405180910390f35b6100616100903660046101d2565b6100d2565b61009e60015481565b604051908152602001610079565b6100616100ba3660046101e9565b610115565b6100c7610157565b6100d05f610183565b565b6100da610157565b60018190556040518181527f6bfd5e75539a9d2626425a2e2922675256b219fe546d63dad56011759b9a2f669060200160405180910390a150565b61011d610157565b6001600160a01b03811661014b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61015481610183565b50565b5f546001600160a01b031633146100d05760405163118cdaa760e01b8152336004820152602401610142565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156101e2575f80fd5b5035919050565b5f602082840312156101f9575f80fd5b81356001600160a01b038116811461020f575f80fd5b939250505056fea26469706673582212208ceb6551765ef644f74d294b6828ab559b3cb3bd587f0469a708731c6bdcc02164736f6c634300081a0033a26469706673582212201a1c5d27b8fd32ce5bec1aada58c24baaa26af57a62cd6ad40f73b056dcc6df164736f6c634300081a0033000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb000000000000000000000000f7d44d5a28d5af27a7f9c8fc6efe0129e554d7c4