0 txs
3 calls
constructor
constructor()
functions
getClient
viewfunction getClient() view returns (address)
getClientFeePct
viewfunction getClientFeePct() view returns (uint256)
getCompanyFeePct
viewfunction getCompanyFeePct() view returns (uint256)
getCompanyFees
viewfunction getCompanyFees() view returns (uint256)
getUserInfo
viewfunction getUserInfo(address user, string poolId) view returns (tuple userInformation)
onERC721Received
viewfunction onERC721Received(address operator, address, uint256, bytes) view returns (bytes4)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
collectFees
nonpayablefunction collectFees(address user, string poolId) returns (uint256 collectedToken0, uint256 collectedToken1)
decreaseLiquidityPosition
nonpayablefunction decreaseLiquidityPosition(address user, string poolId, uint128 percentageToRemove)
emergencyERC20BatchWithdrawal
nonpayablefunction emergencyERC20BatchWithdrawal(address[] tokens, address to)
emergencyERC721BatchWithdrawal
nonpayablefunction emergencyERC721BatchWithdrawal(address nftContract, uint256[] tokenIds, address to)
initialize
nonpayablefunction initialize(address _protocolConfig, address _userManager, uint256 _maxWithdrawalSize)
migratePosition
nonpayablefunction migratePosition(address user, address manager, string poolId, int24 tickLower, int24 tickUpper) returns (uint256 newTokenId)
mintOrIncreaseLiquidityPosition
nonpayablefunction mintOrIncreaseLiquidityPosition(string poolId, address token0Address, address token1Address, uint24 fee, int24 tickLower, int24 tickUpper, uint256 amountMainTokenDesired, address userAddress) returns (uint256 tokenId)
setMaxWithdrawalSize
nonpayablefunction setMaxWithdrawalSize(uint256 _maxWithdrawalSize)
setProtocolConfigAddress
nonpayablefunction setProtocolConfigAddress(address _newProtocolConfig) returns (bool)
setUserManagerAddress
nonpayablefunction setUserManagerAddress(address _newUserManagerAddress) returns (bool)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawCompanyFees
nonpayablefunction withdrawCompanyFees()
events
EmergencyERC20BatchWithdrawal
event EmergencyERC20BatchWithdrawal(address indexed to)
EmergencyERC721BatchWithdrawal
event EmergencyERC721BatchWithdrawal(address indexed to)
ERC721Deposited
event ERC721Deposited(address indexed user, uint256 tokenId)
Initialized
event Initialized(uint64 version)
ProtocolConfigSet
event ProtocolConfigSet()
Upgraded
event Upgraded(address indexed implementation)
UserInfoReset
event UserInfoReset(address indexed user)
UserManagerSet
event UserManagerSet()
WithdrawCompanyFees
event WithdrawCompanyFees(uint256 clientFee, uint256 companyFee)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UAC_EMERGENCY_MODE_ACTIVE
error UAC_EMERGENCY_MODE_ACTIVE()
UAC_NOT_2FA
error UAC_NOT_2FA()
UAC_NOT_GENERAL_ADMIN
error UAC_NOT_GENERAL_ADMIN()
UAC_NOT_GENERAL_OR_MASTER_ADMIN
error UAC_NOT_GENERAL_OR_MASTER_ADMIN()
UAC_NOT_LIQUIDITY_MANAGER
error UAC_NOT_LIQUIDITY_MANAGER()
UAC_NOT_MASTER_ADMIN
error UAC_NOT_MASTER_ADMIN()
UAC_NOT_USER_MANAGER_OR_GENERAL_ADMIN
error UAC_NOT_USER_MANAGER_OR_GENERAL_ADMIN()
UAC_NOT_USER_MANAGER
error UAC_NOT_USER_MANAGER()
UAC_NOT_USER
error UAC_NOT_USER()
UAC_NOT_VAULT_MANAGER
error UAC_NOT_VAULT_MANAGER()
UAC_NOT_VAULT_OR_LIQUIDITY_MANAGER
error UAC_NOT_VAULT_OR_LIQUIDITY_MANAGER()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
VM_ADDRESS_UNCHANGED
error VM_ADDRESS_UNCHANGED()
VM_ALREADY_HAS_POSITION
error VM_ALREADY_HAS_POSITION()
VM_ARRAY_SIZE_LIMIT_EXCEEDED
error VM_ARRAY_SIZE_LIMIT_EXCEEDED(string arrayName, uint256 size)
VM_COMPANY_FEES_ZERO
error VM_COMPANY_FEES_ZERO()
VM_NO_POSITION
error VM_NO_POSITION()
VM_ON_RECEIVE_INVALID_OPERATOR
error VM_ON_RECEIVE_INVALID_OPERATOR()
VM_ON_RECEIVE_INVALID_SENDER
error VM_ON_RECEIVE_INVALID_SENDER()
VM_RANGE_MISMATCH
error VM_RANGE_MISMATCH()
VM_SAME_TICK_RANGE
error VM_SAME_TICK_RANGE()
VM_ZERO_ADDRESS
error VM_ZERO_ADDRESS()
VM_ZERO_MAX_WITHDRAWAL_SIZE
error VM_ZERO_MAX_WITHDRAWAL_SIZE()
creation bytecode
0x60a080604052346100ea57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b6040516134c790816100f082396080518181816114ff01526115d20152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880610054565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c908162053eb4146129645750806308ae9c551461222d578063150b7a021461217d5780631794bb3c14611fb35780631b44fb3c146119b757806341833e25146117ee5780634f1ef2861461155657806352d1902d146114ec57806359dc735c146114025780635b941e96146110a1578063647bb7f414610fc957806382d1cdf414610e77578063964ab801146107a6578063a043181514610614578063ad3cb1cc14610598578063ae1cd391146104bd578063c435968314610397578063d580dc4f146102a6578063d97ed65a146101aa5763e590a42b146100fa57600080fd5b346101a55760203660031901126101a557600054604051637bc4162b60e11b815233600482015290602090829060249082906001600160a01b03165afa9081156101995760009161016a575b501561015957610157600435612ec2565b005b633bda9c4560e11b60005260046000fd5b61018c915060203d602011610192575b6101848183612c48565b810190612cc9565b38610146565b503d61017a565b6040513d6000823e3d90fd5b600080fd5b346101a55760203660031901126101a5576101c3612b68565b600054604051637bc4162b60e11b815233600482015290602090829060249082906001600160a01b03165afa90811561019957600091610287575b5015610159576001600160a01b03168015610276576001546001600160a01b0381168214610265576001600160a01b031916176001556040516020907f74961419d6c00f878abfe2ba8c02be0a4d3dea9950888f4a88351994247498d7600080a160018152f35b6355b4a37560e11b60005260046000fd5b63bfeb466760e01b60005260046000fd5b6102a0915060203d602011610192576101848183612c48565b826101fe565b346101a55760003660031901126101a5576000546040516350b48de160e01b8152336004820152906001600160a01b0316602082602481845afa91821561019957600092610376575b508115610320575b501561030f5760206103076132d0565b604051908152f35b63136de93960e21b60005260046000fd5b604051637bc4162b60e11b81523360048201529150602090829060249082905afa90811561019957600091610357575b50816102f7565b610370915060203d602011610192576101848183612c48565b81610350565b61039091925060203d602011610192576101848183612c48565b90826102ef565b346101a55760203660031901126101a5576103b0612b68565b6000546040516350b48de160e01b81523360048201526001600160a01b0382169290602081602481875afa9081156101995760009161049e575b50801561044d575b1561030f576001600160a01b0316918215610276578214610265576001600160a01b0319161760009081556040516020917f3aa8516ef6b9e3e1011337ef06158ac1869f76b2dba1bc42788a46d28109a0859080a160018152f35b50604051637bc4162b60e11b8152336004820152602081602481875afa9081156101995760009161047f575b506103f2565b610498915060203d602011610192576101848183612c48565b84610479565b6104b7915060203d602011610192576101848183612c48565b846103ea565b346101a55760003660031901126101a5576000546040516350b48de160e01b8152336004820152906001600160a01b0316602082602481845afa91821561019957600092610577575b508115610521575b501561030f576020600254604051908152f35b604051637bc4162b60e11b81523360048201529150602090829060249082905afa90811561019957600091610558575b508161050e565b610571915060203d602011610192576101848183612c48565b81610551565b61059191925060203d602011610192576101848183612c48565b9082610506565b346101a55760003660031901126101a55760408051906105b88183612c48565b60058252640352e302e360dc1b6020830152805180926020825280519081602084015260005b8281106105fd5750506000828201840152601f01601f19168101030190f35b6020828201810151878301870152869450016105de565b346101a55761062236612c86565b600060c060409493945161063581612c17565b8281528260208201528260408201528260608201528260808201528260a082015201526024602060018060a01b0360005416604051928380926333b52a9f60e11b82523360048301525afa90811561019957600091610787575b5015610776576106b49160018060a01b03166000526004602052604060002092613066565b60005260205260e060406000206040516106cd81612c17565b81549182825260018060a01b036001820154166020830190815260018060a01b036002830154169060408401918252600383015491606085019183600f0b8352608086019360801d600f0b845260c0600560048701549660a089019788520154960195865260405196875260018060a01b03905116602087015260018060a01b03905116604086015251600f0b606085015251600f0b60808401525160a08301525160c0820152f35b632355d4b960e01b60005260046000fd5b6107a0915060203d602011610192576101848183612c48565b8461068f565b346101a5576101003660031901126101a5576004356001600160401b0381116101a5576107d7903690600401612bda565b6107df612b94565b906107e8612b7e565b926064359162ffffff83168093036101a557610802612c07565b60a435918260020b8093036101a55760e4356001600160a01b03811696908790036101a5576000546040516333b52a9f60e11b81523360048201526001600160a01b0390911690602081602481855afa90811561019957600091610e58575b501561077657602060049160405192838092632fcf47c160e11b82525afa90811561019957600091610e39575b50610e285760009061089e61332e565b6040516370a0823160e01b8152306004820152999097906001600160a01b03891660208c602481845afa9b8c15610d9557859c610df4575b506001546040516321f8a72160e01b81527f867e3ea2df6cbfcf43f2a6624818423bf8d8116264a8cb9ad066c8da445c38b0600482015290602090829060249082906001600160a01b03165afa908115610de9578691610da0575b506024916109476020928d60c4359130916130ab565b6040516370a0823160e01b815230600482015292839182905afa908115610d95578591610d5d575b506109826080999a9b9c61099c92612e40565b9a8b906001600160a01b03610995612fff565b16906130e8565b6109a6858a613066565b8b85526004602052604085209085526020526040842094604051998a966109cc88612c17565b805480895260018201546001600160a01b0390811660208b015260028301541660408a01526003820154600f81810b60608c0190815260809290921d900b9c9099019b8c52600482015460a08e015260059091015460c08d015215610ae75750505050505051600f0b9060020b149182610ad9575b505015610ac857519160409060646001600160a01b03610a5f612fff565b169360008451958694859363b5e8afb960e01b8552896004860152602485015260448401525af1801561019957610a9d575b50602090604051908152f35b604090813d8311610ac1575b610ab38183612c48565b810103126101a55781610a91565b503d610aa9565b63169f032560e21b60005260046000fd5b51600f0b1490508480610a41565b919697949b9950919750610afd92999450613066565b93868952600460205260408920858a526020526040892054610d4e576060906101046001600160a01b03610b2f612fff565b16998b6040519b8c9485936307b781fd60e01b855260018060a01b0316998a600486015260018060a01b03169b8c6024860152604485015260020b9788606485015287608485015260a48401528b60c4840152600160e48401525af1968715610d43578897610d03575b506005939291610c5a9160405196610bb088612c17565b89885260208089019586526040808a0192835260608a0194855260808a0193845260a08a018d815260c08b018e81528c8f5260048452828f20998f52989092528c209851895594516001890180546001600160a01b03199081166001600160a01b0393841617909155915160028a018054909316911617905590516003870180546001600160801b039092166001600160801b0319929092169190911781559051600f0b90612e8b565b516004840155519101556001600160a01b03610c74612f5d565b16803b15610cff5760405163095ea7b360e01b815260048101859052602481018490529084908290604490829084905af18015610cf45793602094610ce4575b50507fa2d003d5da09c66f819593df4005002649b2d85f2bcb235106733d6655cb25a883604051848152a2610307565b610ced91612c48565b8380610cb4565b6040513d86823e3d90fd5b8380fd5b610c5a91975091610d2f600595949360603d606011610d3c575b610d278183612c48565b810190612e25565b5050979150919293610b99565b503d610d1d565b6040513d8a823e3d90fd5b6310377f2560e01b8952600489fd5b90506020813d602011610d8d575b81610d7860209383612c48565b81010312610d89575161098261096f565b8480fd5b3d9150610d6b565b6040513d87823e3d90fd5b90506020813d602011610de1575b81610dbb60209383612c48565b81010312610ddd57602491610947610dd4602093612d07565b92505091610931565b8580fd5b3d9150610dae565b6040513d88823e3d90fd5b909b506020813d602011610e20575b81610e1060209383612c48565b81010312610d8957519a8c6108d6565b3d9150610e03565b63061eacdb60e41b60005260046000fd5b610e52915060203d602011610192576101848183612c48565b8961088e565b610e71915060203d602011610192576101848183612c48565b8a610861565b346101a55760003660031901126101a557600054604051637bc4162b60e11b815233600482015290602090829060249082906001600160a01b03165afa90811561019957600091610faa575b501561015957610ed16132d0565b610ed961323e565b90610ee261332e565b90600254908115610f83576001600160a01b03841615610276578015610f83578082029082820403610f945761271090049060018210610f8357610f76827f0389e9590f30222dae6b55252780e660abbcf66a8a703094d32fb6fdcadff80195604095610f63610f528487612e40565b95610f5d8588612e4d565b90612e40565b600255610f71853383613217565b613217565b82519182526020820152a1005b637ebe119960e01b60005260046000fd5b634e487b7160e01b600052601160045260246000fd5b610fc3915060203d602011610192576101848183612c48565b81610ec3565b346101a55760003660031901126101a5576000546040516350b48de160e01b8152336004820152906001600160a01b0316602082602481845afa91821561019957600092611080575b50811561102a575b501561030f576020610307612ed0565b604051637bc4162b60e11b81523360048201529150602090829060249082905afa90811561019957600091611061575b508161101a565b61107a915060203d602011610192576101848183612c48565b8161105a565b61109a91925060203d602011610192576101848183612c48565b9082611012565b346101a5576110af36612c86565b6000546040516333b52a9f60e11b81523360048201526001600160a01b0390911690602081602481855afa908115610199576000916113e3575b501561077657602060049160405192838092632fcf47c160e11b82525afa908115610199576000916113c4575b50610e2857611135611126612f5d565b9161112f612fff565b93613066565b9260018060a01b038116938460005260046020526040600020816000526020526040600020549283156113b35760405163133f757160e31b815260048101859052906001600160a01b031661018082602481845afa8015610199576111e79660009360009261136f575b506000898152600460208181526040808420898552909152909120908101546005909101549890946001600160a01b03928316936111f5938b938693909189918591166130e8565b6001600160a01b03166130e8565b813b156101a55760405163095ea7b360e01b8152906000828061121c8a8560048401612e0a565b038183875af1908115610199578896606093869361135e575b50600089611260611244612ed0565b60405162955af160e01b81529d8e978896879560048701612e5a565b03925af190811561019957600091600097600091611334575b5061128690600254612e4d565b600255803b156101a55760405163095ea7b360e01b8152600060048201819052602482019790975295908690604490829084905af1928315610199576040976113179661131195611323575b508060005260046020528860002082600052602052600060048a8220015560005260046020528760002090600052602052600060058882200155612e4d565b92612e4d565b82519182526020820152f35b600061132e91612c48565b896112d2565b9050611355919750611286925060603d606011610d3c57610d278183612c48565b90979192611279565b600061136991612c48565b8b611235565b6111f594506113979192506101803d81116113ac575b61138f8183612c48565b810190612d5f565b5050505050505050959250905093919061119f565b503d611385565b631ae42cab60e01b60005260046000fd5b6113dd915060203d602011610192576101848183612c48565b84611116565b6113fc915060203d602011610192576101848183612c48565b856110e9565b346101a55760003660031901126101a5576000546040516350b48de160e01b8152336004820152906001600160a01b0316602082602481845afa918215610199576000926114cb575b508115611475575b501561030f57602061146361323e565b6040516001600160a01b039091168152f35b604051637bc4162b60e11b81523360048201529150602090829060249082905afa908115610199576000916114ac575b5081611453565b6114c5915060203d602011610192576101848183612c48565b816114a5565b6114e591925060203d602011610192576101848183612c48565b908261144b565b346101a55760003660031901126101a5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036115455760206040516000805160206134528339815191528152f35b63703e46dd60e11b60005260046000fd5b60403660031901126101a55761156a612b68565b602435906001600160401b0382116101a557366023830112156101a55781600401359061159682612c6b565b916115a46040519384612c48565b808352602083019336602483830101116101a557816000926024602093018737840101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156117cb575b5061154557600054604051637bc4162b60e11b815233600482015290602090829060249082906001600160a01b03165afa908115610199576000916117ac575b5015610159576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa60009181611778575b506116885784634c9c8ce360e01b60005260045260246000fd5b806000805160206134528339815191528692036117645750823b156117505760008051602061345283398151915280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28251156117355760008091610157945190845af43d1561172d573d9161171083612c6b565b9261171e6040519485612c48565b83523d6000602085013e6133f0565b6060916133f0565b5050503461173f57005b63b398979f60e01b60005260046000fd5b634c9c8ce360e01b60005260045260246000fd5b632a87526960e21b60005260045260246000fd5b9091506020813d6020116117a4575b8161179460209383612c48565b810103126101a55751908661166e565b3d9150611787565b6117c5915060203d602011610192576101848183612c48565b8461163d565b600080516020613452833981519152546001600160a01b031614159050846115fd565b346101a55760403660031901126101a5576004356001600160401b0381116101a55761181e903690600401612baa565b90611827612b94565b600054604051637bc4162b60e11b815233600482015291939190602090829060249082906001600160a01b03165afa90811561019957600091611998575b50156101595760035481116119635760005b8181106118af576001600160a01b0384167f4042b5aa63298707eca47aab312507d0bb1095738480d22bdba8fb893d2ca55f600080a2005b602460206001600160a01b036118ce6118c9858789612ce1565b612eae565b16604051928380926370a0823160e01b82523060048301525afa9081156101995760009161192e575b509081600192611909575b5001611877565b6119289086848060a01b036119226118c986898b612ce1565b16613217565b85611902565b906020823d821161195b575b8161194760209383612c48565b8101031261195857505160016118f7565b80fd5b3d915061193a565b6084906040519063cdf7201160e01b8252604060048301526006604483015265746f6b656e7360d01b60648301526024820152fd5b6119b1915060203d602011610192576101848183612c48565b84611865565b346101a55760a03660031901126101a5576119d0612b68565b6119d8612b94565b6044356001600160401b0381116101a5576119f7903690600401612bda565b92606435938460020b8095036101a557611a0f612c07565b6000546040516333b52a9f60e11b81523360048201526001600160a01b0390911690602081602481855afa90811561019957600091611f94575b501561077657602060049160405192838092632fcf47c160e11b82525afa90811561019957600091611f75575b50610e2857611a95611a86612f5d565b92611a8f612fff565b95613066565b9260018060a01b0316918260005260046020526040600020846000526020526040600020549081156113b35783600052600460205260406000208560005260205287600360406000200154600f0b14801590611f44575b15611f335760405163133f757160e31b8152600481018390526001600160a01b0391909116979092610180846024818c5afa93841561019957600090600095611f04575b506001600160a01b0394851697908516941692893b156101a55760405163095ea7b360e01b81526000818c818381611b6c888c60048401612e0a565b03925af1801561019957611ef3575b50604051631711deeb60e11b81526001600160a01b0390991660048a015260248901526044880182905260020b60648801819052916060886084816000855af19687156101995760009889908a99611ecb575b5060009581611dd5575b505060009780611cda575b5050506000848152600460209081526040808320888452909152902087815560030180546001600160801b0319166001600160801b0392909216919091178155611c2d9190612e8b565b816000526004602052604060002083600052602052611c556004604060002001918254612e4d565b90556000526004602052604060002090600052602052611c7e6005604060002001918254612e4d565b9055813b156101a55760405163095ea7b360e01b81526000600482018190526024820183905290928390604490829084905af191821561019957602092611cc9575b50604051908152f35b6000611cd491612c48565b82611cc0565b6040516370a0823160e01b8152306004820152939892602085602481865afa948515610cf4578495611d9f575b5091611d1a6020926024943090846130ab565b6040516370a0823160e01b815230600482015292839182905afa918215611d93578092611d5c575b5050611c2d9291611d5291612e40565b9590918980611be3565b9091506020823d602011611d8b575b81611d7860209383612c48565b8101031261195857505181611d52611d42565b3d9150611d6b565b604051903d90823e3d90fd5b9094506020813d602011611dcd575b81611dbb60209383612c48565b81010312610cff575193611d1a611d07565b3d9150611dae565b6040516370a0823160e01b8152306004820152929691602084602481855afa938415611ec0578394611e87575b50602491611e146020923088846130ab565b6040516370a0823160e01b815230600482015292839182905afa918215611d93578092611e50575b505090611e4891612e40565b938a80611bd8565b9091506020823d602011611e7f575b81611e6c60209383612c48565b81010312611958575051611e488c611e3c565b3d9150611e5f565b9093506020813d602011611eb8575b81611ea360209383612c48565b81010312611eb45751926024611e02565b8280fd5b3d9150611e96565b6040513d85823e3d90fd5b91995050611ee991975060603d606011610d3c57610d278183612c48565b979198908b611bce565b6000611efe91612c48565b8a611b7b565b9050611f209194506101803d81116113ac5761138f8183612c48565b505050505050505095925090508a611b30565b632b5ebf6760e21b60005260046000fd5b5083600052600460205260406000208560005260205260036040600020015460801d8360020b90600f0b1415611aec565b611f8e915060203d602011610192576101848183612c48565b87611a76565b611fad915060203d602011610192576101848183612c48565b88611a49565b346101a55760603660031901126101a557611fcc612b68565b611fd4612b94565b600080516020613472833981519152549091604082901c60ff16159160443591906001600160401b03811680159081612175575b600114908161216b575b159081612162575b50612151576001600160401b031981166001176000805160206134728339815191525583612128575b506001600160a01b03169283158015612117575b61027657811561210657600080516020613472833981519152549360ff8560401c16156120f55760018060a01b0319600154161760015560018060a01b031660018060a01b031960005416176000556003556120af57005b60ff60401b191660008051602061347283398151915255604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b631afcd79f60e31b60005260046000fd5b631c6a058960e21b60005260046000fd5b506001600160a01b03811615612057565b6001600160481b0319166001600160401b01176000805160206134728339815191525584612043565b63f92ee8a960e01b60005260046000fd5b9050158661201a565b303b159150612012565b859150612008565b346101a55760803660031901126101a557612196612b68565b61219e612b94565b506064356001600160401b0381116101a5576121be903690600401612bda565b506001600160a01b0390506121d1612f5d565b16330361221c576001600160a01b036121e8612fff565b166001600160a01b039091160361220b57604051630a85bd0160e11b8152602090f35b6354f5e1ed60e11b60005260046000fd5b63f22ebc6160e01b60005260046000fd5b346101a55760603660031901126101a557612246612b68565b6024356001600160401b0381116101a557612265903690600401612bda565b6044356001600160801b0381169392908490036101a5576000546040516333b52a9f60e11b81523360048201526001600160a01b0390911690602081602481855afa90811561019957600091612945575b501561077657602060049160405192838092632fcf47c160e11b82525afa90811561019957600091612926575b50610e28576122f0612ed0565b936122f9612f5d565b94612302612fff565b9161230d8585613066565b9260018060a01b03871696876000526004602052604060002085600052602052604060002054156113b3578760005260046020526040600020856000526020526040600020549860018060a01b03169060405163133f757160e31b81528a600482015261018081602481865afa938415610199576000916000956128f6575b506001600160a01b031695833b156101a55760008c6123c395898360405180998195829463095ea7b360e01b845260048401612e0a565b03925af1918215610199578b948d936128e5575b5061271087149889156126145790859661245b9392606097600052600460205260406000208160005260205260046040600020015498600052600460205260406000209060005260205260056040600020015491888b816125fa575b9050838092506125e0575b505050604051968795869562955af160e01b875260048701612e5a565b03816000875af180156101995761247d916000916125be575b50600254612e4d565b6002555b813b156101a55760009160848392604051948593849263c24c9a9d60e01b84528c600485015260248401528a60448401528160648401525af18015610199576125ad575b501561254e576124d6929350613066565b60008281526004602081815260408084209484529390529181208181556001810180546001600160a01b031990811690915560028201805490911690556003810182905591820181905560059091018190557f50e5416d96d4513b499290a23b605db26fad4b67bb67732015a1ed6fdf9d269e9080a2005b506001600160a01b0391506125639050612f5d565b16803b156101a55760405163095ea7b360e01b8152600060048201819052602482019390935291908290604490829084905af18015610199576125a257005b600061015791612c48565b60006125b891612c48565b856124c5565b6125d7915060603d606011610d3c57610d278183612c48565b91505089612474565b6125f2926001600160a01b03166130e8565b8e818a61243e565b61260c926001600160a01b03166130e8565b8f888b612433565b9450925090506040519062955af160e01b82528b60048301528a602483015260006044830152600060648301526084820152600060a482015260608160c48160008a5af1908115610199576000906000926128c2575b50600092816127ce575b5050600093816126da575b50508860005260046020526040600020826000526020526126a96004604060002001918254612e4d565b90558760005260046020526040600020906000526020526126d36005604060002001918254612e4d565b9055612481565b6040516370a0823160e01b81523060048201529294916001600160a01b039190911690602084602481855afa938415611ec0578394612799575b50602491612726602092308b846130ab565b6040516370a0823160e01b815230600482015292839182905afa918215611d93578092612762575b50509061275a91612e40565b918a8061267f565b9091506020823d602011612791575b8161277e60209383612c48565b8101031261195857505161275a8c61274e565b3d9150612771565b9093506020813d6020116127c6575b816127b560209383612c48565b81010312611eb45751926024612714565b3d91506127a8565b6040516370a0823160e01b81523060048201529293916001600160a01b039190911690602084602481855afa938415611ec057839461288d575b5060249161281a602092308c846130ab565b6040516370a0823160e01b815230600482015292839182905afa918215611d93578092612856575b50509061284e91612e40565b908b80612674565b9091506020823d602011612885575b8161287260209383612c48565b8101031261195857505161284e8d612842565b3d9150612865565b9093506020813d6020116128ba575b816128a960209383612c48565b81010312611eb45751926024612808565b3d915061289c565b90506128dd915060603d606011610d3c57610d278183612c48565b50908c61266a565b60006128f091612c48565b8d6123d7565b90945061291291506101803d81116113ac5761138f8183612c48565b50505050505050509250905090938c61238c565b61293f915060203d602011610192576101848183612c48565b856122e3565b61295e915060203d602011610192576101848183612c48565b866122b6565b346101a55760603660031901126101a55761297d612b68565b6024356001600160401b0381116101a55761299c903690600401612baa565b6129a7929192612b7e565b9360208160248160018060a01b0360005416637bc4162b60e11b82523360048301525afa90811561019957600091612b49575b5015610159576003548111612b12576001600160a01b03909116919060005b818110612a31576001600160a01b0385167f7690cf94d7ef729c676ba98fd6a8d4aabffcebd29842b562d672651f1fd83034600080a2005b612a3c818385612ce1565b35906040516331a9108f60e11b8152826004820152602081602481895afa90811561019957600091612ad9575b506001600160a01b03163014612a84575b60019150016129f9565b843b156101a5576000612aad9260405180948192632142170760e11b83528a3060048501612d1b565b038183895af191821561019957600192612ac8575b50612a7a565b6000612ad391612c48565b86612ac2565b906020823d8211612b0a575b81612af260209383612c48565b810103126119585750612b0490612d07565b87612a69565b3d9150612ae5565b6084906040519063cdf7201160e01b8252604060048301526008604483015267746f6b656e49647360c01b60648301526024820152fd5b612b62915060203d602011610192576101848183612c48565b856129da565b600435906001600160a01b03821682036101a557565b604435906001600160a01b03821682036101a557565b602435906001600160a01b03821682036101a557565b9181601f840112156101a5578235916001600160401b0383116101a5576020808501948460051b0101116101a557565b9181601f840112156101a5578235916001600160401b0383116101a557602083818601950101116101a557565b608435908160020b82036101a557565b60e081019081106001600160401b03821117612c3257604052565b634e487b7160e01b600052604160045260246000fd5b601f909101601f19168101906001600160401b03821190821017612c3257604052565b6001600160401b038111612c3257601f01601f191660200190565b9060406003198301126101a5576004356001600160a01b03811681036101a55791602435906001600160401b0382116101a557612cc591600401612bda565b9091565b908160209103126101a5575180151581036101a55790565b9190811015612cf15760051b0190565b634e487b7160e01b600052603260045260246000fd5b51906001600160a01b03821682036101a557565b6001600160a01b03918216815291166020820152604081019190915260600190565b51908160020b82036101a557565b51906001600160801b03821682036101a557565b9190826101809103126101a55781516001600160601b03811681036101a55791612d8b60208201612d07565b91612d9860408301612d07565b91612da560608201612d07565b91608082015162ffffff811681036101a55791612dc460a08201612d3d565b91612dd160c08301612d3d565b91612dde60e08201612d4b565b916101008201519161012081015191612e07610160612e006101408501612d4b565b9301612d4b565b90565b6001600160a01b039091168152602081019190915260400190565b908160609103126101a5578051916040602083015192015190565b91908203918211610f9457565b91908201809211610f9457565b919360a0936001959796929760c085019885528680871b031660208501526040840152606083015260808201520152565b80546001600160801b031660809290921b6001600160801b031916919091179055565b356001600160a01b03811681036101a55790565b8015612ecd57600355565b50565b60015460405163bd02d0f560e01b81527fa97175af8a7b9e5332bf2dfb7ea022192af32526a4c1b77882ee7e753d822510600482015290602090829060249082906001600160a01b03165afa90811561019957600091612f2e575090565b90506020813d602011612f55575b81612f4960209383612c48565b810103126101a5575190565b3d9150612f3c565b6001546040516321f8a72160e01b81527f9cb5ba573d7c87ffdb350369937be05e651c5afc72aefbf0322ef0a3688c0076600482015290602090829060249082906001600160a01b03165afa90811561019957600091612fc5575b506001600160a01b031690565b90506020813d602011612ff7575b81612fe060209383612c48565b810103126101a557612ff190612d07565b38612fb8565b3d9150612fd3565b6001546040516321f8a72160e01b81527f6878742ff510854cb02c186504af5267007c4a6d33f490fc28ec83e83e1458e1600482015290602090829060249082906001600160a01b03165afa90811561019957600091612fc557506001600160a01b031690565b906130a56060604051838194602083019660208852816040850152848401376000838284010152601f801991011681010301601f198101835282612c48565b51902090565b906130e1906130d36130e6956040519586936323b872dd60e01b602086015260248501612d1b565b03601f198101845283612c48565b613395565b565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529490831691602081604481865afa908115610199576000916131e3575b5061315d9461316b613140602094600094612e4d565b6040519788918683019463095ea7b360e01b865260248401612e0a565b03601f198101885287612c48565b85519082865af1903d60005190836131c4575b5050501561318b57505050565b6130e16130e6936040519063095ea7b360e01b6020830152602482015260006044820152604481526131be606482612c48565b82613395565b919250906131d957503b15155b38808061317e565b60019150146131d1565b90506020813d60201161320f575b816131fe60209383612c48565b810103126101a5575161315d61312a565b3d91506131f1565b6130e16130e693926130d360405194859263a9059cbb60e01b602085015260248401612e0a565b6001546040516321f8a72160e01b81527f9a1a21c3fa97dca8c9f39536dde89a0cb17e541623064f602a6891a1b2072586600482015290602090829060249082906001600160a01b03165afa9081156101995760009161329c575090565b90506020813d6020116132c8575b816132b760209383612c48565b810103126101a557612e0790612d07565b3d91506132aa565b60015460405163bd02d0f560e01b81527fc1a83cca1492d0d97f52a21bb4391e2c7354a1276848f280c91591b1010167d2600482015290602090829060249082906001600160a01b03165afa90811561019957600091612f2e575090565b6001546040516321f8a72160e01b81527f9d0862347ec5034f12a729a07315fc37fb0ad232fb16b27a10fce56899181a56600482015290602090829060249082906001600160a01b03165afa90811561019957600091612fc557506001600160a01b031690565b906000602091828151910182855af115610199576000513d6133e757506001600160a01b0381163b155b6133c65750565b635274afe760e01b60009081526001600160a01b0391909116600452602490fd5b600114156133bf565b90613416575080511561340557805190602001fd5b63d6bda27560e01b60005260046000fd5b81511580613448575b613427575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b1561341f56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212207fda76094ffb6b37c9871bf0f8745fdf4d9a5b55e102301d4741467d9eef4e3a64736f6c634300081e0033