2 txs
5 calls
constructor
constructor(address _nonfungiblePositionManager, address _universalRouter, address _zeroxAllowanceHolder, address _permit2)
functions
factory
viewfunction factory() view returns (address)
nonfungiblePositionManager
viewfunction nonfungiblePositionManager() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
permit2
viewfunction permit2() view returns (address)
universalRouter
viewfunction universalRouter() view returns (address)
vaults
viewfunction vaults(address) view returns (bool)
weth
viewfunction weth() view returns (address)
zeroxAllowanceHolder
viewfunction zeroxAllowanceHolder() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
execute
nonpayablefunction execute(uint256 tokenId, tuple instructions) returns (uint256 newTokenId)
executeWithPermit
nonpayablefunction executeWithPermit(uint256 tokenId, tuple instructions, uint8 v, bytes32 r, bytes32 s) returns (uint256 newTokenId)
onERC721Received
nonpayablefunction onERC721Received(address, address from, uint256 tokenId, bytes data) returns (bytes4)
renounceOwnership
nonpayablefunction renounceOwnership()
setVault
nonpayablefunction setVault(address _vault)
swap
payablefunction swap(tuple params) payable returns (uint256 amountOut)
swapAndIncreaseLiquidity
payablefunction swapAndIncreaseLiquidity(tuple params) payable returns (uint128 liquidity, uint256 amount0, uint256 amount1)
swapAndMint
payablefunction swapAndMint(tuple params) payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
events
ChangeRange
event ChangeRange(uint256 indexed tokenId, uint256 newTokenId)
CompoundFees
event CompoundFees(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Swap
event Swap(address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)
SwapAndIncreaseLiquidity
event SwapAndIncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
SwapAndMint
event SwapAndMint(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
VaultSet
event VaultSet(address newVault)
WithdrawAndCollectAndSwap
event WithdrawAndCollectAndSwap(uint256 indexed tokenId, address token, uint256 amount)
errors
AmountError
error AmountError()
ChainlinkPriceError
error ChainlinkPriceError()
CollateralFactorExceedsMax
error CollateralFactorExceedsMax()
CollateralFail
error CollateralFail()
CollateralValueLimit
error CollateralValueLimit()
CollectError
error CollectError()
DailyDebtIncreaseLimit
error DailyDebtIncreaseLimit()
DailyLendIncreaseLimit
error DailyLendIncreaseLimit()
DebtChanged
error DebtChanged()
EtherSendFailed
error EtherSendFailed()
ExceedsMaxReward
error ExceedsMaxReward()
GlobalDebtLimit
error GlobalDebtLimit()
GlobalLendLimit
error GlobalLendLimit()
InsufficientLiquidity
error InsufficientLiquidity()
InterestNotUpdated
error InterestNotUpdated()
InvalidAllowanceHolder
error InvalidAllowanceHolder()
InvalidConfig
error InvalidConfig()
InvalidPool
error InvalidPool()
InvalidToken
error InvalidToken()
MinLoanSize
error MinLoanSize()
MissingSwapData
error MissingSwapData()
NeedsRepay
error NeedsRepay()
NoEtherToken
error NoEtherToken()
NoLiquidity
error NoLiquidity()
NoSharesRepayed
error NoSharesRepayed()
NotConfigured
error NotConfigured()
NotEnoughReward
error NotEnoughReward()
NotLiquidatable
error NotLiquidatable()
NotReady
error NotReady()
NotSupportedFeeTier
error NotSupportedFeeTier()
NotSupportedWhatToDo
error NotSupportedWhatToDo()
NotWETH
error NotWETH()
PriceDifferenceExceeded
error PriceDifferenceExceeded()
Reentrancy
error Reentrancy()
SameRange
error SameRange()
SameToken
error SameToken()
SelfSend
error SelfSend()
SequencerDown
error SequencerDown()
SequencerGracePeriodNotOver
error SequencerGracePeriodNotOver()
SlippageError
error SlippageError()
SwapAmountTooLarge
error SwapAmountTooLarge()
SwapFailed
error SwapFailed()
TooMuchEtherSent
error TooMuchEtherSent()
TransferError
error TransferError()
TransformFailed
error TransformFailed()
TransformNotAllowed
error TransformNotAllowed()
TWAPCheckFailed
error TWAPCheckFailed()
Unauthorized
error Unauthorized()
WrongContract
error WrongContract()
creation bytecode
0x61014060405234801562000011575f80fd5b50604051620051d4380380620051d48339810160408190526200003491620001d2565b838383620000423362000150565b826001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200007f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000a5919062000237565b6001600160a01b03166080816001600160a01b031681525050826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000121919062000237565b6001600160a01b0390811660a05292831660c05290821660e0528116610100521661012052506200025c915050565b600180546001600160a01b03191690556200016b816200016e565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200016b575f80fd5b5f805f8060808587031215620001e6575f80fd5b8451620001f381620001bd565b60208601519094506200020681620001bd565b60408601519093506200021981620001bd565b60608601519092506200022c81620001bd565b939692955090935050565b5f6020828403121562000248575f80fd5b81516200025581620001bd565b9392505050565b60805160a05160c05160e0516101005161012051614e576200037d5f395f81816101830152611c8001525f818161042b0152818161217b015281816121a7015261224901525f818161023801528181612052015281816120b9015261210501525f818161038d015281816104d3015281816105710152818161060c015281816106dc01528181610bd401528181610d1e01528181610d48015281816125d901528181612691015281816128d001528181612bd501528181612dfe015281816137e00152818161380d01528181613842015261387101525f81816103c00152612fa701525f818161012e0152818161026b01528181612401015281816124460152818161309e015281816131180152818161317a01526131d70152614e575ff3fe60806040526004361061011e575f3560e01c8063a622ee7c1161009d578063d2a5e66d11610062578063d2a5e66d1461041a578063dc3253a01461044d578063e30c39781461046c578063f2fde38b14610489578063fa461e33146104a8575f80fd5b8063a622ee7c14610303578063b1902ece14610341578063b44a27221461037c578063c45a0155146103af578063c5f5280a146103e2575f80fd5b80636817031b116100e35780636817031b1461028d578063715018a6146102ac57806379ba5097146102c05780638176835d146102d45780638da5cb5b146102e7575f80fd5b806312261ee714610172578063150b7a02146101c257806321729922146101fa57806335a9e4df146102275780633fc8cef31461025a575f80fd5b3661016e57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461016c57604051635724f38560e01b815260040160405180910390fd5b005b5f80fd5b34801561017d575f80fd5b506101a57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101cd575f80fd5b506101e16101dc366004613c7c565b6104c7565b6040516001600160e01b031990911681526020016101b9565b348015610205575f80fd5b506102196102143660046140c0565b6105ea565b6040519081526020016101b9565b348015610232575f80fd5b506101a57f000000000000000000000000000000000000000000000000000000000000000081565b348015610265575f80fd5b506101a57f000000000000000000000000000000000000000000000000000000000000000081565b348015610298575f80fd5b5061016c6102a736600461412a565b61074f565b3480156102b7575f80fd5b5061016c6107b6565b3480156102cb575f80fd5b5061016c6107c9565b6102196102e236600461414c565b610848565b3480156102f2575f80fd5b505f546001600160a01b03166101a5565b34801561030e575f80fd5b5061033161031d36600461412a565b60026020525f908152604090205460ff1681565b60405190151581526020016101b9565b61035461034f366004614183565b610a4e565b604080519485526001600160801b0390931660208501529183015260608201526080016101b9565b348015610387575f80fd5b506101a57f000000000000000000000000000000000000000000000000000000000000000081565b3480156103ba575f80fd5b506101a57f000000000000000000000000000000000000000000000000000000000000000081565b6103f56103f03660046141ba565b610bac565b604080516001600160801b0390941684526020840192909252908201526060016101b9565b348015610425575f80fd5b506101a57f000000000000000000000000000000000000000000000000000000000000000081565b348015610458575f80fd5b506102196104673660046141f1565b610d18565b348015610477575f80fd5b506001546001600160a01b03166101a5565b348015610494575f80fd5b5061016c6104a336600461412a565b611829565b3480156104b3575f80fd5b5061016c6104c2366004614234565b611899565b5f336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461051157604051630d348b9b60e41b815260040160405180910390fd5b306001600160a01b0386160361053a57604051632797715160e01b815260040160405180910390fd5b5f61054783850185614282565b90506105538582610d18565b506102c0810151604051635c46a7ef60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163b88d4fde916105aa9130918b918b91600401614300565b5f604051808303815f87803b1580156105c1575f80fd5b505af11580156105d3573d5f803e3d5ffd5b50630a85bd0160e11b9a9950505050505050505050565b6040516331a9108f60e11b8152600481018690525f9033906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610651573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610675919061433d565b6001600160a01b03161461069b576040516282b42960e81b815260040160405180910390fd5b610240850151604051637ac2ff7b60e01b815230600482015260248101889052604481019190915260ff851660648201526084810184905260a481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637ac2ff7b9060c4015f604051808303815f87803b158015610725575f80fd5b505af1158015610737573d5f803e3d5ffd5b505050506107458686610d18565b9695505050505050565b610757611917565b6040516001600160a01b03821681527fe7ae49f883c825b05681b3e00e8be6fdea9ed2a8a45e4c6ecb9390fc44cce6159060200160405180910390a16001600160a01b03165f908152600260205260409020805460ff19166001179055565b6107be611917565b6107c75f611970565b565b60015433906001600160a01b0316811461083c5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084015b60405180910390fd5b61084581611970565b50565b5f610859604083016020840161412a565b6001600160a01b031661086f602084018461412a565b6001600160a01b0316036108965760405163100dac0560e11b815260040160405180910390fd5b6108a360e0830183614358565b1590506108f2575f806108b960e0850185614358565b8101906108c691906143bc565b90925090506108eb6108db602086018661412a565b5f8087604001355f808888611989565b5050610910565b610910610902602084018461412a565b5f8085604001355f80611ed9565b6040805160a081019091525f906109bc908061092f602087018761412a565b6001600160a01b03168152602001856020016020810190610950919061412a565b6001600160a01b031681526020018560400135815260200185606001358152602001858060a001906109829190614358565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250611f32565b9250905081156109ff576109ff6109d960a085016080860161412a565b6109e9604086016020870161412a565b846109fa60e0880160c089016144cb565b6123ed565b5f610a0e8260408601356144fa565b90508015610a4757610a47610a2960a086016080870161412a565b610a36602087018761412a565b836109fa60e0890160c08a016144cb565b5050919050565b5f808080610a62604086016020870161412a565b6001600160a01b0316610a78602087018761412a565b6001600160a01b031603610a9f5760405163100dac0560e11b815260040160405180910390fd5b610aad610280860186614358565b159050610b34575f80610ac4610280880188614358565b810190610ad191906143bc565b9092509050610b2d610ae6602089018961412a565b610af660408a0160208b0161412a565b610b086101608b016101408c0161412a565b60a08b013560c08c0135610b266101c08e01356101608f0135614513565b8888611989565b5050610b89565b610b89610b44602087018761412a565b610b54604088016020890161412a565b610b6661016089016101408a0161412a565b60a089013560c08a0135610b846101c08c01356101608d0135614513565b611ed9565b610b9d610b9586614526565b34151561252c565b92989197509550909350915050565b60405163133f757160e31b8152813560048201525f9081908190819081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906399fbab889060240161018060405180830381865afa158015610c1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3e91906146f4565b505050505050505093509350505085806101c00190610c5d9190614358565b159050610cc1575f80610c746101c0890189614358565b810190610c8191906143bc565b9092509050610cba8484610c9b60c08c0160a08d0161412a565b8b602001358c604001358d61012001358e60c00135610b269190614513565b5050610cf3565b610cf38282610cd660c08a0160a08b0161412a565b60208a013560408b0135610b846101208d013560c08e0135614513565b610d09610cff876147cd565b838334151561276a565b91989097509095509350505050565b5f610d437f000000000000000000000000000000000000000000000000000000000000000084612a0e565b5f805f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166399fbab88876040518263ffffffff1660e01b8152600401610d9491815260200190565b61018060405180830381865afa158015610db0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd491906146f4565b5050505097505050509450945050505f80866101e001516001600160801b03165f14610e1f57610e1988886101e001518961024001518a604001518b60600151612b56565b90925090505b610eb88886866001600160801b0380168b61014001516001600160801b031614610e6a57610e658b61014001516001600160801b031687610e609190614513565b612c4e565b610e73565b6001600160801b035b6101608c01516001600160801b0390811614610eab57610ea68c61016001516001600160801b031687610e609190614513565b612cba565b6001600160801b03612cba565b60808901519193509150821080610ed257508660e0015181105b15610ef057604051634ff64a9f60e01b815260040160405180910390fd5b600287516002811115610f0557610f056148d7565b036111f457846001600160a01b031687602001516001600160a01b031603610ff757610feb604051806101e001604052808a81526020018481526020018381526020018961026001516001600160a01b031681526020018961024001518152602001866001600160a01b031681526020018960e001518152602001896101000151815260200189610120015181526020015f81526020015f815260200160405180602001604052805f81525081526020018961020001518152602001896102200151815260200160405180602001604052805f81525081525086868a6102a0015161276a565b919450925090506111a2565b836001600160a01b031687602001516001600160a01b0316036110d657610feb604051806101e001604052808a81526020018481526020018381526020018961026001516001600160a01b031681526020018961024001518152602001876001600160a01b031681526020015f81526020015f815260200160405180602001604052805f8152508152602001896080015181526020018960a0015181526020018960c0015181526020018961020001518152602001896102200151815260200160405180602001604052805f81525081525086868a6102a0015161276a565b61119a604051806101e001604052808a81526020018481526020018381526020018961026001516001600160a01b0316815260200189610240015181526020015f6001600160a01b031681526020015f81526020015f815260200160405180602001604052805f81525081526020015f81526020015f815260200160405180602001604052805f81525081526020018961020001518152602001896102200151815260200160405180602001604052805f81525081525086868a6102a0015161276a565b919450925090505b604080516001600160801b03851681526020810184905290810182905288907faede78842f79342b251fe687b26b9f00d35eec5b0d21d44c283dd01a5ad7c136906060015b60405180910390a261181e565b5f87516002811115611208576112086148d7565b036115f957846001600160a01b031687602001516001600160a01b03160361135b5761134f604051806102a00160405280876001600160a01b03168152602001866001600160a01b0316815260200189610180015162ffffff168152602001896101a0015160020b8152602001896101c0015160020b81526020018481526020018381526020018961026001516001600160a01b031681526020018961028001516001600160a01b031681526020018961024001518152602001866001600160a01b031681526020018960e001518152602001896101000151815260200189610120015181526020015f81526020015f815260200160405180602001604052805f815250815260200189610200015181526020018961022001518152602001896102e00151815260200160405180602001604052805f815250815250886102a0015161252c565b509197506115c7915050565b836001600160a01b031687602001516001600160a01b03160361149b5761134f604051806102a00160405280876001600160a01b03168152602001866001600160a01b0316815260200189610180015162ffffff168152602001896101a0015160020b8152602001896101c0015160020b81526020018481526020018381526020018961026001516001600160a01b031681526020018961028001516001600160a01b031681526020018961024001518152602001876001600160a01b031681526020015f81526020015f815260200160405180602001604052805f8152508152602001896080015181526020018960a0015181526020018960c00151815260200189610200015181526020018961022001518152602001896102e00151815260200160405180602001604052805f815250815250886102a0015161252c565b6115c0604051806102a00160405280876001600160a01b03168152602001866001600160a01b0316815260200189610180015162ffffff168152602001896101a0015160020b8152602001896101c0015160020b81526020018481526020018381526020018961026001516001600160a01b031681526020018961028001516001600160a01b0316815260200189610240015181526020015f6001600160a01b031681526020015f81526020015f815260200160405180602001604052805f81525081526020015f81526020015f815260200160405180602001604052805f815250815260200189610200015181526020018961022001518152602001896102e00151815260200160405180602001604052805f815250815250886102a0015161252c565b5091975050505b877f2d3b242342e1e892c96167e80cea1f82a3961348e1576320d5e93deaa75d3689876040516111e791815260200190565b60018751600281111561160e5761160e6148d7565b03611805575f87602001516001600160a01b0316866001600160a01b0316146116bf575f806116806040518060a001604052808a6001600160a01b031681526020018c602001516001600160a01b031681526020018781526020018c60a0015181526020018c60c00151815250611f32565b91509150848210156116ac576102608a01516116ac90896116a185896144fa565b8d6102a001516123ed565b6116b68184614513565b925050506116cc565b6116c98382614513565b90505b87602001516001600160a01b0316856001600160a01b03161461176e575f8061173a6040518060a00160405280896001600160a01b031681526020018c602001516001600160a01b031681526020018681526020018c610100015181526020018c6101200151815250611f32565b915091508382101561175b576102608a015161175b90886116a185886144fa565b6117658184614513565b9250505061177b565b6117788282614513565b90505b8015801590611796575060208801516001600160a01b031615155b156117b5576117b58861026001518960200151838b6102a001516123ed565b602080890151604080516001600160a01b0390921682529181018390528a917ff8aacb16b34d229aa53d44a7759a3741b5c098e099666e51a4ae9d66a5956c43910160405180910390a25061181e565b60405163290db76760e01b815260040160405180910390fd5b505050505092915050565b611831611917565b600180546001600160a01b0383166001600160a01b031990911681179091556118615f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f8413806118a657505f83135b6118ae575f80fd5b5f80806118bd848601866148eb565b91945092509050336118d0848484612fa1565b6001600160a01b0316146118f6576040516282b42960e81b815260040160405180910390fd5b61190e83335f8a136119085788612fde565b89612fde565b50505050505050565b5f546001600160a01b031633146107c75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610833565b600180546001600160a01b031916905561084581613041565b6119c26040518060e001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6119d0898989898989613090565b6040840152602083015281528251515f906001600160401b038111156119f8576119f8613ce9565b604051908082528060200260200182016040528015611a3c57816020015b604080518082019091525f8082526020820152815260200190600190039081611a165790505b50825190915015611af5576040516370a0823160e01b81523060048201526001600160a01b038b16906370a0823190602401602060405180830381865afa158015611a89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aad9190614933565b608083015260408051808201909152308152825160208201526060830180518391611ad78261494a565b905281518110611ae957611ae9614962565b60200260200101819052505b602082015115611bb0576040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa158015611b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b659190614933565b60a083015260408051808201909152308152602080840151908201526060830180518391611b928261494a565b905281518110611ba457611ba4614962565b60200260200101819052505b604082015115611c69576040516370a0823160e01b81523060048201526001600160a01b038916906370a0823190602401602060405180830381865afa158015611bfc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c209190614933565b60c08301526040805180820182523081529083015160208201526060830180518391611c4b8261494a565b905281518110611c5d57611c5d614962565b60200260200101819052505b60405163edd9444b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063edd9444b90611cbb9087908590339089906004016149cd565b5f604051808303815f87803b158015611cd2575f80fd5b505af1158015611ce4573d5f803e3d5ffd5b50508351159150611d86905057815160808301516040516370a0823160e01b81523060048201526001600160a01b038d16906370a0823190602401602060405180830381865afa158015611d3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5e9190614933565b611d6891906144fa565b14611d86576040516313ff771f60e21b815260040160405180910390fd5b602082015115611e2857602082015160a08301516040516370a0823160e01b81523060048201526001600160a01b038c16906370a0823190602401602060405180830381865afa158015611ddc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e009190614933565b611e0a91906144fa565b14611e28576040516313ff771f60e21b815260040160405180910390fd5b604082015115611ecd5760408083015160c084015191516370a0823160e01b81523060048201529091906001600160a01b038b16906370a0823190602401602060405180830381865afa158015611e81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ea59190614933565b611eaf91906144fa565b14611ecd576040516313ff771f60e21b815260040160405180910390fd5b50505050505050505050565b5f805f611eea898989898989613090565b925092509250825f14611f0357611f03893330866132de565b8115611f1557611f15883330856132de565b8015611f2757611f27873330846132de565b505050505050505050565b5f8082604001515f14158015611f4c575060808301515115155b8015611f64575060208301516001600160a01b031615155b156123e85782516040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611fae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd29190614933565b60208501516040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561201f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120439190614933565b608086015160208101519192507f0000000000000000000000000000000000000000000000000000000000000000918214918215612172575f8089608001518060200190518101906120959190614ac6565b915091505f818060200190518101906120ae9190614b09565b90506120e28b5f01517f00000000000000000000000000000000000000000000000000000000000000008d60400151612fde565b805160208201516040808401519051630d64d59360e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693633593564c9361213d939192909190600401614c0b565b5f604051808303815f87803b158015612154575f80fd5b505af1158015612166573d5f803e3d5ffd5b50505050505050612270565b6121a4885f01517f00000000000000000000000000000000000000000000000000000000000000008a60400151613316565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031689608001516040516121e19190614c84565b5f604051808303815f865af19150503d805f811461221a576040519150601f19603f3d011682016040523d82523d5f602084013e61221f565b606091505b50509050806122415760405163081ceff360e41b815260040160405180910390fd5b885161226e907f00000000000000000000000000000000000000000000000000000000000000005f6133c0565b505b87516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156122b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122d99190614933565b6122e390866144fa565b60208901516040516370a0823160e01b815230600482015291985085916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123549190614933565b61235e91906144fa565b9550876060015186101561238557604051630d4205a160e11b815260040160405180910390fd5b87602001516001600160a01b0316885f01516001600160a01b03167ffa2dda1cc1b86e41239702756b13effbc1a092b5c57e3ad320fbe4f3b13fe23589896040516123da929190918252602082015260400190565b60405180910390a350505050505b915091565b80801561242b5750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316145b1561251b57604051632e1a7d4d60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b15801561248f575f80fd5b505af11580156124a1573d5f803e3d5ffd5b505050505f846001600160a01b0316836040515f6040518083038185875af1925050503d805f81146124ee576040519150601f19603f3d011682016040523d82523d5f602084013e6124f3565b606091505b505090508061251557604051637cd69c3960e11b815260040160405180910390fd5b50612526565b612526838584612fde565b50505050565b5f805f805f8061253c88886134d3565b915091505f6040518061016001604052808a5f01516001600160a01b031681526020018a602001516001600160a01b031681526020018a6040015162ffffff1681526020018a6060015160020b81526020018a6080015160020b81526020018481526020018381526020018a610220015181526020018a61024001518152602001306001600160a01b031681526020018a610120015181525090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166388316456826040518263ffffffff1660e01b81526004016126239190614c9f565b6080604051808303815f875af115801561263f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126639190614d63565b6101008d01516102608e0151604051635c46a7ef60e11b8152959c50939a5091985096506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263b88d4fde926126ca92309290918d91600401614300565b5f604051808303815f87803b1580156126e1575f80fd5b505af11580156126f3573d5f803e3d5ffd5b5050604080516001600160801b038a168152602081018990529081018790528992507fdbed0571af71402c681d3b0a1f08d80aa2245c9adb30e12d215356c7a274fcf9915060600160405180910390a261275e8960e001518a5f01518b6020015186868a8a8f61389d565b50505092959194509250565b5f805f805f612889604051806102a001604052808a6001600160a01b03168152602001896001600160a01b031681526020015f62ffffff1681526020015f60020b81526020015f60020b81526020018b6020015181526020018b6040015181526020018b606001516001600160a01b031681526020018b606001516001600160a01b031681526020018b6080015181526020018b60a001516001600160a01b031681526020018b60c0015181526020018b60e0015181526020018b610100015181526020018b610120015181526020018b610140015181526020018b610160015181526020018b610180015181526020018b6101a00151815260200160405180602001604052805f81525081526020018b6101c00151815250876134d3565b915091505f6040518060c001604052808b5f015181526020018481526020018381526020018b610180015181526020018b6101a0015181526020018b6080015181525090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663219f5d17826040518263ffffffff1660e01b815260040161295891905f60c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b6060604051808303815f875af1158015612974573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129989190614d9e565b8c51604080516001600160801b0386168152602081018590529081018390529399509197509550907f1aa7d7662b161a8d4058004091e4c60474753d2f085db526dfb22da59838d0a79060600160405180910390a2612a018a606001518a8a86868a8a8e61389d565b5050509450945094915050565b335f9081526002602052604090205460ff1615612aac575f336001600160a01b031663ae41abab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a869190614933565b9050808214612aa7576040516282b42960e81b815260040160405180910390fd5b505050565b6040516331a9108f60e11b8152600481018290525f906001600160a01b03841690636352211e90602401602060405180830381865afa158015612af1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b15919061433d565b90506001600160a01b0381163314801590612b3957506001600160a01b0381163014155b15612aa7576040516282b42960e81b815260040160405180910390fd5b5f806001600160801b03861615612c44576040805160a0810182528881526001600160801b038089166020830190815282840188815260608401888152608085018b81529551630624e65f60e11b8152945160048601529151909216602484015290516044830152516064820152905160848201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630c49ccbe9060a40160408051808303815f875af1158015612c1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c3e9190614dd2565b90925090505b9550959350505050565b5f6001600160801b03821115612cb65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610833565b5090565b6040516370a0823160e01b81523060048201525f90819081906001600160a01b038816906370a0823190602401602060405180830381865afa158015612d02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d269190614933565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038816906370a0823190602401602060405180830381865afa158015612d6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d919190614933565b604080516080810182528b815230602082019081526001600160801b038a81168385019081528a821660608501908152945163fc6f786560e01b81529351600485015291516001600160a01b039081166024850152915181166044840152925190921660648201529192507f0000000000000000000000000000000000000000000000000000000000000000169063fc6f78659060840160408051808303815f875af1158015612e43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e679190614dd2565b6040516370a0823160e01b815230600482015291955093505f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015612eb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed49190614933565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015612f1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f3f9190614933565b905085612f4c85846144fa565b14612f6a57604051638ad721cb60e01b815260040160405180910390fd5b84612f7584836144fa565b14612f9357604051638ad721cb60e01b815260040160405180910390fd5b505050509550959350505050565b5f612fd67f0000000000000000000000000000000000000000000000000000000000000000612fd18686866138db565b613945565b949350505050565b6040516001600160a01b038316602482015260448101829052612aa790849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613a2b565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f80808080803415613240577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156130f5575f80fd5b505af1158015613107573d5f803e3d5ffd5b50505050508b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03160361316e5734925088831115613169576040516307e205e160e41b815260040160405180910390fd5b613240565b8a6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036131cb5734915087821115613169576040516307e205e160e41b815260040160405180910390fd5b896001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03160361322757503486811115613169576040516307e205e160e41b815260040160405180910390fd5b6040516392b0337360e01b815260040160405180910390fd5b8289111561325557613252838a6144fa565b95505b8188111561326a5761326782896144fa565b94505b808711801561328157506001600160a01b038a1615155b801561329f5750896001600160a01b03168c6001600160a01b031614155b80156132bd5750896001600160a01b03168b6001600160a01b031614155b156132cf576132cc81886144fa565b93505b50505096509650969350505050565b6040516001600160a01b03808516602483015283166044820152606481018290526125269085906323b872dd60e01b9060840161300a565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015613363573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133879190614933565b90506125268463095ea7b360e01b856133a08686614513565b6040516001600160a01b039092166024830152604482015260640161300a565b8015806134385750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613412573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134369190614933565b155b6134a35760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610833565b6040516001600160a01b038316602482015260448101829052612aa790849063095ea7b360e01b9060640161300a565b5f80835f01516001600160a01b03168461014001516001600160a01b0316036135a857836101c001518460a00151101561352057604051634ff64a9f60e01b815260040160405180910390fd5b5f806135796040518060a00160405280885f01516001600160a01b0316815260200188602001516001600160a01b03168152602001886101c001518152602001886101e001518152602001886102000151815250611f32565b91509150818660a0015161358d91906144fa565b9350808660c0015161359f9190614513565b925050506137d2565b83602001516001600160a01b03168461014001516001600160a01b03160361367c578361016001518460c0015110156135f457604051634ff64a9f60e01b815260040160405180910390fd5b5f8061364d6040518060a0016040528088602001516001600160a01b03168152602001885f01516001600160a01b0316815260200188610160015181526020018861018001518152602001886101a00151815250611f32565b91509150818660c0015161366191906144fa565b9250808660a001516136739190614513565b935050506137d2565b6101408401516001600160a01b0316156137c5575f806136ea6040518060a001604052808861014001516001600160a01b03168152602001885f01516001600160a01b0316815260200188610160015181526020018861018001518152602001886101a00151815250611f32565b915091505f806137496040518060a001604052808a61014001516001600160a01b031681526020018a602001516001600160a01b031681526020018a6101c0015181526020018a6101e0015181526020018a6102000151815250611f32565b91509150828860a0015161375d9190614513565b9550808860c0015161376f9190614513565b94505f82858a6101c001518b610160015161378a9190614513565b61379491906144fa565b61379e91906144fa565b905080156137bb576137bb8960e001518a6101400151838b6123ed565b50505050506137d2565b505060a082015160c08301515b8115613832578351613805907f00000000000000000000000000000000000000000000000000000000000000005f6133c0565b8351613832907f000000000000000000000000000000000000000000000000000000000000000084613316565b80156138965761386784602001517f00000000000000000000000000000000000000000000000000000000000000005f6133c0565b61389684602001517f000000000000000000000000000000000000000000000000000000000000000083613316565b9250929050565b5f6138a884876144fa565b90505f6138b584876144fa565b905081156138c9576138c98a8a84866123ed565b8015611ecd57611ecd8a8983866123ed565b604080516060810182525f8082526020820181905291810191909152826001600160a01b0316846001600160a01b03161115613915579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b5f81602001516001600160a01b0316825f01516001600160a01b03161061396a575f80fd5b815160208084015160408086015181516001600160a01b0395861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201206001600160f81b031960a08401529085901b6bffffffffffffffffffffffff191660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f50160408051601f1981840301815291905280516020909101209392505050565b5f613a7f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613afe9092919063ffffffff16565b905080515f1480613a9f575080806020019051810190613a9f9190614df4565b612aa75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610833565b6060612fd684845f85855f80866001600160a01b03168587604051613b239190614c84565b5f6040518083038185875af1925050503d805f8114613b5d576040519150601f19603f3d011682016040523d82523d5f602084013e613b62565b606091505b5091509150613b7387838387613b7e565b979650505050505050565b60608315613bec5782515f03613be5576001600160a01b0385163b613be55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610833565b5081612fd6565b612fd68383815115613c015781518083602001fd5b8060405162461bcd60e51b81526004016108339190614e0f565b6001600160a01b0381168114610845575f80fd5b8035613c3a81613c1b565b919050565b5f8083601f840112613c4f575f80fd5b5081356001600160401b03811115613c65575f80fd5b602083019150836020828501011115613896575f80fd5b5f805f805f60808688031215613c90575f80fd5b8535613c9b81613c1b565b94506020860135613cab81613c1b565b93506040860135925060608601356001600160401b03811115613ccc575f80fd5b613cd888828901613c3f565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b60405161030081016001600160401b0381118282101715613d2057613d20613ce9565b60405290565b604051606081016001600160401b0381118282101715613d2057613d20613ce9565b604080519081016001600160401b0381118282101715613d2057613d20613ce9565b6040516102a081016001600160401b0381118282101715613d2057613d20613ce9565b6040516101e081016001600160401b0381118282101715613d2057613d20613ce9565b604051601f8201601f191681016001600160401b0381118282101715613dd857613dd8613ce9565b604052919050565b803560038110613c3a575f80fd5b5f6001600160401b03821115613e0657613e06613ce9565b50601f01601f191660200190565b5f82601f830112613e23575f80fd5b8135613e36613e3182613dee565b613db0565b818152846020838601011115613e4a575f80fd5b816020850160208301375f918101602001919091529392505050565b6001600160801b0381168114610845575f80fd5b8035613c3a81613e66565b62ffffff81168114610845575f80fd5b8035613c3a81613e85565b8060020b8114610845575f80fd5b8035613c3a81613ea0565b8015158114610845575f80fd5b8035613c3a81613eb9565b5f6103008284031215613ee2575f80fd5b613eea613cfd565b9050613ef582613de0565b8152613f0360208301613c2f565b602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c08201356001600160401b0380821115613f49575f80fd5b613f5585838601613e14565b60c084015260e08481013590840152610100808501359084015261012091508184013581811115613f84575f80fd5b613f9086828701613e14565b83850152506101409150613fa5828501613e7a565b828401526101609150613fb9828501613e7a565b828401526101809150613fcd828501613e95565b828401526101a09150613fe1828501613eae565b828401526101c09150613ff5828501613eae565b828401526101e09150614009828501613e7a565b9183019190915261020083810135908301526102208084013590830152610240808401359083015261026090614040828501613c2f565b828401526102809150614054828501613c2f565b828401526102a09150614068828501613ec6565b828401526102c091508184013581811115614081575f80fd5b61408d86828701613e14565b83850152506102e0915081840135818111156140a7575f80fd5b6140b386828701613e14565b8385015250505092915050565b5f805f805f60a086880312156140d4575f80fd5b8535945060208601356001600160401b038111156140f0575f80fd5b6140fc88828901613ed1565b945050604086013560ff81168114614112575f80fd5b94979396509394606081013594506080013592915050565b5f6020828403121561413a575f80fd5b813561414581613c1b565b9392505050565b5f6020828403121561415c575f80fd5b81356001600160401b03811115614171575f80fd5b82016101008185031215614145575f80fd5b5f60208284031215614193575f80fd5b81356001600160401b038111156141a8575f80fd5b82016102a08185031215614145575f80fd5b5f602082840312156141ca575f80fd5b81356001600160401b038111156141df575f80fd5b82016101e08185031215614145575f80fd5b5f8060408385031215614202575f80fd5b8235915060208301356001600160401b0381111561421e575f80fd5b61422a85828601613ed1565b9150509250929050565b5f805f8060608587031215614247575f80fd5b843593506020850135925060408501356001600160401b0381111561426a575f80fd5b61427687828801613c3f565b95989497509550505050565b5f60208284031215614292575f80fd5b81356001600160401b038111156142a7575f80fd5b612fd684828501613ed1565b5f5b838110156142cd5781810151838201526020016142b5565b50505f910152565b5f81518084526142ec8160208601602086016142b3565b601f01601f19169290920160200192915050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90610745908301846142d5565b8051613c3a81613c1b565b5f6020828403121561434d575f80fd5b815161414581613c1b565b5f808335601e1984360301811261436d575f80fd5b8301803591506001600160401b03821115614386575f80fd5b602001915036819003821315613896575f80fd5b5f6001600160401b038211156143b2576143b2613ce9565b5060051b60200190565b5f8060408084860312156143ce575f80fd5b83356001600160401b03808211156143e4575f80fd5b90850190606082880312156143f7575f80fd5b6143ff613d26565b82358281111561440d575f80fd5b8301601f8101891361441d575f80fd5b8035602061442d613e318361439a565b82815260069290921b8301810191818101908c84111561444b575f80fd5b938201935b838510156144925788858e031215614466575f80fd5b61446e613d48565b853561447981613c1b565b8152858401358482015282529388019390820190614450565b85525085810135818501526040808701359085015292975050508601359250808311156144bd575f80fd5b505061422a85828601613e14565b5f602082840312156144db575f80fd5b813561414581613eb9565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561450d5761450d6144e6565b92915050565b8082018082111561450d5761450d6144e6565b5f6102a08236031215614537575f80fd5b61453f613d6a565b61454883613c2f565b815261455660208401613c2f565b602082015261456760408401613e95565b604082015261457860608401613eae565b606082015261458960808401613eae565b608082015260a083013560a082015260c083013560c08201526145ae60e08401613c2f565b60e08201526101006145c1818501613c2f565b9082015261012083810135908201526101406145de818501613c2f565b90820152610160838101359082015261018080840135908201526101a0808401356001600160401b0380821115614613575f80fd5b61461f36838801613e14565b92840192909252506101c084810135908301526101e0808501359083015261020090818501359080821115614652575f80fd5b61465e36838801613e14565b92840192909252506102208481013590830152610240808501359083015261026090818501359080821115614691575f80fd5b61469d36838801613e14565b838501526102809250828601359150808211156146b8575f80fd5b506146c536828701613e14565b918301919091525092915050565b8051613c3a81613e85565b8051613c3a81613ea0565b8051613c3a81613e66565b5f805f805f805f805f805f806101808d8f031215614710575f80fd5b8c516bffffffffffffffffffffffff8116811461472b575f80fd5b9b5061473960208e01614332565b9a5061474760408e01614332565b995061475560608e01614332565b985061476360808e016146d3565b975061477160a08e016146de565b965061477f60c08e016146de565b955061478d60e08e016146e9565b94506101008d015193506101208d015192506147ac6101408e016146e9565b91506147bb6101608e016146e9565b90509295989b509295989b509295989b565b5f6101e082360312156147de575f80fd5b6147e6613d8d565b82358152602083013560208201526040830135604082015261480a60608401613c2f565b60608201526080830135608082015261482560a08401613c2f565b60a082015260c083013560c082015260e083013560e0820152610100808401356001600160401b0380821115614859575f80fd5b61486536838801613e14565b92840192909252506101208481013590830152610140808501359083015261016090818501359080821115614898575f80fd5b6148a436838801613e14565b928401929092525061018084810135908301526101a080850135908301526101c0908185013590808211156146b8575f80fd5b634e487b7160e01b5f52602160045260245ffd5b5f805f606084860312156148fd575f80fd5b833561490881613c1b565b9250602084013561491881613c1b565b9150604084013561492881613e85565b809150509250925092565b5f60208284031215614943575f80fd5b5051919050565b5f6001820161495b5761495b6144e6565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f815180845260208085019450602084015f5b838110156149c2576149af87835180516001600160a01b03168252602090810151910152565b6040969096019590820190600101614989565b509495945050505050565b608081525f60e0820186516060608085015281815180845261010086019150602093506020830192505f5b81811015614a3157614a1e83855180516001600160a01b03168252602090810151910152565b92840192604092909201916001016149f8565b5050602089015160a0860152604089015160c08601528481036020860152614a598189614976565b92505050614a7260408401866001600160a01b03169052565b8281036060840152613b7381856142d5565b5f82601f830112614a93575f80fd5b8151614aa1613e3182613dee565b818152846020838601011115614ab5575f80fd5b612fd68260208301602087016142b3565b5f8060408385031215614ad7575f80fd5b8251614ae281613c1b565b60208401519092506001600160401b03811115614afd575f80fd5b61422a85828601614a84565b5f6020808385031215614b1a575f80fd5b82516001600160401b0380821115614b30575f80fd5b9084019060608287031215614b43575f80fd5b614b4b613d26565b825182811115614b59575f80fd5b614b6588828601614a84565b8252508383015182811115614b78575f80fd5b8301601f81018813614b88575f80fd5b8051614b96613e318261439a565b81815260059190911b8201860190868101908a831115614bb4575f80fd5b8784015b83811015614bea57805187811115614bce575f80fd5b614bdc8d8b83890101614a84565b845250918801918801614bb8565b50808886015250505050604083015160408201528094505050505092915050565b606081525f614c1d60608301866142d5565b6020838203818501528186518084528284019150828160051b8501018389015f5b83811015614c6c57601f19878403018552614c5a8383516142d5565b94860194925090850190600101614c3e565b50508095505050505050826040830152949350505050565b5f8251614c958184602087016142b3565b9190910192915050565b81516001600160a01b0316815261016081016020830151614ccb60208401826001600160a01b03169052565b506040830151614ce2604084018262ffffff169052565b506060830151614cf7606084018260020b9052565b506080830151614d0c608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151614d52828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215614d76575f80fd5b845193506020850151614d8881613e66565b6040860151606090960151949790965092505050565b5f805f60608486031215614db0575f80fd5b8351614dbb81613e66565b602085015160409095015190969495509392505050565b5f8060408385031215614de3575f80fd5b505080516020909101519092909150565b5f60208284031215614e04575f80fd5b815161414581613eb9565b602081525f61414560208301846142d556fea2646970667358221220131b1a42f93d52992fecda430d04a5b93038d17b558ea6a407ccaa86d7db535e64736f6c63430008180033000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88000000000000000000000000a51afafe0263b40edaef0df8781ea9aa03e381a30000000000000000000000000000000000001ff3684f28c67538d4d072c22734000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3