UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 116 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_manager","type":"address","internalType":"contract IPoolManager"},{"name":"_weth","type":"address","internalType":"address payable"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"afterAddLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterDonate","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterInitialize","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"tick","type":"int24","internalType":"int24"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterRemoveLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeAddLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeDonate","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeInitialize","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeRemoveLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BeforeSwapDelta"},{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"nonpayable"},{"type":"function","name":"getHookPermissions","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Hooks.Permissions","components":[{"name":"beforeInitialize","type":"bool","internalType":"bool"},{"name":"afterInitialize","type":"bool","internalType":"bool"},{"name":"beforeAddLiquidity","type":"bool","internalType":"bool"},{"name":"afterAddLiquidity","type":"bool","internalType":"bool"},{"name":"beforeRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"beforeSwap","type":"bool","internalType":"bool"},{"name":"afterSwap","type":"bool","internalType":"bool"},{"name":"beforeDonate","type":"bool","internalType":"bool"},{"name":"afterDonate","type":"bool","internalType":"bool"},{"name":"beforeSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterAddLiquidityReturnDelta","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidityReturnDelta","type":"bool","internalType":"bool"}]}],"stateMutability":"pure"},{"type":"function","name":"poolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"function","name":"underlyingCurrency","inputs":[],"outputs":[{"name":"","type":"address","internalType":"Currency"}],"stateMutability":"view"},{"type":"function","name":"weth","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract WETH"}],"stateMutability":"view"},{"type":"function","name":"wrapZeroForOne","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"wrapperCurrency","inputs":[],"outputs":[{"name":"","type":"address","internalType":"Currency"}],"stateMutability":"view"},{"type":"error","name":"DeltaNotNegative","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"DeltaNotPositive","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"ExactInputNotSupported","inputs":[]},{"type":"error","name":"ExactOutputNotSupported","inputs":[]},{"type":"error","name":"HookNotImplemented","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"InvalidPoolFee","inputs":[]},{"type":"error","name":"InvalidPoolToken","inputs":[]},{"type":"error","name":"LiquidityNotAllowed","inputs":[]},{"type":"error","name":"NotPoolManager","inputs":[]}],"bytecode":{"object":"0x6101206040523461034457604051601f611bee38819003918201601f19168301916001600160401b03831184841017610348578084926040948552833981010312610344578051906001600160a01b038216820361034457602001516001600160a01b0381169190829003610344576080525f6101a061007d61035c565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06100db61035c565b60018152826020820152600160408201528260608201528260808201528260a0820152600160c08201528260e0820152826101008201528261012082015260016101408201528261016082015282610180820152015261200030161515600114801590610337575b8015610326575b8015610319575b801561030c575b80156102ff575b80156102ef575b80156102e3575b80156102d7575b80156102cb575b80156102bb575b80156102af575b80156102a3575b8015610297575b610284578060a0525f60c05280151560e05261010052604051611871908161037d8239608051818181610102015281816101f80152818161047201528181610768015281816107e3015281816108c101528181610a2f01528181610f8001528181610ff80152818161152001526115e0015260a0518181816103450152818161038d015281816104e101528181610afe0152610d15015260c051818181610264015281816103d701528181610b7c01528181610dc1015261108e015260e051818181610220015281816109420152610a83015261010051818181610b5a01528181610d500152610f320152f35b630732d7b560e51b5f523060045260245ffd5b50600130161515610197565b50600230161515610190565b50600430161515610189565b5060083016151560011415610182565b5060103016151561017b565b50602030161515610174565b5060403016151561016d565b5060803016151560011415610166565b506101003016151561015f565b5061020030161515610158565b5061040030161515610151565b50610800301615156001141561014a565b5061100030161515610143565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b038111838210176103485760405256fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081630bc6bffc146110465750806321d0ee7014610fce578063259982e514610f565780633fc8cef314610ee8578063575e24b4146109675780635d5711a51461090c5780636c2bbe7e146107b35780636fe7e6eb1461082e5780639f063efc146107b3578063b47b2fb11461069e578063b6a8b0fa1461068c578063c4e833ce14610505578063d52f63cf14610496578063dc4c90d314610427578063dc98354e146101755763e1b4af690361000f5734610172576004906100e5366112c2565b50505050505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361014d577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b7fae18210a000000000000000000000000000000000000000000000000000000008152fd5b80fd5b50346101725760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576101ad6110b2565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360112610172576101e061129f565b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036103ff577f00000000000000000000000000000000000000000000000000000000000000001561036d5761024c611476565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691161480610324575b156102fc5760643562ffffff81168091036102f8576102d05760206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b807f1213a0ab0000000000000000000000000000000000000000000000000000000060049252fd5b5080fd5b807fdcdedda90000000000000000000000000000000000000000000000000000000060049252fd5b5061032d611499565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691161461028d565b610375611476565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614801561028d57506103bf611499565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691161461028d565b807fae18210a0000000000000000000000000000000000000000000000000000000060049252fd5b503461017257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461017257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461017257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576020816101c0926101a060405161054a81611363565b82815282858201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015282610160820152826101808201520152806040516105a881611363565b600181528381018281526040820160018152606083018481526080840185815260a0850186815260c08601906001825260e08701928884526101008801948986526101208901968a88526101408a019860018a526101a06101608c019b8d8d5261018081019d8e52019c8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b5034610172576004906100e5366112c2565b5034610172576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576106d76110b2565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101725760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610172576101443567ffffffffffffffff81116102f8579061074f600492369084016110d5565b505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361014d577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b5034610172576004906107c5366111ce565b5050505050505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361014d577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b5034610172576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576108676110b2565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101725761089a61129f565b5060e4358060020b036101725760049073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361014d577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b503461017257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b5034610cb9576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610cb9576109a06110b2565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360112610cb95760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610cb9576101243567ffffffffffffffff8111610cb957610a169036906004016110d5565b505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813303610ec05760e4355f81128080610eb9575b610e9157801580610e8a575b610e625760c435801515809103610cb9577f0000000000000000000000000000000000000000000000000000000000000000151503610cfb578015610cf457610ab8826113ee565b935b803b15610ce5576040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152848160248183865af18015610ce957908591610cd0575b5090602090610ba08773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000611501565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af18015610cc557610c92575b5015610c7a57818312610c5257610c05610bfa610bff610bfa6060966114bc565b611447565b926114bc565b906fffffffffffffffffffffffffffffffff169060801b17905b604051917f575e24b400000000000000000000000000000000000000000000000000000000835260208301526040820152f35b6004827f93dafdf1000000000000000000000000000000000000000000000000000000008152fd5b818312610c5257610c05610bfa610bff6060956114bc565b6020813d602011610cbd575b81610cab602093836113ad565b81010312610cb95751610bd9565b5f80fd5b3d9150610c9e565b6040513d86823e3d90fd5b81610cda916113ad565b610ce557835f610b3a565b8380fd5b6040513d87823e3d90fd5b8193610aba565b92508215610e5b57610d0c816113ee565b925b610d3984307f0000000000000000000000000000000000000000000000000000000000000000611501565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610cb9575f80916024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528a60048401525af18015610e5057610e3b575b50610de584307f00000000000000000000000000000000000000000000000000000000000000006115c0565b15610e2357818312610c5257610e05610bfa610bff610bfa6060966114bc565b906fffffffffffffffffffffffffffffffff169060801b1790610c1f565b818312610c5257610e05610bfa610bff6060956114bc565b610e489193505f906113ad565b5f915f610db9565b6040513d5f823e3d90fd5b8092610d0e565b7f21b865b3000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f610a70565b7f0ace433b000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f610a64565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610cb9575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610cb957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610cb957610f6436611103565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610ec0577f78895c13000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610cb957610fdc36611103565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610ec0577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610cb9575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610cb95760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610cb957565b9181601f84011215610cb95782359167ffffffffffffffff8311610cb95760208381860195010111610cb957565b906101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830112610cb95760043573ffffffffffffffffffffffffffffffffffffffff81168103610cb9579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc820112610cb95760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c830112610cb95760c491610144359067ffffffffffffffff8211610cb9576111ca916004016110d5565b9091565b906101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830112610cb95760043573ffffffffffffffffffffffffffffffffffffffff81168103610cb9579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc820112610cb95760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c830112610cb95760c49161014435916101643591610184359067ffffffffffffffff8211610cb9576111ca916004016110d5565b60c4359073ffffffffffffffffffffffffffffffffffffffff82168203610cb957565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610cb95760043573ffffffffffffffffffffffffffffffffffffffff81168103610cb9579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc830112610cb95760249160c4359160e43591610104359067ffffffffffffffff8211610cb9576111ca916004016110d5565b6101c0810190811067ffffffffffffffff82111761138057604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761138057604052565b7f8000000000000000000000000000000000000000000000000000000000000000811461141a575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600f0b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811461141a575f0390565b60243573ffffffffffffffffffffffffffffffffffffffff81168103610cb95790565b60443573ffffffffffffffffffffffffffffffffffffffff81168103610cb95790565b9081600f0b9182036114ca57565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90816020910312610cb9575190565b909180156115bb5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610cb9575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610e50576115af5750565b5f6115b9916113ad565b565b505050565b5f915082156115bb5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610cb957604051907fa584119400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff8116918260048201525f8160248183885af18015610e505761184f575b50816116e05750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156116d457506116a95750565b6116ca9060203d6020116116cd575b6116c281836113ad565b8101906114f2565b50565b503d6116b8565b604051903d90823e3d90fd5b9091926040602082604481988285519788927fa9059cbb0000000000000000000000000000000000000000000000000000000084528b600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156117835750602082916004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156116d457506116a95750565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011690604051927f90bfb86500000000000000000000000000000000000000000000000000000000845260048401527fa9059cbb000000000000000000000000000000000000000000000000000000006024840152608060448401528160a00160648401523d60848401523d9060a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b61185c9194505f906113ad565b5f925f61166156fea164736f6c634300081a000a","sourceMap":"501:1865:106:-:0;;;;;;;;;;;;;;;;;-1:-1:-1;;501:1865:106;;;;-1:-1:-1;;;;;501:1865:106;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;501:1865:106;;;;;;;;;-1:-1:-1;;;;;501:1865:106;;;;;;;;;782:26:96;;-1:-1:-1;501:1865:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;782:26:96;501:1865:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;501:1865:106;;;:::i;:::-;3507:4:105;501:1865:106;;3457:568:105;501:1865:106;3457:568:105;;501:1865:106;3507:4:105;501:1865:106;3457:568:105;;501:1865:106;3457:568:105;501:1865:106;3457:568:105;;501:1865:106;3457:568:105;782:26:96;3457:568:105;;501:1865:106;3457:568:105;501:1865:106;3457:568:105;;501:1865:106;3507:4:105;501:1865:106;3457:568:105;;501:1865:106;3457:568:105;501:1865:106;3457:568:105;;501:1865:106;3457:568:105;501:1865:106;3457:568:105;;501:1865:106;3457:568:105;501:1865:106;3457:568:105;;501:1865:106;3507:4:105;501:1865:106;3457:568:105;;501:1865:106;3457:568:105;501:1865:106;3457:568:105;;501:1865:106;3457:568:105;501:1865:106;3457:568:105;;501:1865:106;3457:568:105;501:1865:106;;899:4:149;16467:29:58;:34;;3507:4:105;3729:74:58;;;:166;;;-1:-1:-1;3729:265:58;;;;-1:-1:-1;3729:362:58;;;;-1:-1:-1;3729:467:58;;;;-1:-1:-1;3729:570:58;;;;-1:-1:-1;3729:652:58;;;;-1:-1:-1;3729:732:58;;;;-1:-1:-1;3729:818:58;;;;-1:-1:-1;3729:902:58;;;;-1:-1:-1;3729:1009:58;;;;-1:-1:-1;3729:1114:58;;;;-1:-1:-1;3729:1236:58;;;;-1:-1:-1;3729:1384:58;;;;-1:-1:-1;3712:1491:58;;3195:26:105;501:1865:106;3195:26:105;-1:-1:-1;501:1865:106;3231:32:105;734:50:80;;;501:1865:106;3273:39:105;501:1865:106;1039:27;501:1865;;;;;;;;782:26:96;501:1865:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3712:1491:58;5138:28;;;-1:-1:-1;1084:176:54;899:4:149;1084:176:54;;;-1:-1:-1;1084:176:54;3729:1384:58;5052:61;3507:4:105;899::149;16467:29:58;:34;;3729:1384;;:1236;4907:58;501:1865:106;899:4:149;16467:29:58;:34;;3729:1236;;:1114;4794:49;501:1865:106;899:4:149;16467:29:58;:34;;3729:1114;;:1009;4688:50;501:1865:106;899:4:149;16467:29:58;:34;;3507:4:105;4651:87:58;;3729:1009;;:902;4594:37;501:1865:106;899:4:149;16467:29:58;:34;;3729:902;;:818;4509:38;501:1865:106;899:4:149;16467:29:58;:34;;3729:818;;:732;4426:35;501:1865:106;899:4:149;16467:29:58;:34;;3729:732;;:652;4345:36;782:26:96;899:4:149;16467:29:58;:34;;3507:4:105;4319:62:58;;3729:652;;:570;4252:47;501:1865:106;899:4:149;16467:29:58;:34;;3729:570;;:467;4148:48;501:1865:106;899:4:149;16467:29:58;:34;;3729:467;;:362;4047:44;501:1865:106;899:4:149;16467:29:58;:34;;3729:362;;:265;3949:45;501:1865:106;899:4:149;16467:29:58;:34;;3507:4:105;3915:79:58;;3729:265;;:166;3854:41;501:1865:106;899:4:149;16467:29:58;:34;;3729:166;;501:1865:106;-1:-1:-1;501:1865:106;;;;;;-1:-1:-1;501:1865:106;;;;;-1:-1:-1;501:1865:106;;;;;;;;-1:-1:-1;;;;;501:1865:106;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081630bc6bffc146110465750806321d0ee7014610fce578063259982e514610f565780633fc8cef314610ee8578063575e24b4146109675780635d5711a51461090c5780636c2bbe7e146107b35780636fe7e6eb1461082e5780639f063efc146107b3578063b47b2fb11461069e578063b6a8b0fa1461068c578063c4e833ce14610505578063d52f63cf14610496578063dc4c90d314610427578063dc98354e146101755763e1b4af690361000f5734610172576004906100e5366112c2565b50505050505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361014d577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b7fae18210a000000000000000000000000000000000000000000000000000000008152fd5b80fd5b50346101725760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576101ad6110b2565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360112610172576101e061129f565b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036103ff577f00000000000000000000000000000000000000000000000000000000000000001561036d5761024c611476565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691161480610324575b156102fc5760643562ffffff81168091036102f8576102d05760206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b807f1213a0ab0000000000000000000000000000000000000000000000000000000060049252fd5b5080fd5b807fdcdedda90000000000000000000000000000000000000000000000000000000060049252fd5b5061032d611499565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691161461028d565b610375611476565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614801561028d57506103bf611499565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691161461028d565b807fae18210a0000000000000000000000000000000000000000000000000000000060049252fd5b503461017257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461017257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461017257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576020816101c0926101a060405161054a81611363565b82815282858201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015282610160820152826101808201520152806040516105a881611363565b600181528381018281526040820160018152606083018481526080840185815260a0850186815260c08601906001825260e08701928884526101008801948986526101208901968a88526101408a019860018a526101a06101608c019b8d8d5261018081019d8e52019c8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b5034610172576004906100e5366112c2565b5034610172576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576106d76110b2565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101725760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610172576101443567ffffffffffffffff81116102f8579061074f600492369084016110d5565b505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361014d577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b5034610172576004906107c5366111ce565b5050505050505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361014d577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b5034610172576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576108676110b2565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101725761089a61129f565b5060e4358060020b036101725760049073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361014d577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b503461017257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b5034610cb9576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610cb9576109a06110b2565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360112610cb95760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610cb9576101243567ffffffffffffffff8111610cb957610a169036906004016110d5565b505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813303610ec05760e4355f81128080610eb9575b610e9157801580610e8a575b610e625760c435801515809103610cb9577f0000000000000000000000000000000000000000000000000000000000000000151503610cfb578015610cf457610ab8826113ee565b935b803b15610ce5576040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152848160248183865af18015610ce957908591610cd0575b5090602090610ba08773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000611501565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af18015610cc557610c92575b5015610c7a57818312610c5257610c05610bfa610bff610bfa6060966114bc565b611447565b926114bc565b906fffffffffffffffffffffffffffffffff169060801b17905b604051917f575e24b400000000000000000000000000000000000000000000000000000000835260208301526040820152f35b6004827f93dafdf1000000000000000000000000000000000000000000000000000000008152fd5b818312610c5257610c05610bfa610bff6060956114bc565b6020813d602011610cbd575b81610cab602093836113ad565b81010312610cb95751610bd9565b5f80fd5b3d9150610c9e565b6040513d86823e3d90fd5b81610cda916113ad565b610ce557835f610b3a565b8380fd5b6040513d87823e3d90fd5b8193610aba565b92508215610e5b57610d0c816113ee565b925b610d3984307f0000000000000000000000000000000000000000000000000000000000000000611501565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610cb9575f80916024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528a60048401525af18015610e5057610e3b575b50610de584307f00000000000000000000000000000000000000000000000000000000000000006115c0565b15610e2357818312610c5257610e05610bfa610bff610bfa6060966114bc565b906fffffffffffffffffffffffffffffffff169060801b1790610c1f565b818312610c5257610e05610bfa610bff6060956114bc565b610e489193505f906113ad565b5f915f610db9565b6040513d5f823e3d90fd5b8092610d0e565b7f21b865b3000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f610a70565b7f0ace433b000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f610a64565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610cb9575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610cb957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610cb957610f6436611103565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610ec0577f78895c13000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610cb957610fdc36611103565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610ec0577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610cb9575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610cb95760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610cb957565b9181601f84011215610cb95782359167ffffffffffffffff8311610cb95760208381860195010111610cb957565b906101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830112610cb95760043573ffffffffffffffffffffffffffffffffffffffff81168103610cb9579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc820112610cb95760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c830112610cb95760c491610144359067ffffffffffffffff8211610cb9576111ca916004016110d5565b9091565b906101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830112610cb95760043573ffffffffffffffffffffffffffffffffffffffff81168103610cb9579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc820112610cb95760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c830112610cb95760c49161014435916101643591610184359067ffffffffffffffff8211610cb9576111ca916004016110d5565b60c4359073ffffffffffffffffffffffffffffffffffffffff82168203610cb957565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610cb95760043573ffffffffffffffffffffffffffffffffffffffff81168103610cb9579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc830112610cb95760249160c4359160e43591610104359067ffffffffffffffff8211610cb9576111ca916004016110d5565b6101c0810190811067ffffffffffffffff82111761138057604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761138057604052565b7f8000000000000000000000000000000000000000000000000000000000000000811461141a575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600f0b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811461141a575f0390565b60243573ffffffffffffffffffffffffffffffffffffffff81168103610cb95790565b60443573ffffffffffffffffffffffffffffffffffffffff81168103610cb95790565b9081600f0b9182036114ca57565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90816020910312610cb9575190565b909180156115bb5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610cb9575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610e50576115af5750565b5f6115b9916113ad565b565b505050565b5f915082156115bb5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610cb957604051907fa584119400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff8116918260048201525f8160248183885af18015610e505761184f575b50816116e05750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156116d457506116a95750565b6116ca9060203d6020116116cd575b6116c281836113ad565b8101906114f2565b50565b503d6116b8565b604051903d90823e3d90fd5b9091926040602082604481988285519788927fa9059cbb0000000000000000000000000000000000000000000000000000000084528b600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156117835750602082916004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156116d457506116a95750565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011690604051927f90bfb86500000000000000000000000000000000000000000000000000000000845260048401527fa9059cbb000000000000000000000000000000000000000000000000000000006024840152608060448401528160a00160648401523d60848401523d9060a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b61185c9194505f906113ad565b5f925f61166156fea164736f6c634300081a000a","sourceMap":"501:1865:106:-:0;;;;;;;;;;-1:-1:-1;501:1865:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:96;;;;;;501:1865:106;672:11:96;501:1865:106;650:10:96;:34;646:63;;3575:20:149;;;;646:63:96;693:16;;;;501:1865:106;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;672:11:96;501:1865:106;650:10:96;:34;646:63;;4523:14:105;;;;4553:17;;:::i;:::-;501:1865:106;4574:18:105;;501:1865:106;;;448:51:80;4553:79:105;;;4523:206;4744:12;4740:43;;4797:11;501:1865:106;;;;;;;;;4793:45:105;;501:1865:106;;;4856:32:105;501:1865:106;;;4793:45:105;4822:16;;501:1865:106;4822:16:105;;;501:1865:106;;;;4740:43:105;4765:18;;501:1865:106;4765:18:105;;;4553:79;4596:17;;;:::i;:::-;501:1865:106;4617:15:105;;501:1865:106;;;448:51:80;4553:79:105;;4523:206;4649:17;;:::i;:::-;501:1865:106;4670:15:105;;501:1865:106;;;448:51:80;4649:79:105;;4523:206;4649:79;4689:17;;;:::i;:::-;501:1865:106;4710:18:105;;501:1865:106;;;448:51:80;4523:206:105;;646:63:96;693:16;;501:1865:106;693:16:96;;;501:1865:106;;;;;;;;;;;;;;;;411:41:96;501:1865:106;;;;;;;;;;;;;;;;;;;;2196:41:105;501:1865:106;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3507:4:105;501:1865:106;;3457:568:105;;;501:1865:106;;;;3457:568:105;;3507:4;501:1865:106;;;3457:568:105;;501:1865:106;;;;3457:568:105;;501:1865:106;;;;3457:568:105;;501:1865:106;;;;3457:568:105;;501:1865:106;3507:4:105;501:1865:106;;;3457:568:105;;501:1865:106;;;;;3457:568:105;;501:1865:106;;;;;3457:568:105;;501:1865:106;;;;;3457:568:105;;501:1865:106;3507:4:105;501:1865:106;;;;3457:568:105;;501:1865:106;;;;;3457:568:105;;501:1865:106;;;3457:568:105;501:1865:106;;;;;;;;3507:4:105;501:1865:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:96;;501:1865:106;672:11:96;501:1865:106;650:10:96;:34;646:63;;3575:20:149;;;;501:1865:106;;;;;;;;;;:::i;:::-;672:11:96;;;;;;;501:1865:106;672:11:96;501:1865:106;650:10:96;:34;646:63;;3575:20:149;;;;501:1865:106;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;672:11:96;501:1865:106;672:11:96;501:1865:106;650:10:96;:34;646:63;;3575:20:149;;;;501:1865:106;;;;;;;;;;;;;;;2813:36:105;501:1865:106;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:96;;501:1865:106;672:11:96;501:1865:106;650:10:96;;;:34;646:63;;5940:22:105;501:1865:106;;5940:26:105;;;;5980:38;;501:1865:106;5976:75:105;;6065:13;;:40;;;501:1865:106;6061:78:105;;501:1865:106;;;;;;;;;;6154:14:105;501:1865:106;;6154:35:105;;;6274:104;;;;6297:23;;;:::i;:::-;6274:104;;1373:33:106;;;;;501:1865;;;1373:33;;501:1865;1390:15;501:1865;;1373:33;;501:1865;1373:33;;501:1865;1373:33;;;;;;;;;;;;;;6274:104:105;1603:4:106;;501:1865;1603:4;1610:16;1603:4;501:1865;1603:4;501:1865;1575:18;1610:16;:::i;:::-;501:1865;;;1712:20;;;;501:1865;1712:20;;;;;;;;;;6274:104:105;-1:-1:-1;6528:98:105;;;1875:5:67;;;1871:49;;6670:34:105;6671:33;6543:36;6544:35;501:1865:106;6544:35:105;;:::i;:::-;6543:36;:::i;:::-;6528:98;6671:33;:::i;6670:34::-;453:132:79;;;;;;;6150:1154:105;;501:1865:106;;;7322:26:105;501:1865:106;;;;;;;;;;;1871:49:67;501:1865:106;814:96:54;1882:25:67;814:96:54;;;6528:98:105;1875:5:67;;;1871:49;;6670:34:105;6671:33;6582:44;501:1865:106;6582:44:105;;:::i;1712:20:106:-;501:1865;1712:20;;501:1865;1712:20;;;;;;501:1865;1712:20;;;:::i;:::-;;;501:1865;;;;;1712:20;;501:1865;-1:-1:-1;501:1865:106;;1712:20;;;-1:-1:-1;1712:20:106;;;501:1865;;;;;;;;;1373:33;;;;;:::i;:::-;501:1865;;1373:33;;;;501:1865;;;;1373:33;501:1865;;;;;;;;;6274:104:105;;;;;6150:1154;6810:138;-1:-1:-1;6810:138:105;;;;6849:23;;;:::i;:::-;6810:138;;2032:13:106;2025:4;;2000:15;2032:13;:::i;:::-;501:1865;2127:4;501:1865;2127:28;;;;;501:1865;;;;;;2127:28;;;;501:1865;2127:28;;;501:1865;2127:28;;501:1865;2127:28;;;;;;;;6810:138:105;2025:4:106;2208:13;2025:4;;2173:18;2208:13;:::i;:::-;7098:97:105;;;1875:5:67;;;1871:49;;7239:34:105;7240:33;7113:38;7114:37;501:1865:106;7114:37:105;;:::i;7239:34::-;453:132:79;;;;;;;6150:1154:105;;;7098:97;1875:5:67;;;1871:49;;7239:34:105;7240:33;7154:41;501:1865:106;7154:41:105;;:::i;2127:28:106:-;;;;;501:1865;2127:28;;:::i;:::-;501:1865;2127:28;;;;;501:1865;;;;;;;;;6810:138:105;;;;;6061:78;6114:25;501:1865:106;6114:25:105;501:1865:106;;6114:25:105;6065:40;;501:1865:106;6065:40:105;;5976:75;6027:24;501:1865:106;6027:24:105;501:1865:106;;6027:24:105;5980:38;;501:1865:106;5980:38:105;;646:63:96;693:16;501:1865:106;693:16:96;501:1865:106;;693:16:96;501:1865:106;;;;;;;;;;;;;;;584:26;501:1865;;;;;;;;;;;:::i;:::-;672:11:96;;;;;501:1865:106;672:11:96;501:1865:106;650:10:96;:34;646:63;;5239:21:105;501:1865:106;5239:21:105;501:1865:106;;5239:21:105;501:1865:106;;;;;;;:::i;:::-;672:11:96;;;;;501:1865:106;672:11:96;501:1865:106;650:10:96;:34;646:63;;3575:20:149;501:1865:106;3575:20:149;501:1865:106;;3575:20:149;501:1865:106;;;;;;;;;;;;2302:44:105;501:1865:106;2302:44:105;501:1865:106;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;501:1865:106;;;;;-1:-1:-1;501:1865:106;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;4689:17:105;501:1865:106;;;;;;;;;:::o;1460:151:67:-;;501:1865:106;;;1558:6:67;;;1554:50;;1460:151::o;1554:50::-;1566:25;814:96:54;;;;;501:1865:106;;;;;;;;;;;:::o;1270:173:93:-;;;1362:11;;1358:24;;501:1865:106;1391:11:93;501:1865:106;1391:45:93;;;;;1372:1;501:1865:106;;1391:45:93;501:1865:106;;;;;;1391:45:93;;;;;501:1865:106;1391:45:93;;501:1865:106;1391:45:93;;;501:1865:106;;;;;;;;;;1391:45:93;;;;;;;;1270:173;:::o;1391:45::-;1372:1;1391:45;;;:::i;:::-;1270:173::o;1358:24::-;1375:7;;;:::o;1766:346::-;1866:1;;-1:-1:-1;1856:11:93;;1852:24;;501:1865:106;1886:11:93;501:1865:106;1886:26:93;;;;;;501:1865:106;;1886:26:93;501:1865:106;1886:26:93;;501:1865:106;;;1886:26:93;;;;;501:1865:106;1866:1:93;1886:26;;;;;;;;;;;;;1766:346;-1:-1:-1;4998:58:80;1926:24:93;;501:1865:106;;;;1886:26:93;501:1865:106;;1966:35:93;;;;501:1865:106;1966:35:93;;;;;;;;;;;;1922:184;1766:346::o;1966:35::-;;;501:1865:106;1966:35:93;501:1865:106;1966:35:93;;;;;;;;:::i;:::-;;;;;:::i;:::-;;1766:346::o;1966:35::-;;;;;;501:1865:106;;;;;;;;;;1922:184:93;1765:2574:80;;;501:1865:106;;1765:2574:80;2238:1774;1765:2574;;2238:1774;;;;;;;;;;1886:26:93;2238:1774:80;;;1886:26:93;2238:1774:80;;;;;;;;;;;;;;;;;;;;;;501:1865:106;2238:1774:80;;;;;4124:8;4120:209;;501:1865:106;;;;1886:26:93;501:1865:106;;2075:20:93;;;;501:1865:106;2075:20:93;;;;;;;;;;;;1922:184;1766:346::o;4120:209:80:-;3741:1424:54;;2238:1774:80;3741:1424:54;;;;501:1865:106;3741:1424:54;;3710:21;3741:1424;;1886:26:93;3741:1424:54;;;2238:1774:80;1886:26:93;3741:1424:54;;;;2238:1774:80;3741:1424:54;;;;;;;;;;;;;;;;;;;;;4268:28:80;3741:1424:54;;;;1886:26:93;3741:1424:54;;;;;;;;;;1886:26:93;;;;;1866:1;1886:26;;:::i;:::-;1866:1;1886:26;;;","linkReferences":{},"immutableReferences":{"52637":[{"start":258,"length":32},{"start":504,"length":32},{"start":1138,"length":32},{"start":1896,"length":32},{"start":2019,"length":32},{"start":2241,"length":32},{"start":2607,"length":32},{"start":3968,"length":32},{"start":4088,"length":32},{"start":5408,"length":32},{"start":5600,"length":32}],"53560":[{"start":837,"length":32},{"start":909,"length":32},{"start":1249,"length":32},{"start":2814,"length":32},{"start":3349,"length":32}],"53564":[{"start":612,"length":32},{"start":983,"length":32},{"start":2940,"length":32},{"start":3521,"length":32},{"start":4238,"length":32}],"53567":[{"start":544,"length":32},{"start":2370,"length":32},{"start":2691,"length":32}],"53975":[{"start":2906,"length":32},{"start":3408,"length":32},{"start":3890,"length":32}]}},"methodIdentifiers":{"afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,by