0 txs
20 calls
constructor
constructor()
functions
_lpEngine
viewfunction _lpEngine() view returns (address)
_pool
viewfunction _pool() view returns (address)
_posMgr
viewfunction _posMgr() view returns (address)
_tokenId
viewfunction _tokenId() view returns (uint256)
AddLPP
viewfunction AddLPP() view returns (uint256)
calculateCorrectAmount
viewfunction calculateCorrectAmount(uint256 totalETH) view returns (uint256, uint256)
computeAddress
viewfunction computeAddress(address token0, address token1, uint24 fee) view returns (address)
CURVE_POOL
viewfunction CURVE_POOL() view returns (address)
curvePool
viewfunction curvePool() view returns (address)
feeForETHLINK
viewfunction feeForETHLINK() view returns (uint24)
feeForHONOUSDC
viewfunction feeForHONOUSDC() view returns (uint24)
getAmount1Needed
viewfunction getAmount1Needed() view returns (uint256)
HONO
viewfunction HONO() view returns (address)
HonoBackingP
viewfunction HonoBackingP() view returns (uint256)
HONOStakingReward
viewfunction HONOStakingReward() view returns (address)
HONOStakingRewardP
viewfunction HONOStakingRewardP() view returns (uint256)
LINK
viewfunction LINK() view returns (address)
LockAndStakePool
viewfunction LockAndStakePool() view returns (address)
LockAndStakePoolP
viewfunction LockAndStakePoolP() view returns (uint256)
minimumETHToDistribute
viewfunction minimumETHToDistribute() view returns (uint256)
minimumHONOToRedeem
viewfunction minimumHONOToRedeem() view returns (uint256)
minimumLinkToSwap
viewfunction minimumLinkToSwap() view returns (uint256)
minimumUSDCToSwap
viewfunction minimumUSDCToSwap() view returns (uint256)
minimumWETHToRedeem
viewfunction minimumWETHToRedeem() view returns (uint256)
OperationWallet
viewfunction OperationWallet() view returns (address)
OperationWalletP
viewfunction OperationWalletP() view returns (uint256)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
quickSwap
viewfunction quickSwap() view returns (address)
router
viewfunction router() view returns (address)
slippageForETHLINK
viewfunction slippageForETHLINK() view returns (uint24)
sqrt_price_high
viewfunction sqrt_price_high() view returns (uint256)
sqrt_price_low
viewfunction sqrt_price_low() view returns (uint256)
stETH
viewfunction stETH() view returns (address)
StETH
viewfunction StETH() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
USDC
viewfunction USDC() view returns (address)
WETH
viewfunction WETH() view returns (address)
wstETH
viewfunction wstETH() view returns (address)
wstETHContract
viewfunction wstETHContract() view returns (address)
distributeFee
nonpayablefunction distributeFee()
initialize
nonpayablefunction initialize(address honoAddress, address posMgr, address lpengine, uint256 tokenId, address routerAddress, address weth, address link, address usdc, address _stETH, address _wstETH, address _lockstakePool)
preConfig
nonpayablefunction preConfig(uint256 tokenId)
recoverTokens
nonpayablefunction recoverTokens(address tokenAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
swapAndAddLp
payablefunction swapAndAddLp() payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateAddLPP
nonpayablefunction updateAddLPP(uint256 _BP)
updateETHLinkFee
nonpayablefunction updateETHLinkFee(uint24 _BP)
updateHonoBackingP
nonpayablefunction updateHonoBackingP(uint256 _BP)
updateHONOStakingReward
nonpayablefunction updateHONOStakingReward(address _newRecipient, uint256 _BP)
updateHONOUSDCFee
nonpayablefunction updateHONOUSDCFee(uint24 _BP)
updateLockAndStakePool
nonpayablefunction updateLockAndStakePool(address _newRecipient, uint256 _BP)
updateLpEngine
nonpayablefunction updateLpEngine(address lpEngine)
updateminimumETHToDistribute
nonpayablefunction updateminimumETHToDistribute(uint256 _newAmount)
updateminimumHONOToRedeem
nonpayablefunction updateminimumHONOToRedeem(uint256 _newAmount)
updateMinimumLinkToSwap
nonpayablefunction updateMinimumLinkToSwap(uint256 _newAmount)
updateMinimumUSDCToSwap
nonpayablefunction updateMinimumUSDCToSwap(uint256 _newAmount)
updateminimumWETHToRedeem
nonpayablefunction updateminimumWETHToRedeem(uint256 _newAmount)
updateOperationWallet
nonpayablefunction updateOperationWallet(address _newRecipient, uint256 _BP)
updateQuickSwap
nonpayablefunction updateQuickSwap(address _quickSwap)
updateRouter
nonpayablefunction updateRouter(address routerAddress)
updateslippageForETHLINK
nonpayablefunction updateslippageForETHLINK(uint24 _newAmount)
updatestETH
nonpayablefunction updatestETH(address _stETH)
updateTokenId
nonpayablefunction updateTokenId(uint256 tokenId)
updateWstETH
nonpayablefunction updateWstETH(address _wstETH)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawFunds
nonpayablefunction withdrawFunds()
events
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RevenueSent
event RevenueSent(uint256 honoAmount, uint256 timestamp)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161441962000104600039600081816125350152818161255e015261269f01526144196000f3fe6080604052600436106103f35760003560e01c8063715018a611610208578063c1fe3e4811610118578063dd14dd90116100ab578063f2fde38b1161007a578063f2fde38b14610b7e578063f317502814610b9e578063f887ea4014610bb4578063fbcd3abb14610bd4578063fffa3ced14610bf457600080fd5b8063dd14dd9014610afb578063deba41b314610b1e578063e3c3afac14610b3e578063f2cd80ee14610b5e57600080fd5b8063d75f5de1116100e7578063d75f5de114610a86578063daaf850114610aa6578063dad2734d14610ac6578063dc851dce14610adb57600080fd5b8063c1fe3e4814610a06578063c2d3ee4014610a26578063c6dda2de14610a46578063c851cc3214610a6657600080fd5b806398ccb6ca1161019b578063ad3cb1cc1161016a578063ad3cb1cc14610952578063ad5c464814610990578063aea385e0146109b0578063ba48b416146109d0578063baa08f09146109e657600080fd5b806398ccb6ca146108bd5780639f468087146108f2578063aaea23a014610912578063ab7da76b1461093257600080fd5b806389a30271116101d757806389a30271146108525780638c887952146108725780638da5cb5b146108885780639883523f1461089d57600080fd5b8063715018a6146107df5780637b20ef22146107f457806383f5b3a81461081457806386a8b4b51461082a57600080fd5b80632ef217a41161030357806349cafc7f116102965780634f1ef286116102655780634f1ef2861461077957806350f9df021461078c57806352d1902d146107a25780635ce2d0cb146107b7578063636fc28b146107bf57600080fd5b806349cafc7f146106f65780634aa07e64146107195780634ba19170146107395780634c01091d1461075957600080fd5b806344f29b80116102d257806344f29b801461067657806345965add1461069657806345c5c66f146106b657806349ac0916146106d657600080fd5b80632ef217a4146106005780633ea02eac146106205780633ec8bde8146106405780634086571e1461065657600080fd5b806320b127211161038657806324600fc31161035557806324600fc31461057a578063248225141461058f57806326c4e60d146105a5578063275fb3b9146105ba5780632acfa9e3146105d057600080fd5b806320b1272114610504578063218751b214610524578063222f950f1461054457806322fdd1f51461055a57600080fd5b806316114acd116103c257806316114acd146104805780631643f794146104a05780631b6b6d23146104b65780631d136bfb146104ee57600080fd5b8063049fd03d146103ff5780630a4c22dc146104215780630f2ea48b1461044a5780631336e2a41461046057600080fd5b366103fa57005b600080fd5b34801561040b57600080fd5b5061041f61041a366004613c04565b610c14565b005b34801561042d57600080fd5b5061043760175481565b6040519081526020015b60405180910390f35b34801561045657600080fd5b5061043760135481565b34801561046c57600080fd5b5061041f61047b366004613c04565b610c36565b34801561048c57600080fd5b5061041f61049b366004613c46565b610c65565b3480156104ac57600080fd5b5061043760105481565b3480156104c257600080fd5b506003546104d6906001600160a01b031681565b6040516001600160a01b039091168152602001610441565b3480156104fa57600080fd5b5061043760165481565b34801561051057600080fd5b506104d661051f366004613c63565b610d8b565b34801561053057600080fd5b50600a546104d6906001600160a01b031681565b34801561055057600080fd5b5061043760125481565b34801561056657600080fd5b5061041f610575366004613c04565b610e48565b34801561058657600080fd5b5061041f610e74565b34801561059b57600080fd5b50610437600d5481565b3480156105b157600080fd5b5061041f610f05565b3480156105c657600080fd5b50610437600f5481565b3480156105dc57600080fd5b50600e546105ec9062ffffff1681565b60405162ffffff9091168152602001610441565b34801561060c57600080fd5b5061041f61061b366004613c46565b610f49565b34801561062c57600080fd5b50601b546104d6906001600160a01b031681565b34801561064c57600080fd5b5061043760115481565b34801561066257600080fd5b506019546104d6906001600160a01b031681565b34801561068257600080fd5b5061041f610691366004613cae565b610f73565b3480156106a257600080fd5b5061041f6106b1366004613c46565b610f80565b3480156106c257600080fd5b5061041f6106d1366004613cae565b61109a565b3480156106e257600080fd5b5061041f6106f1366004613cae565b611116565b34801561070257600080fd5b50600e546105ec906301000000900462ffffff1681565b34801561072557600080fd5b506005546104d6906001600160a01b031681565b34801561074557600080fd5b506000546104d6906001600160a01b031681565b34801561076557600080fd5b50600c546104d6906001600160a01b031681565b61041f610787366004613cdd565b611127565b34801561079857600080fd5b5061043760145481565b3480156107ae57600080fd5b50610437611142565b61041f61115f565b3480156107cb57600080fd5b506007546104d6906001600160a01b031681565b3480156107eb57600080fd5b5061041f611170565b34801561080057600080fd5b5061041f61080f366004613da1565b611182565b34801561082057600080fd5b5061043760155481565b34801561083657600080fd5b506104d673dc24316b9ae028f1497c275eb9192a3ea0f6702281565b34801561085e57600080fd5b506002546104d6906001600160a01b031681565b34801561087e57600080fd5b5061043760185481565b34801561089457600080fd5b506104d661121f565b3480156108a957600080fd5b5061041f6108b8366004613cae565b61124d565b3480156108c957600080fd5b506108dd6108d8366004613cae565b61125a565b60408051928352602083019190915201610441565b3480156108fe57600080fd5b50601c546104d6906001600160a01b031681565b34801561091e57600080fd5b506009546104d6906001600160a01b031681565b34801561093e57600080fd5b5061041f61094d366004613dcd565b61126f565b34801561095e57600080fd5b50610983604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104419190613ef4565b34801561099c57600080fd5b506001546104d6906001600160a01b031681565b3480156109bc57600080fd5b5061041f6109cb366004613cae565b6116ed565b3480156109dc57600080fd5b50610437601d5481565b3480156109f257600080fd5b5061041f610a01366004613cae565b6116fa565b348015610a1257600080fd5b50600b546104d6906001600160a01b031681565b348015610a3257600080fd5b506008546104d6906001600160a01b031681565b348015610a5257600080fd5b5061041f610a61366004613cae565b611707565b348015610a7257600080fd5b5061041f610a81366004613c46565b611714565b348015610a9257600080fd5b506004546104d6906001600160a01b031681565b348015610ab257600080fd5b50601a546104d6906001600160a01b031681565b348015610ad257600080fd5b5061043761173f565b348015610ae757600080fd5b5061041f610af6366004613c46565b61174e565b348015610b0757600080fd5b50600e546105ec90600160301b900462ffffff1681565b348015610b2a57600080fd5b5061041f610b39366004613da1565b611778565b348015610b4a57600080fd5b5061041f610b59366004613cae565b6117a6565b348015610b6a57600080fd5b5061041f610b79366004613da1565b6117b3565b348015610b8a57600080fd5b5061041f610b99366004613c46565b6117e1565b348015610baa57600080fd5b50610437601e5481565b348015610bc057600080fd5b506006546104d6906001600160a01b031681565b348015610be057600080fd5b5061041f610bef366004613c46565b61181c565b348015610c0057600080fd5b5061041f610c0f366004613cae565b611878565b610c1c611885565b600e805462ffffff191662ffffff92909216919091179055565b610c3e611885565b600e805462ffffff909216600160301b0268ffffff00000000000019909216919091179055565b610c6d611885565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf9190613f07565b6040518363ffffffff1660e01b8152600401610cfc929190613f20565b6020604051808303816000875af1158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190613f49565b610d885760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b60448201526064015b60405180910390fd5b50565b6000610e3e600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e079190613f6f565b6040518060600160405280876001600160a01b03168152602001866001600160a01b031681526020018562ffffff168152506118b7565b90505b9392505050565b610e50611885565b600e805462ffffff90921663010000000265ffffff00000019909216919091179055565b610e7c611885565b4780610ec15760405162461bcd60e51b81526020600482015260146024820152734e6f2076616c756520746f20776974686472617760601b6044820152606401610d7f565b610ec961121f565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610f01573d6000803e3d6000fd5b5050565b610f0d6119e3565b610f15611a2d565b610f1e476120e2565b610f4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b565b610f51611885565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b610f7b611885565b601255565b610f88611885565b600480546001600160a01b03199081166001600160a01b038481169182178455600b8054909316821790925560065460405163095ea7b360e01b8152919363095ea7b393610fdd939216916000199101613f20565b6020604051808303816000875af1158015610ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110209190613f49565b5060048054600a5460405163095ea7b360e01b81526001600160a01b039283169363095ea7b3936110579316916000199101613f20565b6020604051808303816000875af1158015611076573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f019190613f49565b336110a361121f565b6001600160a01b031614806110cb57506009546001600160a01b0316336001600160a01b0316145b6111085760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610d7f565b600d819055610d8881612392565b61111e611885565b610d8881612392565b61112f61252a565b611138826125cf565b610f0182826125d7565b600061114c612694565b506000805160206143c483398151915290565b611167611885565b610f47346126dd565b611178611885565b610f4760006128af565b61118a611885565b601c80546001600160a01b0319166001600160a01b038481169182179092556018839055600c5460405163095ea7b360e01b815292169163095ea7b3916111d79160001990600401613f20565b6020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613f49565b505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b611255611885565b601055565b60008061126683612920565b91509150915091565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156112b55750825b905060008267ffffffffffffffff1660011480156112d25750303b155b9050811580156112e0575080155b156112fe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561132857845460ff60401b1916600160401b1785555b61133133612a0c565b611339612a1d565b611341612a25565b8f6000806101000a8154816001600160a01b0302191690836001600160a01b031602179055508e600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d600960006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600660006101000a8154816001600160a01b0302191690836001600160a01b0316021790555073dc24316b9ae028f1497c275eb9192a3ea0f67022600a60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089600360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555088600260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555087600460006101000a8154816001600160a01b0302191690836001600160a01b0316021790555087600b60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086600560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086600c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c600d81905550610bb8600e60006101000a81548162ffffff021916908362ffffff160217905550612328600e60036101000a81548162ffffff021916908362ffffff160217905550610bb8600e60066101000a81548162ffffff021916908362ffffff1602179055506000600f819055506000601081905550600060118190555060006012819055506000601381905550610fa06014819055506101f46015819055506109c46016819055506107d06017819055506103e8601881905550733c10e852bc448d46c726d2d5c6d8ec38f0180611601a60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550731607ef4283d4e8006dd5c841105f00c086e6f5d1601b60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555085601c60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061168d8d612392565b611695612a35565b83156116db57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050505050565b6116f5611885565b600f55565b611702611885565b601555565b61170f611885565b601455565b61171c611885565b600680546001600160a01b0319166001600160a01b038316179055610d88612a35565b6000611749612f40565b905090565b611756611885565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b611780611885565b601a80546001600160a01b0319166001600160a01b039390931692909217909155601655565b6117ae611885565b601355565b6117bb611885565b601b80546001600160a01b0319166001600160a01b039390931692909217909155601755565b6117e9611885565b6001600160a01b03811661181357604051631e4fbdf760e01b815260006004820152602401610d7f565b610d88816128af565b611824611885565b600580546001600160a01b038084166001600160a01b03199283168117909355600c80549092168317909155601c5460405163095ea7b360e01b815263095ea7b39261105792169060001990600401613f20565b611880611885565b601155565b3361188e61121f565b6001600160a01b031614610f475760405163118cdaa760e01b8152336004820152602401610d7f565b600081602001516001600160a01b031682600001516001600160a01b0316106119225760405162461bcd60e51b815260206004820181905260248201527f506f6f6c416464726573733a20496e76616c696420746f6b656e206f726465726044820152606401610d7f565b815160208084015160408086015181516001600160a01b0395861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201206001600160f81b031960a08401529085901b6bffffffffffffffffffffffff191660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f50160408051601f1981840301815291905280516020909101209392505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901611a2757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000611a3b42610bb8613fa2565b600480546040516370a0823160e01b815230928101929092529192506000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aae9190613f07565b1115611cac5760048054600a546040516370a0823160e01b815230938101939093526001600160a01b039182169263095ea7b3929091169083906370a0823190602401602060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b329190613f07565b6040518363ffffffff1660e01b8152600401611b4f929190613f20565b6020604051808303816000875af1158015611b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b929190613f49565b611bae5760405162461bcd60e51b8152600401610d7f90613fb5565b600a54600480546040516370a0823160e01b815230928101929092526001600160a01b0392831692633df021249260019260009216906370a0823190602401602060405180830381865afa158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190613f07565b6040516001600160e01b031960e086901b168152600f93840b60048201529190920b60248201526044810191909152600060648201526084016020604051808303816000875af1158015611c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611caa9190613f07565b505b600f546003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1b9190613f07565b1115611daa57600354600154600e546040516370a0823160e01b8152306004820152611da8936001600160a01b0390811693169162ffffff169083906370a08231906024015b602060405180830381865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190613f07565b85613026565b505b6010546002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e199190613f07565b1115611e6c57600254600054600e546040516370a0823160e01b8152306004820152611e6a936001600160a01b03908116931691600160301b900462ffffff169083906370a0823190602401611d61565b505b6011546000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edb9190613f07565b1115611fa6576000546040516370a0823160e01b81523060048201526001600160a01b039091169063db006a759082906370a0823190602401602060405180830381865afa158015611f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f559190613f07565b6040518263ffffffff1660e01b8152600401611f7391815260200190565b600060405180830381600087803b158015611f8d57600080fd5b505af1158015611fa1573d6000803e3d6000fd5b505050505b6012546001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120159190613f07565b1115610d88576001546040516370a0823160e01b81523060048201526001600160a01b0390911690632e1a7d4d9082906370a0823190602401602060405180830381865afa15801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f9190613f07565b6040518263ffffffff1660e01b81526004016120ad91815260200190565b600060405180830381600087803b1580156120c757600080fd5b505af11580156120db573d6000803e3d6000fd5b5050505050565b60135481116120ee5750565b6017541561212757601b54601754612127916001600160a01b031690612710906121189085613fe3565b6121229190614010565b6131c7565b60185415612279576000612710601854836121429190613fe3565b61214c9190614010565b9050600061215982613260565b600c54601c5460405163095ea7b360e01b81529293506001600160a01b039182169263095ea7b3926121919216908590600401613f20565b6020604051808303816000875af11580156121b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d49190613f49565b6122185760405162461bcd60e51b81526020600482015260156024820152741ddcdd11551208185c1c1c9bdd994819985a5b1959605a1b6044820152606401610d7f565b601c546040516369c413c960e01b8152600481018390526001600160a01b03909116906369c413c990602401600060405180830381600087803b15801561225e57600080fd5b505af1158015612272573d6000803e3d6000fd5b5050505050505b601454156122f6576000546014546001600160a01b039091169063d0e30db090612710906122a79085613fe3565b6122b19190614010565b6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122dc57600080fd5b505af11580156122f0573d6000803e3d6000fd5b50505050505b6016541561232057601a54601654612320916001600160a01b031690612710906121189085613fe3565b6015541561233157612331476126dd565b604080518281524260208201527fe27433f62605db3813804daf75a595d40ed9c1b42e15d2b44fa6cb757f60d634910160405180910390a150565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600d81905560085460405163133f757160e31b81526004810183905260009182918291829182916001600160a01b0316906399fbab889060240161018060405180830381865afa1580156123ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240e9190614061565b50505050509650965096509650965050506124d0600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190613f6f565b6040518060600160405280886001600160a01b03168152602001876001600160a01b031681526020018662ffffff168152506118b7565b600780546001600160a01b0319166001600160a01b03929092169190911790556124f8612a35565b61250181613474565b6001600160a01b0316601d5561251682613474565b6001600160a01b0316601e55505050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806125b157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125a56000805160206143c4833981519152546001600160a01b031690565b6001600160a01b031614155b15610f475760405163703e46dd60e11b815260040160405180910390fd5b610d88611885565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612631575060408051601f3d908101601f1916820190925261262e91810190613f07565b60015b61265957604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d7f565b6000805160206143c4833981519152811461268a57604051632a87526960e21b815260048101829052602401610d7f565b61121a83836138bc565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f475760405163703e46dd60e11b815260040160405180910390fd5b6000806126e983612920565b600154600354600e54939550919350600092612724926001600160a01b0392831692169062ffffff168661271f42610bb8613fa2565b613026565b60035460095460405163095ea7b360e01b81529293506001600160a01b039182169263095ea7b39261275c9216908590600401613f20565b6020604051808303816000875af115801561277b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279f9190613f49565b6127e45760405162461bcd60e51b815260206004820152601660248201527513125392c8131408185c1c1c9bdd994819985a5b195960521b6044820152606401610d7f565b600954600d546001600160a01b0390911690631b29fb8f90849081851061280b578461280d565b855b86861061281a578661281c565b855b600e5460405160e087901b6001600160e01b03191681526004810194909452602484019290925260448301526301000000900462ffffff1660648201526000608482015260a40160606040518083038185885af1158015612881573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128a69190614142565b50505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000806000600760009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015612978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299c9190614189565b5050505050509050600060026129c4600160601b633b9aca00856001600160a01b0316613912565b6129ce91906142fd565b905060006129da612f40565b905060006129f287836129ed8187613fa2565b613912565b9050806129ff818961430c565b9550955050505050915091565b612a14613a19565b610d8881613a62565b610f47613a19565b612a2d613a19565b610f47613a6a565b60035460065460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612a6d9291169060001990600401613f20565b6020604051808303816000875af1158015612a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab09190613f49565b612af25760405162461bcd60e51b815260206004820152601360248201527213125392c8185c1c1c9bdd994819985a5b1959606a1b6044820152606401610d7f565b60025460065460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612b2a9291169060001990600401613f20565b6020604051808303816000875af1158015612b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6d9190613f49565b612baf5760405162461bcd60e51b81526020600482015260136024820152721554d110c8185c1c1c9bdd994819985a5b1959606a1b6044820152606401610d7f565b60015460065460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612be79291169060001990600401613f20565b6020604051808303816000875af1158015612c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2a9190613f49565b612c6c5760405162461bcd60e51b815260206004820152601360248201527215d1551208185c1c1c9bdd994819985a5b1959606a1b6044820152606401610d7f565b60035460095460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612ca49291169060001990600401613f20565b6020604051808303816000875af1158015612cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce79190613f49565b612d2c5760405162461bcd60e51b815260206004820152601660248201527513125392c8131408185c1c1c9bdd994819985a5b195960521b6044820152606401610d7f565b60015460095460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612d649291169060001990600401613f20565b6020604051808303816000875af1158015612d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da79190613f49565b612dec5760405162461bcd60e51b815260206004820152601660248201527515d1551208131408185c1c1c9bdd994819985a5b195960521b6044820152606401610d7f565b60048054600a5460405163095ea7b360e01b81526001600160a01b039283169363095ea7b393612e229316916000199101613f20565b6020604051808303816000875af1158015612e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e659190613f49565b612e815760405162461bcd60e51b8152600401610d7f90613fb5565b600c54601c5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612eb99291169060001990600401613f20565b6020604051808303816000875af1158015612ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efc9190613f49565b610f475760405162461bcd60e51b81526020600482015260156024820152741ddcdd11551208185c1c1c9bdd994819985a5b1959605a1b6044820152606401610d7f565b600080600760009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015612f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fba9190614189565b50505050505090506000612feb601d54836001600160a01b0316846001600160a01b0316601d546129ed919061430c565b905061301f670de0b6b3a7640000600160c01b601e54856001600160a01b0316613015919061430c565b6129ed9085613fe3565b9250505090565b60065460405163095ea7b360e01b81526000916001600160a01b038089169263095ea7b39261305b9216908790600401613f20565b6020604051808303816000875af115801561307a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309e9190613f49565b6130e15760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88185c1c1c9bdd994819985a5b195960621b6044820152606401610d7f565b6006546040805160a081018252606089811b6bffffffffffffffffffffffff1990811660c084015260e889901b6001600160e81b03191660d484015289821b1660d7830152825160cb81840301815260eb830184528252306020830152818301869052810186905260006080820152905163c04b8d5960e01b81526001600160a01b039092169163c04b8d599161317a9160040161431f565b6020604051808303816000875af1158015613199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bd9190613f07565b9695505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613214576040519150601f19603f3d011682016040523d82523d6000602084013e613219565b606091505b505090508061121a5760405162461bcd60e51b815260206004820152601360248201527211551208151c985b9cd9995c8819985a5b1959606a1b6044820152606401610d7f565b60008160000361327257506000919050565b600b5460405163a1903eab60e01b8152600060048201819052916001600160a01b03169063a1903eab90859060240160206040518083038185885af11580156132bf573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132e49190613f07565b90506000811161332a5760405162461bcd60e51b81526020600482015260116024820152701cdd115512081b5a5b9d0819985a5b1959607a1b6044820152606401610d7f565b60048054600c5460405163095ea7b360e01b81526001600160a01b039283169363095ea7b39361335e931691869101613f20565b6020604051808303816000875af115801561337d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a19190613f49565b6133bd5760405162461bcd60e51b8152600401610d7f90613fb5565b600c54604051630ea598cb60e41b8152600481018390526000916001600160a01b03169063ea598cb0906024016020604051808303816000875af1158015613409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342d9190613f07565b905060008111610e415760405162461bcd60e51b81526020600482015260126024820152711ddcdd115512081ddc985c0819985a5b195960721b6044820152606401610d7f565b6000620d89e719600283900b128015906134955750620d89e8600283900b13155b6134e15760405162461bcd60e51b815260206004820152601c60248201527f5469636b4d6174683a207469636b206f7574206f6620626f756e6473000000006044820152606401610d7f565b6000808360020b126134f6578260020b613503565b8260020b61350390614377565b905060008160011660000361351c57600160801b61352e565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561356d576080613568826ffff97272373d413259a46990580e213a613fe3565b901c90505b6004821615613597576080613592826ffff2e50f5f656932ef12357cf3c7fdcc613fe3565b901c90505b60088216156135c15760806135bc826fffe5caca7e10e4e61c3624eaa0941cd0613fe3565b901c90505b60108216156135eb5760806135e6826fffcb9843d60f6159c9db58835c926644613fe3565b901c90505b6020821615613615576080613610826fff973b41fa98c081472e6896dfb254c0613fe3565b901c90505b604082161561363f57608061363a826fff2ea16466c96a3843ec78b326b52861613fe3565b901c90505b6080821615613669576080613664826ffe5dee046a99a2a811c461f1969c3053613fe3565b901c90505b61010082161561369457608061368f826ffcbe86c7900a88aedcffc83b479aa3a4613fe3565b901c90505b6102008216156136bf5760806136ba826ff987a7253ac413176f2b074cf7815e54613fe3565b901c90505b6104008216156136ea5760806136e5826ff3392b0822b70005940c7a398e4b70b6613fe3565b901c90505b610800821615613715576080613710826fe7159475a2c29b7443b29c7fa6e889d9613fe3565b901c90505b61100082161561374057608061373b826fd097f3bdfd2022b8845ad8f792aa5825613fe3565b901c90505b61200082161561376b576080613766826fa9f746462d870fdf8a65dc1f90e061e5613fe3565b901c90505b614000821615613796576080613791826f70d869a156d2a1b890bb3df62baf32f7613fe3565b901c90505b6180008216156137c15760806137bc826f31be135f97d08fd981231505542fcfa6613fe3565b901c90505b620100008216156137ed5760806137e8826f09aa508b5b7a84e1c677de54f3e99bc9613fe3565b901c90505b62020000821615613818576080613813826e5d6af8dedb81196699c329225ee604613fe3565b901c90505b6204000082161561384257608061383d826d2216e584f5fa1ea926041bedfe98613fe3565b901c90505b6208000082161561386a576080613865826b048a170391f7dc42444e8fa2613fe3565b901c90505b60008460020b13156138855761388281600019614010565b90505b61389464010000000082614393565b156138a05760016138a3565b60005b6138b49060ff16602083901c613fa2565b949350505050565b6138c582613a72565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561390a5761121a8282613ad7565b610f01613b4f565b60008082116139635760405162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610d7f565b6000806000198587098587029250828110838203039150508060000361398e57508290049050610e41565b8381106139d25760405162461bcd60e51b815260206004820152601260248201527146756c6c4d6174683a206f766572666c6f7760701b6044820152606401610d7f565b60008486880980840393811190920391905060006139f286196001613fa2565b86169586900495938490048690049190930285900491909101600003019150509392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610f4757604051631afcd79f60e31b815260040160405180910390fd5b6117e9613a19565b61236c613a19565b806001600160a01b03163b600003613aa857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d7f565b6000805160206143c483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613af491906143a7565b600060405180830381855af49150503d8060008114613b2f576040519150601f19603f3d011682016040523d82523d6000602084013e613b34565b606091505b5091509150613b44858383613b6e565b925050505b92915050565b3415610f475760405163b398979f60e01b815260040160405180910390fd5b606082613b8357613b7e82613bca565b610e41565b8151158015613b9a57506001600160a01b0384163b155b15613bc357604051639996b31560e01b81526001600160a01b0385166004820152602401610d7f565b5080610e41565b805115613bda5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b62ffffff81168114610d8857600080fd5b600060208284031215613c1657600080fd5b8135610e4181613bf3565b6001600160a01b0381168114610d8857600080fd5b8035613c4181613c21565b919050565b600060208284031215613c5857600080fd5b8135610e4181613c21565b600080600060608486031215613c7857600080fd5b8335613c8381613c21565b92506020840135613c9381613c21565b91506040840135613ca381613bf3565b809150509250925092565b600060208284031215613cc057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215613cf057600080fd5b8235613cfb81613c21565b9150602083013567ffffffffffffffff80821115613d1857600080fd5b818501915085601f830112613d2c57600080fd5b813581811115613d3e57613d3e613cc7565b604051601f8201601f19908116603f01168101908382118183101715613d6657613d66613cc7565b81604052828152886020848701011115613d7f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060408385031215613db457600080fd5b8235613dbf81613c21565b946020939093013593505050565b60008060008060008060008060008060006101608c8e031215613def57600080fd5b8b35613dfa81613c21565b9a5060208c0135613e0a81613c21565b995060408c0135613e1a81613c21565b985060608c0135975060808c0135613e3181613c21565b965060a08c0135613e4181613c21565b955060c08c0135613e5181613c21565b945060e08c0135613e6181613c21565b93506101008c0135613e7281613c21565b92506101208c0135613e8381613c21565b9150613e926101408d01613c36565b90509295989b509295989b9093969950565b60005b83811015613ebf578181015183820152602001613ea7565b50506000910152565b60008151808452613ee0816020860160208601613ea4565b601f01601f19169290920160200192915050565b602081526000610e416020830184613ec8565b600060208284031215613f1957600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b80518015158114613c4157600080fd5b600060208284031215613f5b57600080fd5b610e4182613f39565b8051613c4181613c21565b600060208284031215613f8157600080fd5b8151610e4181613c21565b634e487b7160e01b600052601160045260246000fd5b80820180821115613b4957613b49613f8c565b6020808252601490820152731cdd11551208185c1c1c9bdd994819985a5b195960621b604082015260600190565b8082028115828204841417613b4957613b49613f8c565b634e487b7160e01b600052601260045260246000fd5b60008261401f5761401f613ffa565b500490565b8051613c4181613bf3565b8051600281900b8114613c4157600080fd5b80516fffffffffffffffffffffffffffffffff81168114613c4157600080fd5b6000806000806000806000806000806000806101808d8f03121561408457600080fd5b8c516bffffffffffffffffffffffff811681146140a057600080fd5b9b506140ae60208e01613f64565b9a506140bc60408e01613f64565b99506140ca60608e01613f64565b98506140d860808e01614024565b97506140e660a08e0161402f565b96506140f460c08e0161402f565b955061410260e08e01614041565b94506101008d015193506101208d015192506141216101408e01614041565b91506141306101608e01614041565b90509295989b509295989b509295989b565b60008060006060848603121561415757600080fd5b61416084614041565b925060208401519150604084015190509250925092565b805161ffff81168114613c4157600080fd5b600080600080600080600060e0888a0312156141a457600080fd5b87516141af81613c21565b96506141bd6020890161402f565b95506141cb60408901614177565b94506141d960608901614177565b93506141e760808901614177565b925060a088015160ff811681146141fd57600080fd5b915061420b60c08901613f39565b905092959891949750929550565b600181815b8085111561425457816000190482111561423a5761423a613f8c565b8085161561424757918102915b93841c939080029061421e565b509250929050565b60008261426b57506001613b49565b8161427857506000613b49565b816001811461428e5760028114614298576142b4565b6001915050613b49565b60ff8411156142a9576142a9613f8c565b50506001821b613b49565b5060208310610133831016604e8410600b84101617156142d7575081810a613b49565b6142e18383614219565b80600019048211156142f5576142f5613f8c565b029392505050565b6000610e4160ff84168361425c565b81810381811115613b4957613b49613f8c565b602081526000825160a0602084015261433b60c0840182613ec8565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b6000600160ff1b820161438c5761438c613f8c565b5060000390565b6000826143a2576143a2613ffa565b500690565b600082516143b9818460208701613ea4565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212206daad827bef17cbef2ee662a8f92ddb3333cbfba152e36d992de85d339ea68dc64736f6c63430008180033