0 txs
0 calls
constructor
constructor()
functions
NonfungiblePositionManager
viewfunction NonfungiblePositionManager() view returns (address)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
rewardsDistributor
viewfunction rewardsDistributor() view returns (address)
router
viewfunction router() view returns (address)
treasury
viewfunction treasury() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
voter
viewfunction voter() view returns (address)
votingEscrow
viewfunction votingEscrow() view returns (address)
WETH
viewfunction WETH() view returns (address)
addLiquidity
payablefunction addLiquidity(address tokenA, address tokenB, bool stable, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, uint256 feeAmount) payable returns (uint256 amountA, uint256 amountB, uint256 liquidity)
addLiquidityETH
payablefunction addLiquidityETH(address token, bool stable, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, uint256 feeAmount) payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity)
claimBribes
payablefunction claimBribes(address[] bribes, address[][] tokens, uint256 tokenId, uint256 feeAmount) payable
claimManyRebases
payablefunction claimManyRebases(uint256[] tokenIds, uint256 feeAmount) payable
claimRebases
payablefunction claimRebases(uint256 tokenId, uint256 feeAmount) payable returns (uint256 claimedRebases)
collect
payablefunction collect(tuple params, uint256 feeAmount) payable returns (uint256 amount0, uint256 amount1)
createLockFor
payablefunction createLockFor(uint256 value, uint256 lockDuration, address to, uint256 feeAmount) payable returns (uint256)
decreaseLiquidity
payablefunction decreaseLiquidity(tuple params, uint256 feeAmount) payable returns (uint256 amount0, uint256 amount1)
depositAMM
payablefunction depositAMM(address pool, uint256 amount, address recipient, uint256 feeAmount) payable
depositFor
payablefunction depositFor(uint256 tokenId, uint256 value, uint256 feeAmount) payable
increaseAmount
payablefunction increaseAmount(uint256 tokenId, uint256 value, uint256 feeAmount) payable
increaseLiquidity
payablefunction increaseLiquidity(tuple params, uint256 feeAmount) payable returns (uint128 liquidity, uint256 amount0, uint256 amount1)
initialize
nonpayablefunction initialize(address _treasury, address _router, address _nonfungiblePositionManager, address _voter, address _votingEscrow, address _rewardsDistributor)
merge
payablefunction merge(uint256 from, uint256 to, uint256 feeAmount) payable
mint
payablefunction mint(tuple params, uint256 feeAmount) payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
removeLiquidity
payablefunction removeLiquidity(address tokenA, address tokenB, bool stable, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, uint256 feeAmount) payable returns (uint256 amountA, uint256 amountB)
removeLiquidityETH
payablefunction removeLiquidityETH(address token, bool stable, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, uint256 feeAmount) payable returns (uint256 amountToken, uint256 amountETH)
renounceOwnership
nonpayablefunction renounceOwnership()
setNonFungiblePositionManager
nonpayablefunction setNonFungiblePositionManager(address _nonfungiblePositionManager)
setRewardsDistributor
nonpayablefunction setRewardsDistributor(address _rewardsDistributor)
setRouter
nonpayablefunction setRouter(address _router)
setTreasury
nonpayablefunction setTreasury(address _treasury)
setVoter
nonpayablefunction setVoter(address _voter)
setVotingEscrow
nonpayablefunction setVotingEscrow(address _votingEscrow)
split
payablefunction split(uint256 from, uint256 amount, uint256 feeAmount) payable returns (uint256 _tokenId1, uint256 _tokenId2)
transferLock
payablefunction transferLock(uint256 tokenId, address to, uint256 feeAmount) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(address token, uint256 amount, address recipient)
withdraw
payablefunction withdraw(uint256 tokenId, uint256 feeAmount) payable
events
Initialized
event Initialized(uint64 version)
NonfungiblePositionManagerSet
event NonfungiblePositionManagerSet(address nonfungiblePositionManager)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardsDistributorSet
event RewardsDistributorSet(address rewardsDistributor)
RouterSet
event RouterSet(address router)
TreasurySet
event TreasurySet(address treasury)
Upgraded
event Upgraded(address indexed implementation)
VoterSet
event VoterSet(address voter)
VotingEscrowSet
event VotingEscrowSet(address votingEscrow)
Withdrawn
event Withdrawn(address token, uint256 amount, address recipient)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
CollectionFailed
error CollectionFailed()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
GaugesNotExists
error GaugesNotExists(address pool)
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidFeeAmount
error InvalidFeeAmount()
InvalidInitialization
error InvalidInitialization()
InvalidRecipient
error InvalidRecipient()
LiquidityAddFailed
error LiquidityAddFailed()
LiquidityDecreaseFailed
error LiquidityDecreaseFailed()
LiquidityRemoveFailed
error LiquidityRemoveFailed()
NotInitializing
error NotInitializing()
NotTokenOwner
error NotTokenOwner(uint256 tokenId)
NotTokensOwner
error NotTokensOwner(uint256 from, uint256 to)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RebasesNotClaimed
error RebasesNotClaimed()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
ZeroAddress
error ZeroAddress()
creation bytecode
0x60a080604052346100c257306080525f5160206141e25f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b60405161411b90816100c78239608051818181612811015261290a0152f35b6001600160401b0319166001600160401b039081175f5160206141e25f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f5f3560e01c8062072db11461386d578063150b7a02146137fb57806317389cf51461346d57806320190c67146131ec578063328f81a914612fbc5780633bc9e5b114612eb25780633f2a554014612e89578063441a3e7014612b4d57806346c96aac14612b245780634bc2a65714612ab15780634f1ef2861461288e5780634f2bfe5b1461286557806352d1902d146127fe57806359427859146126285780635a2e4bd91461249b57806361d027b314612472578063639d1b05146122be57806369328dec146122095780636fe2e4d514611dbf578063715018a614611d5657806375490ed314611b165780638da5cb5b14611ae1578063966fda621461196a5780639cb39f831461171b578063ad3cb1cc146116bf578063ad5c46481461169c578063af18228914611534578063b7e325ed14611373578063c0d7865514611303578063ca67b32014611038578063caf0887d14610dea578063cc2a9a5b14610b68578063ce5ec92e14610af5578063d1f5c33b14610a82578063e8555f0514610a0f578063eb582d13146109e6578063f00e4ff71461072c578063f0f44260146106aa578063f2fde38b1461067d578063f887ea40146106565763fe17e77d146101e7575061000e565b366003190160c081126105fd5760a0136106535760a4358015610645578034106106455760015460405163133f757160e31b815260048035908201819052929161018090829060249082906001600160a01b03165afa9182156104ee5784918593610601575b5060025461026491906001600160a01b0316613eec565b60015484906001600160a01b0316803b156105fd57816040518092632142170760e11b825281838161029b8b303360048501613d12565b03925af180156105a5576105e4575b50506040516370a0823160e01b81523060048201526001600160a01b039190911691602082602481865afa9182156105665785926105b0575b506040516370a0823160e01b81523060048201526001600160a01b0391909116949091602083602481895afa9283156105a5578293610571575b5060018060a01b03600154169360405195630624e65f60e11b87528060048801526024356001600160801b0381168091036105125760248801526044359586604489015260408860a481886064359586606484015260843560848401525af19687156105665785988698610530575b508888911191821592610525575b505015610516576001546001600160a01b031690813b15610512576103da85928392604051948580948193632142170760e11b8352333060048501613d12565b03925af180156104ee579084916104f9575b50506040516370a0823160e01b8152306004820152602081602481855afa9081156104ee5784916104ba575b5061042e9261042691613cf1565b903390613f33565b6040516370a0823160e01b8152306004820152602081602481895afa9182156104ae5791610474575b509361042661046892604096613cf1565b82519182526020820152f35b9490506020853d6020116104a6575b8161049060209383613ab3565b810103126104a2579351610426610457565b5f80fd5b3d9150610483565b604051903d90823e3d90fd5b90506020813d6020116104e6575b816104d560209383613ab3565b810103126104a2575161042e610418565b3d91506104c8565b6040513d86823e3d90fd5b8161050391613ab3565b61050e57825f6103ec565b8280fd5b8480fd5b635e71d03360e01b8452600484fd5b11159050865f61039a565b90985061055691975060403d60401161055f575b61054e8183613ab3565b810190613d34565b9690978861038c565b503d610544565b6040513d87823e3d90fd5b9092506020813d60201161059d575b8161058d60209383613ab3565b810103126104a25751915f61031d565b3d9150610580565b6040513d84823e3d90fd5b9091506020813d6020116105dc575b816105cc60209383613ab3565b810103126104a25751905f6102e3565b3d91506105bf565b816105ee91613ab3565b6105f957835f6102aa565b8380fd5b5080fd5b61062991935061026492506101803d811161063e575b6106218183613ab3565b810190613c4b565b5050505050505050939250905091929061024d565b503d610617565b62a4671960e71b8252600482fd5b80fd5b5034610653578060031936011261065357546040516001600160a01b039091168152602090f35b5034610653576020366003190112610653576106a761069a613a4c565b6106a2613f6c565b613e0f565b80f35b5034610653576020366003190112610653576106c4613a4c565b6106cc613f6c565b6001600160a01b0316801561071d576020817f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f926001600160601b0360a01b6002541617600255604051908152a180f35b63d92e233d60e01b8252600482fd5b5061014036600319011261065357610742613a4c565b9061074b613a78565b90610754613a8e565b92606435926084359060a4359460c4359460e4359460018060a01b0386168096036105fd576101243580156109d8578034036109d8573087146109c9576002546107a791906001600160a01b0316613eec565b6001600160a01b0316926107bd83303387613e80565b6001600160a01b0316946107d385303389613e80565b815460405163095ea7b360e01b81526001600160a01b0390911660048201526024810184905260208160448186895af180156109a1576109ac575b50815460405163095ea7b360e01b81526001600160a01b03909116600482015260248101869052602081604481868b5af180156109a1579060609291610974575b5061012460018060a01b038454169a846040519c8d948593635a47ddc360e01b85528a60048601528c6024860152151560448501528860648501528a60848501528d60a48501528c60c485015260e4840152610104356101048401525af19586156109675781978299839861092c575b508810159081610921575b50156109125750866108f1936108ec61090e9796946104268a61042696613cf1565b613cf1565b604051938493846040919493926060820195825260208201520152565b0390f35b63760598e160e01b8152600490fd5b90508810155f6108ca565b919850965061095491985060603d606011610960575b61094c8183613ab3565b810190613df4565b9891979098965f6108bf565b503d610942565b50604051903d90823e3d90fd5b6109959060203d60201161099a575b61098d8183613ab3565b810190613c11565b61084f565b503d610983565b6040513d85823e3d90fd5b6109c49060203d60201161099a5761098d8183613ab3565b61080e565b634e46966960e11b8352600483fd5b62a4671960e71b8352600483fd5b50346106535780600319360112610653576001546040516001600160a01b039091168152602090f35b503461065357602036600319011261065357610a29613a4c565b610a31613f6c565b6001600160a01b0316801561071d576020817ffc16f4d868f580252bff93cba89e723ac15fb82d773c5ff26ee487e8303ee50a926001600160601b0360a01b6001541617600155604051908152a180f35b503461065357602036600319011261065357610a9c613a4c565b610aa4613f6c565b6001600160a01b0316801561071d576020817f950a88e6770f863d57a76f0536e93cc7c318c1188c4c189aa9d7a98a6e62f864926001600160601b0360a01b6005541617600555604051908152a180f35b503461065357602036600319011261065357610b0f613a4c565b610b17613f6c565b6001600160a01b0316801561071d576020817fdfc99f06c00ec9d9c39735fe0e3b20e8d77ecbe0eed7f1622dbda285002954e8926001600160601b0360a01b6004541617600455604051908152a180f35b50346106535760c036600319011261065357610b82613a4c565b610b8a613a78565b610b92613a62565b6064356001600160a01b03811690819003610512576084356001600160a01b0381169190829003610de65760a4356001600160a01b0381169390849003610de2575f5160206140c65f395f51905f52549560ff8760401c16159667ffffffffffffffff811680159081610dda575b6001149081610dd0575b159081610dc7575b50610db85767ffffffffffffffff1981166001175f5160206140c65f395f51905f525587610d8c575b50610c44614015565b610c4c614015565b610c5533613e0f565b610c5d614015565b6001600160a01b0316948515610d7d5791859391602095937f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f976001600160601b0360a01b600254161760025560018060a01b03166001600160601b0360a01b8a541617895560018060a01b03166001600160601b0360a01b60015416176001556001600160601b0360a01b60035416176003556001600160601b0360a01b60045416176004556001600160601b0360a01b6005541617600555604051908152a1610d255780f35b68ff0000000000000000195f5160206140c65f395f51905f5254165f5160206140c65f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b63d92e233d60e01b8852600488fd5b68ffffffffffffffffff191668010000000000000001175f5160206140c65f395f51905f52555f610c3b565b63f92ee8a960e01b8952600489fd5b9050155f610c12565b303b159150610c0a565b899150610c00565b8680fd5b8580fd5b50610df436613b05565b801561102a5780340361102a57602490602060018060a01b0360045416604051938480926331a9108f60e11b82528860048301525afa80156105665784928691610fe6575b50610e6392610e52916001600160a01b03163314613d76565b6002546001600160a01b0316613eec565b60045483906001600160a01b0316803b156105fd57816040518092632142170760e11b8252818381610e9a8a303360048501613d12565b03925af180156105a557610fd1575b5050604090604460018060a01b03600454169385845195869485936312c66fb360e21b8552600485015260248401525af180156105a55782918391610fb0575b5060045483906001600160a01b0316803b156105fd57816040518092632142170760e11b8252818381610f218a333060048501613d12565b03925af180156105a557610f9b575b50506004546001600160a01b0316803b156105f957836040518092632142170760e11b8252818381610f6788333060048501613d12565b03925af180156104ee57610f86575b6040838382519182526020820152f35b610f91848092613ab3565b61050e5782610f76565b81610fa591613ab3565b61050e57825f610f30565b9050610fcb915060403d60401161055f5761054e8183613ab3565b5f610ee9565b81610fdb91613ab3565b61050e57825f610ea9565b9250506020823d602011611022575b8161100260209383613ab3565b8101031261051257610e528461101a610e6394613bfd565b915092610e39565b3d9150610ff5565b62a4671960e71b8452600484fd5b5061104236613ba5565b939684969196959395156112f5578434036112f5576001600160a01b03831630146112e657885460405163d4b6846d60e01b81528a92916001600160a01b031690602081600481855afa80156104ee5784906112ac575b60405163874029d960e01b81526001600160a01b0385811660048301526006602160991b016024830152871515604483015290911660648201529160209150829060849082905afa80156109a15786918491611269575b50611146916020916001600160a01b031661110d82303384613e80565b855460405163095ea7b360e01b81526001600160a01b039091166004820152602481019290925290928391908290879082906044820190565b03925af19889156109a1576111746040986111d3938d9c61124c575b506002546001600160a01b0316613eec565b8354885163d7b0e0a560e01b81526001600160a01b03948516600482015295151560248701526044860197909752606485019a909a526084840188905293811660a484015260c4830198909852909687931691839190829060e4820190565b03925af19182156104ee5784938593611225575b50831015908161121a575b5015611208576040809350519182526020820152f35b600162b1876760e01b03198352600483fd5b90508110155f6111f2565b90925061124291935060403d60401161055f5761054e8183613ab3565b929092915f6111e7565b6112649060203d60201161099a5761098d8183613ab3565b611162565b9150506020813d6020116112a4575b8161128560209383613ab3565b8101031261050e5760208661129c61114693613bfd565b9150916110f0565b3d9150611278565b506020813d6020116112de575b816112c660209383613ab3565b810103126105f9576112d9602091613bfd565b611099565b3d91506112b9565b634e46966960e11b8952600489fd5b62a4671960e71b8952600489fd5b50346106535760203660031901126106535761131d613a4c565b611325613f6c565b6001600160a01b0316801561071d5781546001600160a01b031916811782556040519081527fc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d1590602090a180f35b5061137d36613ba5565b949295979190939685156109d857853411156109d8576113b46113a08734613cf1565b6002549097906001600160a01b0316613eec565b6001600160a01b038116946113cb85303389613e80565b835460405163095ea7b360e01b81526001600160a01b03909116600482015260248101869052602081604481888b5af1801561056657918693918b9c93611517575b5085546040516302df835360e61b81526001600160a01b03938416600482015293151560248501526044840194909452606483019b909b526084820189905292831660a482015260c4810199909952168760e481875a94606095f1948515610967578196829883976114ec575b5087101590816114e1575b50156109125750916114a086926104268761090e9796613cf1565b8181116114c7575b5050604051938493846040919493926060820195825260208201520152565b6114da916114d491613cf1565b33613eec565b835f6114a8565b90508710155f611485565b919750955061150b91975060603d6060116109605761094c8183613ab3565b9791969097955f61147a565b61152f9060203d60201161099a5761098d8183613ab3565b61140d565b5061153e36613a9d565b919082156106455782340361064557611562829360018060a01b0360025416613eec565b6004546001600160a01b0316803b1561169857826040518092632142170760e11b825281838161159788303360048501613d12565b03925af19081156109a1578391611680575b5090602060018060a01b036005541660246040518096819363379607f560e01b83528660048401525af19283156105a5578293611649575b506004546001600160a01b031690813b1561050e57829161161a91604051948580948193632142170760e11b8352333060048501613d12565b03925af180156109a157611634575b602082604051908152f35b61163f838092613ab3565b6105fd5781611629565b915091506020813d602011611678575b8161166660209383613ab3565b810103126104a257829051915f6115e1565b3d9150611659565b8161168a91613ab3565b61169557815f6115a9565b50fd5b5050fd5b50346106535780600319360112610653576040516006602160991b018152602090f35b5034610653578060031936011261065357604080516116de8282613ab3565b6005815260208101640352e302e360dc1b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b5060803660031901126106535760043567ffffffffffffffff81116105fd57611748903690600401613b37565b906024359167ffffffffffffffff83116105fd57366023840112156105fd57826004013561177581613b1f565b936117836040519586613ab3565b818552602085019160051b810160240182368211610de65760248301905b82821061193657505050506044359060643580156119285780340361192857600480546040516331a9108f60e11b8152918201859052602090829060249082906001600160a01b03165afa90811561191d5790849187916118d7575b506118179291610e52916001600160a01b03163314613d76565b6003546001600160a01b031691823b1561051257604051637715ee7560e01b8152606060048201529361184e906064860190613db8565b9560031985880301602486015251808752602087019060208160051b890101939187905b8282106118ab5788808981818b8183818e8e604483015203925af180156105a55761189a5750f35b816118a491613ab3565b6106535780f35b909192946020806118c96001938d601f199082030186528951613db8565b970192019201909291611872565b9150506020813d602011611915575b816118f360209383613ab3565b81010312610de65790610e528461190c61181794613bfd565b915091926117fd565b3d91506118e6565b6040513d88823e3d90fd5b62a4671960e71b8552600485fd5b813567ffffffffffffffff81116119665760209161195b839260243691890101613b37565b8152019101906117a1565b8780fd5b5061197436613b05565b929183156109d8578334036109d85760048394602060018060a01b0383541660405193848092637e062a3560e11b82525afa80156105665784928691611a98575b50600254611a229360209390926001600160a01b03908116926119d9929116613eec565b6119e582303384613e80565b6004805460405163095ea7b360e01b81526001600160a01b0390911691810191909152602481019290925290928391908290889082906044820190565b03925af180156104ee57611a7b575b506004546001600160a01b031691823b15611a76576044849283604051958694859363076426ed60e11b8552600485015260248401525af180156105a55761189a5750f35b505050fd5b611a939060203d60201161099a5761098d8183613ab3565b611a31565b9250506020823d602011611ad9575b81611ab460209383613ab3565b8101031261051257836020916119d9611acf611a2295613bfd565b92945050916119b5565b3d9150611aa7565b50346106535780600319360112610653575f5160206140865f395f51905f52546040516001600160a01b039091168152602090f35b5060403660031901126106535760043567ffffffffffffffff81116105fd57366023820112156105fd57806004013590611b4f82613b1f565b90611b5d6040519283613ab3565b828252602082016024819460051b83010191368311610de657602401905b828210611d465750505060243590811561102a5781340361102a576004546002546001600160a01b0391821693611bb492909116613eec565b805192845b848110611ce2575060055460405163124a913560e31b8152602060048201528351602482018190529092604484019284926001600160a01b03909116918991825b818110611cc65750505082908160209503925af1908115610566578591611ca7575b5015611c9857908391825b848110611c32578380f35b611c3c8183613d90565b51833b156105125784611c659160405180938192632142170760e11b8352333060048501613d12565b038183885af1908115610566578591611c83575b5050600101611c27565b81611c8d91613ab3565b6105f957835f611c79565b6312e8dac360e11b8452600484fd5b611cc0915060203d60201161099a5761098d8183613ab3565b5f611c1c565b825187526020968701968896508c945090920191600101611bfa565b85611ced8285613d90565b51853b156105fd5781611d169160405180938192632142170760e11b8352303360048501613d12565b0381838a5af180156105a557611d31575b5050600101611bb9565b81611d3b91613ab3565b610de657855f611d27565b8135815260209182019101611b7b565b5034610653578060031936011261065357611d6f613f6c565b5f5160206140865f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5036600319016101a081126105fd5761018013610653576101843580156106455780341061064557610124356001600160a01b03811692908381036105fd573084146121fa576001600160a01b03611e15613d60565b161515806121e1575b1561071d57611e2d8334613cf1565b6006602160991b016001600160a01b03611e45613d60565b16036121d857611e578160a435613cf1565b925b6006602160991b016001600160a01b03611e71613d4a565b16036121cf57611e838260c435613cf1565b935b611ebf6001600160a01b03611e98613d60565b1695611eb76001600160a01b03611ead613d4a565b169330338a613e80565b303384613e80565b60015460405163095ea7b360e01b81526001600160a01b03909116600482015260a435602482018190529390602081604481878b5af180156104ee576121b2575b5060015460405163095ea7b360e01b81526001600160a01b03909116600482015260c43560248201819052979060208160448188885af180156105665790611f59929161124c57506002546001600160a01b0316613eec565b611f638147613cf1565b60015460405163b5007d1f60e01b8152919991966001600160a01b039182169291611f8c613a4c565b1660048901526001600160a01b03611fa2613a78565b1660248901526044358060020b809103610de25760448901526064358060020b809103610de25760648901526084358060020b809103610de25760848901528660a48901528960c489015260e43560e48901526101043561010489015250610124870152610144356101448701526101643560018060a01b03811680910361051257866080938193610184936101648401525af19485156105a557829683988496859861213f575b5091876001600160801b0396949261206660809c979547613cf1565b958693848b838110612106575b505050508082106120b2575b50509150506120a2575b5060405194855216602084015260408301526060820152f35b6120ac9033613eec565b5f612089565b6120ec946006602160991b016001600160a01b036120ce613d4a565b16141590506120f65761042692916108ec91613cf1565b3390613f33565b5f8082878261207f565b6121009250613cf1565b906120e5565b612136936006602160991b016001600160a01b03612122613d60565b16036120f65761042692916108ec91613cf1565b5f80848b612073565b965096509650909196506080843d6080116121aa575b8161216260809383613ab3565b81010312610de2579160809684926001600160801b03946120669796519661218c60208701613c37565b9960606040880151970151989a96989950929496509092949961204a565b3d9150612155565b6121ca9060203d60201161099a5761098d8183613ab3565b611f00565b60c43593611e85565b60a43592611e59565b506001600160a01b036121f2613d4a565b161515611e1e565b634e46966960e11b8252600482fd5b503461065357606036600319011261065357612223613a4c565b6024359061222f613a62565b91612238613f6c565b6001600160a01b0383169182156122af577fcbcdbdf10631a43cc99c80acace8232649421c3f4f73919f16013d47c83a687a936060936001600160a01b03909216929081846122a05761228c915083613eec565b60405192835260208301526040820152a180f35b6122aa9185613f33565b61228c565b63d92e233d60e01b8552600485fd5b506122c836613b05565b929183156109d8578334036109d85760248394602060018060a01b0360045416604051938480926331a9108f60e11b82528760048301525afa8015610566578392869161242e575b5061232992610e52916001600160a01b03163314613d76565b60048054604051637e062a3560e11b81529160209183919082906001600160a01b03165afa80156104ee57839185916123eb575b5061237a916020916001600160a01b03166119e582303384613e80565b03925af180156104ee576123ce575b506004546001600160a01b031691823b15611a76576044849283604051958694859363b2383e5560e01b8552600485015260248401525af180156105a55761189a5750f35b6123e69060203d60201161099a5761098d8183613ab3565b612389565b9150506020813d602011612426575b8161240760209383613ab3565b81010312611a765760208361241e61237a93613bfd565b91509161235d565b3d91506123fa565b9250506020823d60201161246a575b8161244a60209383613ab3565b8101031261051257610e528361246261232994613bfd565b915092612310565b3d915061243d565b50346106535780600319360112610653576002546040516001600160a01b039091168152602090f35b506124a536613b05565b929183156109d8578334036109d857600480546040516331a9108f60e11b81529182018390526001600160a01b031690602081602481855afa9081156105665785916125ee575b506001600160a01b031633149081612574575b501561255e5761251a839460018060a01b0360025416613eec565b6004546001600160a01b031691823b15611a76576044849283604051958694859363d1c2babb60e01b8552600485015260248401525af180156105a55761189a5750f35b639587bef160e01b835260045260245260449150fd5b60249150602090604051928380926331a9108f60e11b82528760048301525afa9081156104ee5784916125b4575b506001600160a01b031633145f6124ff565b90506020813d6020116125e6575b816125cf60209383613ab3565b810103126105f9576125e090613bfd565b5f6125a2565b3d91506125c2565b90506020813d602011612620575b8161260960209383613ab3565b810103126105125761261a90613bfd565b5f6124ec565b3d91506125fc565b5060803660031901126106535760043590612641613a62565b6064359081156109d8578134036109d8576001600160a01b0316903082146109c95760048054604051637e062a3560e11b81529160209183919082906001600160a01b03165afa9081156104ee5790859185916127b5575b5060025461270593602093926001600160a01b03908116926126bc929116613eec565b6126c882303384613e80565b6004805460405163095ea7b360e01b81526001600160a01b0390911691810191909152602481019290925290928391908290879082906044820190565b03925af180156109a157906020929161279a575b50606460018060a01b03600454169484604051968794859363ec32e6df60e01b85526004850152602435602485015260448401525af19081156104ae5790612767575b602090604051908152f35b506020813d602011612792575b8161278160209383613ab3565b810103126104a2576020905161275c565b3d9150612774565b6127b090833d851161099a5761098d8183613ab3565b612719565b9150506020813d6020116127f6575b816127d160209383613ab3565b810103126105f95784612705926126bc6127ec602094613bfd565b9293505092612699565b3d91506127c4565b50346106535780600319360112610653577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036128565760206040515f5160206140a65f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50346106535780600319360112610653576004546040516001600160a01b039091168152602090f35b506040366003190112610653576128a3613a4c565b6024359067ffffffffffffffff821161050e573660238301121561050e57816004013590836128d183613ae9565b936128df6040519586613ab3565b8385526020850193366024828401011161050e57806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612a8f575b50612a8057612942613f6c565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181612a4c575b5061298557634c9c8ce360e01b86526004859052602486fd5b93845f5160206140a65f395f51905f52879603612a3a5750823b15612a28575f5160206140a65f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115612a0d57612a099382915190845af4612a03613ebd565b91614040565b5080f35b5050505034612a195780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011612a78575b81612a6860209383613ab3565b81010312610de25751905f61296c565b3d9150612a5b565b63703e46dd60e11b8452600484fd5b5f5160206140a65f395f51905f52546001600160a01b0316141590505f612935565b503461065357602036600319011261065357612acb613a4c565b612ad3613f6c565b6001600160a01b0316801561071d576020817f5bb4a0f5a67f7c49cfc7820adfab4690a3752cf969544ddd8445b970d3643e89926001600160601b0360a01b6003541617600355604051908152a180f35b50346106535780600319360112610653576003546040516001600160a01b039091168152602090f35b50612b5736613a9d565b80156109d8578034036109d857602490602060018060a01b0360045416604051938480926331a9108f60e11b82528760048301525afa80156104ee5783928591612e45575b50612bb592610e52916001600160a01b03163314613d76565b8160018060a01b036004541660405192637e062a3560e11b8452602084600481855afa9384156109a1578394612e06575b506040516370a0823160e01b815230600482015293602090859060249082906001600160a01b03165afa9384156109a1578394612dcf575b50813b1561050e578291602483926040519485938492632e1a7d4d60e01b845260048401525af180156105a557612dba575b505060018060a01b036004541660405190637e062a3560e11b8252602082600481845afa9182156104ee578492612d7b575b506040516370a0823160e01b815230600482015291602090839060249082906001600160a01b03165afa9182156104ee578492612d46575b5090602060049260405193848092637e062a3560e11b82525afa9182156104ee578492612d01575b506106a792612cf091613cf1565b9033906001600160a01b0316613f33565b9091506020813d602011612d3e575b81612d1d60209383613ab3565b810103126105f9576106a792612d35612cf092613bfd565b92915092612ce2565b3d9150612d10565b91506020823d602011612d73575b81612d6160209383613ab3565b810103126104a2579051906020612cba565b3d9150612d54565b91506020823d602011612db2575b81612d9660209383613ab3565b810103126105f9576020612dab602493613bfd565b9250612c82565b3d9150612d89565b81612dc491613ab3565b6105fd57815f612c50565b925092506020823d602011612dfe575b81612dec60209383613ab3565b810103126104a257839151925f612c1e565b3d9150612ddf565b93506020843d602011612e3d575b81612e2160209383613ab3565b8101031261050e576020612e36602495613bfd565b9450612be6565b3d9150612e14565b9250506020823d602011612e81575b81612e6160209383613ab3565b810103126105f957610e5283612e79612bb594613bfd565b915092612b9c565b3d9150612e54565b50346106535780600319360112610653576005546040516001600160a01b039091168152602090f35b5060603660031901126106535760043590612ecb613a78565b916044359283156109d8578334036109d85760248394602060018060a01b0360045416604051938480926331a9108f60e11b82528860048301525afa80156105665784928691612f78575b50612f2f92610e52916001600160a01b03163314613d76565b6004546001600160a01b031691823b15611a7657612f6792849283604051809681958294632142170760e11b84523360048501613d12565b03925af180156105a55761189a5750f35b9250506020823d602011612fb4575b81612f9460209383613ab3565b8101031261051257610e5284612fac612f2f94613bfd565b915092612f16565b3d9150612f87565b50366003190160a081126105fd57608013610653576084359081156131de578134036131de57612fea613d4a565b6001600160a01b0316301415806131c5575b156131b65760015460043591906001600160a01b0316803b156105fd57816040518092632142170760e11b825281838161303b89303360048501613d12565b03925af180156105a5579082916131a1575b505060015460405163fc6f786560e01b815260048101849052926001600160a01b03918216929161307c613a78565b166024850152604435926001600160801b038416908185036105f957816044870152606435916001600160801b03831691828403610de65787608481886040948760648401525af1958615610566578597869761317a575b5050861115918261316d575b50501561315e576001546001600160a01b031690813b1561050e5761312083928392604051948580948193632142170760e11b8352333060048501613d12565b03925af180156105a557613149575b5050600254604093610468916001600160a01b0316613eec565b613154828092613ab3565b610653578061312f565b63f0ff962b60e01b8252600482fd5b5084111590505f806130e0565b90965061319791975060403d60401161055f5761054e8183613ab3565b969096955f6130d4565b816131ab91613ab3565b61065357805f61304d565b634e46966960e11b8152600490fd5b506001600160a01b036131d6613d4a565b161515612ffc565b62a4671960e71b8152600490fd5b5061012036600319011261065357613202613a4c565b61320a613a78565b613212613a8e565b6084359160a435916064359160c4356001600160a01b038116919082900361196657610104359384156112f5578434036112f5573083146112e657821561345e57885460405163d4b6846d60e01b8152986001600160a01b03909116938a929160208b600481895afa9a8b156104ee57849b613420575b5060405163874029d960e01b81526001600160a01b039182166004820181905295821660248201819052971515604482018190529b909116606482015294602090869060849082905afa9485156109a15783956133de575b506133399460209083906001600160a01b031661330082303384613e80565b855460405163095ea7b360e01b81526001600160a01b039091166004820152602481019290925290968791908290879082906044820190565b03925af180156109a157604097610104966133649261124c57506002546001600160a01b0316613eec565b60018060a01b038354169187519a8b97889663037b79b160e21b885260048801526024870152604486015260648501528860848501528760a485015260c484015260e43560e48401525af19182156104ee57849385936112255750831015908161121a575015611208576040809350519182526020820152f35b94506020853d602011613418575b816133f960209383613ab3565b8101031261050e5760208261341061333997613bfd565b9650506132e1565b3d91506133ec565b909a506020813d602011613456575b8161343c60209383613ab3565b810103126105f95761344f602091613bfd565b9a90613289565b3d915061342f565b63d92e233d60e01b8952600489fd5b50366003190160e081126105fd5760c0136106535760c4358015610645578034106106455760015460405163133f757160e31b8152600480359082018190529093909161018090859060249082906001600160a01b03165afa93841561096757819082956137cc575b506134f86134e43447613cf1565b6002549095906001600160a01b0316613eec565b6001546001600160a01b0316803b1561050e57826040518092632142170760e11b825281838161352d8a303360048501613d12565b03925af180156109a1579083916137b7575b50506001600160a01b0316936024359061355b82303389613e80565b6001600160a01b031694604435916135758330338a613e80565b60015460405163095ea7b360e01b81526001600160a01b0390911660048201526024810182905260208160448188875af180156105665761379a575b5060015460405163095ea7b360e01b81526001600160a01b03909116600482015260248101849052602081604481888c5af180156105665761377d575b5083606060018060a01b036001541660c46040518098819363219f5d1760e01b83528b60048401528760248401528960448401526064356064840152608435608484015260a43560a48401525af195861561096757819782968398613730575b504781811161371c575b50506001546001600160a01b031690813b1561050e5761369383928392604051948580948193632142170760e11b8352333060048501613d12565b03925af180156105a557613707575b505091836060979284879583106136f2575b5050508083106136dd575b5050506001600160801b036040519316835260208301526040820152f35b6136ea9261042691613cf1565b815f806136bf565b6136ff9261042691613cf1565b835f806136b4565b613712828092613ab3565b61065357806136a2565b613729916114d491613cf1565b5f80613658565b9850965094506060873d606011613775575b8161374f60609383613ab3565b810103126106535761376087613c37565b9460406020890151980151959795965f61364e565b3d9150613742565b6137959060203d60201161099a5761098d8183613ab3565b6135ee565b6137b29060203d60201161099a5761098d8183613ab3565b6135b1565b816137c191613ab3565b6105fd57815f61353f565b90506137e89194506101803d811161063e576106218183613ab3565b505050505050505095925090505f6134d6565b503461065357608036600319011261065357613815613a4c565b5061381e613a78565b5060643567ffffffffffffffff81116105fd57366023820112156105fd57806004013567ffffffffffffffff811161050e573691016024011161065357604051630a85bd0160e11b8152602090f35b5060803660031901126104a257613882613a4c565b60243561388d613a62565b91606435928315613a3e57833403613a3e576001600160a01b031690308214613a2f576002546024946138c8916001600160a01b0316613eec565b60035460405163b9a09fd560e01b81526001600160a01b0392831660048201819052909590926020928792918391165afa9384156139b8575f946139f3575b506001600160a01b0384169384156139e057836139649260209261392d83303385613e80565b60405163095ea7b360e01b81526001600160a01b0390911660048201526024810192909252909283919082905f9082906044820190565b03925af180156139b8576139c3575b50823b156104a25760445f92836040519586948593636e553f6560e01b8552600485015260248401525af180156139b8576139ac575080f35b61001891505f90613ab3565b6040513d5f823e3d90fd5b6139db9060203d60201161099a5761098d8183613ab3565b613973565b50635c1fd47960e11b5f5260045260245ffd5b9093506020813d602011613a27575b81613a0f60209383613ab3565b810103126104a257613a2090613bfd565b925f613907565b3d9150613a02565b634e46966960e11b5f5260045ffd5b62a4671960e71b5f5260045ffd5b600435906001600160a01b03821682036104a257565b604435906001600160a01b03821682036104a257565b602435906001600160a01b03821682036104a257565b6044359081151582036104a257565b60409060031901126104a2576004359060243590565b90601f8019910116810190811067ffffffffffffffff821117613ad557604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111613ad557601f01601f191660200190565b60609060031901126104a257600435906024359060443590565b67ffffffffffffffff8111613ad55760051b60200190565b9080601f830112156104a257813590613b4f82613b1f565b92613b5d6040519485613ab3565b82845260208085019360051b8201019182116104a257602001915b818310613b855750505090565b82356001600160a01b03811681036104a257815260209283019201613b78565b6101009060031901126104a2576004356001600160a01b03811681036104a2579060243580151581036104a2579060443590606435906084359060a4356001600160a01b03811681036104a2579060c4359060e43590565b51906001600160a01b03821682036104a257565b908160209103126104a2575180151581036104a25790565b51908160020b82036104a257565b51906001600160801b03821682036104a257565b9190826101809103126104a25781516001600160601b03811681036104a25791613c7760208201613bfd565b91613c8460408301613bfd565b91613c9160608201613bfd565b91613c9e60808301613c29565b91613cab60a08201613c29565b91613cb860c08301613c29565b91613cc560e08201613c37565b916101008201519161012081015191613cee610160613ce76101408501613c37565b9301613c37565b90565b91908203918211613cfe57565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03918216815291166020820152604081019190915260600190565b91908260409103126104a2576020825192015190565b6024356001600160a01b03811681036104a25790565b6004356001600160a01b03811681036104a25790565b15613d7e5750565b630e35d34560e11b5f5260045260245ffd5b8051821015613da45760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b90602080835192838152019201905f5b818110613dd55750505090565b82516001600160a01b0316845260209384019390920191600101613dc8565b908160609103126104a2578051916040602083015192015190565b6001600160a01b03168015613e6d575f5160206140865f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b90613eb690613ea8613ebb956040519586936323b872dd60e01b602086015260248501613d12565b03601f198101845283613ab3565b613f9f565b565b3d15613ee7573d90613ece82613ae9565b91613edc6040519384613ab3565b82523d5f602084013e565b606090565b814710613f1c575f918291829182916001600160a01b03165af1613f0e613ebd565b9015613f175750565b613ff7565b504763cf47918160e01b5f5260045260245260445ffd5b60405163a9059cbb60e01b60208201526001600160a01b0390921660248301526044820192909252613ebb91613eb68260648101613ea8565b5f5160206140865f395f51905f52546001600160a01b03163303613f8c57565b63118cdaa760e01b5f523360045260245ffd5b905f602091828151910182855af1156139b8575f513d613fee57506001600160a01b0381163b155b613fce5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415613fc7565b80511561400657805190602001fd5b63d6bda27560e01b5f5260045ffd5b60ff5f5160206140c65f395f51905f525460401c161561403157565b631afcd79f60e31b5f5260045ffd5b9061404b5750613ff7565b8151158061407c575b61405c575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561405456fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220239f4d7b0e4ee7b1ca66adcec3c416c56fb0613345d95b1006e15cb6eeb0c07264736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00