From 8aa0987704e34f7030ad63765d0af875c7755101 Mon Sep 17 00:00:00 2001 From: ts0yu <120932697+ts0yu@users.noreply.github.com> Date: Sat, 14 Sep 2024 16:53:28 +0000 Subject: [PATCH] feat: update lex price --- contracts/utils/src/ArenaController.sol | 4 ++-- src/arena.rs | 14 +++++++++++++- src/artifacts/ArenaController.json | 2 +- src/lib.rs | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/contracts/utils/src/ArenaController.sol b/contracts/utils/src/ArenaController.sol index 735ef40..46c490f 100644 --- a/contracts/utils/src/ArenaController.sol +++ b/contracts/utils/src/ArenaController.sol @@ -42,8 +42,8 @@ contract ArenaController { lex = new LiquidExchange(address(currency0), address(currency1), initialPrice); - require(currency0.mint(address(this), type(uint256).max), "Minting currency0 to liquid exchange failed"); - require(currency1.mint(address(this), type(uint256).max), "Minting currency1 to liquid exchange failed"); + require(currency0.mint(address(this), 100000000000000), "Minting currency0 to liquid exchange failed"); + require(currency1.mint(address(this), 100000000000000), "Minting currency1 to liquid exchange failed"); } function constructSignal() public view returns (Signal memory) { diff --git a/src/arena.rs b/src/arena.rs index 59f8f93..4e6bd06 100644 --- a/src/arena.rs +++ b/src/arena.rs @@ -90,6 +90,18 @@ impl Arena { signal.sqrtPriceX96, ); + controller + .setPrice( + alloy::primitives::utils::parse_ether(&self.feed.step().to_string()) + .map_err(ArenaError::ConversionError)?, + ) + .send() + .await + .map_err(ArenaError::ContractError)? + .watch() + .await + .map_err(|e| ArenaError::PendingTransactionError(e))?; + self.arbitrageur.init(&signal, admin_provider.clone()).await; for step in 0..config.steps { @@ -216,4 +228,4 @@ impl ArenaBuilder { providers, } } -} +} \ No newline at end of file diff --git a/src/artifacts/ArenaController.json b/src/artifacts/ArenaController.json index 6fb5996..1d2b798 100644 --- a/src/artifacts/ArenaController.json +++ b/src/artifacts/ArenaController.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"fee","type":"uint256","internalType":"uint256"},{"name":"initialPrice","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidity","inputs":[{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"constructSignal","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ArenaController.Signal","components":[{"name":"currentTick","type":"int24","internalType":"int24"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"manager","type":"address","internalType":"address"},{"name":"lexPrice","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"poolKey","inputs":[],"outputs":[{"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"}],"stateMutability":"view"},{"type":"function","name":"setPool","inputs":[{"name":"poolFee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPrice","inputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapOnLex","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x610140604052348015610010575f80fd5b506040516193ff3803806193ff83398101604081905261002f91610445565b8160405161003c90610404565b908152602001604051809103905ff08015801561005b573d5f803e3d5ffd5b506001600160a01b0316608081905260405161007690610411565b6001600160a01b039091168152602001604051809103905ff08015801561009f573d5f803e3d5ffd5b506001600160a01b031660a0526040516100b89061041e565b604051809103905ff0801580156100d1573d5f803e3d5ffd5b506001600160a01b031660e0526040516012906100ed9061042b565b606080825260099082015268063757272656e6379360bc1b608082015260a06020820181905260029082015261063360f41b60c082015260ff909116604082015260e001604051809103905ff08015801561014a573d5f803e3d5ffd5b506001600160a01b0316610100526040516012906101679061042b565b60608082526009908201526863757272656e63793160b81b608082015260a06020820181905260029082015261633160f01b60c082015260ff909116604082015260e001604051809103905ff0801580156101c4573d5f803e3d5ffd5b506001600160a01b0390811661012081905261010051909116111561020057610120805161010080516001600160a01b03908116909352911690525b61010051610120518260405161021590610438565b6001600160a01b0393841681529290911660208301526040820152606001604051809103905ff08015801561024c573d5f803e3d5ffd5b506001600160a01b0390811660c052610100516040516340c10f1960e01b81523060048201525f1960248201529116906340c10f19906044016020604051808303815f875af11580156102a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c59190610467565b61032a5760405162461bcd60e51b815260206004820152602b60248201527f4d696e74696e672063757272656e63793020746f206c6971756964206578636860448201526a185b99d94819985a5b195960aa1b60648201526084015b60405180910390fd5b610120516040516340c10f1960e01b81523060048201525f1960248201526001600160a01b03909116906340c10f19906044016020604051808303815f875af1158015610379573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039d9190610467565b6103fd5760405162461bcd60e51b815260206004820152602b60248201527f4d696e74696e672063757272656e63793120746f206c6971756964206578636860448201526a185b99d94819985a5b195960aa1b6064820152608401610321565b505061048d565b61502b8061136083390190565b6116ad8061638b83390190565b6105bc80617a3883390190565b610eea80617ff483390190565b61052180618ede83390190565b5f8060408385031215610456575f80fd5b505080516020909101519092909150565b5f60208284031215610477575f80fd5b81518015158114610486575f80fd5b9392505050565b60805160a05160c05160e0516101005161012051610e3f6105215f395f81816104cb015281816106cb015261087701525f81816103ec015281816105cf015261084801525f81816101a301526101f301525f8181610341015281816109bd0152610a3e01525f81816105a00152818161069c01526107c001525f81816101d20152818161031201526109260152610e3f5ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c8063014807031461006457806306ba06fa146100b5578063182148ef146100ca5780636af577411461014357806391b7f5ed1461015657806396f5e27c14610169575b5f80fd5b61006c61017c565b60408051825160020b81526020808401516001600160a01b0390811691830191909152838301511691810191909152606091820151918101919091526080015b60405180910390f35b6100c86100c3366004610aa2565b6103c8565b005b5f5460015460028054610103936001600160a01b03908116938082169362ffffff600160a01b83041693600160b81b909204900b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a0016100ac565b6100c8610151366004610b19565b61083c565b6100c8610164366004610c15565b6109a7565b6100c8610177366004610c2c565b610a18565b604080516080810182525f8082526020820181905291810182905260608101919091525f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e631bcbf7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166332c961d95f6040518263ffffffff1660e01b815260040161023d9190610c9b565b602060405180830381865afa158015610258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027c9190610caf565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa1580156102c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e79190610cc6565b50509150915060405180608001604052808260020b8152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bf9190610caf565b90529392505050565b5f831315610589576040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af115801561043a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045e9190610d22565b6104af5760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637930206661696c6564000000000000000060448201526064015b60405180910390fd5b6040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af1158015610519573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053d9190610d22565b6105895760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637931206661696c6564000000000000000060448201526064016104a6565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106399190610d22565b6106855760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c656400000060448201526064016104a6565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610711573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107359190610d22565b6107815760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c656400000060448201526064016104a6565b60408051608081018252600284810b825283900b60208201528082018590525f606082018190529151632d35e7ed60e11b815290916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691635a6bcfda916107f5918590600401610d48565b6020604051808303815f875af1158015610811573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108359190610caf565b5050505050565b6040805160a0810182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081168083527f000000000000000000000000000000000000000000000000000000000000000082166020840181905262ffffff8a811685870181905260028b810b60608801528a861660809097018790525f80546001600160a01b03199081169096178155600180546001600160b81b031916909517600160a01b9093029290921762ffffff60b81b1916600160b81b938d16939093029290921790925580549092169093179055915163695c5bf560e01b81527f00000000000000000000000000000000000000000000000000000000000000009092169163695c5bf59161095f9186908690600401610d99565b6020604051808303815f875af115801561097b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099f9190610dee565b505050505050565b6040516391b7f5ed60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391b7f5ed906024015f604051808303815f87803b158015610a06575f80fd5b505af1158015610835573d5f803e3d5ffd5b60405163d004f0f760e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d004f0f7906044015f604051808303815f87803b158015610a7f575f80fd5b505af115801561099f573d5f803e3d5ffd5b8060020b8114610a9f575f80fd5b50565b5f805f60608486031215610ab4575f80fd5b833592506020840135610ac681610a91565b91506040840135610ad681610a91565b809150509250925092565b62ffffff81168114610a9f575f80fd5b6001600160a01b0381168114610a9f575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f805f60a08688031215610b2d575f80fd5b8535610b3881610ae1565b94506020860135610b4881610a91565b93506040860135610b5881610af1565b92506060860135610b6881610af1565b9150608086013567ffffffffffffffff811115610b83575f80fd5b8601601f81018813610b93575f80fd5b803567ffffffffffffffff811115610bad57610bad610b05565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610bdc57610bdc610b05565b6040528181528282016020018a1015610bf3575f80fd5b816020840160208301375f602083830101528093505050509295509295909350565b5f60208284031215610c25575f80fd5b5035919050565b5f8060408385031215610c3d575f80fd5b8235610c4881610af1565b946020939093013593505050565b80546001600160a01b0390811683526001820154808216602085015260a081901c62ffffff16604085015260b81c600290810b60608501529091015416608090910152565b60a08101610ca98284610c56565b92915050565b5f60208284031215610cbf575f80fd5b5051919050565b5f805f8060808587031215610cd9575f80fd5b8451610ce481610af1565b6020860151909450610cf581610a91565b6040860151909350610d0681610ae1565b6060860151909250610d1781610ae1565b939692955090935050565b5f60208284031215610d32575f80fd5b81518015158114610d41575f80fd5b9392505050565b610d528184610c56565b8151600290810b60a08301526020830151900b60c0820152604082015160e082015260609091015161010082015261014061012082018190525f9082015261016001919050565b610da38185610c56565b60018060a01b03831660a082015260e060c08201525f82518060e0840152806020850161010085015e5f6101008285010152610100601f19601f830116840101915050949350505050565b5f60208284031215610dfe575f80fd5b8151610d4181610a9156fea264697066735822122018ac6a9527ae29782c578f1dbfc1a3cc495fbdaf1ce9fb3deac4f8afdbb2f56964736f6c634300081a003360c0604052348015600e575f80fd5b5060405161502b38038061502b833981016040819052602b916077565b5f80546001600160a01b031916339081178255604051839282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350608052503060a052608d565b5f602082840312156086575f80fd5b5051919050565b60805160a051614f766100b55f395f6117e201525f818161220b01526122490152614f765ff3fe6080604052600436106101fb575f3560e01c80635a6bcfda11610113578063a58411941161009d578063f135baaa1161006d578063f135baaa14610641578063f2fde38b14610660578063f3cd914c1461067f578063f5298aca1461069e578063fe99049a146106bd575f80fd5b8063a5841194146105ab578063b6363cf2146105ca578063dbd035ff14610603578063f02de3b214610622575f80fd5b806380f0b44c116100e357806380f0b44c146104ed5780638161b8741461050c5780638da5cb5b1461052b57806397e8cd4e146105615780639bf6645f1461058c575f80fd5b80635a6bcfda1461046657806360460f061461049a578063695c5bf5146104af5780637e87ce7d146104ce575f80fd5b8063234266d711610194578063426a849311610164578063426a8493146103a157806348c89491146103c057806352759651146103ec578063558a72971461040b578063598af9e71461042a575f80fd5b8063234266d7146103245780632d7713891461034357806335fd631a146103625780633dd45adb1461038e575f80fd5b80630b0d9c09116101cf5780630b0d9c09146102bd57806311da60b4146102de578063156e29f6146102e65780631e2eaeaf14610305575f80fd5b8062fdd58e146101ff57806301ffc9a71461024857806307eff0dd14610277578063095bcdb61461029e575b5f80fd5b34801561020a575f80fd5b50610235610219366004614397565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b506102676102623660046143c1565b6106dc565b604051901515815260200161023f565b348015610282575f80fd5b5061028b600181565b60405160029190910b815260200161023f565b3480156102a9575f80fd5b506102676102b83660046143e8565b610712565b3480156102c8575f80fd5b506102dc6102d736600461441a565b6107b9565b005b61023561080a565b3480156102f1575f80fd5b506102dc6103003660046143e8565b61083c565b348015610310575f80fd5b5061023561031f366004614458565b610887565b34801561032f575f80fd5b5061023561033e3660046145d7565b610891565b34801561034e575f80fd5b506102dc61035d36600461463b565b610941565b34801561036d575f80fd5b5061038161037c366004614656565b6109d7565b60405161023f9190614676565b61023561039c36600461463b565b610a14565b3480156103ac575f80fd5b506102676103bb3660046143e8565b610a46565b3480156103cb575f80fd5b506103df6103da3660046146b8565b610aaa565b60405161023f91906146f6565b3480156103f7575f80fd5b506102dc61040636600461472b565b610b6d565b348015610416575f80fd5b5061026761042536600461476c565b610bdc565b348015610435575f80fd5b5061023561044436600461441a565b600560209081525f938452604080852082529284528284209052825290205481565b348015610471575f80fd5b50610485610480366004614796565b610c4b565b6040805192835260208301919091520161023f565b3480156104a5575f80fd5b5061028b617fff81565b3480156104ba575f80fd5b5061028b6104c9366004614838565b610dde565b3480156104d9575f80fd5b506102dc6104e836600461472b565b610fcd565b3480156104f8575f80fd5b506102dc610507366004614397565b61107f565b348015610517575f80fd5b5061023561052636600461441a565b6110f2565b348015610536575f80fd5b505f54610549906001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b34801561056c575f80fd5b5061023561057b36600461463b565b60016020525f908152604090205481565b348015610597575f80fd5b506103816105a636600461487f565b611181565b3480156105b6575f80fd5b506102dc6105c536600461463b565b6111ba565b3480156105d5575f80fd5b506102676105e43660046148ee565b600360209081525f928352604080842090915290825290205460ff1681565b34801561060e575f80fd5b5061038161061d36600461487f565b6111f6565b34801561062d575f80fd5b50600254610549906001600160a01b031681565b34801561064c575f80fd5b5061023561065b366004614458565b61122d565b34801561066b575f80fd5b506102dc61067a36600461463b565b611237565b34801561068a575f80fd5b50610235610699366004614925565b6112c9565b3480156106a9575f80fd5b506102dc6106b83660046143e8565b61140f565b3480156106c8575f80fd5b506102676106d73660046149c3565b611454565b5f6301ffc9a760e01b6001600160e01b03198316148061070c5750630f632fb360e01b6001600160e01b03198316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061073d908490614a1a565b90915550506001600160a01b0384165f90815260046020908152604080832086845290915281208054849290610774908490614a2d565b909155505060408051338082526020820185905285926001600160a01b038816925f80516020614ee183398151915291015b60405180910390a45060015b9392505050565b5f80516020614f018339815191525c6107dc576107dc6354e3ca0d60e01b6115b3565b6107f1836107e9836115bb565b5f03336115db565b6108056001600160a01b038416838361162e565b505050565b5f5f80516020614f018339815191525c61082e5761082e6354e3ca0d60e01b6115b3565b610837336116c2565b905090565b5f80516020614f018339815191525c61085f5761085f6354e3ca0d60e01b6115b3565b8161086d816107e9846115bb565b610881846001600160a01b03831684611765565b50505050565b5f81545f5260205ff35b5f5f80516020614f018339815191525c6108b5576108b56354e3ca0d60e01b6115b3565b6108bd6117d7565b5f6108dc6108cc8860a0902090565b5f90815260066020526040902090565b90506108e781611819565b6080870151610903906001600160a01b0316888888888861183d565b61090e8187876118ba565b915061091b87833361196d565b6080870151610937906001600160a01b03168888888888611995565b5095945050505050565b5f546001600160a01b0316331461098e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b855483526020830192506001860195508083106109f75781810382f35b5f5f80516020614f018339815191525c610a3857610a386354e3ca0d60e01b6115b3565b61070c826116c2565b919050565b335f8181526005602090815260408083206001600160a01b03881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7906107a69087815260200190565b60605f80516020614f018339815191525c15610ad057610ad06328486b6360e11b6115b3565b610ad8611a07565b6040516348eeb9a360e11b815233906391dd734690610afd9086908690600401614a68565b5f604051808303815f875af1158015610b18573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b3f9190810190614a7b565b90505f80516020614f218339815191525c15610b6557610b65635212cba160e01b6115b3565b61070c611a1a565b604082015162ffffff1662800000141580610b9e575081608001516001600160a01b0316336001600160a01b031614155b15610bb357610bb36330d2164160e01b6115b3565b610bc18162ffffff16611a2c565b60a082205f8181526006602052604090206108059083611a52565b335f8181526003602090815260408083206001600160a01b038716808552908352818420805460ff191687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f805f80516020614f018339815191525c610c7057610c706354e3ca0d60e01b6115b3565b610c786117d7565b60a086205f818152600660205260409020610c9281611819565b6080880151610cad906001600160a01b031689898989611a6d565b5f610d146040518060c00160405280336001600160a01b031681526020018a5f015160020b81526020018a6020015160020b8152602001610cf18b60400151611b6f565b600f0b81526060808d015160020b60208301528b01516040909101528390611b8b565b94509050610d228185611f05565b9450336001600160a01b0316837f541c041c2cce48e614b3de043c9280f06b6164c0a1741649e2de3c3d375f79748a5f01518b602001518c60400151604051610d8693929190600293840b81529190920b6020820152604081019190915260600190565b60405180910390a360808901515f90610dac906001600160a01b03168b8b898c8c611f38565b90965090508015610dc657610dc68a828c6080015161196d565b610dd18a873361196d565b5050505094509492505050565b5f610de76117d7565b6060850151617fff60029190910b1315610e12576060850151610e12906316e0049f60e31b90612057565b600160020b856060015160020b1215610e3c576060850151610e3c90631d3d20b160e31b90612057565b845160208601516001600160a01b03908116911610610e6e5784516020860151610e6e916306e6c98360e41b91612066565b610e92856040015186608001516001600160a01b031661208890919063ffffffff16565b610ead576080850151610ead90630732d7b560e51b90612149565b5f610ec0866040015162ffffff1661215e565b6080870151909150610ede906001600160a01b031687878787612183565b60a086205f610eec886121f4565b5f848152600660205260409020909250610f099150888386612326565b6080890151909450610f28906001600160a01b03168989878a8a612385565b87602001516001600160a01b0316885f01516001600160a01b0316837fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d64388b604001518c606001518d608001518d8b604051610fba95949392919062ffffff959095168552600293840b60208601526001600160a01b03928316604086015291166060840152900b608082015260a00190565b60405180910390a4505050949350505050565b6002546001600160a01b03163314610fef57610fef6348f5c3ed60e01b6115b3565b6103e9610fff821610623e900062fff0008316101661101e5761101e63a7abe2f760e01b62ffffff8316612149565b60a082206110408261103a835f90815260066020526040902090565b906123f8565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b5f80516020614f018339815191525c6110a2576110a26354e3ca0d60e01b6115b3565b335f9081526001600160a01b038316602052604081205c906110c3836115bb565b90508181600f0b146110df576110df63bda73abf60e01b6115b3565b610881846110ec83614b0d565b336115db565b6002545f906001600160a01b03163314611116576111166348f5c3ed60e01b6115b3565b8115611122578161113b565b6001600160a01b0383165f908152600160205260409020545b6001600160a01b0384165f90815260016020526040812080549293508392909190611167908490614a1a565b909155506107b290506001600160a01b038416858361162e565b606060405180602082528360208301526040820191508360051b8201855b80355c84526020938401930181841061119f575b5081810382f35b6111c261240d565b6001600160a01b0381166111d35750565b5f6111e6826001600160a01b0316612441565b90506111f282826124bd565b5050565b606060405180602082528360208301526040820191508360051b8201855b803554845260209384019301818410156111b357611214565b5f815c5f5260205ff35b5f546001600160a01b0316331461127f5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610985565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f5f80516020614f018339815191525c6112ed576112ed6354e3ca0d60e01b6115b3565b6112f56117d7565b83602001515f036113105761131063be8b850760e01b6115b3565b60a085205f81815260066020526040902061132a81611819565b60808701515f908190819061134b906001600160a01b03168b8b8b8b6124fd565b8093508195508294505050506113ba84866040518060a001604052808e6060015160020b81526020018d5f0151151581526020018681526020018d604001516001600160a01b031681526020018562ffffff168152508c5f01516113b3578d60200151612619565b8d51612619565b60808b01519096505f92506113de91506001600160a01b03168a8a888b8b88612707565b909550905080156113f8576113f889828b6080015161196d565b61140389863361196d565b50505050949350505050565b5f80516020614f018339815191525c611432576114326354e3ca0d60e01b6115b3565b81611440816110ec846115bb565b610881846001600160a01b0383168461282a565b5f336001600160a01b0386161480159061149157506001600160a01b0385165f90815260036020908152604080832033845290915290205460ff16155b15611501576001600160a01b0385165f90815260056020908152604080832033845282528083208684529091529020545f1981146114ff576114d38382614a1a565b6001600160a01b0387165f90815260056020908152604080832033845282528083208884529091529020555b505b6001600160a01b0385165f90815260046020908152604080832086845290915281208054849290611533908490614a1a565b90915550506001600160a01b0384165f9081526004602090815260408083208684529091528120805484929061156a908490614a2d565b9091555050604080513381526020810184905284916001600160a01b0380881692908916915f80516020614ee1833981519152910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6001607f1b82106115d7576115d76393dafdf160e01b6115b3565b5090565b81600f0b5f036115ea57505050565b5f806116006001600160a01b03861684866128e8565b91509150805f0361161857611613612921565b611627565b815f0361162757611627612949565b5050505050565b5f6001600160a01b038416611661575f805f8085875af190508061165c5761165c6356cdd02560e11b612971565b610881565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061088157610881632745a14f60e21b612971565b5f5f80516020614ec18339815191525c6001600160a01b0381166116e85734915061174c565b34156116fe576116fe6319d245cf60e01b6115b3565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f6117336001600160a01b038416612441565b905061173f8282614a1a565b935061174961299e565b50505b61175f81611759846115bb565b856115db565b50919050565b6001600160a01b0383165f90815260046020908152604080832085845290915281208054839290611797908490614a2d565b9091555050604080513381526020810183905283916001600160a01b038616915f915f80516020614ee183398151915291015b60405180910390a4505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611817576118176306c4a1c760e11b6115b3565b565b80546001600160a01b03165f0361183a5761183a63486aa30760e01b6115b3565b50565b85336001600160a01b038216146118b15760208716156118b1576118af33878787878760405160240161187596959493929190614b74565b60408051601f198184030181529190526020810180516001600160e01b0316635b54587d60e11b1790526001600160a01b038916906129b0565b505b50505050505050565b60038301545f906001600160801b03168082036118e1576118e163a74f97ab60e01b6115b3565b61190f6118ed856115bb565b5f036118f8856115bb565b5f0360809190911b6001600160801b039091161790565b9150831561193b5761192f84600160801b836001600160801b0316612a40565b60018601805490910190555b82156119655761195983600160801b836001600160801b0316612a40565b60028601805490910190555b509392505050565b82516119839061197d8460801d90565b836115db565b610805836020015161197d84600f0b90565b85336001600160a01b038216146118b15760108716156118b1576118af3387878787876040516024016119cd96959493929190614b74565b60408051601f198184030181529190526020810180516001600160e01b031663e1b4af6960e01b1790526001600160a01b038916906129b0565b60015f80516020614f018339815191525d565b5f5f80516020614f018339815191525d565b620f424062ffffff8216111561183a5761183a631400211360e01b62ffffff8316612149565b611a5b82611819565b8154611a679082612adc565b90915550565b84336001600160a01b03821614611b67575f8460400151138015611a945750610800861615155b15611af557611aef3386868686604051602401611ab5959493929190614bbe565b60408051601f198184030181529190526020810180516001600160e01b031663259982e560e01b1790526001600160a01b038816906129b0565b50611b67565b5f846040015113158015611b0c5750610200861615155b15611b67576118b13386868686604051602401611b2d959493929190614bbe565b60408051601f198184030181529190526020810180516001600160e01b031663021d0ee760e41b1790526001600160a01b038816906129b0565b505050505050565b80600f81900b8114610a4157610a416393dafdf160e01b6115b3565b6060810151602082015160408301515f9283929091611baa8282612af7565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f14611cef57611be38884865f612b57565b6001600160801b0316602083015215158152611c028883866001612b57565b6001600160801b03166060830152151560408201525f600f85900b12611cb4575f611c52886080015160020b620d89e7198190058102620d89e8829005820203056001016001600160801b030490565b9050806001600160801b031682602001516001600160801b03161115611c8357611c8363b8e3c38560e01b85612057565b806001600160801b031682606001516001600160801b03161115611cb257611cb263b8e3c38560e01b84612057565b505b805115611cd0576080870151611cd09060058a01908590612c11565b806040015115611cef576080870151611cef9060058a01908490612c11565b5f80611cfc8a8686612c63565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080611d59838a8787612d17565b91509150611d85611d69836115bb565b611d72836115bb565b6001600160801b031660809190911b1790565b995050505050505f84600f0b1215611dee57805115611dc157600283810b5f90815260048a016020526040812081815560018101829055909101555b806040015115611dee57600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14611efb5786545f80611e0a8360a01c60020b90565b6001600160a01b038416915091508460020b8260020b1215611e5957611e52611e4c611e47611e3888612dd0565b611e4188612dd0565b8a613088565b611b6f565b60801b90565b9750611ef7565b8360020b8260020b1215611ed257611e90611e7a611e4783611e4188612dd0565b611d72611e47611e8989612dd0565b858b6130c0565b60038b0154909850611eab906001600160801b0316876130ec565b60038b0180546001600160801b0319166001600160801b0392909216919091179055611ef7565b611ef45f611d72611e47611ee589612dd0565b611eee89612dd0565b8b6130c0565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01611f2f611f2683611b6f565b611d7283611b6f565b95945050505050565b5f806001600160a01b0388163303611f5457508390505f61204c565b8491505f86604001511315611fe057610400881615611fdb57611fcc338888888888604051602401611f8b96959493929190614c1e565b60408051601f198184030181529190526020810180516001600160e01b0316625a2a8160e81b17905260028a1615155b6001600160a01b038b169190613113565b9050611fd88282613154565b91505b61204c565b61010088161561204c5761203d33888888888860405160240161200896959493929190614c1e565b60408051601f198184030181529190526020810180516001600160e01b03166346d95b2960e11b17905260018a161515611fbb565b90506120498282613154565b91505b965096945050505050565b815f528060020b60045260245ffd5b825f526001600160a01b0382166004526001600160a01b03811660245260445ffd5b5f6080831615801561209c57506008831615155b156120a857505f61070c565b604083161580156120bb57506004831615155b156120c757505f61070c565b61040083161580156120db57506002831615155b156120e757505f61070c565b61010083161580156120fb57506001831615155b1561210757505f61070c565b6001600160a01b0383161561213857613fff831615158061213357506280000062ffffff8316146107b2565b6107b2565b5062ffffff16628000001415919050565b815f526001600160a01b03811660045260245ffd5b5f6280000062ffffff83160361217557505f919050565b6115d78262ffffff16611a2c565b84336001600160a01b03821614611b6757612000861615611b67576118b133868686866040516024016121ba959493929190614c85565b60408051601f198184030181529190526020810180516001600160e01b03166301a206c160e51b1790526001600160a01b038816906129b0565b6002545f9081906001600160a01b031615612321577f00000000000000000000000000000000000000000000000000000000000000005a101561224157612241630f724b8160e11b6115b3565b6002546040517f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b0316905f90612283908790602401614cc6565b60408051601f198184030181529190526020810180516001600160e01b031663553bfc3760e01b17815281519192505f918291829190828789f13d60201416955085156122da576040513d5f823e805191505f8152505b8580156122eb57508062ffffff1681145b801561230857506103e9610fff821610623e900062fff000831610165b612313575f80612317565b6001815b9096509450505050505b915091565b83545f906001600160a01b03161561234857612348637983c05160e01b6115b3565b61235184613175565b905061237a826123748561236e6001600160a01b03891686613460565b9061347b565b90612adc565b909455509192915050565b85336001600160a01b038216146118b1576110008716156118b1576118af3387878787876040516024016123be96959493929190614cd4565b60408051601f198184030181529190526020810180516001600160e01b031663a910f80f60e01b1790526001600160a01b038916906129b0565b61240182611819565b8154611a67908261347b565b61242d5f80516020614ec18339815191525c6001600160a01b0316613496565b6118175761181763996caf6560e01b6115b3565b5f6001600160a01b038216612457575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015612499573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070c9190614d1d565b6001600160a01b0382165f80516020614ec18339815191525d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f806001600160a01b038816330361251c575f915061260e565b608088161561260e575f61257289338a8a8a8a604051602401612543959493929190614d34565b60408051601f198184030181529190526020810180516001600160e01b03166315d7892d60e21b1790526129b0565b9050805160601461258d5761258d631e048e1d60e01b6115b3565b604088015162ffffff1662800000036125a857606081015191505b600889161561260c57604081015192505f6125c38460801d90565b905080600f0b5f1461260a575f85126125e0600f83900b87614d8d565b9550806125ef575f86126125f3565b5f86135b1561260857612608637d05b8eb60e11b6115b3565b505b505b505b955095509592505050565b5f8080808061262889886134a7565b93509350935093505f831115612656576001600160a01b0386165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6126838760801d90565b61268d88600f0b90565b60408087015160a0880151606089015192516126f2959493908b90600f96870b81529490950b60208501526001600160a01b039290921660408401526001600160801b0316606083015260020b608082015262ffffff9190911660a082015260c00190565b60405180910390a35091979650505050505050565b5f806001600160a01b038916330361272357508490505f61281e565b5f61272e8460801d90565b90505f61273b85600f0b90565b905060408b16156127b5576127a8611e47338c8c8c8c8c60405160240161276796959493929190614db4565b60408051601f198184030181529190526020810180516001600160e01b031663b47b2fb160e01b17905260048e1615156001600160a01b038f169190613113565b6127b29082614e14565b90505b5f81600f0b5f1415806127cb575082600f0b5f14155b1561281657895160208b01515f13901515146127f6576001600160801b038316608083901b17612807565b6001600160801b038216608084901b175b90506128138982613154565b98505b889450925050505b97509795505050505050565b336001600160a01b038416811480159061286957506001600160a01b038085165f9081526003602090815260408083209385168352929052205460ff16155b156128dd576001600160a01b038085165f9081526005602090815260408083209385168352928152828220868352905220545f1981146128db576128ad8382614a1a565b6001600160a01b038087165f9081526005602090815260408083209387168352928152828220888352905220555b505b610881848484613b54565b6001600160a01b038281165f90815290841660205260408120805c9190612913600f85900b84614d8d565b915081815d50935093915050565b5f80516020614f218339815191525c600181039050805f80516020614f218339815191525d50565b5f80516020614f218339815191525c600181019050805f80516020614f218339815191525d50565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f5f80516020614ec18339815191525d565b60605f805f8451602086015f885af19050806129d6576129d663fb6a608160e01b612971565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080612a24575060208301516001600160e01b031916612a17836020015190565b6001600160e01b03191614155b15612a3957612a39631e048e1d60e01b6115b3565b5092915050565b5f838302815f1985870982811083820303915050808411612a5f575f80fd5b805f03612a71575082900490506107b2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60d01b62ffffff60d01b1662ffffff60d01b19919091161790565b8060020b8260020b12612b1657612b1663c4433ed560e01b8383613bbd565b620d89e719600283900b1215612b3757612b3763d5e2f7ab60e01b83612057565b620d89e8600282900b13156111f2576111f263035aeeff60e31b82612057565b600283900b5f908152600485016020526040812080548291906001600160801b0381169060801d612b8882886130ec565b6001600160801b03808216159084168015919091141596509094505f03612bd257885460a01c60020b60020b8860020b13612bd2576001808a0154908401556002808a0154908401555b5f86612be757612be28883614e14565b612bf1565b612bf18883614e41565b90508060801b6001600160801b0386161784555050505094509492505050565b600291820b910b80820715612c3e5760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215612cb9578160010154836001015403945081600201548360020154039350612d0c565b8560020b8160020b12612ce5578260010154826001015403945082600201548260020154039350612d0c565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906001600160801b0316600f86900b8203612d5657806001600160801b03165f03612d5157612d51632bbfae4960e21b6115b3565b612d7c565b612d6081876130ec565b87546001600160801b0319166001600160801b03919091161787555b612d9a87600101548603826001600160801b0316600160801b612a40565b9250612dba87600201548503826001600160801b0316600160801b612a40565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115612df957612df96345c3193d60e11b84612057565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b186002821615612e35576ffff97272373d413259a46990580e213a0260801c5b6004821615612e54576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e73576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e92576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612eb1576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ed0576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612eef576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612f0f576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f2f576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f4f576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f6f576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f8f576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612faf576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fcf576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fef576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613010576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613030576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561304f576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561306c576b048a170391f7dc42444e8fa20260801c5b5f841315613078575f19045b63ffffffff0160201c9392505050565b5f8082600f0b126130af576130a86130a38585856001613bda565b613c9d565b5f036115ab565b6115ab6130a38585855f035f613bda565b5f8082600f0b126130db576130a86130a38585856001613cb6565b6115ab6130a38585855f035f613cb6565b6001600160801b038216600f82900b01608081901c1561070c576393dafdf15f526004601cfd5b5f8061311f85856129b0565b90508261312f575f9150506107b2565b805160401461314857613148631e048e1d60e01b6115b3565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03611f2f611f2683611b6f565b5f73fffd8963efd1fc6a506488495d951d51639616826401000276a21983016001600160a01b031611156131b4576131b46318521d4960e21b83612149565b640100000000600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061324757607f810383901c9150613251565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461345157886001600160a01b031661343682612dd0565b6001600160a01b0316111561344b5781613453565b80613453565b815b9998505050505050505050565b60a01b62ffffff60a01b1662ffffff60a01b19919091161790565b60b81b62ffffff60b81b1662ffffff60b81b19919091161790565b5f6001600160a01b0382161561070c565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a08101829052819081908554602086015160038801546001600160801b03165f8261350457610fff60c485901c1661350e565b610fff60b885901c165b60408a81015187525f60208801526001600160a01b0386169087015260a085901c60020b606087015261ffff1690508261354c578960020154613552565b89600101545b6080868101919091526001600160801b03831660a08701528901515f9062400000166135875760d085901c62ffffff16613599565b6135998a6080015162ffffff16613d02565b905081156135c757620f424062ffffff821661ffff84168181028381061515939004929092019101036135c9565b805b60408b01519097505f13905062ffffff8716620f42401480156135ea575080155b156135ff576135ff634b10312360e11b6115b3565b89604001515f0361361a575f80985098505050505050613b4b565b83156136985760608a01516001600160a01b03868116911610613659576136596001600160a01b0386165b60608c0151637c9c6e8f60e01b9190613d11565b6401000276a36001600160a01b03168a606001516001600160a01b031610156136935760608a015161369390639e4d7cc760e01b90612149565b613709565b60608a01516001600160a01b038681169116116136c1576136c16001600160a01b038616613645565b73fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03168a606001516001600160a01b0316106137095760608a015161370990639e4d7cc760e01b90612149565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091525b8651158061376957508a606001516001600160a01b031687604001516001600160a01b0316145b613a545760408701516001600160a01b0316815260608701518b516137939160058f019188613d3a565b1515604083015260020b60208201819052620d89e719126137b957620d89e71960208201525b620d89e860020b816020015160020b126137d757620d89e860208201525b6137e48160200151612dd0565b6001600160a01b03908116606083810182905260408a0151908e0151613825939192911680821891811160ff8a1618919091021860a08a01518a518c613e23565b60c085015260a084015260808301526001600160a01b0316604088015281613889576138548160a00151613c9d565b875103875260c08101516080820151613870916130a391614a2d565b876020018181516138819190614e6e565b9052506138c4565b61389c8160c00151826080015101613c9d565b875101875260a08101516138af90613c9d565b876020018181516138c09190614d8d565b9052505b8215613900575f620f4240848360c0015184608001510102816138e9576138e9614e8d565b60c084018051929091049182900390529990990198505b60a08701516001600160801b03161561393f576139338160c00151600160801b8960a001516001600160801b0316612a40565b60808801805190910190525b80606001516001600160a01b031687604001516001600160a01b031603613a1957806040015115613a01575f8086613980578d60010154896080015161398b565b88608001518e600201545b915091505f6139d68f85602001518585600292830b5f90815260049094016020526040909320600181018054909203909155908101805490920390915554600160801b9004600f0b90565b905087156139e1575f035b6139ef8a60a00151826130ec565b6001600160801b031660a08b01525050505b602081015160ff8616900360020b6060880152613742565b805f01516001600160a01b031687604001516001600160a01b031614613a4f57613a468760400151613175565b60020b60608801525b613742565b613a8c8760400151613a7389606001518961346090919063ffffffff16565b6001600160a01b0319166001600160a01b039091161790565b8c5560a08701516001600160801b03858116911614613acc5760a087015160038d0180546001600160801b0319166001600160801b039092169190911790555b84613ae057608087015160028d0155613aeb565b608087015160018d01555b81151585151514613b1f57613b18613b068860200151611b6f565b611d72895f01518e6040015103611b6f565b9950613b44565b613b41613b34885f01518d6040015103611b6f565b611d728960200151611b6f565b99505b5050505050505b92959194509250565b6001600160a01b0383165f90815260046020908152604080832085845290915281208054839290613b86908490614a1a565b9091555050604080513381526020810183905283915f916001600160a01b038716915f80516020614ee183398151915291016117ca565b6040518381528260020b60048201528160020b6024820152604481fd5b5f836001600160a01b0316856001600160a01b03161115613bf9579293925b6001600160a01b038516613c135762bfc9215f526004601cfd5b600160601b600160e01b03606084901b166001600160a01b038686031683613c6657866001600160a01b0316613c538383896001600160a01b0316612a40565b81613c6057613c60614e8d565b04613c92565b613c92613c7d8383896001600160a01b0316613fa9565b886001600160a01b0316808204910615150190565b979650505050505050565b805f811215610a4157610a416393dafdf160e01b6115b3565b5f6001600160a01b038481169086160360ff81901d90810118600160601b6001600160801b038516613ce9818484612a40565b9350845f83858409111684019350505050949350505050565b62bfffff8116610a4181611a2c565b6040518381526001600160a01b03831660048201526001600160a01b0382166024820152604481fd5b5f80600284810b9086900b8181078313919005038315613db557600281900b60081d600181810b5f90815260208a905260409020545f1960ff85168381019390931b01908116801515955085613d9757888360ff16860302613daa565b88613da182613fd9565b840360ff168603025b965050505050613e19565b6001908101600281900b60081d80830b5f90815260208a905260409020545f1960ff841694851b011990811680151595509293919285613dff57888360ff0360ff16860102613e12565b8883613e0a83614069565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff85166001600160a01b03808a16908b1610158288128015613f1c575f613e5c8a5f0385620f424003620f4240612a40565b905082613e7557613e708d8d8d6001613cb6565b613e82565b613e828c8e8d6001613bda565b9650868110613eb6578b9750620f42408414613ead57613ea8878586620f424003613fa9565b613eaf565b865b9450613ef2565b613ec28d8c8386614104565b975082613edb57613ed68d898d6001613cb6565b613ee8565b613ee8888e8d6001613bda565b9650868a5f030394505b82613f0857613f038d898d5f613bda565b613f14565b613f14888e8d5f613cb6565b955050613f9a565b81613f3257613f2d8c8c8c5f613bda565b613f3e565b613f3e8b8d8c5f613cb6565b9450848910613f4f578a9650613f61565b889450613f5e8c8b8785614152565b96505b81613f7857613f738c888c6001613cb6565b613f85565b613f85878d8c6001613bda565b9550613f97868485620f424003613fa9565b93505b50505095509550955095915050565b5f613fb5848484612a40565b90508180613fc557613fc5614e8d565b838509156107b257600101806107b2575f80fd5b5f808211613fe5575f80fd5b507f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be831560081b6001600160801b03851160071b1784811c6001600160401b031060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b5f808211614075575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b150316040581196001019091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6001600160801b038416156001600160a01b03861615171561412e57634f2461b85f526004601cfd5b81614145576141408585856001614195565b611f2f565b611f2f8585856001614280565b5f6001600160801b038416156001600160a01b03861615171561417c57634f2461b85f526004601cfd5b8161418d576141408585855f614280565b611f2f8585855f5b5f8115614205575f6001600160a01b038411156141c9576141c484600160601b876001600160801b0316612a40565b6141e0565b6141e06001600160801b038616606086901b614ea1565b90506141fd6141f8826001600160a01b038916614a2d565b614362565b9150506115ab565b5f6001600160a01b038411156142325761422d84600160601b876001600160801b0316613fa9565b61424f565b61424f606085901b6001600160801b038716808204910615150190565b9050806001600160a01b0387161161426e57634323a5555f526004601cfd5b6001600160a01b0386160390506115ab565b5f825f0361428f5750836115ab565b600160601b600160e01b03606085901b168215614321576001600160a01b038616848102908582816142c3576142c3614e8d565b04036142f3578181018281106142f1576142e783896001600160a01b031683613fa9565b93505050506115ab565b505b506141fd818561430c6001600160a01b038a1683614ea1565b6143169190614a2d565b808204910615150190565b6001600160a01b0386168481029085820414818311166143485763f5c787f15f526004601cfd5b8082036142e76141f8846001600160a01b038b1684613fa9565b806001600160a01b0381168114610a4157610a416393dafdf160e01b6115b3565b6001600160a01b038116811461183a575f80fd5b5f80604083850312156143a8575f80fd5b82356143b381614383565b946020939093013593505050565b5f602082840312156143d1575f80fd5b81356001600160e01b0319811681146107b2575f80fd5b5f805f606084860312156143fa575f80fd5b833561440581614383565b95602085013595506040909401359392505050565b5f805f6060848603121561442c575f80fd5b833561443781614383565b9250602084013561444781614383565b929592945050506040919091013590565b5f60208284031215614468575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156144a5576144a561446f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156144d3576144d361446f565b604052919050565b803562ffffff81168114610a41575f80fd5b8035600281900b8114610a41575f80fd5b5f60a0828403121561450e575f80fd5b60405160a081016001600160401b03811182821017156145305761453061446f565b604052905080823561454181614383565b8152602083013561455181614383565b6020820152614562604084016144db565b6040820152614573606084016144ed565b6060820152608083013561458681614383565b6080919091015292915050565b5f8083601f8401126145a3575f80fd5b5081356001600160401b038111156145b9575f80fd5b6020830191508360208285010111156145d0575f80fd5b9250929050565b5f805f805f61010086880312156145ec575f80fd5b6145f687876144fe565b945060a0860135935060c0860135925060e08601356001600160401b0381111561461e575f80fd5b61462a88828901614593565b969995985093965092949392505050565b5f6020828403121561464b575f80fd5b81356107b281614383565b5f8060408385031215614667575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156146ad57835183526020938401939092019160010161468f565b509095945050505050565b5f80602083850312156146c9575f80fd5b82356001600160401b038111156146de575f80fd5b6146ea85828601614593565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060c0838503121561473c575f80fd5b61474684846144fe565b915061475460a084016144db565b90509250929050565b80358015158114610a41575f80fd5b5f806040838503121561477d575f80fd5b823561478881614383565b91506147546020840161475d565b5f805f808486036101408112156147ab575f80fd5b6147b587876144fe565b94506080609f19820112156147c8575f80fd5b506147d1614483565b6147dd60a087016144ed565b81526147eb60c087016144ed565b602082015260e08601356040820152610100860135606082015292506101208501356001600160401b03811115614820575f80fd5b61482c87828801614593565b95989497509550505050565b5f805f8060e0858703121561484b575f80fd5b61485586866144fe565b935060a085013561486581614383565b925060c08501356001600160401b03811115614820575f80fd5b5f8060208385031215614890575f80fd5b82356001600160401b038111156148a5575f80fd5b8301601f810185136148b5575f80fd5b80356001600160401b038111156148ca575f80fd5b8560208260051b84010111156148de575f80fd5b6020919091019590945092505050565b5f80604083850312156148ff575f80fd5b823561490a81614383565b9150602083013561491a81614383565b809150509250929050565b5f805f8084860361012081121561493a575f80fd5b61494487876144fe565b94506060609f1982011215614957575f80fd5b50604051606081016001600160401b038111828210171561497a5761497a61446f565b60405261498960a0870161475d565b815260c0860135602082015260e08601356149a381614383565b604082015292506101008501356001600160401b03811115614820575f80fd5b5f805f80608085870312156149d6575f80fd5b84356149e181614383565b935060208501356149f181614383565b93969395505050506040820135916060013590565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561070c5761070c614a06565b8082018082111561070c5761070c614a06565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6115ab602083018486614a40565b5f60208284031215614a8b575f80fd5b81516001600160401b03811115614aa0575f80fd5b8201601f81018413614ab0575f80fd5b80516001600160401b03811115614ac957614ac961446f565b614adc601f8201601f19166020016144ab565b818152856020838501011115614af0575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f81600f0b60016001607f1b03198103614b2957614b29614a06565b5f0392915050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b6001600160a01b0387168152614b8d6020820187614b31565b8460c08201528360e08201526101206101008201525f614bb261012083018486614a40565b98975050505050505050565b6001600160a01b0386168152614bd76020820186614b31565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f613c9261016083018486614a40565b6001600160a01b0387168152614c376020820187614b31565b8451600290810b60c08301526020860151900b60e082015260408501516101008201526060850151610120820152836101408201526101806101608201525f614bb261018083018486614a40565b6001600160a01b0386168152614c9e6020820186614b31565b6001600160a01b03841660c082015261010060e082018190525f90613c929083018486614a40565b60a0810161070c8284614b31565b6001600160a01b0387168152614ced6020820187614b31565b60018060a01b03851660c08201528360020b60e08201526101206101008201525f614bb261012083018486614a40565b5f60208284031215614d2d575f80fd5b5051919050565b6001600160a01b0386168152614d4d6020820186614b31565b8351151560c0820152602084015160e082015260408401516001600160a01b03166101008201526101406101208201525f613c9261014083018486614a40565b8082018281125f831280158216821582161715614dac57614dac614a06565b505092915050565b6001600160a01b0387168152614dcd6020820187614b31565b8451151560c0820152602085015160e082015260408501516001600160a01b0316610100820152836101208201526101606101408201525f614bb261016083018486614a40565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561070c5761070c614a06565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561070c5761070c614a06565b8181035f831280158383131683831282161715612a3957612a39614a06565b634e487b7160e01b5f52601260045260245ffd5b5f82614ebb57634e487b7160e01b5f52601260045260245ffd5b50049056fe27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b91b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859c090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab237d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0ba2646970667358221220c720af38850bace8901ec0c414e9cc6b7600fdc66c58c62bb119ab202e9502fe64736f6c634300081a003360a0604052348015600e575f80fd5b506040516116ad3803806116ad833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516115e46100c95f395f818160790152818160f50152818161022d01528181610294015281816102c501528181610390015281816104fa01528181610550015281816105bf015281816106100152818161077a01526107ad01526115e45ff3fe60806040526004361061003e575f3560e01c80630a5b11e414610042578063481c6a75146100685780635a6bcfda146100b357806391dd7346146100c6575b5f80fd5b610055610050366004611035565b6100f2565b6040519081526020015b60405180910390f35b348015610073575f80fd5b5061009b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005f565b6100556100c13660046110bb565b61020a565b3480156100d1575f80fd5b506100e56100e0366004611118565b610220565b60405161005f91906111b2565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166348c894916040518060c00160405280336001600160a01b03168152602001898152602001888152602001878152602001861515815260200185151581525060405160200161016c919061120e565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161019791906111b2565b5f604051808303815f875af11580156101b2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101d991908101906112aa565b8060200190518101906101ec919061131e565b9050478015610200576102005f3383610662565b5095945050505050565b5f6102188484845f806100f2565b949350505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610256575f80fd5b5f61026383850185611335565b90505f6102be610278836020015160a0902090565b6040840151805160208201516060909201516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693923092916106fc565b505090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635a6bcfda8460200151856040015186606001516040518463ffffffff1660e01b815260040161031f939291906113fc565b60408051808303815f875af115801561033a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035e919061144b565b5090505f6103ba610374856020015160a0902090565b6040860151805160208201516060909201516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693923092916106fc565b505090505f6103d485602001515f0151865f015130610753565b925050505f6103ef866020015160200151875f015130610753565b9250505082600f0b86604001516040015186600f0b61040e9190611481565b1461045f5760405162461bcd60e51b815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f7272656374000000000000604482015260640160405180910390fd5b5f86604001516040015112156104a7575f82138061047c57505f81135b610488576104886114a8565b5f82128061049557505f81125b156104a2576104a26114a8565b6104ea565b5f86604001516040015113156104ea575f8212806104c457505f81125b6104d0576104d06114a8565b5f8213806104dd57505f81135b156104ea576104ea6114a8565b5f821215610540578551610540907f000000000000000000000000000000000000000000000000000000000000000090610523856114bc565b60808a015160208b0151516001600160a01b0316939291906107df565b5f811215610598578551610598907f000000000000000000000000000000000000000000000000000000000000000090610579846114bc565b60808a01516020808c015101516001600160a01b0316939291906107df565b5f8213156105e757855160a08701516020880151516105e7926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908690610aab565b5f81131561063857855160a08701516020808901510151610638926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908590610aab565b60408051602081018690520160405160208183030381529060405296505050505050505b92915050565b5f6001600160a01b038416610695575f805f8085875af1905080610690576106906356cdd02560e11b610b7d565b6106f6565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806106f6576106f6632745a14f60e21b610b7d565b50505050565b60408051602681018390526006810184905260038101859052858152603a600c8201205f9282018390526020820183905290829052819081906107408a8a83610baa565b919c909b50909950975050505050505050565b5f80806107696001600160a01b03871686610c4d565b925061079e6001600160a01b0387167f0000000000000000000000000000000000000000000000000000000000000000610c4d565b91506107d46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168588610cdc565b905093509350939050565b801561087457836001600160a01b031663f5298aca8461080e886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610859575f80fd5b505af115801561086b573d5f803e3d5ffd5b50505050610aa4565b6001600160a01b0385166108eb57836001600160a01b03166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af11580156108c0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108e5919061131e565b50610aa4565b604051632961046560e21b81526001600160a01b03868116600483015285169063a5841194906024015f604051808303815f87803b15801561092b575f80fd5b505af115801561093d573d5f803e3d5ffd5b505050506001600160a01b03831630146109cf576040516323b872dd60e01b81526001600160a01b0384811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af11580156109a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c991906114d6565b50610a41565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610a1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f91906114d6565b505b836001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610a7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa2919061131e565b505b5050505050565b80610aed57604051630b0d9c0960e01b81526001600160a01b038681166004830152848116602483015260448201849052851690630b0d9c0990606401610842565b836001600160a01b031663156e29f684610b16886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015f604051808303815f87803b158015610b60575f80fd5b505af1158015610b72573d5f803e3d5ffd5b505050505050505050565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f805f80610bb88686610d73565b604051631afeb18d60e11b815260048101829052600360248201529091505f906001600160a01b038916906335fd631a906044015f60405180830381865afa158015610c06573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c2d91908101906114f1565b60208101516040820151606090920151909a919950975095505050505050565b5f6001600160a01b038316610c6d57506001600160a01b0381163161065c565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015610cb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd5919061131e565b905061065c565b5f806001600160a01b0384165f526001600160a01b03831660205260405f209050846001600160a01b031663f135baaa826040518263ffffffff1660e01b8152600401610d2b91815260200190565b602060405180830381865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a919061131e565b95945050505050565b5f80610d7e84610dc3565b90505f610d8c60068361159b565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b6040515f90610de2908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715610e3557610e35610dff565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610e6357610e63610dff565b604052919050565b6001600160a01b0381168114610e7f575f80fd5b50565b8035600281900b8114610e93575f80fd5b919050565b5f60a08284031215610ea8575f80fd5b60405160a081016001600160401b0381118282101715610eca57610eca610dff565b6040529050808235610edb81610e6b565b81526020830135610eeb81610e6b565b6020820152604083013562ffffff81168114610f05575f80fd5b6040820152610f1660608401610e82565b60608201526080830135610f2981610e6b565b6080919091015292915050565b5f60808284031215610f46575f80fd5b604051608081016001600160401b0381118282101715610f6857610f68610dff565b604052905080610f7783610e82565b8152610f8560208401610e82565b602082015260408301356040820152606083013560608201525092915050565b5f6001600160401b03821115610fbd57610fbd610dff565b50601f01601f191660200190565b5f82601f830112610fda575f80fd5b8135610fed610fe882610fa5565b610e3b565b818152846020838601011115611001575f80fd5b816020850160208301375f918101602001919091529392505050565b8015158114610e7f575f80fd5b8035610e938161101d565b5f805f805f610180868803121561104a575f80fd5b6110548787610e98565b94506110638760a08801610f36565b93506101208601356001600160401b0381111561107e575f80fd5b61108a88828901610fcb565b93505061014086013561109c8161101d565b91506101608601356110ad8161101d565b809150509295509295909350565b5f805f61014084860312156110ce575f80fd5b6110d88585610e98565b92506110e78560a08601610f36565b91506101208401356001600160401b03811115611102575f80fd5b61110e86828701610fcb565b9150509250925092565b5f8060208385031215611129575f80fd5b82356001600160401b0381111561113e575f80fd5b8301601f8101851361114e575f80fd5b80356001600160401b03811115611163575f80fd5b856020828401011115611174575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6111c46020830184611184565b9392505050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b602080825282516001600160a01b0316828201528201515f9061123460408401826111cb565b506040838101518051600290810b60e08601526020820151900b610100850152908101516101208401526060908101516101408401528301516101a06101608401526112846101c0840182611184565b90506080840151151561018084015260a084015115156101a08401528091505092915050565b5f602082840312156112ba575f80fd5b81516001600160401b038111156112cf575f80fd5b8201601f810184136112df575f80fd5b80516112ed610fe882610fa5565b818152856020838501011115611301575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561132e575f80fd5b5051919050565b5f60208284031215611345575f80fd5b81356001600160401b0381111561135a575f80fd5b82016101a0818503121561136c575f80fd5b611374610e13565b813561137f81610e6b565b815261138e8560208401610e98565b60208201526113a08560c08401610f36565b60408201526101408201356001600160401b038111156113be575f80fd5b6113ca86828501610fcb565b6060830152506113dd610160830161102a565b60808201526113ef610180830161102a565b60a0820152949350505050565b61140681856111cb565b8251600290810b60a08301526020840151900b60c0820152604083015160e082015260608301516101008201526101406101208201525f610d6a610140830184611184565b5f806040838503121561145c575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f8312801582168215821617156114a0576114a061146d565b505092915050565b634e487b7160e01b5f52600160045260245ffd5b5f600160ff1b82016114d0576114d061146d565b505f0390565b5f602082840312156114e6575f80fd5b81516111c48161101d565b5f60208284031215611501575f80fd5b81516001600160401b03811115611516575f80fd5b8201601f81018413611526575f80fd5b80516001600160401b0381111561153f5761153f610dff565b8060051b61154f60208201610e3b565b9182526020818401810192908101908784111561156a575f80fd5b6020850194505b8385101561159057845180835260209586019590935090910190611571565b979650505050505050565b8082018082111561065c5761065c61146d56fea2646970667358221220022bb587431beddd1b3a2d4e57eee388a80ee14cf23bcb0c201ec0029fc9cb7a64736f6c634300081a00336080604052348015600e575f80fd5b506105a08061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806332c961d91461005957806357eb1da714610081578063769323e314610089578063b08d3fe214610091578063e631bcbf146100d1575b5f80fd5b61006e610067366004610386565b60a0902090565b6040519081526020015b60405180910390f35b61006e600681565b61006e600481565b6100a461009f366004610423565b61011c565b604080516001600160801b039095168552600f9390930b6020850152918301526060820152608001610078565b6100e46100df36600461045e565b6101d2565b604080516001600160a01b03909516855260029390930b602085015262ffffff91821692840192909252166060820152608001610078565b5f805f805f61012b8787610284565b604051631afeb18d60e11b815260048101829052600360248201529091505f906001600160a01b038a16906335fd631a906044015f60405180830381865afa158015610179573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101a09190810190610488565b602081015160408201516060909201516001600160801b0382169c60809290921d9b5091995090975095505050505050565b5f805f805f6101e0866102d8565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015610228573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024c9190610534565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b5f8061028f846102d8565b90505f61029d60048361054b565b60408051600287900b602082015290810182905290915060600160405160208183030381529060405280519060200120925050505b92915050565b6040515f906102f7908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561035157610351610314565b604052919050565b6001600160a01b038116811461036d575f80fd5b50565b8035600281900b8114610381575f80fd5b919050565b5f60a0828403128015610397575f80fd5b5060405160a0810167ffffffffffffffff811182821017156103bb576103bb610314565b60405282356103c981610359565b815260208301356103d981610359565b6020820152604083013562ffffff811681146103f3575f80fd5b604082015261040460608401610370565b6060820152608083013561041781610359565b60808201529392505050565b5f805f60608486031215610435575f80fd5b833561044081610359565b92506020840135915061045560408501610370565b90509250925092565b5f806040838503121561046f575f80fd5b823561047a81610359565b946020939093013593505050565b5f60208284031215610498575f80fd5b815167ffffffffffffffff8111156104ae575f80fd5b8201601f810184136104be575f80fd5b805167ffffffffffffffff8111156104d8576104d8610314565b8060051b6104e860208201610328565b91825260208184018101929081019087841115610503575f80fd5b6020850194505b838510156105295784518083526020958601959093509091019061050a565b979650505050505050565b5f60208284031215610544575f80fd5b5051919050565b808201808211156102d257634e487b7160e01b5f52601160045260245ffdfea26469706673582212200f59ae3b20597ee5b9c8afd86ef4272903aea11220ba5f5248dea7997a9f1cfe64736f6c634300081a003360e060405234801561000f575f80fd5b50604051610eea380380610eea83398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610af36103f75f395f61044201525f61040d01525f61013f0152610af35ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806340c10f191161008857806395d89b411161006357806395d89b41146101cc578063a9059cbb146101d4578063d505accf146101e7578063dd62ed3e146101fc575f80fd5b806340c10f191461017b57806370a082311461018e5780637ecebe00146101ad575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610127578063313ce5671461013a5780633644e51514610173575b5f80fd5b6100d7610226565b6040516100e4919061083f565b60405180910390f35b6101006100fb36600461088f565b6102b1565b60405190151581526020016100e4565b61011960025481565b6040519081526020016100e4565b6101006101353660046108b7565b61031d565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100e4565b61011961040a565b61010061018936600461088f565b610464565b61011961019c3660046108f1565b60036020525f908152604090205481565b6101196101bb3660046108f1565b60056020525f908152604090205481565b6100d7610478565b6101006101e236600461088f565b610485565b6101fa6101f5366004610911565b6104fb565b005b61011961020a36600461097e565b600460209081525f928352604080842090915290825290205481565b5f8054610232906109af565b80601f016020809104026020016040519081016040528092919081815260200182805461025e906109af565b80156102a95780601f10610280576101008083540402835291602001916102a9565b820191905f5260205f20905b81548152906001019060200180831161028c57829003601f168201915b505050505081565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061030b9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1981146103765761035283826109fb565b6001600160a01b0386165f9081526004602090815260408083203384529091529020555b6001600160a01b0385165f908152600360205260408120805485929061039d9084906109fb565b90915550506001600160a01b038085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103f79087815260200190565b60405180910390a3506001949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461043f5761043a61073e565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f61046f83836107d6565b50600192915050565b60018054610232906109af565b335f908152600360205260408120805483919083906104a59084906109fb565b90915550506001600160a01b0383165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061030b9086815260200190565b428410156105505760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f600161055b61040a565b6001600160a01b038a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f1981840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610663573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116158015906106995750876001600160a01b0316816001600160a01b0316145b6106d65760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610547565b6001600160a01b039081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161076e9190610a0e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546107e79190610aaa565b90915550506001600160a01b0382165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461088a575f80fd5b919050565b5f80604083850312156108a0575f80fd5b6108a983610874565b946020939093013593505050565b5f805f606084860312156108c9575f80fd5b6108d284610874565b92506108e060208501610874565b929592945050506040919091013590565b5f60208284031215610901575f80fd5b61090a82610874565b9392505050565b5f805f805f805f60e0888a031215610927575f80fd5b61093088610874565b965061093e60208901610874565b95506040880135945060608801359350608088013560ff81168114610961575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f806040838503121561098f575f80fd5b61099883610874565b91506109a660208401610874565b90509250929050565b600181811c908216806109c357607f821691505b6020821081036109e157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610317576103176109e7565b5f8083545f8160011c90506001821680610a2957607f821691505b602082108103610a4757634e487b7160e01b5f52602260045260245ffd5b808015610a5b5760018114610a7057610a9e565b60ff1984168752821515830287019450610a9e565b5f888152602090205f5b84811015610a9657815489820152600190910190602001610a7a565b505082870194505b50929695505050505050565b80820180821115610317576103176109e756fea2646970667358221220f4620711d0f8649f80fed98a6eb335b7806c86e0ebaba0b9fa57daf20d6ed2f364736f6c634300081a00336080604052348015600e575f80fd5b50604051610521380380610521833981016040819052602b91607b565b5f80546001600160a01b039485166001600160a01b031991821617909155600180549390941692169190911790915560025560af565b80516001600160a01b03811681146076575f80fd5b919050565b5f805f60608486031215608c575f80fd5b6093846061565b9250609f602085016061565b9150604084015190509250925092565b610465806100bc5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806358dbbe811461005957806391b7f5ed14610089578063a035b1fe1461009e578063d004f0f7146100b5578063f5992699146100c8575b5f80fd5b60015461006c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009c6100973660046103c4565b6100da565b005b6100a760025481565b604051908152602001610080565b61009c6100c33660046103db565b610115565b5f5461006c906001600160a01b031681565b60028190556040518181527ff347ee99503bf19c028bd6b18f3c676e82a9bb5b2bb5225aebe0fd62fd6a0d199060200160405180910390a150565b5f805481906001600160a01b039081169085160361015257506001546002546001600160a01b039091169061014b90849061037e565b91506101c2565b6001546001600160a01b039081169085160361018557505f546002546001600160a01b039091169061014b908490610399565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064015b60405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303815f875af1158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102369190610410565b6102745760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101b9565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303815f875af11580156102be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e29190610410565b6103205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101b9565b604080516001600160a01b03808716825283166020820152908101849052606081018390523360808201527fb39c9bc43f811e1a7ce159c5f147458fdb80266bf23c17322013316e27e086d09060a00160405180910390a150505050565b5f6103928383670de0b6b3a76400006103a9565b9392505050565b5f61039283670de0b6b3a7640000845b5f825f1904841183021582026103bd575f80fd5b5091020490565b5f602082840312156103d4575f80fd5b5035919050565b5f80604083850312156103ec575f80fd5b82356001600160a01b0381168114610402575f80fd5b946020939093013593505050565b5f60208284031215610420575f80fd5b81518015158114610392575f80fdfea264697066735822122071f33bd4e906706fab2f1d579ad88e83e4a15cb735911cd69a3275ede2ed3ced64736f6c634300081a0033","sourceMap":"523:3026:52:-:0;;;942:736;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1029:3;1013:20;;;;;:::i;:::-;508:25:57;;;496:2;481:18;1013:20:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;999:34:52;;;;;1052:40;;;;;:::i;:::-;-1:-1:-1;;;;;728:32:57;;;710:51;;698:2;683:18;1052:40:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1043:49:52;;;1112:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1102:23:52;;;1148:37;;1182:2;;1148:37;;;:::i;:::-;1110:2:57;1092:21;;;1149:1;1129:18;;;1122:29;-1:-1:-1;;;1182:3:57;1167:19;;1160:40;1238:3;1231:4;1216:20;;1209:33;;;1279:1;1258:19;;;1251:30;-1:-1:-1;;;1312:3:57;1297:19;;1290:33;1407:4;1395:17;;;-1:-1:-1;1375:18:57;;1368:45;1355:3;1340:19;1148:37:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1136:49:52;;;1207:37;;1241:2;;1207:37;;;:::i;:::-;1762:2:57;1744:21;;;1801:1;1781:18;;;1774:29;-1:-1:-1;;;1834:3:57;1819:19;;1812:40;1890:3;1883:4;1868:20;;1861:33;;;1931:1;1910:19;;;1903:30;-1:-1:-1;;;1964:3:57;1949:19;;1942:33;2059:4;2047:17;;;-1:-1:-1;2027:18:57;;2020:45;2007:3;1992:19;1207:37:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1195:49:52;;;;;;;1259:9;;:21;;;;1255:99;;;1322:9;;;1333;;;-1:-1:-1;;;;;1296:47:52;;;;;;;;;;1255:99;1397:9;;1417;;1429:12;1370:72;;;;;:::i;:::-;-1:-1:-1;;;;;2296:32:57;;;2278:51;;2365:32;;;;2360:2;2345:18;;2338:60;2429:2;2414:18;;2407:34;2266:2;2251:18;1370:72:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1364:78:52;;;;;1461:9;;:48;;-1:-1:-1;;;1461:48:52;;1484:4;1461:48;;;2626:51:57;-1:-1:-1;;2693:18:57;;;2686:34;1461:14:52;;;;;2599:18:57;;1461:48:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1453:104;;;;-1:-1:-1;;;1453:104:52;;3215:2:57;1453:104:52;;;3197:21:57;3254:2;3234:18;;;3227:30;3293:34;3273:18;;;3266:62;-1:-1:-1;;;3344:18:57;;;3337:41;3395:19;;1453:104:52;;;;;;;;;1575:9;;:48;;-1:-1:-1;;;1575:48:52;;1598:4;1575:48;;;2626:51:57;-1:-1:-1;;2693:18:57;;;2686:34;-1:-1:-1;;;;;1575:14:52;;;;;;2599:18:57;;1575:48:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1567:104;;;;-1:-1:-1;;;1567:104:52;;3627:2:57;1567:104:52;;;3609:21:57;3666:2;3646:18;;;3639:30;3705:34;3685:18;;;3678:62;-1:-1:-1;;;3756:18:57;;;3749:41;3807:19;;1567:104:52;3425:407:57;1567:104:52;942:736;;523:3026;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:343:57:-;93:6;101;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;-1:-1:-1;;215:16:57;;321:2;306:18;;;300:25;215:16;;300:25;;-1:-1:-1;14:343:57:o;2731:277::-;2798:6;2851:2;2839:9;2830:7;2826:23;2822:32;2819:52;;;2867:1;2864;2857:12;2819:52;2899:9;2893:16;2952:5;2945:13;2938:21;2931:5;2928:32;2918:60;;2974:1;2971;2964:12;2918:60;2997:5;2731:277;-1:-1:-1;;;2731:277:57:o;3425:407::-;523:3026:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b5060043610610060575f3560e01c8063014807031461006457806306ba06fa146100b5578063182148ef146100ca5780636af577411461014357806391b7f5ed1461015657806396f5e27c14610169575b5f80fd5b61006c61017c565b60408051825160020b81526020808401516001600160a01b0390811691830191909152838301511691810191909152606091820151918101919091526080015b60405180910390f35b6100c86100c3366004610aa2565b6103c8565b005b5f5460015460028054610103936001600160a01b03908116938082169362ffffff600160a01b83041693600160b81b909204900b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a0016100ac565b6100c8610151366004610b19565b61083c565b6100c8610164366004610c15565b6109a7565b6100c8610177366004610c2c565b610a18565b604080516080810182525f8082526020820181905291810182905260608101919091525f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e631bcbf7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166332c961d95f6040518263ffffffff1660e01b815260040161023d9190610c9b565b602060405180830381865afa158015610258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027c9190610caf565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa1580156102c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e79190610cc6565b50509150915060405180608001604052808260020b8152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bf9190610caf565b90529392505050565b5f831315610589576040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af115801561043a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045e9190610d22565b6104af5760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637930206661696c6564000000000000000060448201526064015b60405180910390fd5b6040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af1158015610519573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053d9190610d22565b6105895760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637931206661696c6564000000000000000060448201526064016104a6565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106399190610d22565b6106855760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c656400000060448201526064016104a6565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610711573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107359190610d22565b6107815760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c656400000060448201526064016104a6565b60408051608081018252600284810b825283900b60208201528082018590525f606082018190529151632d35e7ed60e11b815290916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691635a6bcfda916107f5918590600401610d48565b6020604051808303815f875af1158015610811573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108359190610caf565b5050505050565b6040805160a0810182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081168083527f000000000000000000000000000000000000000000000000000000000000000082166020840181905262ffffff8a811685870181905260028b810b60608801528a861660809097018790525f80546001600160a01b03199081169096178155600180546001600160b81b031916909517600160a01b9093029290921762ffffff60b81b1916600160b81b938d16939093029290921790925580549092169093179055915163695c5bf560e01b81527f00000000000000000000000000000000000000000000000000000000000000009092169163695c5bf59161095f9186908690600401610d99565b6020604051808303815f875af115801561097b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099f9190610dee565b505050505050565b6040516391b7f5ed60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391b7f5ed906024015f604051808303815f87803b158015610a06575f80fd5b505af1158015610835573d5f803e3d5ffd5b60405163d004f0f760e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d004f0f7906044015f604051808303815f87803b158015610a7f575f80fd5b505af115801561099f573d5f803e3d5ffd5b8060020b8114610a9f575f80fd5b50565b5f805f60608486031215610ab4575f80fd5b833592506020840135610ac681610a91565b91506040840135610ad681610a91565b809150509250925092565b62ffffff81168114610a9f575f80fd5b6001600160a01b0381168114610a9f575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f805f60a08688031215610b2d575f80fd5b8535610b3881610ae1565b94506020860135610b4881610a91565b93506040860135610b5881610af1565b92506060860135610b6881610af1565b9150608086013567ffffffffffffffff811115610b83575f80fd5b8601601f81018813610b93575f80fd5b803567ffffffffffffffff811115610bad57610bad610b05565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610bdc57610bdc610b05565b6040528181528282016020018a1015610bf3575f80fd5b816020840160208301375f602083830101528093505050509295509295909350565b5f60208284031215610c25575f80fd5b5035919050565b5f8060408385031215610c3d575f80fd5b8235610c4881610af1565b946020939093013593505050565b80546001600160a01b0390811683526001820154808216602085015260a081901c62ffffff16604085015260b81c600290810b60608501529091015416608090910152565b60a08101610ca98284610c56565b92915050565b5f60208284031215610cbf575f80fd5b5051919050565b5f805f8060808587031215610cd9575f80fd5b8451610ce481610af1565b6020860151909450610cf581610a91565b6040860151909350610d0681610ae1565b6060860151909250610d1781610ae1565b939692955090935050565b5f60208284031215610d32575f80fd5b81518015158114610d41575f80fd5b9392505050565b610d528184610c56565b8151600290810b60a08301526020830151900b60c0820152604082015160e082015260609091015161010082015261014061012082018190525f9082015261016001919050565b610da38185610c56565b60018060a01b03831660a082015260e060c08201525f82518060e0840152806020850161010085015e5f6101008285010152610100601f19601f830116840101915050949350505050565b5f60208284031215610dfe575f80fd5b8151610d4181610a9156fea264697066735822122018ac6a9527ae29782c578f1dbfc1a3cc495fbdaf1ce9fb3deac4f8afdbb2f56964736f6c634300081a0033","sourceMap":"523:3026:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1684:356;;;:::i;:::-;;;;243:13:57;;240:1;229:28;211:47;;318:4;306:17;;;300:24;-1:-1:-1;;;;;296:50:57;;;274:20;;;267:80;;;;395:17;;;389:24;385:50;363:20;;;356:80;;;;492:4;480:17;;;474:24;452:20;;;445:54;;;;198:3;183:19;1684:356:52;;;;;;;;2693:854;;;;;;:::i;:::-;;:::i;:::-;;778:22;;;;;;;;;;-1:-1:-1;;;;;778:22:52;;;;;;;;;-1:-1:-1;;;778:22:52;;;;-1:-1:-1;;;778:22:52;;;;;;;;;;;;;-1:-1:-1;;;;;1431:32:57;;;1413:51;;1500:32;;;1495:2;1480:18;;1473:60;1581:8;1569:21;;;1549:18;;;1542:49;;;;1638:1;1627:21;1622:2;1607:18;;1600:49;1686:32;;;;1680:3;1665:19;;1658:61;1400:3;1385:19;778:22:52;1085:640:57;2239:448:52;;;;;;:::i;:::-;;:::i;2046:76::-;;;;;;:::i;:::-;;:::i;2128:105::-;;;;;;:::i;:::-;;:::i;1684:356::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1758:20:52;1780:10;1796:7;-1:-1:-1;;;;;1796:16:52;;1813:11;1826:7;-1:-1:-1;;;;;1826:12:52;;1839:7;1826:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1796:52;;-1:-1:-1;;;;;;1796:52:52;;;;;;;-1:-1:-1;;;;;5551:32:57;;;1796:52:52;;;5533:51:57;5600:18;;;5593:34;5506:18;;1796:52:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1757:91;;;;;;1866:167;;;;;;;;1900:4;1866:167;;;;;;1932:12;-1:-1:-1;;;;;1866:167:52;;;;;1975:11;-1:-1:-1;;;;;1866:167:52;;;;;2011:3;-1:-1:-1;;;;;2011:9:52;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1866:167;;1859:174;1684:356;-1:-1:-1;;;1684:356:52:o;2693:854::-;2810:1;2793:14;:18;2789:245;;;2835:54;;-1:-1:-1;;;2835:54:52;;2858:4;2835:54;;;5533:51:57;5600:18;;;5593:34;;;2835:9:52;-1:-1:-1;;;;;2835:14:52;;;;5506:18:57;;2835:54:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2827:91;;;;-1:-1:-1;;;2827:91:52;;7249:2:57;2827:91:52;;;7231:21:57;7288:2;7268:18;;;7261:30;7327:26;7307:18;;;7300:54;7371:18;;2827:91:52;;;;;;;;;2940:54;;-1:-1:-1;;;2940:54:52;;2963:4;2940:54;;;5533:51:57;5600:18;;;5593:34;;;2940:9:52;-1:-1:-1;;;;;2940:14:52;;;;5506:18:57;;2940:54:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2932:91;;;;-1:-1:-1;;;2932:91:52;;7602:2:57;2932:91:52;;;7584:21:57;7641:2;7621:18;;;7614:30;7680:26;7660:18;;;7653:54;7724:18;;2932:91:52;7400:348:57;2932:91:52;3052:53;;-1:-1:-1;;;3052:53:52;;-1:-1:-1;;;;;3078:6:52;5551:32:57;;3052:53:52;;;5533:51:57;-1:-1:-1;;5600:18:57;;;5593:34;3052:9:52;:17;;;;5506:18:57;;3052:53:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3044:95;;;;-1:-1:-1;;;3044:95:52;;7955:2:57;3044:95:52;;;7937:21:57;7994:2;7974:18;;;7967:30;8033:31;8013:18;;;8006:59;8082:18;;3044:95:52;7753:353:57;3044:95:52;3157:53;;-1:-1:-1;;;3157:53:52;;-1:-1:-1;;;;;3183:6:52;5551:32:57;;3157:53:52;;;5533:51:57;-1:-1:-1;;5600:18:57;;;5593:34;3157:9:52;:17;;;;5506:18:57;;3157:53:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3149:95;;;;-1:-1:-1;;;3149:95:52;;8313:2:57;3149:95:52;;;8295:21:57;8352:2;8332:18;;;8325:30;8391:31;8371:18;;;8364:59;8440:18;;3149:95:52;8111:353:57;3149:95:52;3306:180;;;;;;;;;;;;;;;;;;;;;;;;;;;3255:48;3306:180;;;;;;3497:43;;-1:-1:-1;;;3497:43:52;;3306:180;;-1:-1:-1;;;;;3497:6:52;:22;;;;:43;;3306:180;;3497:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2779:768;2693:854;;;:::o;2239:448::-;2389:225;;;;;;;;2444:9;-1:-1:-1;;;;;2389:225:52;;;;;;2502:9;2389:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2379:235:52;;-1:-1:-1;;;;;;2379:235:52;;;;;;;;-1:-1:-1;2379:235:52;;-1:-1:-1;;;;;;2379:235:52;;;;-1:-1:-1;;;2379:235:52;;;;;;;-1:-1:-1;;;;2379:235:52;-1:-1:-1;;;2379:235:52;;;;;;;;;;;;;;;;;;;;;;;;2625:55;;-1:-1:-1;;;2625:55:52;;:11;:22;;;;;;:55;;2657:12;;2671:8;;2625:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2239:448;;;;;:::o;2046:76::-;2096:19;;-1:-1:-1;;;2096:19:52;;;;;10576:25:57;;;2096:3:52;-1:-1:-1;;;;;2096:12:52;;;;10549:18:57;;2096:19:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2128:105;2199:27;;-1:-1:-1;;;2199:27:52;;-1:-1:-1;;;;;5551:32:57;;;2199:27:52;;;5533:51:57;5600:18;;;5593:34;;;2199:3:52;:8;;;;5506:18:57;;2199:27:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;510:118:57;597:5;594:1;583:20;576:5;573:31;563:59;;618:1;615;608:12;563:59;510:118;:::o;633:447::-;705:6;713;721;774:2;762:9;753:7;749:23;745:32;742:52;;;790:1;787;780:12;742:52;826:9;813:23;803:33;;886:2;875:9;871:18;858:32;899:29;922:5;899:29;:::i;:::-;947:5;-1:-1:-1;1004:2:57;989:18;;976:32;1017:31;976:32;1017:31;:::i;:::-;1067:7;1057:17;;;633:447;;;;;:::o;1730:119::-;1815:8;1808:5;1804:20;1797:5;1794:31;1784:59;;1839:1;1836;1829:12;1854:139;-1:-1:-1;;;;;1937:31:57;;1927:42;;1917:70;;1983:1;1980;1973:12;1998:127;2059:10;2054:3;2050:20;2047:1;2040:31;2090:4;2087:1;2080:15;2114:4;2111:1;2104:15;2130:1529;2246:6;2254;2262;2270;2278;2331:3;2319:9;2310:7;2306:23;2302:33;2299:53;;;2348:1;2345;2338:12;2299:53;2387:9;2374:23;2406:30;2430:5;2406:30;:::i;:::-;2455:5;-1:-1:-1;2512:2:57;2497:18;;2484:32;2525:31;2484:32;2525:31;:::i;:::-;2575:7;-1:-1:-1;2634:2:57;2619:18;;2606:32;2647:41;2606:32;2647:41;:::i;:::-;2707:7;-1:-1:-1;2766:2:57;2751:18;;2738:32;2779:41;2738:32;2779:41;:::i;:::-;2839:7;-1:-1:-1;2897:3:57;2882:19;;2869:33;2925:18;2914:30;;2911:50;;;2957:1;2954;2947:12;2911:50;2980:22;;3033:4;3025:13;;3021:27;-1:-1:-1;3011:55:57;;3062:1;3059;3052:12;3011:55;3102:2;3089:16;3128:18;3120:6;3117:30;3114:56;;;3150:18;;:::i;:::-;3199:2;3193:9;3291:2;3253:17;;-1:-1:-1;;3249:31:57;;;3282:2;3245:40;3241:54;3229:67;;3326:18;3311:34;;3347:22;;;3308:62;3305:88;;;3373:18;;:::i;:::-;3409:2;3402:22;3433;;;3474:15;;;3491:2;3470:24;3467:37;-1:-1:-1;3464:57:57;;;3517:1;3514;3507:12;3464:57;3573:6;3568:2;3564;3560:11;3555:2;3547:6;3543:15;3530:50;3626:1;3621:2;3612:6;3604;3600:19;3596:28;3589:39;3647:6;3637:16;;;;;2130:1529;;;;;;;;:::o;3664:226::-;3723:6;3776:2;3764:9;3755:7;3751:23;3747:32;3744:52;;;3792:1;3789;3782:12;3744:52;-1:-1:-1;3837:23:57;;3664:226;-1:-1:-1;3664:226:57:o;3895:375::-;3963:6;3971;4024:2;4012:9;4003:7;3999:23;3995:32;3992:52;;;4040:1;4037;4030:12;3992:52;4079:9;4066:23;4098:39;4131:5;4098:39;:::i;:::-;4156:5;4234:2;4219:18;;;;4206:32;;-1:-1:-1;;;3895:375:57:o;4275:555::-;4360:12;;-1:-1:-1;;;;;4356:38:57;;;4344:51;;4391:1;4427:16;;4421:23;4476:35;;;4469:4;4460:14;;4453:59;4382:3;4548:19;;;4569:8;4544:34;4537:4;4528:14;;4521:58;4629:3;4625:19;4622:1;4611:34;;;4604:4;4595:14;;4588:58;4671:13;;;4665:20;4730:28;4783:4;4774:14;;;4767:57;4275:555::o;4835:254::-;5018:3;5003:19;;5031:52;5007:9;5065:6;5031:52;:::i;:::-;4835:254;;;;:::o;5094:212::-;5192:6;5245:2;5233:9;5224:7;5220:23;5216:32;5213:52;;;5261:1;5258;5251:12;5213:52;-1:-1:-1;5284:16:57;;5094:212;-1:-1:-1;5094:212:57:o;5638:654::-;5731:6;5739;5747;5755;5808:3;5796:9;5787:7;5783:23;5779:33;5776:53;;;5825:1;5822;5815:12;5776:53;5857:9;5851:16;5876:39;5909:5;5876:39;:::i;:::-;5984:2;5969:18;;5963:25;5934:5;;-1:-1:-1;5997:31:57;5963:25;5997:31;:::i;:::-;6099:2;6084:18;;6078:25;6047:7;;-1:-1:-1;6112:32:57;6078:25;6112:32;:::i;:::-;6215:2;6200:18;;6194:25;6163:7;;-1:-1:-1;6228:32:57;6194:25;6228:32;:::i;:::-;5638:654;;;;-1:-1:-1;5638:654:57;;-1:-1:-1;;5638:654:57:o;6765:277::-;6832:6;6885:2;6873:9;6864:7;6860:23;6856:32;6853:52;;;6901:1;6898;6891:12;6853:52;6933:9;6927:16;6986:5;6979:13;6972:21;6965:5;6962:32;6952:60;;7008:1;7005;6998:12;6952:60;7031:5;6765:277;-1:-1:-1;;;6765:277:57:o;8469:807::-;8835:52;8877:9;8869:6;8835:52;:::i;:::-;8938:13;;8935:1;8924:28;;;8918:3;8903:19;;8896:57;9022:4;9010:17;;9004:24;8990:39;;8984:3;8969:19;;8962:68;9085:4;9073:17;;9067:24;9061:3;9046:19;;9039:53;9147:4;9135:17;;;9129:24;9123:3;9108:19;;9101:53;9191:3;9185;9170:19;;9163:32;;;-1:-1:-1;9211:19:57;;;9204:30;9266:3;9251:19;;8469:807;-1:-1:-1;8469:807:57:o;9504:669::-;9738:52;9780:9;9772:6;9738:52;:::i;:::-;9856:1;9852;9847:3;9843:11;9839:19;9831:6;9827:32;9821:3;9810:9;9806:19;9799:61;9897:3;9891;9880:9;9876:19;9869:32;9719:4;9930:6;9924:13;9974:6;9968:3;9957:9;9953:19;9946:35;10036:6;10029:4;10021:6;10017:17;10011:3;10000:9;9996:19;9990:53;10093:1;10087:3;10078:6;10067:9;10063:22;10059:32;10052:43;10163:3;10156:2;10152:7;10147:2;10139:6;10135:15;10131:29;10120:9;10116:45;10112:55;10104:63;;;9504:669;;;;;;:::o;10178:247::-;10246:6;10299:2;10287:9;10278:7;10274:23;10270:32;10267:52;;;10315:1;10312;10305:12;10267:52;10347:9;10341:16;10366:29;10389:5;10366:29;:::i","linkReferences":{},"immutableReferences":{"11123":[{"start":466,"length":32},{"start":786,"length":32},{"start":2342,"length":32}],"11126":[{"start":1440,"length":32},{"start":1692,"length":32},{"start":1984,"length":32}],"11129":[{"start":833,"length":32},{"start":2493,"length":32},{"start":2622,"length":32}],"11132":[{"start":419,"length":32},{"start":499,"length":32}],"11135":[{"start":1004,"length":32},{"start":1487,"length":32},{"start":2120,"length":32}],"11138":[{"start":1227,"length":32},{"start":1739,"length":32},{"start":2167,"length":32}]}},"methodIdentifiers":{"addLiquidity(int256,int24,int24)":"06ba06fa","constructSignal()":"01480703","poolKey()":"182148ef","setPool(uint24,int24,address,uint160,bytes)":"6af57741","setPrice(uint256)":"91b7f5ed","swapOnLex(address,uint256)":"96f5e27c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"constructSignal\",\"outputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"currentTick\",\"type\":\"int24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lexPrice\",\"type\":\"uint256\"}],\"internalType\":\"struct ArenaController.Signal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolKey\",\"outputs\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"poolFee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"setPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swapOnLex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ArenaController.sol\":\"ArenaController\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/v4-core/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v4-core/=lib/v4-core/src/\"]},\"sources\":{\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/v4-core/src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"lib/v4-core/src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"lib/v4-core/src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"lib/v4-core/src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"lib/v4-core/src/NoDelegateCall.sol\":{\"keccak256\":\"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50\",\"dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB\"]},\"lib/v4-core/src/PoolManager.sol\":{\"keccak256\":\"0xca5369a1683d06842268987fb6f46b05e6364a46cc856f72bb5c603826f47eac\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5ae5893222abc5dc5fa57bc05af40b60a96a1537bd3c1f3845257d6a3c2b5821\",\"dweb:/ipfs/QmZxQH8M3NVunurxDNJ5EZm2fy6Ws8CHJSezCQaoqzMPoq\"]},\"lib/v4-core/src/ProtocolFees.sol\":{\"keccak256\":\"0x2e7533e46dcab5508ed417ab33c2d0ca8c52a6b5f445dd90daf328173ada4449\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8403de6f2c89a665a3ff3566a917179a5bfb3e0ac9514f0438d82270a7f98c91\",\"dweb:/ipfs/QmTq9cjKTaXeCoSfCywpFwo7sNvuXM4wSMnebwX3hBuiRG\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa\",\"dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0x4e07d93993f6ba033c8b5e5b0a3473659aeffe9af0cf8316a879a55ebd696d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50add8378d59b89b1dc106ea248641caaedd3ac45d62754babe55c526b87c9ad\",\"dweb:/ipfs/QmQUrvy8ZDDdTRTr17msqynVECP3rQFBVBUmFcpFvjAmQx\"]},\"lib/v4-core/src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6\",\"dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f\",\"dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw\"]},\"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410\",\"dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09\",\"dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46\"]},\"lib/v4-core/src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c\",\"dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR\"]},\"lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7\",\"dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x70a444afeb27564398dbdf7553651ee2cae14c03c923b6f8972040c8f460ebe3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d7b05390bac9b29188725c8a84edac43cd05571da27b33a0b1e36d9500ecaa6\",\"dweb:/ipfs/QmdYDLwTfFgePDEwFMUqGTj8SNNXXq4JQJnrgomJgcZFvP\"]},\"lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d\",\"dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT\"]},\"lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196\",\"dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7\"]},\"lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-core/src/libraries/Hooks.sol\":{\"keccak256\":\"0xfa031f4efc096e9c93bb094509321e1c08b5eb271f46554f858e74803c43ae66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cc33d5eb869ecacfb70d024f7b925d191d98553dbb921bd8188f97d51c9e111\",\"dweb:/ipfs/Qme5VCnaS5mXyqaWV5uiW5xcmTb56uCKBPFrLZp2dq41dQ\"]},\"lib/v4-core/src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896\",\"dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo\"]},\"lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc\",\"dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa\"]},\"lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-core/src/libraries/NonZeroDeltaCount.sol\":{\"keccak256\":\"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2\",\"dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC\"]},\"lib/v4-core/src/libraries/ParseBytes.sol\":{\"keccak256\":\"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8\",\"dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf\"]},\"lib/v4-core/src/libraries/Pool.sol\":{\"keccak256\":\"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8\",\"dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H\"]},\"lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce\",\"dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu\"]},\"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a\",\"dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4\",\"dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM\"]},\"lib/v4-core/src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31\",\"dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt\"]},\"lib/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x67ead4d1ffe7e4fc381cef059c8d4941c7b4d581ef043fc8d3278d0829da414e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d12edd46a3ff2e19ea9b650507ea22e7714daa335a6b40f4d2f6d29c16431e4\",\"dweb:/ipfs/QmZn6dzXZgR3rGohZAvKzqYMgm5n9qTrpi1VhXizYhiquH\"]},\"lib/v4-core/src/libraries/SwapMath.sol\":{\"keccak256\":\"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75\",\"dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3\"]},\"lib/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79\",\"dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc\"]},\"lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408\",\"dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME\"]},\"lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095\",\"dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd\"]},\"lib/v4-core/src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3\",\"dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7\",\"dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d\"]},\"lib/v4-core/src/test/PoolTestBase.sol\":{\"keccak256\":\"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072\",\"dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0xc77e2d4d380be1887078b1d21e2381fe4e9138dce8c7efbf9050aa7d65d75d4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b85a1edba4be624be660d69badac1e3641d83190893839fa30260eef316d00c8\",\"dweb:/ipfs/QmPaEaeNkhy5F4X9dwzyDzVU3H67P5ZhpeijDS7wscaSd9\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f\",\"dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf\",\"dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY\"]},\"lib/v4-core/src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]},\"lib/v4-core/test/utils/CurrencySettler.sol\":{\"keccak256\":\"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96\",\"dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24\"]},\"src/ArenaController.sol\":{\"keccak256\":\"0x4b5ec770c25619a400a50f906b4082f1eda41cdceab285e10d3b76163d27b0a3\",\"urls\":[\"bzz-raw://5ad196088ebe6b1f091dee6ce5676f5f8a3a37cb0b542d3e7fddf2238abffab3\",\"dweb:/ipfs/QmNdn7aVowxiz1LjxEVid686isjtRKP12BJ7WepRhAN8sJ\"]},\"src/ArenaToken.sol\":{\"keccak256\":\"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a\",\"urls\":[\"bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105\",\"dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF\"]},\"src/Fetcher.sol\":{\"keccak256\":\"0x1895e5c0688650ca60371f208b62d9f64beea29bd7515b2600a1c8d5c73805df\",\"urls\":[\"bzz-raw://f9c904c9d032167f6d8fec1392c9a023f339a4aee9f75f06df6347a495af9d38\",\"dweb:/ipfs/QmYSaPzRawAnh2qD3JY5uvWypEueo5hSTQVyVFfX96msfb\"]},\"src/LiquidExchange.sol\":{\"keccak256\":\"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5\",\"dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"initialPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"constructSignal","outputs":[{"internalType":"struct ArenaController.Signal","name":"","type":"tuple","components":[{"internalType":"int24","name":"currentTick","type":"int24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"lexPrice","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolKey","outputs":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"inputs":[{"internalType":"uint24","name":"poolFee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setPool"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPrice"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapOnLex"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/v4-core/lib/openzeppelin-contracts/contracts/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","solmate/=lib/solmate/src/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ArenaController.sol":"ArenaController"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"lib/v4-core/src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"lib/v4-core/src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"lib/v4-core/src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"lib/v4-core/src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"lib/v4-core/src/NoDelegateCall.sol":{"keccak256":"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202","urls":["bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50","dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB"],"license":"BUSL-1.1"},"lib/v4-core/src/PoolManager.sol":{"keccak256":"0xca5369a1683d06842268987fb6f46b05e6364a46cc856f72bb5c603826f47eac","urls":["bzz-raw://5ae5893222abc5dc5fa57bc05af40b60a96a1537bd3c1f3845257d6a3c2b5821","dweb:/ipfs/QmZxQH8M3NVunurxDNJ5EZm2fy6Ws8CHJSezCQaoqzMPoq"],"license":"BUSL-1.1"},"lib/v4-core/src/ProtocolFees.sol":{"keccak256":"0x2e7533e46dcab5508ed417ab33c2d0ca8c52a6b5f445dd90daf328173ada4449","urls":["bzz-raw://8403de6f2c89a665a3ff3566a917179a5bfb3e0ac9514f0438d82270a7f98c91","dweb:/ipfs/QmTq9cjKTaXeCoSfCywpFwo7sNvuXM4wSMnebwX3hBuiRG"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0","urls":["bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa","dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8"],"license":"MIT"},"lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0x4e07d93993f6ba033c8b5e5b0a3473659aeffe9af0cf8316a879a55ebd696d7a","urls":["bzz-raw://50add8378d59b89b1dc106ea248641caaedd3ac45d62754babe55c526b87c9ad","dweb:/ipfs/QmQUrvy8ZDDdTRTr17msqynVECP3rQFBVBUmFcpFvjAmQx"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFeeController.sol":{"keccak256":"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c","urls":["bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6","dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297","urls":["bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f","dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw"],"license":"MIT"},"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7","urls":["bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410","dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b","urls":["bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09","dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/CurrencyDelta.sol":{"keccak256":"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e","urls":["bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c","dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6","urls":["bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7","dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x70a444afeb27564398dbdf7553651ee2cae14c03c923b6f8972040c8f460ebe3","urls":["bzz-raw://9d7b05390bac9b29188725c8a84edac43cd05571da27b33a0b1e36d9500ecaa6","dweb:/ipfs/QmdYDLwTfFgePDEwFMUqGTj8SNNXXq4JQJnrgomJgcZFvP"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835","urls":["bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d","dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417","urls":["bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196","dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-core/src/libraries/Hooks.sol":{"keccak256":"0xfa031f4efc096e9c93bb094509321e1c08b5eb271f46554f858e74803c43ae66","urls":["bzz-raw://7cc33d5eb869ecacfb70d024f7b925d191d98553dbb921bd8188f97d51c9e111","dweb:/ipfs/Qme5VCnaS5mXyqaWV5uiW5xcmTb56uCKBPFrLZp2dq41dQ"],"license":"MIT"},"lib/v4-core/src/libraries/LPFeeLibrary.sol":{"keccak256":"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece","urls":["bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896","dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf","urls":["bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc","dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/NonZeroDeltaCount.sol":{"keccak256":"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586","urls":["bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2","dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ParseBytes.sol":{"keccak256":"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579","urls":["bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8","dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/Pool.sol":{"keccak256":"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c","urls":["bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8","dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/Position.sol":{"keccak256":"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80","urls":["bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce","dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902","urls":["bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a","dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60","urls":["bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4","dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/SqrtPriceMath.sol":{"keccak256":"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db","urls":["bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31","dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x67ead4d1ffe7e4fc381cef059c8d4941c7b4d581ef043fc8d3278d0829da414e","urls":["bzz-raw://0d12edd46a3ff2e19ea9b650507ea22e7714daa335a6b40f4d2f6d29c16431e4","dweb:/ipfs/QmZn6dzXZgR3rGohZAvKzqYMgm5n9qTrpi1VhXizYhiquH"],"license":"MIT"},"lib/v4-core/src/libraries/SwapMath.sol":{"keccak256":"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e","urls":["bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75","dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6","urls":["bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79","dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc"],"license":"MIT"},"lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd","urls":["bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408","dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86","urls":["bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095","dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd"],"license":"MIT"},"lib/v4-core/src/libraries/UnsafeMath.sol":{"keccak256":"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84","urls":["bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3","dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade","urls":["bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7","dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTestBase.sol":{"keccak256":"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c","urls":["bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072","dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5"],"license":"UNLICENSED"},"lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-core/src/types/Currency.sol":{"keccak256":"0xc77e2d4d380be1887078b1d21e2381fe4e9138dce8c7efbf9050aa7d65d75d4c","urls":["bzz-raw://b85a1edba4be624be660d69badac1e3641d83190893839fa30260eef316d00c8","dweb:/ipfs/QmPaEaeNkhy5F4X9dwzyDzVU3H67P5ZhpeijDS7wscaSd9"],"license":"MIT"},"lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8","urls":["bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f","dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB"],"license":"MIT"},"lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162","urls":["bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf","dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY"],"license":"MIT"},"lib/v4-core/src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"},"lib/v4-core/test/utils/CurrencySettler.sol":{"keccak256":"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e","urls":["bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96","dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24"],"license":"MIT"},"src/ArenaController.sol":{"keccak256":"0x4b5ec770c25619a400a50f906b4082f1eda41cdceab285e10d3b76163d27b0a3","urls":["bzz-raw://5ad196088ebe6b1f091dee6ce5676f5f8a3a37cb0b542d3e7fddf2238abffab3","dweb:/ipfs/QmNdn7aVowxiz1LjxEVid686isjtRKP12BJ7WepRhAN8sJ"],"license":null},"src/ArenaToken.sol":{"keccak256":"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a","urls":["bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105","dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF"],"license":null},"src/Fetcher.sol":{"keccak256":"0x1895e5c0688650ca60371f208b62d9f64beea29bd7515b2600a1c8d5c73805df","urls":["bzz-raw://f9c904c9d032167f6d8fec1392c9a023f339a4aee9f75f06df6347a495af9d38","dweb:/ipfs/QmYSaPzRawAnh2qD3JY5uvWypEueo5hSTQVyVFfX96msfb"],"license":null},"src/LiquidExchange.sol":{"keccak256":"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22","urls":["bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5","dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17"],"license":"MIT"}},"version":1},"id":52} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"fee","type":"uint256","internalType":"uint256"},{"name":"initialPrice","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidity","inputs":[{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"constructSignal","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ArenaController.Signal","components":[{"name":"currentTick","type":"int24","internalType":"int24"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"manager","type":"address","internalType":"address"},{"name":"lexPrice","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"poolKey","inputs":[],"outputs":[{"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"}],"stateMutability":"view"},{"type":"function","name":"setPool","inputs":[{"name":"poolFee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPrice","inputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapOnLex","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x610140604052348015610010575f80fd5b5060405161940938038061940983398101604081905261002f9161044f565b8160405161003c9061040e565b908152602001604051809103905ff08015801561005b573d5f803e3d5ffd5b506001600160a01b031660808190526040516100769061041b565b6001600160a01b039091168152602001604051809103905ff08015801561009f573d5f803e3d5ffd5b506001600160a01b031660a0526040516100b890610428565b604051809103905ff0801580156100d1573d5f803e3d5ffd5b506001600160a01b031660e0526040516012906100ed90610435565b606080825260099082015268063757272656e6379360bc1b608082015260a06020820181905260029082015261063360f41b60c082015260ff909116604082015260e001604051809103905ff08015801561014a573d5f803e3d5ffd5b506001600160a01b03166101005260405160129061016790610435565b60608082526009908201526863757272656e63793160b81b608082015260a06020820181905260029082015261633160f01b60c082015260ff909116604082015260e001604051809103905ff0801580156101c4573d5f803e3d5ffd5b506001600160a01b0390811661012081905261010051909116111561020057610120805161010080516001600160a01b03908116909352911690525b61010051610120518260405161021590610442565b6001600160a01b0393841681529290911660208301526040820152606001604051809103905ff08015801561024c573d5f803e3d5ffd5b506001600160a01b0390811660c052610100516040516340c10f1960e01b8152306004820152655af3107a400060248201529116906340c10f19906044016020604051808303815f875af11580156102a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ca9190610471565b61032f5760405162461bcd60e51b815260206004820152602b60248201527f4d696e74696e672063757272656e63793020746f206c6971756964206578636860448201526a185b99d94819985a5b195960aa1b60648201526084015b60405180910390fd5b610120516040516340c10f1960e01b8152306004820152655af3107a400060248201526001600160a01b03909116906340c10f19906044016020604051808303815f875af1158015610383573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a79190610471565b6104075760405162461bcd60e51b815260206004820152602b60248201527f4d696e74696e672063757272656e63793120746f206c6971756964206578636860448201526a185b99d94819985a5b195960aa1b6064820152608401610326565b5050610497565b61502b8061136a83390190565b6116ad8061639583390190565b6105bc80617a4283390190565b610eea80617ffe83390190565b61052180618ee883390190565b5f8060408385031215610460575f80fd5b505080516020909101519092909150565b5f60208284031215610481575f80fd5b81518015158114610490575f80fd5b9392505050565b60805160a05160c05160e0516101005161012051610e3f61052b5f395f81816104cb015281816106cb015261087701525f81816103ec015281816105cf015261084801525f81816101a301526101f301525f8181610341015281816109bd0152610a3e01525f81816105a00152818161069c01526107c001525f81816101d20152818161031201526109260152610e3f5ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c8063014807031461006457806306ba06fa146100b5578063182148ef146100ca5780636af577411461014357806391b7f5ed1461015657806396f5e27c14610169575b5f80fd5b61006c61017c565b60408051825160020b81526020808401516001600160a01b0390811691830191909152838301511691810191909152606091820151918101919091526080015b60405180910390f35b6100c86100c3366004610aa2565b6103c8565b005b5f5460015460028054610103936001600160a01b03908116938082169362ffffff600160a01b83041693600160b81b909204900b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a0016100ac565b6100c8610151366004610b19565b61083c565b6100c8610164366004610c15565b6109a7565b6100c8610177366004610c2c565b610a18565b604080516080810182525f8082526020820181905291810182905260608101919091525f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e631bcbf7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166332c961d95f6040518263ffffffff1660e01b815260040161023d9190610c9b565b602060405180830381865afa158015610258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027c9190610caf565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa1580156102c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e79190610cc6565b50509150915060405180608001604052808260020b8152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bf9190610caf565b90529392505050565b5f831315610589576040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af115801561043a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045e9190610d22565b6104af5760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637930206661696c6564000000000000000060448201526064015b60405180910390fd5b6040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af1158015610519573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053d9190610d22565b6105895760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637931206661696c6564000000000000000060448201526064016104a6565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106399190610d22565b6106855760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c656400000060448201526064016104a6565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610711573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107359190610d22565b6107815760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c656400000060448201526064016104a6565b60408051608081018252600284810b825283900b60208201528082018590525f606082018190529151632d35e7ed60e11b815290916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691635a6bcfda916107f5918590600401610d48565b6020604051808303815f875af1158015610811573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108359190610caf565b5050505050565b6040805160a0810182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081168083527f000000000000000000000000000000000000000000000000000000000000000082166020840181905262ffffff8a811685870181905260028b810b60608801528a861660809097018790525f80546001600160a01b03199081169096178155600180546001600160b81b031916909517600160a01b9093029290921762ffffff60b81b1916600160b81b938d16939093029290921790925580549092169093179055915163695c5bf560e01b81527f00000000000000000000000000000000000000000000000000000000000000009092169163695c5bf59161095f9186908690600401610d99565b6020604051808303815f875af115801561097b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099f9190610dee565b505050505050565b6040516391b7f5ed60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391b7f5ed906024015f604051808303815f87803b158015610a06575f80fd5b505af1158015610835573d5f803e3d5ffd5b60405163d004f0f760e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d004f0f7906044015f604051808303815f87803b158015610a7f575f80fd5b505af115801561099f573d5f803e3d5ffd5b8060020b8114610a9f575f80fd5b50565b5f805f60608486031215610ab4575f80fd5b833592506020840135610ac681610a91565b91506040840135610ad681610a91565b809150509250925092565b62ffffff81168114610a9f575f80fd5b6001600160a01b0381168114610a9f575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f805f60a08688031215610b2d575f80fd5b8535610b3881610ae1565b94506020860135610b4881610a91565b93506040860135610b5881610af1565b92506060860135610b6881610af1565b9150608086013567ffffffffffffffff811115610b83575f80fd5b8601601f81018813610b93575f80fd5b803567ffffffffffffffff811115610bad57610bad610b05565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610bdc57610bdc610b05565b6040528181528282016020018a1015610bf3575f80fd5b816020840160208301375f602083830101528093505050509295509295909350565b5f60208284031215610c25575f80fd5b5035919050565b5f8060408385031215610c3d575f80fd5b8235610c4881610af1565b946020939093013593505050565b80546001600160a01b0390811683526001820154808216602085015260a081901c62ffffff16604085015260b81c600290810b60608501529091015416608090910152565b60a08101610ca98284610c56565b92915050565b5f60208284031215610cbf575f80fd5b5051919050565b5f805f8060808587031215610cd9575f80fd5b8451610ce481610af1565b6020860151909450610cf581610a91565b6040860151909350610d0681610ae1565b6060860151909250610d1781610ae1565b939692955090935050565b5f60208284031215610d32575f80fd5b81518015158114610d41575f80fd5b9392505050565b610d528184610c56565b8151600290810b60a08301526020830151900b60c0820152604082015160e082015260609091015161010082015261014061012082018190525f9082015261016001919050565b610da38185610c56565b60018060a01b03831660a082015260e060c08201525f82518060e0840152806020850161010085015e5f6101008285010152610100601f19601f830116840101915050949350505050565b5f60208284031215610dfe575f80fd5b8151610d4181610a9156fea2646970667358221220e4c2894837cab253352bdc039e1065b5c40ef0696f2789063be3ca2cb0d5033164736f6c634300081a003360c0604052348015600e575f80fd5b5060405161502b38038061502b833981016040819052602b916077565b5f80546001600160a01b031916339081178255604051839282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350608052503060a052608d565b5f602082840312156086575f80fd5b5051919050565b60805160a051614f766100b55f395f6117e201525f818161220b01526122490152614f765ff3fe6080604052600436106101fb575f3560e01c80635a6bcfda11610113578063a58411941161009d578063f135baaa1161006d578063f135baaa14610641578063f2fde38b14610660578063f3cd914c1461067f578063f5298aca1461069e578063fe99049a146106bd575f80fd5b8063a5841194146105ab578063b6363cf2146105ca578063dbd035ff14610603578063f02de3b214610622575f80fd5b806380f0b44c116100e357806380f0b44c146104ed5780638161b8741461050c5780638da5cb5b1461052b57806397e8cd4e146105615780639bf6645f1461058c575f80fd5b80635a6bcfda1461046657806360460f061461049a578063695c5bf5146104af5780637e87ce7d146104ce575f80fd5b8063234266d711610194578063426a849311610164578063426a8493146103a157806348c89491146103c057806352759651146103ec578063558a72971461040b578063598af9e71461042a575f80fd5b8063234266d7146103245780632d7713891461034357806335fd631a146103625780633dd45adb1461038e575f80fd5b80630b0d9c09116101cf5780630b0d9c09146102bd57806311da60b4146102de578063156e29f6146102e65780631e2eaeaf14610305575f80fd5b8062fdd58e146101ff57806301ffc9a71461024857806307eff0dd14610277578063095bcdb61461029e575b5f80fd5b34801561020a575f80fd5b50610235610219366004614397565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b506102676102623660046143c1565b6106dc565b604051901515815260200161023f565b348015610282575f80fd5b5061028b600181565b60405160029190910b815260200161023f565b3480156102a9575f80fd5b506102676102b83660046143e8565b610712565b3480156102c8575f80fd5b506102dc6102d736600461441a565b6107b9565b005b61023561080a565b3480156102f1575f80fd5b506102dc6103003660046143e8565b61083c565b348015610310575f80fd5b5061023561031f366004614458565b610887565b34801561032f575f80fd5b5061023561033e3660046145d7565b610891565b34801561034e575f80fd5b506102dc61035d36600461463b565b610941565b34801561036d575f80fd5b5061038161037c366004614656565b6109d7565b60405161023f9190614676565b61023561039c36600461463b565b610a14565b3480156103ac575f80fd5b506102676103bb3660046143e8565b610a46565b3480156103cb575f80fd5b506103df6103da3660046146b8565b610aaa565b60405161023f91906146f6565b3480156103f7575f80fd5b506102dc61040636600461472b565b610b6d565b348015610416575f80fd5b5061026761042536600461476c565b610bdc565b348015610435575f80fd5b5061023561044436600461441a565b600560209081525f938452604080852082529284528284209052825290205481565b348015610471575f80fd5b50610485610480366004614796565b610c4b565b6040805192835260208301919091520161023f565b3480156104a5575f80fd5b5061028b617fff81565b3480156104ba575f80fd5b5061028b6104c9366004614838565b610dde565b3480156104d9575f80fd5b506102dc6104e836600461472b565b610fcd565b3480156104f8575f80fd5b506102dc610507366004614397565b61107f565b348015610517575f80fd5b5061023561052636600461441a565b6110f2565b348015610536575f80fd5b505f54610549906001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b34801561056c575f80fd5b5061023561057b36600461463b565b60016020525f908152604090205481565b348015610597575f80fd5b506103816105a636600461487f565b611181565b3480156105b6575f80fd5b506102dc6105c536600461463b565b6111ba565b3480156105d5575f80fd5b506102676105e43660046148ee565b600360209081525f928352604080842090915290825290205460ff1681565b34801561060e575f80fd5b5061038161061d36600461487f565b6111f6565b34801561062d575f80fd5b50600254610549906001600160a01b031681565b34801561064c575f80fd5b5061023561065b366004614458565b61122d565b34801561066b575f80fd5b506102dc61067a36600461463b565b611237565b34801561068a575f80fd5b50610235610699366004614925565b6112c9565b3480156106a9575f80fd5b506102dc6106b83660046143e8565b61140f565b3480156106c8575f80fd5b506102676106d73660046149c3565b611454565b5f6301ffc9a760e01b6001600160e01b03198316148061070c5750630f632fb360e01b6001600160e01b03198316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061073d908490614a1a565b90915550506001600160a01b0384165f90815260046020908152604080832086845290915281208054849290610774908490614a2d565b909155505060408051338082526020820185905285926001600160a01b038816925f80516020614ee183398151915291015b60405180910390a45060015b9392505050565b5f80516020614f018339815191525c6107dc576107dc6354e3ca0d60e01b6115b3565b6107f1836107e9836115bb565b5f03336115db565b6108056001600160a01b038416838361162e565b505050565b5f5f80516020614f018339815191525c61082e5761082e6354e3ca0d60e01b6115b3565b610837336116c2565b905090565b5f80516020614f018339815191525c61085f5761085f6354e3ca0d60e01b6115b3565b8161086d816107e9846115bb565b610881846001600160a01b03831684611765565b50505050565b5f81545f5260205ff35b5f5f80516020614f018339815191525c6108b5576108b56354e3ca0d60e01b6115b3565b6108bd6117d7565b5f6108dc6108cc8860a0902090565b5f90815260066020526040902090565b90506108e781611819565b6080870151610903906001600160a01b0316888888888861183d565b61090e8187876118ba565b915061091b87833361196d565b6080870151610937906001600160a01b03168888888888611995565b5095945050505050565b5f546001600160a01b0316331461098e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b855483526020830192506001860195508083106109f75781810382f35b5f5f80516020614f018339815191525c610a3857610a386354e3ca0d60e01b6115b3565b61070c826116c2565b919050565b335f8181526005602090815260408083206001600160a01b03881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7906107a69087815260200190565b60605f80516020614f018339815191525c15610ad057610ad06328486b6360e11b6115b3565b610ad8611a07565b6040516348eeb9a360e11b815233906391dd734690610afd9086908690600401614a68565b5f604051808303815f875af1158015610b18573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b3f9190810190614a7b565b90505f80516020614f218339815191525c15610b6557610b65635212cba160e01b6115b3565b61070c611a1a565b604082015162ffffff1662800000141580610b9e575081608001516001600160a01b0316336001600160a01b031614155b15610bb357610bb36330d2164160e01b6115b3565b610bc18162ffffff16611a2c565b60a082205f8181526006602052604090206108059083611a52565b335f8181526003602090815260408083206001600160a01b038716808552908352818420805460ff191687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f805f80516020614f018339815191525c610c7057610c706354e3ca0d60e01b6115b3565b610c786117d7565b60a086205f818152600660205260409020610c9281611819565b6080880151610cad906001600160a01b031689898989611a6d565b5f610d146040518060c00160405280336001600160a01b031681526020018a5f015160020b81526020018a6020015160020b8152602001610cf18b60400151611b6f565b600f0b81526060808d015160020b60208301528b01516040909101528390611b8b565b94509050610d228185611f05565b9450336001600160a01b0316837f541c041c2cce48e614b3de043c9280f06b6164c0a1741649e2de3c3d375f79748a5f01518b602001518c60400151604051610d8693929190600293840b81529190920b6020820152604081019190915260600190565b60405180910390a360808901515f90610dac906001600160a01b03168b8b898c8c611f38565b90965090508015610dc657610dc68a828c6080015161196d565b610dd18a873361196d565b5050505094509492505050565b5f610de76117d7565b6060850151617fff60029190910b1315610e12576060850151610e12906316e0049f60e31b90612057565b600160020b856060015160020b1215610e3c576060850151610e3c90631d3d20b160e31b90612057565b845160208601516001600160a01b03908116911610610e6e5784516020860151610e6e916306e6c98360e41b91612066565b610e92856040015186608001516001600160a01b031661208890919063ffffffff16565b610ead576080850151610ead90630732d7b560e51b90612149565b5f610ec0866040015162ffffff1661215e565b6080870151909150610ede906001600160a01b031687878787612183565b60a086205f610eec886121f4565b5f848152600660205260409020909250610f099150888386612326565b6080890151909450610f28906001600160a01b03168989878a8a612385565b87602001516001600160a01b0316885f01516001600160a01b0316837fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d64388b604001518c606001518d608001518d8b604051610fba95949392919062ffffff959095168552600293840b60208601526001600160a01b03928316604086015291166060840152900b608082015260a00190565b60405180910390a4505050949350505050565b6002546001600160a01b03163314610fef57610fef6348f5c3ed60e01b6115b3565b6103e9610fff821610623e900062fff0008316101661101e5761101e63a7abe2f760e01b62ffffff8316612149565b60a082206110408261103a835f90815260066020526040902090565b906123f8565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b5f80516020614f018339815191525c6110a2576110a26354e3ca0d60e01b6115b3565b335f9081526001600160a01b038316602052604081205c906110c3836115bb565b90508181600f0b146110df576110df63bda73abf60e01b6115b3565b610881846110ec83614b0d565b336115db565b6002545f906001600160a01b03163314611116576111166348f5c3ed60e01b6115b3565b8115611122578161113b565b6001600160a01b0383165f908152600160205260409020545b6001600160a01b0384165f90815260016020526040812080549293508392909190611167908490614a1a565b909155506107b290506001600160a01b038416858361162e565b606060405180602082528360208301526040820191508360051b8201855b80355c84526020938401930181841061119f575b5081810382f35b6111c261240d565b6001600160a01b0381166111d35750565b5f6111e6826001600160a01b0316612441565b90506111f282826124bd565b5050565b606060405180602082528360208301526040820191508360051b8201855b803554845260209384019301818410156111b357611214565b5f815c5f5260205ff35b5f546001600160a01b0316331461127f5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610985565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f5f80516020614f018339815191525c6112ed576112ed6354e3ca0d60e01b6115b3565b6112f56117d7565b83602001515f036113105761131063be8b850760e01b6115b3565b60a085205f81815260066020526040902061132a81611819565b60808701515f908190819061134b906001600160a01b03168b8b8b8b6124fd565b8093508195508294505050506113ba84866040518060a001604052808e6060015160020b81526020018d5f0151151581526020018681526020018d604001516001600160a01b031681526020018562ffffff168152508c5f01516113b3578d60200151612619565b8d51612619565b60808b01519096505f92506113de91506001600160a01b03168a8a888b8b88612707565b909550905080156113f8576113f889828b6080015161196d565b61140389863361196d565b50505050949350505050565b5f80516020614f018339815191525c611432576114326354e3ca0d60e01b6115b3565b81611440816110ec846115bb565b610881846001600160a01b0383168461282a565b5f336001600160a01b0386161480159061149157506001600160a01b0385165f90815260036020908152604080832033845290915290205460ff16155b15611501576001600160a01b0385165f90815260056020908152604080832033845282528083208684529091529020545f1981146114ff576114d38382614a1a565b6001600160a01b0387165f90815260056020908152604080832033845282528083208884529091529020555b505b6001600160a01b0385165f90815260046020908152604080832086845290915281208054849290611533908490614a1a565b90915550506001600160a01b0384165f9081526004602090815260408083208684529091528120805484929061156a908490614a2d565b9091555050604080513381526020810184905284916001600160a01b0380881692908916915f80516020614ee1833981519152910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6001607f1b82106115d7576115d76393dafdf160e01b6115b3565b5090565b81600f0b5f036115ea57505050565b5f806116006001600160a01b03861684866128e8565b91509150805f0361161857611613612921565b611627565b815f0361162757611627612949565b5050505050565b5f6001600160a01b038416611661575f805f8085875af190508061165c5761165c6356cdd02560e11b612971565b610881565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061088157610881632745a14f60e21b612971565b5f5f80516020614ec18339815191525c6001600160a01b0381166116e85734915061174c565b34156116fe576116fe6319d245cf60e01b6115b3565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f6117336001600160a01b038416612441565b905061173f8282614a1a565b935061174961299e565b50505b61175f81611759846115bb565b856115db565b50919050565b6001600160a01b0383165f90815260046020908152604080832085845290915281208054839290611797908490614a2d565b9091555050604080513381526020810183905283916001600160a01b038616915f915f80516020614ee183398151915291015b60405180910390a4505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611817576118176306c4a1c760e11b6115b3565b565b80546001600160a01b03165f0361183a5761183a63486aa30760e01b6115b3565b50565b85336001600160a01b038216146118b15760208716156118b1576118af33878787878760405160240161187596959493929190614b74565b60408051601f198184030181529190526020810180516001600160e01b0316635b54587d60e11b1790526001600160a01b038916906129b0565b505b50505050505050565b60038301545f906001600160801b03168082036118e1576118e163a74f97ab60e01b6115b3565b61190f6118ed856115bb565b5f036118f8856115bb565b5f0360809190911b6001600160801b039091161790565b9150831561193b5761192f84600160801b836001600160801b0316612a40565b60018601805490910190555b82156119655761195983600160801b836001600160801b0316612a40565b60028601805490910190555b509392505050565b82516119839061197d8460801d90565b836115db565b610805836020015161197d84600f0b90565b85336001600160a01b038216146118b15760108716156118b1576118af3387878787876040516024016119cd96959493929190614b74565b60408051601f198184030181529190526020810180516001600160e01b031663e1b4af6960e01b1790526001600160a01b038916906129b0565b60015f80516020614f018339815191525d565b5f5f80516020614f018339815191525d565b620f424062ffffff8216111561183a5761183a631400211360e01b62ffffff8316612149565b611a5b82611819565b8154611a679082612adc565b90915550565b84336001600160a01b03821614611b67575f8460400151138015611a945750610800861615155b15611af557611aef3386868686604051602401611ab5959493929190614bbe565b60408051601f198184030181529190526020810180516001600160e01b031663259982e560e01b1790526001600160a01b038816906129b0565b50611b67565b5f846040015113158015611b0c5750610200861615155b15611b67576118b13386868686604051602401611b2d959493929190614bbe565b60408051601f198184030181529190526020810180516001600160e01b031663021d0ee760e41b1790526001600160a01b038816906129b0565b505050505050565b80600f81900b8114610a4157610a416393dafdf160e01b6115b3565b6060810151602082015160408301515f9283929091611baa8282612af7565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f14611cef57611be38884865f612b57565b6001600160801b0316602083015215158152611c028883866001612b57565b6001600160801b03166060830152151560408201525f600f85900b12611cb4575f611c52886080015160020b620d89e7198190058102620d89e8829005820203056001016001600160801b030490565b9050806001600160801b031682602001516001600160801b03161115611c8357611c8363b8e3c38560e01b85612057565b806001600160801b031682606001516001600160801b03161115611cb257611cb263b8e3c38560e01b84612057565b505b805115611cd0576080870151611cd09060058a01908590612c11565b806040015115611cef576080870151611cef9060058a01908490612c11565b5f80611cfc8a8686612c63565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080611d59838a8787612d17565b91509150611d85611d69836115bb565b611d72836115bb565b6001600160801b031660809190911b1790565b995050505050505f84600f0b1215611dee57805115611dc157600283810b5f90815260048a016020526040812081815560018101829055909101555b806040015115611dee57600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14611efb5786545f80611e0a8360a01c60020b90565b6001600160a01b038416915091508460020b8260020b1215611e5957611e52611e4c611e47611e3888612dd0565b611e4188612dd0565b8a613088565b611b6f565b60801b90565b9750611ef7565b8360020b8260020b1215611ed257611e90611e7a611e4783611e4188612dd0565b611d72611e47611e8989612dd0565b858b6130c0565b60038b0154909850611eab906001600160801b0316876130ec565b60038b0180546001600160801b0319166001600160801b0392909216919091179055611ef7565b611ef45f611d72611e47611ee589612dd0565b611eee89612dd0565b8b6130c0565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01611f2f611f2683611b6f565b611d7283611b6f565b95945050505050565b5f806001600160a01b0388163303611f5457508390505f61204c565b8491505f86604001511315611fe057610400881615611fdb57611fcc338888888888604051602401611f8b96959493929190614c1e565b60408051601f198184030181529190526020810180516001600160e01b0316625a2a8160e81b17905260028a1615155b6001600160a01b038b169190613113565b9050611fd88282613154565b91505b61204c565b61010088161561204c5761203d33888888888860405160240161200896959493929190614c1e565b60408051601f198184030181529190526020810180516001600160e01b03166346d95b2960e11b17905260018a161515611fbb565b90506120498282613154565b91505b965096945050505050565b815f528060020b60045260245ffd5b825f526001600160a01b0382166004526001600160a01b03811660245260445ffd5b5f6080831615801561209c57506008831615155b156120a857505f61070c565b604083161580156120bb57506004831615155b156120c757505f61070c565b61040083161580156120db57506002831615155b156120e757505f61070c565b61010083161580156120fb57506001831615155b1561210757505f61070c565b6001600160a01b0383161561213857613fff831615158061213357506280000062ffffff8316146107b2565b6107b2565b5062ffffff16628000001415919050565b815f526001600160a01b03811660045260245ffd5b5f6280000062ffffff83160361217557505f919050565b6115d78262ffffff16611a2c565b84336001600160a01b03821614611b6757612000861615611b67576118b133868686866040516024016121ba959493929190614c85565b60408051601f198184030181529190526020810180516001600160e01b03166301a206c160e51b1790526001600160a01b038816906129b0565b6002545f9081906001600160a01b031615612321577f00000000000000000000000000000000000000000000000000000000000000005a101561224157612241630f724b8160e11b6115b3565b6002546040517f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b0316905f90612283908790602401614cc6565b60408051601f198184030181529190526020810180516001600160e01b031663553bfc3760e01b17815281519192505f918291829190828789f13d60201416955085156122da576040513d5f823e805191505f8152505b8580156122eb57508062ffffff1681145b801561230857506103e9610fff821610623e900062fff000831610165b612313575f80612317565b6001815b9096509450505050505b915091565b83545f906001600160a01b03161561234857612348637983c05160e01b6115b3565b61235184613175565b905061237a826123748561236e6001600160a01b03891686613460565b9061347b565b90612adc565b909455509192915050565b85336001600160a01b038216146118b1576110008716156118b1576118af3387878787876040516024016123be96959493929190614cd4565b60408051601f198184030181529190526020810180516001600160e01b031663a910f80f60e01b1790526001600160a01b038916906129b0565b61240182611819565b8154611a67908261347b565b61242d5f80516020614ec18339815191525c6001600160a01b0316613496565b6118175761181763996caf6560e01b6115b3565b5f6001600160a01b038216612457575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015612499573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070c9190614d1d565b6001600160a01b0382165f80516020614ec18339815191525d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f806001600160a01b038816330361251c575f915061260e565b608088161561260e575f61257289338a8a8a8a604051602401612543959493929190614d34565b60408051601f198184030181529190526020810180516001600160e01b03166315d7892d60e21b1790526129b0565b9050805160601461258d5761258d631e048e1d60e01b6115b3565b604088015162ffffff1662800000036125a857606081015191505b600889161561260c57604081015192505f6125c38460801d90565b905080600f0b5f1461260a575f85126125e0600f83900b87614d8d565b9550806125ef575f86126125f3565b5f86135b1561260857612608637d05b8eb60e11b6115b3565b505b505b505b955095509592505050565b5f8080808061262889886134a7565b93509350935093505f831115612656576001600160a01b0386165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6126838760801d90565b61268d88600f0b90565b60408087015160a0880151606089015192516126f2959493908b90600f96870b81529490950b60208501526001600160a01b039290921660408401526001600160801b0316606083015260020b608082015262ffffff9190911660a082015260c00190565b60405180910390a35091979650505050505050565b5f806001600160a01b038916330361272357508490505f61281e565b5f61272e8460801d90565b90505f61273b85600f0b90565b905060408b16156127b5576127a8611e47338c8c8c8c8c60405160240161276796959493929190614db4565b60408051601f198184030181529190526020810180516001600160e01b031663b47b2fb160e01b17905260048e1615156001600160a01b038f169190613113565b6127b29082614e14565b90505b5f81600f0b5f1415806127cb575082600f0b5f14155b1561281657895160208b01515f13901515146127f6576001600160801b038316608083901b17612807565b6001600160801b038216608084901b175b90506128138982613154565b98505b889450925050505b97509795505050505050565b336001600160a01b038416811480159061286957506001600160a01b038085165f9081526003602090815260408083209385168352929052205460ff16155b156128dd576001600160a01b038085165f9081526005602090815260408083209385168352928152828220868352905220545f1981146128db576128ad8382614a1a565b6001600160a01b038087165f9081526005602090815260408083209387168352928152828220888352905220555b505b610881848484613b54565b6001600160a01b038281165f90815290841660205260408120805c9190612913600f85900b84614d8d565b915081815d50935093915050565b5f80516020614f218339815191525c600181039050805f80516020614f218339815191525d50565b5f80516020614f218339815191525c600181019050805f80516020614f218339815191525d50565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f5f80516020614ec18339815191525d565b60605f805f8451602086015f885af19050806129d6576129d663fb6a608160e01b612971565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080612a24575060208301516001600160e01b031916612a17836020015190565b6001600160e01b03191614155b15612a3957612a39631e048e1d60e01b6115b3565b5092915050565b5f838302815f1985870982811083820303915050808411612a5f575f80fd5b805f03612a71575082900490506107b2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60d01b62ffffff60d01b1662ffffff60d01b19919091161790565b8060020b8260020b12612b1657612b1663c4433ed560e01b8383613bbd565b620d89e719600283900b1215612b3757612b3763d5e2f7ab60e01b83612057565b620d89e8600282900b13156111f2576111f263035aeeff60e31b82612057565b600283900b5f908152600485016020526040812080548291906001600160801b0381169060801d612b8882886130ec565b6001600160801b03808216159084168015919091141596509094505f03612bd257885460a01c60020b60020b8860020b13612bd2576001808a0154908401556002808a0154908401555b5f86612be757612be28883614e14565b612bf1565b612bf18883614e41565b90508060801b6001600160801b0386161784555050505094509492505050565b600291820b910b80820715612c3e5760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215612cb9578160010154836001015403945081600201548360020154039350612d0c565b8560020b8160020b12612ce5578260010154826001015403945082600201548260020154039350612d0c565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906001600160801b0316600f86900b8203612d5657806001600160801b03165f03612d5157612d51632bbfae4960e21b6115b3565b612d7c565b612d6081876130ec565b87546001600160801b0319166001600160801b03919091161787555b612d9a87600101548603826001600160801b0316600160801b612a40565b9250612dba87600201548503826001600160801b0316600160801b612a40565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115612df957612df96345c3193d60e11b84612057565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b186002821615612e35576ffff97272373d413259a46990580e213a0260801c5b6004821615612e54576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e73576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e92576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612eb1576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ed0576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612eef576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612f0f576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f2f576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f4f576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f6f576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f8f576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612faf576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fcf576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fef576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613010576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613030576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561304f576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561306c576b048a170391f7dc42444e8fa20260801c5b5f841315613078575f19045b63ffffffff0160201c9392505050565b5f8082600f0b126130af576130a86130a38585856001613bda565b613c9d565b5f036115ab565b6115ab6130a38585855f035f613bda565b5f8082600f0b126130db576130a86130a38585856001613cb6565b6115ab6130a38585855f035f613cb6565b6001600160801b038216600f82900b01608081901c1561070c576393dafdf15f526004601cfd5b5f8061311f85856129b0565b90508261312f575f9150506107b2565b805160401461314857613148631e048e1d60e01b6115b3565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03611f2f611f2683611b6f565b5f73fffd8963efd1fc6a506488495d951d51639616826401000276a21983016001600160a01b031611156131b4576131b46318521d4960e21b83612149565b640100000000600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061324757607f810383901c9150613251565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461345157886001600160a01b031661343682612dd0565b6001600160a01b0316111561344b5781613453565b80613453565b815b9998505050505050505050565b60a01b62ffffff60a01b1662ffffff60a01b19919091161790565b60b81b62ffffff60b81b1662ffffff60b81b19919091161790565b5f6001600160a01b0382161561070c565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a08101829052819081908554602086015160038801546001600160801b03165f8261350457610fff60c485901c1661350e565b610fff60b885901c165b60408a81015187525f60208801526001600160a01b0386169087015260a085901c60020b606087015261ffff1690508261354c578960020154613552565b89600101545b6080868101919091526001600160801b03831660a08701528901515f9062400000166135875760d085901c62ffffff16613599565b6135998a6080015162ffffff16613d02565b905081156135c757620f424062ffffff821661ffff84168181028381061515939004929092019101036135c9565b805b60408b01519097505f13905062ffffff8716620f42401480156135ea575080155b156135ff576135ff634b10312360e11b6115b3565b89604001515f0361361a575f80985098505050505050613b4b565b83156136985760608a01516001600160a01b03868116911610613659576136596001600160a01b0386165b60608c0151637c9c6e8f60e01b9190613d11565b6401000276a36001600160a01b03168a606001516001600160a01b031610156136935760608a015161369390639e4d7cc760e01b90612149565b613709565b60608a01516001600160a01b038681169116116136c1576136c16001600160a01b038616613645565b73fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03168a606001516001600160a01b0316106137095760608a015161370990639e4d7cc760e01b90612149565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091525b8651158061376957508a606001516001600160a01b031687604001516001600160a01b0316145b613a545760408701516001600160a01b0316815260608701518b516137939160058f019188613d3a565b1515604083015260020b60208201819052620d89e719126137b957620d89e71960208201525b620d89e860020b816020015160020b126137d757620d89e860208201525b6137e48160200151612dd0565b6001600160a01b03908116606083810182905260408a0151908e0151613825939192911680821891811160ff8a1618919091021860a08a01518a518c613e23565b60c085015260a084015260808301526001600160a01b0316604088015281613889576138548160a00151613c9d565b875103875260c08101516080820151613870916130a391614a2d565b876020018181516138819190614e6e565b9052506138c4565b61389c8160c00151826080015101613c9d565b875101875260a08101516138af90613c9d565b876020018181516138c09190614d8d565b9052505b8215613900575f620f4240848360c0015184608001510102816138e9576138e9614e8d565b60c084018051929091049182900390529990990198505b60a08701516001600160801b03161561393f576139338160c00151600160801b8960a001516001600160801b0316612a40565b60808801805190910190525b80606001516001600160a01b031687604001516001600160a01b031603613a1957806040015115613a01575f8086613980578d60010154896080015161398b565b88608001518e600201545b915091505f6139d68f85602001518585600292830b5f90815260049094016020526040909320600181018054909203909155908101805490920390915554600160801b9004600f0b90565b905087156139e1575f035b6139ef8a60a00151826130ec565b6001600160801b031660a08b01525050505b602081015160ff8616900360020b6060880152613742565b805f01516001600160a01b031687604001516001600160a01b031614613a4f57613a468760400151613175565b60020b60608801525b613742565b613a8c8760400151613a7389606001518961346090919063ffffffff16565b6001600160a01b0319166001600160a01b039091161790565b8c5560a08701516001600160801b03858116911614613acc5760a087015160038d0180546001600160801b0319166001600160801b039092169190911790555b84613ae057608087015160028d0155613aeb565b608087015160018d01555b81151585151514613b1f57613b18613b068860200151611b6f565b611d72895f01518e6040015103611b6f565b9950613b44565b613b41613b34885f01518d6040015103611b6f565b611d728960200151611b6f565b99505b5050505050505b92959194509250565b6001600160a01b0383165f90815260046020908152604080832085845290915281208054839290613b86908490614a1a565b9091555050604080513381526020810183905283915f916001600160a01b038716915f80516020614ee183398151915291016117ca565b6040518381528260020b60048201528160020b6024820152604481fd5b5f836001600160a01b0316856001600160a01b03161115613bf9579293925b6001600160a01b038516613c135762bfc9215f526004601cfd5b600160601b600160e01b03606084901b166001600160a01b038686031683613c6657866001600160a01b0316613c538383896001600160a01b0316612a40565b81613c6057613c60614e8d565b04613c92565b613c92613c7d8383896001600160a01b0316613fa9565b886001600160a01b0316808204910615150190565b979650505050505050565b805f811215610a4157610a416393dafdf160e01b6115b3565b5f6001600160a01b038481169086160360ff81901d90810118600160601b6001600160801b038516613ce9818484612a40565b9350845f83858409111684019350505050949350505050565b62bfffff8116610a4181611a2c565b6040518381526001600160a01b03831660048201526001600160a01b0382166024820152604481fd5b5f80600284810b9086900b8181078313919005038315613db557600281900b60081d600181810b5f90815260208a905260409020545f1960ff85168381019390931b01908116801515955085613d9757888360ff16860302613daa565b88613da182613fd9565b840360ff168603025b965050505050613e19565b6001908101600281900b60081d80830b5f90815260208a905260409020545f1960ff841694851b011990811680151595509293919285613dff57888360ff0360ff16860102613e12565b8883613e0a83614069565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff85166001600160a01b03808a16908b1610158288128015613f1c575f613e5c8a5f0385620f424003620f4240612a40565b905082613e7557613e708d8d8d6001613cb6565b613e82565b613e828c8e8d6001613bda565b9650868110613eb6578b9750620f42408414613ead57613ea8878586620f424003613fa9565b613eaf565b865b9450613ef2565b613ec28d8c8386614104565b975082613edb57613ed68d898d6001613cb6565b613ee8565b613ee8888e8d6001613bda565b9650868a5f030394505b82613f0857613f038d898d5f613bda565b613f14565b613f14888e8d5f613cb6565b955050613f9a565b81613f3257613f2d8c8c8c5f613bda565b613f3e565b613f3e8b8d8c5f613cb6565b9450848910613f4f578a9650613f61565b889450613f5e8c8b8785614152565b96505b81613f7857613f738c888c6001613cb6565b613f85565b613f85878d8c6001613bda565b9550613f97868485620f424003613fa9565b93505b50505095509550955095915050565b5f613fb5848484612a40565b90508180613fc557613fc5614e8d565b838509156107b257600101806107b2575f80fd5b5f808211613fe5575f80fd5b507f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be831560081b6001600160801b03851160071b1784811c6001600160401b031060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b5f808211614075575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b150316040581196001019091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6001600160801b038416156001600160a01b03861615171561412e57634f2461b85f526004601cfd5b81614145576141408585856001614195565b611f2f565b611f2f8585856001614280565b5f6001600160801b038416156001600160a01b03861615171561417c57634f2461b85f526004601cfd5b8161418d576141408585855f614280565b611f2f8585855f5b5f8115614205575f6001600160a01b038411156141c9576141c484600160601b876001600160801b0316612a40565b6141e0565b6141e06001600160801b038616606086901b614ea1565b90506141fd6141f8826001600160a01b038916614a2d565b614362565b9150506115ab565b5f6001600160a01b038411156142325761422d84600160601b876001600160801b0316613fa9565b61424f565b61424f606085901b6001600160801b038716808204910615150190565b9050806001600160a01b0387161161426e57634323a5555f526004601cfd5b6001600160a01b0386160390506115ab565b5f825f0361428f5750836115ab565b600160601b600160e01b03606085901b168215614321576001600160a01b038616848102908582816142c3576142c3614e8d565b04036142f3578181018281106142f1576142e783896001600160a01b031683613fa9565b93505050506115ab565b505b506141fd818561430c6001600160a01b038a1683614ea1565b6143169190614a2d565b808204910615150190565b6001600160a01b0386168481029085820414818311166143485763f5c787f15f526004601cfd5b8082036142e76141f8846001600160a01b038b1684613fa9565b806001600160a01b0381168114610a4157610a416393dafdf160e01b6115b3565b6001600160a01b038116811461183a575f80fd5b5f80604083850312156143a8575f80fd5b82356143b381614383565b946020939093013593505050565b5f602082840312156143d1575f80fd5b81356001600160e01b0319811681146107b2575f80fd5b5f805f606084860312156143fa575f80fd5b833561440581614383565b95602085013595506040909401359392505050565b5f805f6060848603121561442c575f80fd5b833561443781614383565b9250602084013561444781614383565b929592945050506040919091013590565b5f60208284031215614468575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156144a5576144a561446f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156144d3576144d361446f565b604052919050565b803562ffffff81168114610a41575f80fd5b8035600281900b8114610a41575f80fd5b5f60a0828403121561450e575f80fd5b60405160a081016001600160401b03811182821017156145305761453061446f565b604052905080823561454181614383565b8152602083013561455181614383565b6020820152614562604084016144db565b6040820152614573606084016144ed565b6060820152608083013561458681614383565b6080919091015292915050565b5f8083601f8401126145a3575f80fd5b5081356001600160401b038111156145b9575f80fd5b6020830191508360208285010111156145d0575f80fd5b9250929050565b5f805f805f61010086880312156145ec575f80fd5b6145f687876144fe565b945060a0860135935060c0860135925060e08601356001600160401b0381111561461e575f80fd5b61462a88828901614593565b969995985093965092949392505050565b5f6020828403121561464b575f80fd5b81356107b281614383565b5f8060408385031215614667575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156146ad57835183526020938401939092019160010161468f565b509095945050505050565b5f80602083850312156146c9575f80fd5b82356001600160401b038111156146de575f80fd5b6146ea85828601614593565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060c0838503121561473c575f80fd5b61474684846144fe565b915061475460a084016144db565b90509250929050565b80358015158114610a41575f80fd5b5f806040838503121561477d575f80fd5b823561478881614383565b91506147546020840161475d565b5f805f808486036101408112156147ab575f80fd5b6147b587876144fe565b94506080609f19820112156147c8575f80fd5b506147d1614483565b6147dd60a087016144ed565b81526147eb60c087016144ed565b602082015260e08601356040820152610100860135606082015292506101208501356001600160401b03811115614820575f80fd5b61482c87828801614593565b95989497509550505050565b5f805f8060e0858703121561484b575f80fd5b61485586866144fe565b935060a085013561486581614383565b925060c08501356001600160401b03811115614820575f80fd5b5f8060208385031215614890575f80fd5b82356001600160401b038111156148a5575f80fd5b8301601f810185136148b5575f80fd5b80356001600160401b038111156148ca575f80fd5b8560208260051b84010111156148de575f80fd5b6020919091019590945092505050565b5f80604083850312156148ff575f80fd5b823561490a81614383565b9150602083013561491a81614383565b809150509250929050565b5f805f8084860361012081121561493a575f80fd5b61494487876144fe565b94506060609f1982011215614957575f80fd5b50604051606081016001600160401b038111828210171561497a5761497a61446f565b60405261498960a0870161475d565b815260c0860135602082015260e08601356149a381614383565b604082015292506101008501356001600160401b03811115614820575f80fd5b5f805f80608085870312156149d6575f80fd5b84356149e181614383565b935060208501356149f181614383565b93969395505050506040820135916060013590565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561070c5761070c614a06565b8082018082111561070c5761070c614a06565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6115ab602083018486614a40565b5f60208284031215614a8b575f80fd5b81516001600160401b03811115614aa0575f80fd5b8201601f81018413614ab0575f80fd5b80516001600160401b03811115614ac957614ac961446f565b614adc601f8201601f19166020016144ab565b818152856020838501011115614af0575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f81600f0b60016001607f1b03198103614b2957614b29614a06565b5f0392915050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b6001600160a01b0387168152614b8d6020820187614b31565b8460c08201528360e08201526101206101008201525f614bb261012083018486614a40565b98975050505050505050565b6001600160a01b0386168152614bd76020820186614b31565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f613c9261016083018486614a40565b6001600160a01b0387168152614c376020820187614b31565b8451600290810b60c08301526020860151900b60e082015260408501516101008201526060850151610120820152836101408201526101806101608201525f614bb261018083018486614a40565b6001600160a01b0386168152614c9e6020820186614b31565b6001600160a01b03841660c082015261010060e082018190525f90613c929083018486614a40565b60a0810161070c8284614b31565b6001600160a01b0387168152614ced6020820187614b31565b60018060a01b03851660c08201528360020b60e08201526101206101008201525f614bb261012083018486614a40565b5f60208284031215614d2d575f80fd5b5051919050565b6001600160a01b0386168152614d4d6020820186614b31565b8351151560c0820152602084015160e082015260408401516001600160a01b03166101008201526101406101208201525f613c9261014083018486614a40565b8082018281125f831280158216821582161715614dac57614dac614a06565b505092915050565b6001600160a01b0387168152614dcd6020820187614b31565b8451151560c0820152602085015160e082015260408501516001600160a01b0316610100820152836101208201526101606101408201525f614bb261016083018486614a40565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561070c5761070c614a06565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561070c5761070c614a06565b8181035f831280158383131683831282161715612a3957612a39614a06565b634e487b7160e01b5f52601260045260245ffd5b5f82614ebb57634e487b7160e01b5f52601260045260245ffd5b50049056fe27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b91b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859c090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab237d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0ba2646970667358221220c720af38850bace8901ec0c414e9cc6b7600fdc66c58c62bb119ab202e9502fe64736f6c634300081a003360a0604052348015600e575f80fd5b506040516116ad3803806116ad833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516115e46100c95f395f818160790152818160f50152818161022d01528181610294015281816102c501528181610390015281816104fa01528181610550015281816105bf015281816106100152818161077a01526107ad01526115e45ff3fe60806040526004361061003e575f3560e01c80630a5b11e414610042578063481c6a75146100685780635a6bcfda146100b357806391dd7346146100c6575b5f80fd5b610055610050366004611035565b6100f2565b6040519081526020015b60405180910390f35b348015610073575f80fd5b5061009b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005f565b6100556100c13660046110bb565b61020a565b3480156100d1575f80fd5b506100e56100e0366004611118565b610220565b60405161005f91906111b2565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166348c894916040518060c00160405280336001600160a01b03168152602001898152602001888152602001878152602001861515815260200185151581525060405160200161016c919061120e565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161019791906111b2565b5f604051808303815f875af11580156101b2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101d991908101906112aa565b8060200190518101906101ec919061131e565b9050478015610200576102005f3383610662565b5095945050505050565b5f6102188484845f806100f2565b949350505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610256575f80fd5b5f61026383850185611335565b90505f6102be610278836020015160a0902090565b6040840151805160208201516060909201516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693923092916106fc565b505090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635a6bcfda8460200151856040015186606001516040518463ffffffff1660e01b815260040161031f939291906113fc565b60408051808303815f875af115801561033a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035e919061144b565b5090505f6103ba610374856020015160a0902090565b6040860151805160208201516060909201516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693923092916106fc565b505090505f6103d485602001515f0151865f015130610753565b925050505f6103ef866020015160200151875f015130610753565b9250505082600f0b86604001516040015186600f0b61040e9190611481565b1461045f5760405162461bcd60e51b815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f7272656374000000000000604482015260640160405180910390fd5b5f86604001516040015112156104a7575f82138061047c57505f81135b610488576104886114a8565b5f82128061049557505f81125b156104a2576104a26114a8565b6104ea565b5f86604001516040015113156104ea575f8212806104c457505f81125b6104d0576104d06114a8565b5f8213806104dd57505f81135b156104ea576104ea6114a8565b5f821215610540578551610540907f000000000000000000000000000000000000000000000000000000000000000090610523856114bc565b60808a015160208b0151516001600160a01b0316939291906107df565b5f811215610598578551610598907f000000000000000000000000000000000000000000000000000000000000000090610579846114bc565b60808a01516020808c015101516001600160a01b0316939291906107df565b5f8213156105e757855160a08701516020880151516105e7926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908690610aab565b5f81131561063857855160a08701516020808901510151610638926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908590610aab565b60408051602081018690520160405160208183030381529060405296505050505050505b92915050565b5f6001600160a01b038416610695575f805f8085875af1905080610690576106906356cdd02560e11b610b7d565b6106f6565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806106f6576106f6632745a14f60e21b610b7d565b50505050565b60408051602681018390526006810184905260038101859052858152603a600c8201205f9282018390526020820183905290829052819081906107408a8a83610baa565b919c909b50909950975050505050505050565b5f80806107696001600160a01b03871686610c4d565b925061079e6001600160a01b0387167f0000000000000000000000000000000000000000000000000000000000000000610c4d565b91506107d46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168588610cdc565b905093509350939050565b801561087457836001600160a01b031663f5298aca8461080e886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610859575f80fd5b505af115801561086b573d5f803e3d5ffd5b50505050610aa4565b6001600160a01b0385166108eb57836001600160a01b03166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af11580156108c0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108e5919061131e565b50610aa4565b604051632961046560e21b81526001600160a01b03868116600483015285169063a5841194906024015f604051808303815f87803b15801561092b575f80fd5b505af115801561093d573d5f803e3d5ffd5b505050506001600160a01b03831630146109cf576040516323b872dd60e01b81526001600160a01b0384811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af11580156109a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c991906114d6565b50610a41565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610a1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f91906114d6565b505b836001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610a7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa2919061131e565b505b5050505050565b80610aed57604051630b0d9c0960e01b81526001600160a01b038681166004830152848116602483015260448201849052851690630b0d9c0990606401610842565b836001600160a01b031663156e29f684610b16886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015f604051808303815f87803b158015610b60575f80fd5b505af1158015610b72573d5f803e3d5ffd5b505050505050505050565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f805f80610bb88686610d73565b604051631afeb18d60e11b815260048101829052600360248201529091505f906001600160a01b038916906335fd631a906044015f60405180830381865afa158015610c06573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c2d91908101906114f1565b60208101516040820151606090920151909a919950975095505050505050565b5f6001600160a01b038316610c6d57506001600160a01b0381163161065c565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015610cb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd5919061131e565b905061065c565b5f806001600160a01b0384165f526001600160a01b03831660205260405f209050846001600160a01b031663f135baaa826040518263ffffffff1660e01b8152600401610d2b91815260200190565b602060405180830381865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a919061131e565b95945050505050565b5f80610d7e84610dc3565b90505f610d8c60068361159b565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b6040515f90610de2908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715610e3557610e35610dff565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610e6357610e63610dff565b604052919050565b6001600160a01b0381168114610e7f575f80fd5b50565b8035600281900b8114610e93575f80fd5b919050565b5f60a08284031215610ea8575f80fd5b60405160a081016001600160401b0381118282101715610eca57610eca610dff565b6040529050808235610edb81610e6b565b81526020830135610eeb81610e6b565b6020820152604083013562ffffff81168114610f05575f80fd5b6040820152610f1660608401610e82565b60608201526080830135610f2981610e6b565b6080919091015292915050565b5f60808284031215610f46575f80fd5b604051608081016001600160401b0381118282101715610f6857610f68610dff565b604052905080610f7783610e82565b8152610f8560208401610e82565b602082015260408301356040820152606083013560608201525092915050565b5f6001600160401b03821115610fbd57610fbd610dff565b50601f01601f191660200190565b5f82601f830112610fda575f80fd5b8135610fed610fe882610fa5565b610e3b565b818152846020838601011115611001575f80fd5b816020850160208301375f918101602001919091529392505050565b8015158114610e7f575f80fd5b8035610e938161101d565b5f805f805f610180868803121561104a575f80fd5b6110548787610e98565b94506110638760a08801610f36565b93506101208601356001600160401b0381111561107e575f80fd5b61108a88828901610fcb565b93505061014086013561109c8161101d565b91506101608601356110ad8161101d565b809150509295509295909350565b5f805f61014084860312156110ce575f80fd5b6110d88585610e98565b92506110e78560a08601610f36565b91506101208401356001600160401b03811115611102575f80fd5b61110e86828701610fcb565b9150509250925092565b5f8060208385031215611129575f80fd5b82356001600160401b0381111561113e575f80fd5b8301601f8101851361114e575f80fd5b80356001600160401b03811115611163575f80fd5b856020828401011115611174575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6111c46020830184611184565b9392505050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b602080825282516001600160a01b0316828201528201515f9061123460408401826111cb565b506040838101518051600290810b60e08601526020820151900b610100850152908101516101208401526060908101516101408401528301516101a06101608401526112846101c0840182611184565b90506080840151151561018084015260a084015115156101a08401528091505092915050565b5f602082840312156112ba575f80fd5b81516001600160401b038111156112cf575f80fd5b8201601f810184136112df575f80fd5b80516112ed610fe882610fa5565b818152856020838501011115611301575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561132e575f80fd5b5051919050565b5f60208284031215611345575f80fd5b81356001600160401b0381111561135a575f80fd5b82016101a0818503121561136c575f80fd5b611374610e13565b813561137f81610e6b565b815261138e8560208401610e98565b60208201526113a08560c08401610f36565b60408201526101408201356001600160401b038111156113be575f80fd5b6113ca86828501610fcb565b6060830152506113dd610160830161102a565b60808201526113ef610180830161102a565b60a0820152949350505050565b61140681856111cb565b8251600290810b60a08301526020840151900b60c0820152604083015160e082015260608301516101008201526101406101208201525f610d6a610140830184611184565b5f806040838503121561145c575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f8312801582168215821617156114a0576114a061146d565b505092915050565b634e487b7160e01b5f52600160045260245ffd5b5f600160ff1b82016114d0576114d061146d565b505f0390565b5f602082840312156114e6575f80fd5b81516111c48161101d565b5f60208284031215611501575f80fd5b81516001600160401b03811115611516575f80fd5b8201601f81018413611526575f80fd5b80516001600160401b0381111561153f5761153f610dff565b8060051b61154f60208201610e3b565b9182526020818401810192908101908784111561156a575f80fd5b6020850194505b8385101561159057845180835260209586019590935090910190611571565b979650505050505050565b8082018082111561065c5761065c61146d56fea2646970667358221220022bb587431beddd1b3a2d4e57eee388a80ee14cf23bcb0c201ec0029fc9cb7a64736f6c634300081a00336080604052348015600e575f80fd5b506105a08061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806332c961d91461005957806357eb1da714610081578063769323e314610089578063b08d3fe214610091578063e631bcbf146100d1575b5f80fd5b61006e610067366004610386565b60a0902090565b6040519081526020015b60405180910390f35b61006e600681565b61006e600481565b6100a461009f366004610423565b61011c565b604080516001600160801b039095168552600f9390930b6020850152918301526060820152608001610078565b6100e46100df36600461045e565b6101d2565b604080516001600160a01b03909516855260029390930b602085015262ffffff91821692840192909252166060820152608001610078565b5f805f805f61012b8787610284565b604051631afeb18d60e11b815260048101829052600360248201529091505f906001600160a01b038a16906335fd631a906044015f60405180830381865afa158015610179573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101a09190810190610488565b602081015160408201516060909201516001600160801b0382169c60809290921d9b5091995090975095505050505050565b5f805f805f6101e0866102d8565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015610228573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024c9190610534565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b5f8061028f846102d8565b90505f61029d60048361054b565b60408051600287900b602082015290810182905290915060600160405160208183030381529060405280519060200120925050505b92915050565b6040515f906102f7908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561035157610351610314565b604052919050565b6001600160a01b038116811461036d575f80fd5b50565b8035600281900b8114610381575f80fd5b919050565b5f60a0828403128015610397575f80fd5b5060405160a0810167ffffffffffffffff811182821017156103bb576103bb610314565b60405282356103c981610359565b815260208301356103d981610359565b6020820152604083013562ffffff811681146103f3575f80fd5b604082015261040460608401610370565b6060820152608083013561041781610359565b60808201529392505050565b5f805f60608486031215610435575f80fd5b833561044081610359565b92506020840135915061045560408501610370565b90509250925092565b5f806040838503121561046f575f80fd5b823561047a81610359565b946020939093013593505050565b5f60208284031215610498575f80fd5b815167ffffffffffffffff8111156104ae575f80fd5b8201601f810184136104be575f80fd5b805167ffffffffffffffff8111156104d8576104d8610314565b8060051b6104e860208201610328565b91825260208184018101929081019087841115610503575f80fd5b6020850194505b838510156105295784518083526020958601959093509091019061050a565b979650505050505050565b5f60208284031215610544575f80fd5b5051919050565b808201808211156102d257634e487b7160e01b5f52601160045260245ffdfea26469706673582212200f59ae3b20597ee5b9c8afd86ef4272903aea11220ba5f5248dea7997a9f1cfe64736f6c634300081a003360e060405234801561000f575f80fd5b50604051610eea380380610eea83398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610af36103f75f395f61044201525f61040d01525f61013f0152610af35ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806340c10f191161008857806395d89b411161006357806395d89b41146101cc578063a9059cbb146101d4578063d505accf146101e7578063dd62ed3e146101fc575f80fd5b806340c10f191461017b57806370a082311461018e5780637ecebe00146101ad575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610127578063313ce5671461013a5780633644e51514610173575b5f80fd5b6100d7610226565b6040516100e4919061083f565b60405180910390f35b6101006100fb36600461088f565b6102b1565b60405190151581526020016100e4565b61011960025481565b6040519081526020016100e4565b6101006101353660046108b7565b61031d565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100e4565b61011961040a565b61010061018936600461088f565b610464565b61011961019c3660046108f1565b60036020525f908152604090205481565b6101196101bb3660046108f1565b60056020525f908152604090205481565b6100d7610478565b6101006101e236600461088f565b610485565b6101fa6101f5366004610911565b6104fb565b005b61011961020a36600461097e565b600460209081525f928352604080842090915290825290205481565b5f8054610232906109af565b80601f016020809104026020016040519081016040528092919081815260200182805461025e906109af565b80156102a95780601f10610280576101008083540402835291602001916102a9565b820191905f5260205f20905b81548152906001019060200180831161028c57829003601f168201915b505050505081565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061030b9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1981146103765761035283826109fb565b6001600160a01b0386165f9081526004602090815260408083203384529091529020555b6001600160a01b0385165f908152600360205260408120805485929061039d9084906109fb565b90915550506001600160a01b038085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103f79087815260200190565b60405180910390a3506001949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461043f5761043a61073e565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f61046f83836107d6565b50600192915050565b60018054610232906109af565b335f908152600360205260408120805483919083906104a59084906109fb565b90915550506001600160a01b0383165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061030b9086815260200190565b428410156105505760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f600161055b61040a565b6001600160a01b038a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f1981840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610663573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116158015906106995750876001600160a01b0316816001600160a01b0316145b6106d65760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610547565b6001600160a01b039081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161076e9190610a0e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546107e79190610aaa565b90915550506001600160a01b0382165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461088a575f80fd5b919050565b5f80604083850312156108a0575f80fd5b6108a983610874565b946020939093013593505050565b5f805f606084860312156108c9575f80fd5b6108d284610874565b92506108e060208501610874565b929592945050506040919091013590565b5f60208284031215610901575f80fd5b61090a82610874565b9392505050565b5f805f805f805f60e0888a031215610927575f80fd5b61093088610874565b965061093e60208901610874565b95506040880135945060608801359350608088013560ff81168114610961575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f806040838503121561098f575f80fd5b61099883610874565b91506109a660208401610874565b90509250929050565b600181811c908216806109c357607f821691505b6020821081036109e157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610317576103176109e7565b5f8083545f8160011c90506001821680610a2957607f821691505b602082108103610a4757634e487b7160e01b5f52602260045260245ffd5b808015610a5b5760018114610a7057610a9e565b60ff1984168752821515830287019450610a9e565b5f888152602090205f5b84811015610a9657815489820152600190910190602001610a7a565b505082870194505b50929695505050505050565b80820180821115610317576103176109e756fea2646970667358221220f4620711d0f8649f80fed98a6eb335b7806c86e0ebaba0b9fa57daf20d6ed2f364736f6c634300081a00336080604052348015600e575f80fd5b50604051610521380380610521833981016040819052602b91607b565b5f80546001600160a01b039485166001600160a01b031991821617909155600180549390941692169190911790915560025560af565b80516001600160a01b03811681146076575f80fd5b919050565b5f805f60608486031215608c575f80fd5b6093846061565b9250609f602085016061565b9150604084015190509250925092565b610465806100bc5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806358dbbe811461005957806391b7f5ed14610089578063a035b1fe1461009e578063d004f0f7146100b5578063f5992699146100c8575b5f80fd5b60015461006c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009c6100973660046103c4565b6100da565b005b6100a760025481565b604051908152602001610080565b61009c6100c33660046103db565b610115565b5f5461006c906001600160a01b031681565b60028190556040518181527ff347ee99503bf19c028bd6b18f3c676e82a9bb5b2bb5225aebe0fd62fd6a0d199060200160405180910390a150565b5f805481906001600160a01b039081169085160361015257506001546002546001600160a01b039091169061014b90849061037e565b91506101c2565b6001546001600160a01b039081169085160361018557505f546002546001600160a01b039091169061014b908490610399565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064015b60405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303815f875af1158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102369190610410565b6102745760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101b9565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303815f875af11580156102be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e29190610410565b6103205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101b9565b604080516001600160a01b03808716825283166020820152908101849052606081018390523360808201527fb39c9bc43f811e1a7ce159c5f147458fdb80266bf23c17322013316e27e086d09060a00160405180910390a150505050565b5f6103928383670de0b6b3a76400006103a9565b9392505050565b5f61039283670de0b6b3a7640000845b5f825f1904841183021582026103bd575f80fd5b5091020490565b5f602082840312156103d4575f80fd5b5035919050565b5f80604083850312156103ec575f80fd5b82356001600160a01b0381168114610402575f80fd5b946020939093013593505050565b5f60208284031215610420575f80fd5b81518015158114610392575f80fdfea264697066735822122071f33bd4e906706fab2f1d579ad88e83e4a15cb735911cd69a3275ede2ed3ced64736f6c634300081a0033","sourceMap":"523:3022:52:-:0;;;942:732;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1029:3;1013:20;;;;;:::i;:::-;508:25:56;;;496:2;481:18;1013:20:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;999:34:52;;;;;1052:40;;;;;:::i;:::-;-1:-1:-1;;;;;728:32:56;;;710:51;;698:2;683:18;1052:40:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1043:49:52;;;1112:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1102:23:52;;;1148:37;;1182:2;;1148:37;;;:::i;:::-;1110:2:56;1092:21;;;1149:1;1129:18;;;1122:29;-1:-1:-1;;;1182:3:56;1167:19;;1160:40;1238:3;1231:4;1216:20;;1209:33;;;1279:1;1258:19;;;1251:30;-1:-1:-1;;;1312:3:56;1297:19;;1290:33;1407:4;1395:17;;;-1:-1:-1;1375:18:56;;1368:45;1355:3;1340:19;1148:37:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1136:49:52;;;1207:37;;1241:2;;1207:37;;;:::i;:::-;1762:2:56;1744:21;;;1801:1;1781:18;;;1774:29;-1:-1:-1;;;1834:3:56;1819:19;;1812:40;1890:3;1883:4;1868:20;;1861:33;;;1931:1;1910:19;;;1903:30;-1:-1:-1;;;1964:3:56;1949:19;;1942:33;2059:4;2047:17;;;-1:-1:-1;2027:18:56;;2020:45;2007:3;1992:19;1207:37:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1195:49:52;;;;;;;1259:9;;:21;;;;1255:99;;;1322:9;;;1333;;;-1:-1:-1;;;;;1296:47:52;;;;;;;;;;1255:99;1397:9;;1417;;1429:12;1370:72;;;;;:::i;:::-;-1:-1:-1;;;;;2296:32:56;;;2278:51;;2365:32;;;;2360:2;2345:18;;2338:60;2429:2;2414:18;;2407:34;2266:2;2251:18;1370:72:52;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1364:78:52;;;;;1461:9;;:46;;-1:-1:-1;;;1461:46:52;;1484:4;1461:46;;;2648:51:56;1491:15:52;2715:18:56;;;2708:34;1461:14:52;;;;;2621:18:56;;1461:46:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1453:102;;;;-1:-1:-1;;;1453:102:52;;3237:2:56;1453:102:52;;;3219:21:56;3276:2;3256:18;;;3249:30;3315:34;3295:18;;;3288:62;-1:-1:-1;;;3366:18:56;;;3359:41;3417:19;;1453:102:52;;;;;;;;;1573:9;;:46;;-1:-1:-1;;;1573:46:52;;1596:4;1573:46;;;2648:51:56;1603:15:52;2715:18:56;;;2708:34;-1:-1:-1;;;;;1573:14:52;;;;;;2621:18:56;;1573:46:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1565:102;;;;-1:-1:-1;;;1565:102:52;;3649:2:56;1565:102:52;;;3631:21:56;3688:2;3668:18;;;3661:30;3727:34;3707:18;;;3700:62;-1:-1:-1;;;3778:18:56;;;3771:41;3829:19;;1565:102:52;3447:407:56;1565:102:52;942:732;;523:3022;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:343:56:-;93:6;101;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;-1:-1:-1;;215:16:56;;321:2;306:18;;;300:25;215:16;;300:25;;-1:-1:-1;14:343:56:o;2753:277::-;2820:6;2873:2;2861:9;2852:7;2848:23;2844:32;2841:52;;;2889:1;2886;2879:12;2841:52;2921:9;2915:16;2974:5;2967:13;2960:21;2953:5;2950:32;2940:60;;2996:1;2993;2986:12;2940:60;3019:5;2753:277;-1:-1:-1;;;2753:277:56:o;3447:407::-;523:3022:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b5060043610610060575f3560e01c8063014807031461006457806306ba06fa146100b5578063182148ef146100ca5780636af577411461014357806391b7f5ed1461015657806396f5e27c14610169575b5f80fd5b61006c61017c565b60408051825160020b81526020808401516001600160a01b0390811691830191909152838301511691810191909152606091820151918101919091526080015b60405180910390f35b6100c86100c3366004610aa2565b6103c8565b005b5f5460015460028054610103936001600160a01b03908116938082169362ffffff600160a01b83041693600160b81b909204900b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a0016100ac565b6100c8610151366004610b19565b61083c565b6100c8610164366004610c15565b6109a7565b6100c8610177366004610c2c565b610a18565b604080516080810182525f8082526020820181905291810182905260608101919091525f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e631bcbf7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166332c961d95f6040518263ffffffff1660e01b815260040161023d9190610c9b565b602060405180830381865afa158015610258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027c9190610caf565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa1580156102c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e79190610cc6565b50509150915060405180608001604052808260020b8152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bf9190610caf565b90529392505050565b5f831315610589576040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af115801561043a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045e9190610d22565b6104af5760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637930206661696c6564000000000000000060448201526064015b60405180910390fd5b6040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af1158015610519573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053d9190610d22565b6105895760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637931206661696c6564000000000000000060448201526064016104a6565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106399190610d22565b6106855760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c656400000060448201526064016104a6565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610711573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107359190610d22565b6107815760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c656400000060448201526064016104a6565b60408051608081018252600284810b825283900b60208201528082018590525f606082018190529151632d35e7ed60e11b815290916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691635a6bcfda916107f5918590600401610d48565b6020604051808303815f875af1158015610811573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108359190610caf565b5050505050565b6040805160a0810182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081168083527f000000000000000000000000000000000000000000000000000000000000000082166020840181905262ffffff8a811685870181905260028b810b60608801528a861660809097018790525f80546001600160a01b03199081169096178155600180546001600160b81b031916909517600160a01b9093029290921762ffffff60b81b1916600160b81b938d16939093029290921790925580549092169093179055915163695c5bf560e01b81527f00000000000000000000000000000000000000000000000000000000000000009092169163695c5bf59161095f9186908690600401610d99565b6020604051808303815f875af115801561097b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099f9190610dee565b505050505050565b6040516391b7f5ed60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391b7f5ed906024015f604051808303815f87803b158015610a06575f80fd5b505af1158015610835573d5f803e3d5ffd5b60405163d004f0f760e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d004f0f7906044015f604051808303815f87803b158015610a7f575f80fd5b505af115801561099f573d5f803e3d5ffd5b8060020b8114610a9f575f80fd5b50565b5f805f60608486031215610ab4575f80fd5b833592506020840135610ac681610a91565b91506040840135610ad681610a91565b809150509250925092565b62ffffff81168114610a9f575f80fd5b6001600160a01b0381168114610a9f575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f805f60a08688031215610b2d575f80fd5b8535610b3881610ae1565b94506020860135610b4881610a91565b93506040860135610b5881610af1565b92506060860135610b6881610af1565b9150608086013567ffffffffffffffff811115610b83575f80fd5b8601601f81018813610b93575f80fd5b803567ffffffffffffffff811115610bad57610bad610b05565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610bdc57610bdc610b05565b6040528181528282016020018a1015610bf3575f80fd5b816020840160208301375f602083830101528093505050509295509295909350565b5f60208284031215610c25575f80fd5b5035919050565b5f8060408385031215610c3d575f80fd5b8235610c4881610af1565b946020939093013593505050565b80546001600160a01b0390811683526001820154808216602085015260a081901c62ffffff16604085015260b81c600290810b60608501529091015416608090910152565b60a08101610ca98284610c56565b92915050565b5f60208284031215610cbf575f80fd5b5051919050565b5f805f8060808587031215610cd9575f80fd5b8451610ce481610af1565b6020860151909450610cf581610a91565b6040860151909350610d0681610ae1565b6060860151909250610d1781610ae1565b939692955090935050565b5f60208284031215610d32575f80fd5b81518015158114610d41575f80fd5b9392505050565b610d528184610c56565b8151600290810b60a08301526020830151900b60c0820152604082015160e082015260609091015161010082015261014061012082018190525f9082015261016001919050565b610da38185610c56565b60018060a01b03831660a082015260e060c08201525f82518060e0840152806020850161010085015e5f6101008285010152610100601f19601f830116840101915050949350505050565b5f60208284031215610dfe575f80fd5b8151610d4181610a9156fea2646970667358221220e4c2894837cab253352bdc039e1065b5c40ef0696f2789063be3ca2cb0d5033164736f6c634300081a0033","sourceMap":"523:3022:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:356;;;:::i;:::-;;;;243:13:56;;240:1;229:28;211:47;;318:4;306:17;;;300:24;-1:-1:-1;;;;;296:50:56;;;274:20;;;267:80;;;;395:17;;;389:24;385:50;363:20;;;356:80;;;;492:4;480:17;;;474:24;452:20;;;445:54;;;;198:3;183:19;1680:356:52;;;;;;;;2689:854;;;;;;:::i;:::-;;:::i;:::-;;778:22;;;;;;;;;;-1:-1:-1;;;;;778:22:52;;;;;;;;;-1:-1:-1;;;778:22:52;;;;-1:-1:-1;;;778:22:52;;;;;;;;;;;;;-1:-1:-1;;;;;1431:32:56;;;1413:51;;1500:32;;;1495:2;1480:18;;1473:60;1581:8;1569:21;;;1549:18;;;1542:49;;;;1638:1;1627:21;1622:2;1607:18;;1600:49;1686:32;;;;1680:3;1665:19;;1658:61;1400:3;1385:19;778:22:52;1085:640:56;2235:448:52;;;;;;:::i;:::-;;:::i;2042:76::-;;;;;;:::i;:::-;;:::i;2124:105::-;;;;;;:::i;:::-;;:::i;1680:356::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1754:20:52;1776:10;1792:7;-1:-1:-1;;;;;1792:16:52;;1809:11;1822:7;-1:-1:-1;;;;;1822:12:52;;1835:7;1822:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1792:52;;-1:-1:-1;;;;;;1792:52:52;;;;;;;-1:-1:-1;;;;;5551:32:56;;;1792:52:52;;;5533:51:56;5600:18;;;5593:34;5506:18;;1792:52:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:91;;;;;;1862:167;;;;;;;;1896:4;1862:167;;;;;;1928:12;-1:-1:-1;;;;;1862:167:52;;;;;1971:11;-1:-1:-1;;;;;1862:167:52;;;;;2007:3;-1:-1:-1;;;;;2007:9:52;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1862:167;;1855:174;1680:356;-1:-1:-1;;;1680:356:52:o;2689:854::-;2806:1;2789:14;:18;2785:245;;;2831:54;;-1:-1:-1;;;2831:54:52;;2854:4;2831:54;;;5533:51:56;5600:18;;;5593:34;;;2831:9:52;-1:-1:-1;;;;;2831:14:52;;;;5506:18:56;;2831:54:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2823:91;;;;-1:-1:-1;;;2823:91:52;;7249:2:56;2823:91:52;;;7231:21:56;7288:2;7268:18;;;7261:30;7327:26;7307:18;;;7300:54;7371:18;;2823:91:52;;;;;;;;;2936:54;;-1:-1:-1;;;2936:54:52;;2959:4;2936:54;;;5533:51:56;5600:18;;;5593:34;;;2936:9:52;-1:-1:-1;;;;;2936:14:52;;;;5506:18:56;;2936:54:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2928:91;;;;-1:-1:-1;;;2928:91:52;;7602:2:56;2928:91:52;;;7584:21:56;7641:2;7621:18;;;7614:30;7680:26;7660:18;;;7653:54;7724:18;;2928:91:52;7400:348:56;2928:91:52;3048:53;;-1:-1:-1;;;3048:53:52;;-1:-1:-1;;;;;3074:6:52;5551:32:56;;3048:53:52;;;5533:51:56;-1:-1:-1;;5600:18:56;;;5593:34;3048:9:52;:17;;;;5506:18:56;;3048:53:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3040:95;;;;-1:-1:-1;;;3040:95:52;;7955:2:56;3040:95:52;;;7937:21:56;7994:2;7974:18;;;7967:30;8033:31;8013:18;;;8006:59;8082:18;;3040:95:52;7753:353:56;3040:95:52;3153:53;;-1:-1:-1;;;3153:53:52;;-1:-1:-1;;;;;3179:6:52;5551:32:56;;3153:53:52;;;5533:51:56;-1:-1:-1;;5600:18:56;;;5593:34;3153:9:52;:17;;;;5506:18:56;;3153:53:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3145:95;;;;-1:-1:-1;;;3145:95:52;;8313:2:56;3145:95:52;;;8295:21:56;8352:2;8332:18;;;8325:30;8391:31;8371:18;;;8364:59;8440:18;;3145:95:52;8111:353:56;3145:95:52;3302:180;;;;;;;;;;;;;;;;;;;;;;;;;;;3251:48;3302:180;;;;;;3493:43;;-1:-1:-1;;;3493:43:52;;3302:180;;-1:-1:-1;;;;;3493:6:52;:22;;;;:43;;3302:180;;3493:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2775:768;2689:854;;;:::o;2235:448::-;2385:225;;;;;;;;2440:9;-1:-1:-1;;;;;2385:225:52;;;;;;2498:9;2385:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2375:235:52;;-1:-1:-1;;;;;;2375:235:52;;;;;;;;-1:-1:-1;2375:235:52;;-1:-1:-1;;;;;;2375:235:52;;;;-1:-1:-1;;;2375:235:52;;;;;;;-1:-1:-1;;;;2375:235:52;-1:-1:-1;;;2375:235:52;;;;;;;;;;;;;;;;;;;;;;;;2621:55;;-1:-1:-1;;;2621:55:52;;:11;:22;;;;;;:55;;2653:12;;2667:8;;2621:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2235:448;;;;;:::o;2042:76::-;2092:19;;-1:-1:-1;;;2092:19:52;;;;;10576:25:56;;;2092:3:52;-1:-1:-1;;;;;2092:12:52;;;;10549:18:56;;2092:19:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2124:105;2195:27;;-1:-1:-1;;;2195:27:52;;-1:-1:-1;;;;;5551:32:56;;;2195:27:52;;;5533:51:56;5600:18;;;5593:34;;;2195:3:52;:8;;;;5506:18:56;;2195:27:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;510:118:56;597:5;594:1;583:20;576:5;573:31;563:59;;618:1;615;608:12;563:59;510:118;:::o;633:447::-;705:6;713;721;774:2;762:9;753:7;749:23;745:32;742:52;;;790:1;787;780:12;742:52;826:9;813:23;803:33;;886:2;875:9;871:18;858:32;899:29;922:5;899:29;:::i;:::-;947:5;-1:-1:-1;1004:2:56;989:18;;976:32;1017:31;976:32;1017:31;:::i;:::-;1067:7;1057:17;;;633:447;;;;;:::o;1730:119::-;1815:8;1808:5;1804:20;1797:5;1794:31;1784:59;;1839:1;1836;1829:12;1854:139;-1:-1:-1;;;;;1937:31:56;;1927:42;;1917:70;;1983:1;1980;1973:12;1998:127;2059:10;2054:3;2050:20;2047:1;2040:31;2090:4;2087:1;2080:15;2114:4;2111:1;2104:15;2130:1529;2246:6;2254;2262;2270;2278;2331:3;2319:9;2310:7;2306:23;2302:33;2299:53;;;2348:1;2345;2338:12;2299:53;2387:9;2374:23;2406:30;2430:5;2406:30;:::i;:::-;2455:5;-1:-1:-1;2512:2:56;2497:18;;2484:32;2525:31;2484:32;2525:31;:::i;:::-;2575:7;-1:-1:-1;2634:2:56;2619:18;;2606:32;2647:41;2606:32;2647:41;:::i;:::-;2707:7;-1:-1:-1;2766:2:56;2751:18;;2738:32;2779:41;2738:32;2779:41;:::i;:::-;2839:7;-1:-1:-1;2897:3:56;2882:19;;2869:33;2925:18;2914:30;;2911:50;;;2957:1;2954;2947:12;2911:50;2980:22;;3033:4;3025:13;;3021:27;-1:-1:-1;3011:55:56;;3062:1;3059;3052:12;3011:55;3102:2;3089:16;3128:18;3120:6;3117:30;3114:56;;;3150:18;;:::i;:::-;3199:2;3193:9;3291:2;3253:17;;-1:-1:-1;;3249:31:56;;;3282:2;3245:40;3241:54;3229:67;;3326:18;3311:34;;3347:22;;;3308:62;3305:88;;;3373:18;;:::i;:::-;3409:2;3402:22;3433;;;3474:15;;;3491:2;3470:24;3467:37;-1:-1:-1;3464:57:56;;;3517:1;3514;3507:12;3464:57;3573:6;3568:2;3564;3560:11;3555:2;3547:6;3543:15;3530:50;3626:1;3621:2;3612:6;3604;3600:19;3596:28;3589:39;3647:6;3637:16;;;;;2130:1529;;;;;;;;:::o;3664:226::-;3723:6;3776:2;3764:9;3755:7;3751:23;3747:32;3744:52;;;3792:1;3789;3782:12;3744:52;-1:-1:-1;3837:23:56;;3664:226;-1:-1:-1;3664:226:56:o;3895:375::-;3963:6;3971;4024:2;4012:9;4003:7;3999:23;3995:32;3992:52;;;4040:1;4037;4030:12;3992:52;4079:9;4066:23;4098:39;4131:5;4098:39;:::i;:::-;4156:5;4234:2;4219:18;;;;4206:32;;-1:-1:-1;;;3895:375:56:o;4275:555::-;4360:12;;-1:-1:-1;;;;;4356:38:56;;;4344:51;;4391:1;4427:16;;4421:23;4476:35;;;4469:4;4460:14;;4453:59;4382:3;4548:19;;;4569:8;4544:34;4537:4;4528:14;;4521:58;4629:3;4625:19;4622:1;4611:34;;;4604:4;4595:14;;4588:58;4671:13;;;4665:20;4730:28;4783:4;4774:14;;;4767:57;4275:555::o;4835:254::-;5018:3;5003:19;;5031:52;5007:9;5065:6;5031:52;:::i;:::-;4835:254;;;;:::o;5094:212::-;5192:6;5245:2;5233:9;5224:7;5220:23;5216:32;5213:52;;;5261:1;5258;5251:12;5213:52;-1:-1:-1;5284:16:56;;5094:212;-1:-1:-1;5094:212:56:o;5638:654::-;5731:6;5739;5747;5755;5808:3;5796:9;5787:7;5783:23;5779:33;5776:53;;;5825:1;5822;5815:12;5776:53;5857:9;5851:16;5876:39;5909:5;5876:39;:::i;:::-;5984:2;5969:18;;5963:25;5934:5;;-1:-1:-1;5997:31:56;5963:25;5997:31;:::i;:::-;6099:2;6084:18;;6078:25;6047:7;;-1:-1:-1;6112:32:56;6078:25;6112:32;:::i;:::-;6215:2;6200:18;;6194:25;6163:7;;-1:-1:-1;6228:32:56;6194:25;6228:32;:::i;:::-;5638:654;;;;-1:-1:-1;5638:654:56;;-1:-1:-1;;5638:654:56:o;6765:277::-;6832:6;6885:2;6873:9;6864:7;6860:23;6856:32;6853:52;;;6901:1;6898;6891:12;6853:52;6933:9;6927:16;6986:5;6979:13;6972:21;6965:5;6962:32;6952:60;;7008:1;7005;6998:12;6952:60;7031:5;6765:277;-1:-1:-1;;;6765:277:56:o;8469:807::-;8835:52;8877:9;8869:6;8835:52;:::i;:::-;8938:13;;8935:1;8924:28;;;8918:3;8903:19;;8896:57;9022:4;9010:17;;9004:24;8990:39;;8984:3;8969:19;;8962:68;9085:4;9073:17;;9067:24;9061:3;9046:19;;9039:53;9147:4;9135:17;;;9129:24;9123:3;9108:19;;9101:53;9191:3;9185;9170:19;;9163:32;;;-1:-1:-1;9211:19:56;;;9204:30;9266:3;9251:19;;8469:807;-1:-1:-1;8469:807:56:o;9504:669::-;9738:52;9780:9;9772:6;9738:52;:::i;:::-;9856:1;9852;9847:3;9843:11;9839:19;9831:6;9827:32;9821:3;9810:9;9806:19;9799:61;9897:3;9891;9880:9;9876:19;9869:32;9719:4;9930:6;9924:13;9974:6;9968:3;9957:9;9953:19;9946:35;10036:6;10029:4;10021:6;10017:17;10011:3;10000:9;9996:19;9990:53;10093:1;10087:3;10078:6;10067:9;10063:22;10059:32;10052:43;10163:3;10156:2;10152:7;10147:2;10139:6;10135:15;10131:29;10120:9;10116:45;10112:55;10104:63;;;9504:669;;;;;;:::o;10178:247::-;10246:6;10299:2;10287:9;10278:7;10274:23;10270:32;10267:52;;;10315:1;10312;10305:12;10267:52;10347:9;10341:16;10366:29;10389:5;10366:29;:::i","linkReferences":{},"immutableReferences":{"11123":[{"start":466,"length":32},{"start":786,"length":32},{"start":2342,"length":32}],"11126":[{"start":1440,"length":32},{"start":1692,"length":32},{"start":1984,"length":32}],"11129":[{"start":833,"length":32},{"start":2493,"length":32},{"start":2622,"length":32}],"11132":[{"start":419,"length":32},{"start":499,"length":32}],"11135":[{"start":1004,"length":32},{"start":1487,"length":32},{"start":2120,"length":32}],"11138":[{"start":1227,"length":32},{"start":1739,"length":32},{"start":2167,"length":32}]}},"methodIdentifiers":{"addLiquidity(int256,int24,int24)":"06ba06fa","constructSignal()":"01480703","poolKey()":"182148ef","setPool(uint24,int24,address,uint160,bytes)":"6af57741","setPrice(uint256)":"91b7f5ed","swapOnLex(address,uint256)":"96f5e27c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"constructSignal\",\"outputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"currentTick\",\"type\":\"int24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lexPrice\",\"type\":\"uint256\"}],\"internalType\":\"struct ArenaController.Signal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolKey\",\"outputs\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"poolFee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"setPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swapOnLex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ArenaController.sol\":\"ArenaController\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/v4-core/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v4-core/=lib/v4-core/src/\"]},\"sources\":{\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/v4-core/src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"lib/v4-core/src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"lib/v4-core/src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"lib/v4-core/src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"lib/v4-core/src/NoDelegateCall.sol\":{\"keccak256\":\"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50\",\"dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB\"]},\"lib/v4-core/src/PoolManager.sol\":{\"keccak256\":\"0xca5369a1683d06842268987fb6f46b05e6364a46cc856f72bb5c603826f47eac\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5ae5893222abc5dc5fa57bc05af40b60a96a1537bd3c1f3845257d6a3c2b5821\",\"dweb:/ipfs/QmZxQH8M3NVunurxDNJ5EZm2fy6Ws8CHJSezCQaoqzMPoq\"]},\"lib/v4-core/src/ProtocolFees.sol\":{\"keccak256\":\"0x2e7533e46dcab5508ed417ab33c2d0ca8c52a6b5f445dd90daf328173ada4449\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8403de6f2c89a665a3ff3566a917179a5bfb3e0ac9514f0438d82270a7f98c91\",\"dweb:/ipfs/QmTq9cjKTaXeCoSfCywpFwo7sNvuXM4wSMnebwX3hBuiRG\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa\",\"dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0x4e07d93993f6ba033c8b5e5b0a3473659aeffe9af0cf8316a879a55ebd696d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50add8378d59b89b1dc106ea248641caaedd3ac45d62754babe55c526b87c9ad\",\"dweb:/ipfs/QmQUrvy8ZDDdTRTr17msqynVECP3rQFBVBUmFcpFvjAmQx\"]},\"lib/v4-core/src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6\",\"dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f\",\"dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw\"]},\"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410\",\"dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09\",\"dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46\"]},\"lib/v4-core/src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c\",\"dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR\"]},\"lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7\",\"dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x70a444afeb27564398dbdf7553651ee2cae14c03c923b6f8972040c8f460ebe3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d7b05390bac9b29188725c8a84edac43cd05571da27b33a0b1e36d9500ecaa6\",\"dweb:/ipfs/QmdYDLwTfFgePDEwFMUqGTj8SNNXXq4JQJnrgomJgcZFvP\"]},\"lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d\",\"dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT\"]},\"lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196\",\"dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7\"]},\"lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-core/src/libraries/Hooks.sol\":{\"keccak256\":\"0xfa031f4efc096e9c93bb094509321e1c08b5eb271f46554f858e74803c43ae66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cc33d5eb869ecacfb70d024f7b925d191d98553dbb921bd8188f97d51c9e111\",\"dweb:/ipfs/Qme5VCnaS5mXyqaWV5uiW5xcmTb56uCKBPFrLZp2dq41dQ\"]},\"lib/v4-core/src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896\",\"dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo\"]},\"lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc\",\"dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa\"]},\"lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-core/src/libraries/NonZeroDeltaCount.sol\":{\"keccak256\":\"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2\",\"dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC\"]},\"lib/v4-core/src/libraries/ParseBytes.sol\":{\"keccak256\":\"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8\",\"dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf\"]},\"lib/v4-core/src/libraries/Pool.sol\":{\"keccak256\":\"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8\",\"dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H\"]},\"lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce\",\"dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu\"]},\"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a\",\"dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4\",\"dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM\"]},\"lib/v4-core/src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31\",\"dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt\"]},\"lib/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x67ead4d1ffe7e4fc381cef059c8d4941c7b4d581ef043fc8d3278d0829da414e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d12edd46a3ff2e19ea9b650507ea22e7714daa335a6b40f4d2f6d29c16431e4\",\"dweb:/ipfs/QmZn6dzXZgR3rGohZAvKzqYMgm5n9qTrpi1VhXizYhiquH\"]},\"lib/v4-core/src/libraries/SwapMath.sol\":{\"keccak256\":\"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75\",\"dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3\"]},\"lib/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79\",\"dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc\"]},\"lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408\",\"dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME\"]},\"lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095\",\"dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd\"]},\"lib/v4-core/src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3\",\"dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7\",\"dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d\"]},\"lib/v4-core/src/test/PoolTestBase.sol\":{\"keccak256\":\"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072\",\"dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0xc77e2d4d380be1887078b1d21e2381fe4e9138dce8c7efbf9050aa7d65d75d4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b85a1edba4be624be660d69badac1e3641d83190893839fa30260eef316d00c8\",\"dweb:/ipfs/QmPaEaeNkhy5F4X9dwzyDzVU3H67P5ZhpeijDS7wscaSd9\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f\",\"dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf\",\"dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY\"]},\"lib/v4-core/src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]},\"lib/v4-core/test/utils/CurrencySettler.sol\":{\"keccak256\":\"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96\",\"dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24\"]},\"src/ArenaController.sol\":{\"keccak256\":\"0x9de4de214d154e358209146d92e4cace16c8cd084f8ea0fe5324e4007e4b2ed8\",\"urls\":[\"bzz-raw://0a32636c40ec35d109294f775f7fd0a8d642360b0cac46334f6539707dd04ba9\",\"dweb:/ipfs/QmfPPwjea6goJ2juRxrJRLuWSpcr2uzxYeACQbba4wCNHn\"]},\"src/ArenaToken.sol\":{\"keccak256\":\"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a\",\"urls\":[\"bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105\",\"dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF\"]},\"src/Fetcher.sol\":{\"keccak256\":\"0x1895e5c0688650ca60371f208b62d9f64beea29bd7515b2600a1c8d5c73805df\",\"urls\":[\"bzz-raw://f9c904c9d032167f6d8fec1392c9a023f339a4aee9f75f06df6347a495af9d38\",\"dweb:/ipfs/QmYSaPzRawAnh2qD3JY5uvWypEueo5hSTQVyVFfX96msfb\"]},\"src/LiquidExchange.sol\":{\"keccak256\":\"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5\",\"dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"initialPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"constructSignal","outputs":[{"internalType":"struct ArenaController.Signal","name":"","type":"tuple","components":[{"internalType":"int24","name":"currentTick","type":"int24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"lexPrice","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolKey","outputs":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"inputs":[{"internalType":"uint24","name":"poolFee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setPool"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPrice"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapOnLex"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/v4-core/lib/openzeppelin-contracts/contracts/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","solmate/=lib/solmate/src/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ArenaController.sol":"ArenaController"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"lib/v4-core/src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"lib/v4-core/src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"lib/v4-core/src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"lib/v4-core/src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"lib/v4-core/src/NoDelegateCall.sol":{"keccak256":"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202","urls":["bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50","dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB"],"license":"BUSL-1.1"},"lib/v4-core/src/PoolManager.sol":{"keccak256":"0xca5369a1683d06842268987fb6f46b05e6364a46cc856f72bb5c603826f47eac","urls":["bzz-raw://5ae5893222abc5dc5fa57bc05af40b60a96a1537bd3c1f3845257d6a3c2b5821","dweb:/ipfs/QmZxQH8M3NVunurxDNJ5EZm2fy6Ws8CHJSezCQaoqzMPoq"],"license":"BUSL-1.1"},"lib/v4-core/src/ProtocolFees.sol":{"keccak256":"0x2e7533e46dcab5508ed417ab33c2d0ca8c52a6b5f445dd90daf328173ada4449","urls":["bzz-raw://8403de6f2c89a665a3ff3566a917179a5bfb3e0ac9514f0438d82270a7f98c91","dweb:/ipfs/QmTq9cjKTaXeCoSfCywpFwo7sNvuXM4wSMnebwX3hBuiRG"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0","urls":["bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa","dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8"],"license":"MIT"},"lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0x4e07d93993f6ba033c8b5e5b0a3473659aeffe9af0cf8316a879a55ebd696d7a","urls":["bzz-raw://50add8378d59b89b1dc106ea248641caaedd3ac45d62754babe55c526b87c9ad","dweb:/ipfs/QmQUrvy8ZDDdTRTr17msqynVECP3rQFBVBUmFcpFvjAmQx"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFeeController.sol":{"keccak256":"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c","urls":["bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6","dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297","urls":["bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f","dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw"],"license":"MIT"},"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7","urls":["bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410","dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b","urls":["bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09","dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/CurrencyDelta.sol":{"keccak256":"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e","urls":["bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c","dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6","urls":["bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7","dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x70a444afeb27564398dbdf7553651ee2cae14c03c923b6f8972040c8f460ebe3","urls":["bzz-raw://9d7b05390bac9b29188725c8a84edac43cd05571da27b33a0b1e36d9500ecaa6","dweb:/ipfs/QmdYDLwTfFgePDEwFMUqGTj8SNNXXq4JQJnrgomJgcZFvP"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835","urls":["bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d","dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417","urls":["bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196","dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-core/src/libraries/Hooks.sol":{"keccak256":"0xfa031f4efc096e9c93bb094509321e1c08b5eb271f46554f858e74803c43ae66","urls":["bzz-raw://7cc33d5eb869ecacfb70d024f7b925d191d98553dbb921bd8188f97d51c9e111","dweb:/ipfs/Qme5VCnaS5mXyqaWV5uiW5xcmTb56uCKBPFrLZp2dq41dQ"],"license":"MIT"},"lib/v4-core/src/libraries/LPFeeLibrary.sol":{"keccak256":"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece","urls":["bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896","dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf","urls":["bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc","dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/NonZeroDeltaCount.sol":{"keccak256":"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586","urls":["bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2","dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ParseBytes.sol":{"keccak256":"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579","urls":["bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8","dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/Pool.sol":{"keccak256":"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c","urls":["bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8","dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/Position.sol":{"keccak256":"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80","urls":["bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce","dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902","urls":["bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a","dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60","urls":["bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4","dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/SqrtPriceMath.sol":{"keccak256":"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db","urls":["bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31","dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x67ead4d1ffe7e4fc381cef059c8d4941c7b4d581ef043fc8d3278d0829da414e","urls":["bzz-raw://0d12edd46a3ff2e19ea9b650507ea22e7714daa335a6b40f4d2f6d29c16431e4","dweb:/ipfs/QmZn6dzXZgR3rGohZAvKzqYMgm5n9qTrpi1VhXizYhiquH"],"license":"MIT"},"lib/v4-core/src/libraries/SwapMath.sol":{"keccak256":"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e","urls":["bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75","dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6","urls":["bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79","dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc"],"license":"MIT"},"lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd","urls":["bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408","dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86","urls":["bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095","dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd"],"license":"MIT"},"lib/v4-core/src/libraries/UnsafeMath.sol":{"keccak256":"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84","urls":["bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3","dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade","urls":["bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7","dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTestBase.sol":{"keccak256":"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c","urls":["bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072","dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5"],"license":"UNLICENSED"},"lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-core/src/types/Currency.sol":{"keccak256":"0xc77e2d4d380be1887078b1d21e2381fe4e9138dce8c7efbf9050aa7d65d75d4c","urls":["bzz-raw://b85a1edba4be624be660d69badac1e3641d83190893839fa30260eef316d00c8","dweb:/ipfs/QmPaEaeNkhy5F4X9dwzyDzVU3H67P5ZhpeijDS7wscaSd9"],"license":"MIT"},"lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8","urls":["bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f","dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB"],"license":"MIT"},"lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162","urls":["bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf","dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY"],"license":"MIT"},"lib/v4-core/src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"},"lib/v4-core/test/utils/CurrencySettler.sol":{"keccak256":"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e","urls":["bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96","dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24"],"license":"MIT"},"src/ArenaController.sol":{"keccak256":"0x9de4de214d154e358209146d92e4cace16c8cd084f8ea0fe5324e4007e4b2ed8","urls":["bzz-raw://0a32636c40ec35d109294f775f7fd0a8d642360b0cac46334f6539707dd04ba9","dweb:/ipfs/QmfPPwjea6goJ2juRxrJRLuWSpcr2uzxYeACQbba4wCNHn"],"license":null},"src/ArenaToken.sol":{"keccak256":"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a","urls":["bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105","dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF"],"license":null},"src/Fetcher.sol":{"keccak256":"0x1895e5c0688650ca60371f208b62d9f64beea29bd7515b2600a1c8d5c73805df","urls":["bzz-raw://f9c904c9d032167f6d8fec1392c9a023f339a4aee9f75f06df6347a495af9d38","dweb:/ipfs/QmYSaPzRawAnh2qD3JY5uvWypEueo5hSTQVyVFfX96msfb"],"license":null},"src/LiquidExchange.sol":{"keccak256":"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22","urls":["bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5","dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17"],"license":"MIT"}},"version":1},"id":52} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index be94f22..672e9a5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -291,4 +291,4 @@ mod tests { arena.run(Config::new(Uint::from(5000), 5)).await.unwrap(); } -} +} \ No newline at end of file