{"abi":[{"type":"constructor","inputs":[{"name":"_poolManager","type":"address","internalType":"contract IPoolManager"},{"name":"_permit2","type":"address","internalType":"contract IAllowanceTransfer"},{"name":"_unsubscribeGasLimit","type":"uint256","internalType":"uint256"},{"name":"_tokenDescriptor","type":"address","internalType":"contract IPositionDescriptor"},{"name":"_weth9","type":"address","internalType":"contract IWETH9"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWETH9"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPoolAndPositionInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"poolKey","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"info","type":"uint256","internalType":"PositionInfo"}],"stateMutability":"view"},{"type":"function","name":"getPositionLiquidity","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"liquidity","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"initializePool","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[{"name":"","type":"int24","internalType":"int24"}],"stateMutability":"payable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"modifyLiquidities","inputs":[{"name":"unlockData","type":"bytes","internalType":"bytes"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"modifyLiquiditiesWithoutUnlock","inputs":[{"name":"actions","type":"bytes","internalType":"bytes"},{"name":"params","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"msgSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nextTokenId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"word","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"bitmap","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"permitSingle","type":"tuple","internalType":"struct IAllowanceTransfer.PermitSingle","components":[{"name":"details","type":"tuple","internalType":"struct IAllowanceTransfer.PermitDetails","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint160","internalType":"uint160"},{"name":"expiration","type":"uint48","internalType":"uint48"},{"name":"nonce","type":"uint48","internalType":"uint48"}]},{"name":"spender","type":"address","internalType":"address"},{"name":"sigDeadline","type":"uint256","internalType":"uint256"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"err","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"permit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAllowanceTransfer"}],"stateMutability":"view"},{"type":"function","name":"permitBatch","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"_permitBatch","type":"tuple","internalType":"struct IAllowanceTransfer.PermitBatch","components":[{"name":"details","type":"tuple[]","internalType":"struct IAllowanceTransfer.PermitDetails[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint160","internalType":"uint160"},{"name":"expiration","type":"uint48","internalType":"uint48"},{"name":"nonce","type":"uint48","internalType":"uint48"}]},{"name":"spender","type":"address","internalType":"address"},{"name":"sigDeadline","type":"uint256","internalType":"uint256"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"err","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"permitForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"poolKeys","inputs":[{"name":"poolId","type":"bytes25","internalType":"bytes25"}],"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":"poolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"function","name":"positionInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"info","type":"uint256","internalType":"PositionInfo"}],"stateMutability":"view"},{"type":"function","name":"revokeNonce","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"subscribe","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"newSubscriber","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"subscriber","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"subscriber","type":"address","internalType":"contract ISubscriber"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenDescriptor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPositionDescriptor"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlockCallback","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"unsubscribe","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"unsubscribeGasLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Subscription","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subscriber","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unsubscription","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subscriber","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadySubscribed","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"subscriber","type":"address","internalType":"address"}]},{"type":"error","name":"BurnNotificationReverted","inputs":[{"name":"subscriber","type":"address","internalType":"address"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractLocked","inputs":[]},{"type":"error","name":"DeadlinePassed","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DeltaNotNegative","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"DeltaNotPositive","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"GasLimitTooLow","inputs":[]},{"type":"error","name":"InputLengthMismatch","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"InvalidContractSignature","inputs":[]},{"type":"error","name":"InvalidEthSender","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"InvalidSignatureLength","inputs":[]},{"type":"error","name":"InvalidSigner","inputs":[]},{"type":"error","name":"MaximumAmountExceeded","inputs":[{"name":"maximumAmount","type":"uint128","internalType":"uint128"},{"name":"amountRequested","type":"uint128","internalType":"uint128"}]},{"type":"error","name":"MinimumAmountInsufficient","inputs":[{"name":"minimumAmount","type":"uint128","internalType":"uint128"},{"name":"amountReceived","type":"uint128","internalType":"uint128"}]},{"type":"error","name":"ModifyLiquidityNotificationReverted","inputs":[{"name":"subscriber","type":"address","internalType":"address"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"NoCodeSubscriber","inputs":[]},{"type":"error","name":"NoSelfPermit","inputs":[]},{"type":"error","name":"NonceAlreadyUsed","inputs":[]},{"type":"error","name":"NotApproved","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotPoolManager","inputs":[]},{"type":"error","name":"NotSubscribed","inputs":[]},{"type":"error","name":"PoolManagerMustBeLocked","inputs":[]},{"type":"error","name":"SignatureDeadlineExpired","inputs":[]},{"type":"error","name":"SubscriptionReverted","inputs":[{"name":"subscriber","type":"address","internalType":"address"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"UnsupportedAction","inputs":[{"name":"action","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x61018080604052346105365760a0816162cc8038038091610020828561053a565b8339810103126105365780516001600160a01b03811681036105365760208201516001600160a01b03811681036105365760408301516060840151936001600160a01b03851685036105365760800151926001600160a01b03841684036105365760405161008f60408261053a565b6018815260208101907f556e697377617020763420506f736974696f6e73204e4654000000000000000082526040516100c960408261053a565b600b81526a554e492d56342d504f534d60a81b602082015281516001600160401b03811161044a575f54600181811c9116801561052c575b602082101461042c57601f81116104ca575b50806020601f8211600114610469575f9161045e575b508160011b915f199060031b1c1916175f555b8051906001600160401b03821161044a5760015490600182811c92168015610440575b602083101461042c5781601f8493116103be575b50602090601f8311600114610358575f9261034d575b50508160011b915f199060031b1c1916176001555b5190208060c0524660a05260405160208101917f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86683526040820152466060820152306080820152608081526101f460a08261053a565b51902060805260e052610100526101205261014052600160085561016052604051615d6e908161055e8239608051816124d5015260a051816124af015260c05181612524015260e051818181610af601528181610eb501528181611174015281816118c001528181611c3c01528181611cd1015281816120a1015281816121980152818161295801528181612a2c01528181612f1b01528181613d4601528181613e3901528181613edc01528181613ff30152818161431b0152818161457401528181614ae901528181614c6601528181614de401528181614ec901528181614f59015261576f01526101005181818161144001526131fb01526101205181818161039c01528181610a0e01528181610dc90152614efa015261014051818181611482015281816129ca01528181613a4201528181613a9e01528181613bc20152613c4b0152610160518181816116350152611fab0152f35b015190505f80610189565b60015f9081528281209350601f198516905b8181106103a6575090846001959493921061038e575b505050811b0160015561019e565b01515f1960f88460031b161c191690555f8080610380565b9293602060018192878601518155019501930161036a565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610422575b90601f859493920160051c01905b8181106104145750610173565b5f8155849350600101610407565b90915081906103f9565b634e487b7160e01b5f52602260045260245ffd5b91607f169161015f565b634e487b7160e01b5f52604160045260245ffd5b90508301515f610129565b5f8080528181209250601f198416905b8181106104b25750908360019493921061049a575b5050811b015f5561013c565b8501515f1960f88460031b161c191690555f8061048e565b9192602060018192868a015181550194019201610479565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610522575b601f0160051c01905b8181106105175750610113565b5f815560010161050a565b9091508190610501565b90607f1690610101565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761044a5760405256fe60806040526004361015610022575b3615610018575f80fd5b6100206129c0565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e576122ae565b612248565b6120c5565b612082565b61203d565b611f56565b611c7c565b611c28565b611b2b565b611a7b565b6119c6565b611884565b61185a565b6117be565b61174f565b611732565b611688565b611659565b611616565b6115cc565b6114d7565b611463565b611429565b611161565b611088565b611057565b610e72565b610d58565b610ae2565b610a65565b610a32565b6109ef565b6108e0565b610839565b610806565b6106ef565b61063e565b61056c565b61033c565b6001600160a01b038116036102a657565b5f80fd5b35906102b582610295565b565b9181601f840112156102a65782359167ffffffffffffffff83116102a657602083818601950101116102a657565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103399281815201906102e5565b90565b60606003193601126102a65760043561035481610295565b6024359067ffffffffffffffff82116102a6578136039160606003198401126102a65760443567ffffffffffffffff81116102a6576103979036906004016102b7565b6060947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290843b156102a6576001600160a01b03604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102a65781016024600482013591019467ffffffffffffffff82116102a6578160071b360386136102a65760606064890152819052869460e48601949392915f5b81811061051a575050506104cb5f9694869488946044856104b36104a360248b99016102aa565b6001600160a01b03166084890152565b013560a48601526003198584030160448601526123c0565b03925af19081610500575b506104f757506104f36104e7612466565b60405191829182610328565b0390f35b6104f3906104e7565b8061050e5f610514936106ae565b80610656565b5f6104d6565b91965091929394608080826105316001948b612361565b01970191019188969594939261047c565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102a657565b346102a65760206003193601126102a65760207fffffffff000000000000000000000000000000000000000000000000000000006004356105ac81610542565b167f01ffc9a7000000000000000000000000000000000000000000000000000000008114908115610614575b81156105ea575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f6105df565b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491506105d8565b60206003193601126102a65761002060043533612a54565b5f9103126102a657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176106a957604052565b610660565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a957604052565b346102a6575f6003193601126102a6576040515f80548060011c90600181169081156107fc575b6020831082146107cf5782855260208501919081156107985750600114610748575b6104f3846104e7818603826106ae565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818410610784575050016104e782610738565b805484840152602090930192600101610771565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b0190506104e782610738565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610716565b346102a65760206003193601126102a6576004355f52600460205260206001600160a01b0360405f205416604051908152f35b346102a65760406003193601126102a65760043561085681610295565b602435805f5260026020526001600160a01b0360405f2054169182331415806108af575b6108875761002092612ab5565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff6108d83360405f20906001600160a01b03165f5260205260405f2090565b54161561087a565b60a06003193601126102a6576004356108f881610295565b602435604435916064359260843567ffffffffffffffff81116102a6576109239036906004016102b7565b948242116109c7576109bc856109c293610020986109b6885f8099868252600260205281896001600160a01b036040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad89526001600160a01b0360208a01911681526040890192835260608901948552608089019687528160a08a20995252525252612b2c565b91612be5565b82612a54565b612ab5565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576004355f52600760205260206001600160a01b0360405f205416604051908152f35b346102a65760206003193601126102a6576020610a9c600435610a8781612669565b919082851c60020b9260081c60020b91612e68565b6fffffffffffffffffffffffffffffffff60405191168152f35b60031960609101126102a657600435610ace81610295565b90602435610adb81610295565b9060443590565b346102a657610af036610ab6565b91610b1a7f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30578291610c41610b54610b48610b3b865f52600260205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b91610b6a6001600160a01b03851693841461302f565b610bb46001600160a01b03821694610b83861515613094565b8433148015610cf2575b8015610ccd575b610b9d906130f9565b6001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610bf5816001600160a01b03165f52600360205260405f2090565b80546001019055610c0e855f52600260205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610c7e610c56845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610cbe610cb7825f52600960205260405f2090565b5460ff1690565b610cc457005b6100209061315e565b50610b9d610ce9610b48610b3b8a5f52600460205260405f2090565b33149050610b94565b50610d2b610cb733610d15846001600160a01b03165f52600560205260405f2090565b906001600160a01b03165f5260205260405f2090565b610b8d565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101006003193601126102a657600435610d7181610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a65760e43567ffffffffffffffff81116102a657610dbb9036906004016102b7565b916060926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576001600160a01b035f80946104cb604051978896879586947f2b67b570000000000000000000000000000000000000000000000000000000008652166004850152610e3d602485016122f6565b6001600160a01b0360a435610e5181610295565b1660a485015260c43560c485015261010060e48501526101048401916123c0565b60606003193601126102a657602435600435610e8d82610295565b60443567ffffffffffffffff81116102a657610ead9036906004016102b7565b610ed99391937f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057610ee783336132b6565b1561102b576001600160a01b03610f09610b3b855f52600760205260405f2090565b1680610fef57505f83815260096020526040902080546001179055610fbf90610fbb90610fb56001600160a01b03851696610f5088610c0e895f52600760205260405f2090565b610f896040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612495565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826106ae565b8361334b565b1590565b610fea57507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b61338c565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f5260048490526001600160a01b031660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102a6575f6003193601126102a65760206110716124ac565b604051908152f35b6044359081151582036102a657565b60c06003193601126102a6576004356110a081610295565b6024356110ac81610295565b6110b4611079565b906064359260843560a43567ffffffffffffffff81116102a6576110dc9036906004016102b7565b8692919242116109c7578361115c936109bc926109b6885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f7689526001600160a01b0360208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252612b2c565b6136b8565b346102a65761116f36610ab6565b6111987f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30576111b4610b48610b3b835f52600260205260405f2090565b916111ca6001600160a01b03851693841461302f565b816001600160a01b03821680946111e2821515613094565b8033148015611401575b80156113dc575b6111fc906130f9565b611217876001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611258846001600160a01b03165f52600360205260405f2090565b8054600101905561127584610c0e855f52600260205260405f2090565b61128a610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46112c3610cb7835f52600960205260405f2090565b6113ce575b3b159182156112db575b6100208361257e565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f9161139a575b5016145f806112d2565b6113bc915060203d6020116113c2575b6113b481836106ae565b810190612569565b5f611390565b503d6113aa565b6123fe565b6113d78261315e565b6112c8565b506111fc6113f8610b48610b3b865f52600460205260405f2090565b331490506111f3565b50611424610cb733610d158a6001600160a01b03165f52600560205260405f2090565b6111ec565b346102a6575f6003193601126102a65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102a65782359167ffffffffffffffff83116102a6576020808501948460051b0101116102a657565b60406003193601126102a65760043567ffffffffffffffff81116102a6576115039036906004016102b7565b60243567ffffffffffffffff81116102a6576115239036906004016114a6565b916001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a45761157f93337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d61376b565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a65760406003193601126102a6576004356115e981610295565b6001600160a01b0360243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576020611677600435612648565b6001600160a01b0360405191168152f35b346102a65760206003193601126102a6576001600160a01b036004356116ad81610295565b1680156116d4575f5260036020526104f360405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102a6575f6003193601126102a6576020600854604051908152f35b346102a65760206003193601126102a65760c061176d600435612669565b6117b760405180936001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102a65760206003193601126102a6576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102a6575f908152600a60209081526040918290208054600182015460029283015485516001600160a01b0393841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102a65760206003193601126102a6576004355f526009602052602060405f2054604051908152f35b346102a65760206003193601126102a65760043567ffffffffffffffff81116102a6576118b59036906004016102b7565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361199e5760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b8881831061196f5790506080929150010191011017611962576060608063ffffffff61195796169401920161376b565b6104f36104e7612452565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611927565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a6576040515f6001548060011c9060018116908115611a71575b6020831082146107cf5782855260208501919081156107985750600114611a1f576104f3846104e7818603826106ae565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b818410611a5d575050016104e782610738565b805484840152602090930192600101611a4a565b91607f16916119ee565b346102a65760406003193601126102a657600435611a9881610295565b60243580151581036102a65761002091336136b8565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611ae057505050505090565b9091929394602080611b1c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102e5565b97019301930191939290611ad1565b60206003193601126102a65760043567ffffffffffffffff81116102a657611b579036906004016114a6565b90611b6182612747565b91611b6f60405193846106ae565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b9c82612747565b015f5b818110611c175750505f5b818110611bbf57604051806104f38682611aae565b5f80611bcc83858761278c565b90611bdc604051809381936127f1565b0390305af4611be9612466565b9015611c0f5790600191611bfd82876127fe565b52611c0881866127fe565b5001611baa565b602081519101fd5b806060602080938801015201611b9f565b60206003193601126102a657600435611c607f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611c6e81336132b6565b1561102b576100209061315e565b346102a65760806003193601126102a657600435611c9981610295565b60243590611ca682610295565b60443560643567ffffffffffffffff81116102a657611cc99036906004016102b7565b939091611cf57f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611d11610b48610b3b835f52600260205260405f2090565b91611d276001600160a01b03861693841461302f565b816001600160a01b0382168094611d3f821515613094565b8033148015611f2e575b8015611f09575b611d59906130f9565b611d74886001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611db5846001600160a01b03165f52600360205260405f2090565b80546001019055611dd284610c0e855f52600260205260405f2090565b611de7610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611e20610cb7835f52600960205260405f2090565b611efb575b3b15938415611e38575b6100208561257e565b602094505f90611e78604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701612812565b03925af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611edc575b5016145f808080611e2f565b611ef5915060203d6020116113c2576113b481836106ae565b5f611ed0565b611f048261315e565b611e25565b50611d59611f25610b48610b3b865f52600460205260405f2090565b33149050611d50565b50611f51610cb733610d158b6001600160a01b03165f52600560205260405f2090565b611d49565b346102a65760206003193601126102a657600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9575f90611fea575b6104f39060405191829182610328565b503d805f833e611ffa81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a6570181601f820112156102a6576104f39181602061203893519101612840565b611fda565b346102a6575f6003193601126102a65760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6001600160a01b0360405191168152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60406003193601126102a65760043567ffffffffffffffff81116102a6576120f19036906004016102b7565b6024356001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a457337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d80421161221d576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061218b6024820187896123c0565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9576121cd575b610020613746565b3d805f833e6121dc81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a657019080601f830112156102a657815161221692602001612840565b50806121c5565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102a65760406003193601126102a657602060ff6122a260043561226c81610295565b6001600160a01b036024359161228183610295565b165f526005845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b600319360160c081126102a65760a0136102a65760206122d860a4356122d381610295565b6128a3565b6040519060020b8152f35b359065ffffffffffff821682036102a657565b6001600160a01b0360243561230a81610295565b1681526001600160a01b0360443561232181610295565b16602082015260643565ffffffffffff81168091036102a657604082015260843565ffffffffffff811681036102a65765ffffffffffff60609116910152565b65ffffffffffff6123ba606080936001600160a01b03813561238281610295565b1686526001600160a01b03602082013561239b81610295565b166020870152836123ae604083016122e3565b166040870152016122e3565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102b56080836106ae565b67ffffffffffffffff81116106a957601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b604051906124616020836106ae565b5f8252565b3d15612490573d9061247782612418565b9161248560405193846106ae565b82523d5f602084013e565b606090565b6040906103399492815281602082015201916123c0565b467f0000000000000000000000000000000000000000000000000000000000000000036124f7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f000000000000000000000000000000000000000000000000000000000000000060408201524660608201523060808201526080815261256360a0826106ae565b51902090565b908160209103126102a6575161033981610542565b1561258557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b156125ea57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f5260026020526001600160a01b0360405f205416906102b58215156125e3565b5f60806040516126788161068d565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f206127446127346002604051936126de8561068d565b6001600160a01b03815416855261272661271c60018301546001600160a01b038116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b01546001600160a01b031690565b6001600160a01b03166080830152565b91565b67ffffffffffffffff81116106a95760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156127ec5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102a657019081359167ffffffffffffffff83116102a65760200182360381136102a6579190565b61275f565b908092918237015f815290565b80518210156127ec5760209160051b010190565b90926001600160a01b03608093816103399896168452166020830152604082015281606082015201916123c0565b92919261284c82612418565b9161285a60405193846106ae565b8294818452818301116102a6578281602093845f96015e010152565b8060020b036102a657565b908160209103126102a6575161033981612876565b62ffffff8116036102a657565b6001600160a01b03604051917f6276cbbe000000000000000000000000000000000000000000000000000000008352816004356128df81610295565b166004840152816024356128f281610295565b16602484015262ffffff60443561290881612896565b16604484015260643561291a81612876565b60020b606484015261294160843561293181610295565b6001600160a01b03166084850152565b1660a482015260208160c4815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af15f918161298f575b506103395750627fffff90565b6129b291925060203d6020116129b9575b6129aa81836106ae565b810190612881565b905f612982565b503d6129a0565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633141580612a21575b6129f957565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314156129f3565b906001600160a01b03600160ff83161b92165f52600660205260405f209060081c5f5260205260405f20818154188091551615612a8d57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b906001600160a01b038091845f526004602052612b038160405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b90612b356124ac565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102a6576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff8211612bd157565b612b92565b90604010156127ec5760400190565b90833b612d7a5760418103612cee5790602092612c6e83612c46612c40612c1a612c125f98880188612b7c565b949097612bd6565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156113c9576001600160a01b035f5116908115612cc6576001600160a01b031603612c9e57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b9060408203612d5257602092612d0b825f94612c6e940190612b7c565b929092612d4c612d47612d417f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b612bbf565b93612c48565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092612dc1936001600160a01b03602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612495565b0392165afa9081156113c9577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f91612e49575b501603612e2157565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b612e62915060203d6020116113c2576113b481836106ae565b5f612e18565b9290612ea39260a092604051956026870152600686015260038501523084525f603a600c860120948160408201528160208201525220614bbf565b60068101809111612bd15760408051602081810194855291810192909252612f0f929091612ed48160608101610f89565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9576fffffffffffffffffffffffffffffffff915f91612f6057501690565b612f82915060203d602011612f86575b612f7a81836106ae565b810190612f8d565b1690565b503d612f70565b908160209103126102a6575190565b60206001600160a01b03916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156113c9575f91613010575b50151590565b613029915060203d602011612f8657612f7a81836106ae565b5f61300a565b1561303657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561309b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b1561310057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b6001600160a01b0361317b610b3b835f52600760205260405f2090565b1690811561328e575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556131cb610c56825f52600760205260405f2090565b813b6131f8575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061328957823b156102a6575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261326789600483019190602083019252565b0393f1613275575b506131d2565b8061050e5f613283936106ae565b5f61326f565b6137d4565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b036132c783612648565b16916001600160a01b03821692831492831561332a575b5082156132ea57505090565b60ff9250906001600160a01b0361330361332593612648565b165f52600560205260405f20906001600160a01b03165f5260205260405f2090565b541690565b908093505f5260046020526001600160a01b0360405f20541614915f6132de565b803b1561336457815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fb1a9116f000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7face944810000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60206001600160a01b03807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f526005835261370c8160405f20906001600160a01b03165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b909291938284036137ac575f5b848110156137a45760019061379e81850161379483888b61278c565b913560f81c6137fc565b01613778565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600b8110156139175780613827575061381b906102b5926149cc565b94939093929192614b63565b60048103613846575061383d906102b592614185565b93929092614a79565b60018103613868575061385c906102b5926149cc565b94939093929192614a0e565b600281036138975750613881613891916102b5936145df565b9890979691959295949394613cc2565b9561478a565b600581036138c357506138b06138bd916102b593614481565b9790969591949294613cc2565b94614543565b91600383146138ff57505061102891505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102b592509061390e91614185565b939290926141c1565b600d8103613933575061392d906102b592613caf565b90614147565b6011810361395b575061394c613955916102b593613e9e565b92909192613cc2565b9161412c565b600b810361398f5750613989613977613983926102b594613e9e565b93829493929193613f73565b92613fa1565b91613fe2565b600e81036139c157506139b56139ab6139bb926102b594613e9e565b9282949291613cc2565b92613eb6565b91613eca565b601281036139dc57506139d7906102b592613ac8565b613e32565b601381036139f857506139f2906102b592613caf565b90613d25565b60148103613a1f5750613a11613a19916102b593613caf565b919091613cc2565b90613d07565b60158103613a6d5750613a38613a68916102b593613ac8565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690613b54565b613c39565b9160168314613a8257505061102891506138d4565b6102b59250613ac391613a9491613ac8565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ad4565b613bb0565b90602011611962573590565b613adf903090614bdf565b7f80000000000000000000000000000000000000000000000000000000000000008214613b4f578115613b3e575b8111613b165790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050613b495f614c5f565b90613b0d565b905090565b90613b5f305f614bdf565b907f80000000000000000000000000000000000000000000000000000000000000008314613baa578215613b98575b508111613b165790565b613ba3919250614c5f565b905f613b8e565b50905090565b80613bb85750565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b156102a6575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af180156113c957613c2f5750565b5f6102b5916106ae565b80613c415750565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af180156113c957613c2f5750565b9190604011611962576020823592013590565b6001600160a01b03811660018103613cfb5750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361033957503090565b90613d1182614cd1565b9081613d1c57505050565b6102b592614d37565b90613d2f82614ddd565b908115613e01578111613dd5576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6575f9283926040519485809481937f80f0b44c0000000000000000000000000000000000000000000000000000000083526020600484016001600160a01b036040820194168152015203925af180156113c957613dc75750565b8061050e5f6102b5936106ae565b6102b5917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90613eca565b505050565b7f80000000000000000000000000000000000000000000000000000000000000008114612bd1575f0390565b613e5d81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215613e94576139896102b593613e06565b6102b59291613eca565b90606011611962578035916040602083013592013590565b9081613ec6576103399150614ddd565b5090565b90918015613e01576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156113c957613f5e5750565b80613f6a5f80936106ae565b8003126102a657565b15613f9d577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f80000000000000000000000000000000000000000000000000000000000000008203613fd3576103399150614cd1565b81613ec6576103399150614c5f565b908215613e01576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f8160248183885af180156113c957614118575b506001600160a01b0381166140ce5750506020906004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b6140cb9060203d602011612f8657612f7a81836106ae565b50565b5f93602093926140dd92614ea7565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b8061050e5f614126936106ae565b5f614064565b9161413e6102b593826139bb82614ddd565b6139bb82614ddd565b906102b59161417c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c918261398982614c5f565b61398982614c5f565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611962579190565b939290927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6141f186826132b6565b156143ae575061420085612669565b9290938360081c60020b958460201c60020b9661423761422289838a8d612e68565b6fffffffffffffffffffffffffffffffff1690565b966142418a612648565b955f6142558c5f52600960205260405f2090565b5561425f8b614faa565b5f9989614291575b505050505050508160ff1661427e575b5050505050565b614287946151b4565b5f80808080614277565b60409495969a509061430e916142d16142b16142ac8d61507e565b613e06565b916142c76142bd612409565b97889060020b9052565b60020b6020870152565b858501528b606085015284519a8b9485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9575f965f9161436e575b509061435d826143629493986150b0565b6150ed565b5f808080808080614267565b61435d97506143629392915061439b9060403d6040116143a7575b61439381836106ae565b8101906143e3565b9790979192935061434c565b503d614389565b6001600160a01b03907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b91908260409103126102a6576020825192015190565b6060610339959361444a83610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201528161012082015201916123c0565b91908260a08101359260c08201359260e083013592610100810135926101208201359263ffffffff6101408401351683019063ffffffff82351693602080840193860101910110611962579190565b91908260a09103126102a6576040516144e88161068d565b608080829480356144f881610295565b8452602081013561450881610295565b6020850152604081013561451b81612896565b6040850152606081013561452e81612876565b606085015201359161453f83610295565b0152565b90916102b59796959493926fffffffffffffffffffffffffffffffff6145d861459860a061457136886144d0565b207f0000000000000000000000000000000000000000000000000000000000000000615264565b5050506145a484615303565b6145ad86615303565b6145c088356145bb81610295565b614ddd565b916145d260208a01356145bb81610295565b9361564f565b169261478a565b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611962579190565b600260806102b593614680813561464c81610295565b85906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b600184016146c9602083013561469581610295565b82906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60408201356146d781612896565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000606086013561472081612876565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b1691161717905501359161475683610295565b01906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90919496929793959760085492600184016008556001600160a01b038a16996147b48b1515613094565b845f5260026020526001600160a01b0360405f20541661496e5761488a6149259861491f93876102b59e61481986614800614917986001600160a01b03165f52600360205260405f2090565b80546001019055610c0e845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461484836886144d0565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b928361489e875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561490760016148fc847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b1561492b575b505061507e565b9236906144d0565b906156fc565b506157de565b614962614967927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614636565b5f85614910565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611962579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614a4283826132b6565b156143ae57509561435d92826142ac6102b59899614a6d614a65614a7397612669565b93909261507e565b916156fc565b906150b0565b949394929091927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614aac82826132b6565b156143ae57506102b59495614b5e9282614ac8614a7394612669565b90614a6d6fffffffffffffffffffffffffffffffff614b58614b0d60a085207f0000000000000000000000000000000000000000000000000000000000000000615264565b505050614b1f8660081c60020b615303565b614b2e8760201c60020b615303565b614b416001600160a01b03885116614ddd565b916145d26001600160a01b0360208a015116614ddd565b1661507e565b6157de565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614b9783826132b6565b156143ae575095614b5e9282614a6d6102b59899614bb7614a7396612669565b92909161507e565b6040516020810191825260066040820152604081526125636060826106ae565b6001600160a01b038116614bf257503190565b906001600160a01b0360246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa9081156113c9575f91614c46575090565b610339915060203d602011612f8657612f7a81836106ae565b614c8a81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8213614c9c575061033990613e06565b6001600160a01b03907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b038116614ce457504790565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290602090829060249082906001600160a01b03165afa9081156113c9575f91614c46575090565b9091906001600160a01b038116614d6457505f808080614d5894865af11590565b614d5f5750565b613532565b91906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d11600185511416171692828152826020820152015215614dcf5750565b6001600160a01b031661345f565b614e0881307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8212614e14575090565b6001600160a01b03907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b03809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa9081156113c9575f91614c46575090565b9091906001600160a01b0383163003614eef576102b592506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690614d37565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0394851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156113c957613dc75750565b805f5260026020525f6001600160a01b03604082205416614fcc8115156125e3565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055615010835f52600260205260405f2090565b80548360031b906001600160a01b03808616831b921b191617905561503d835f52600460205260405f2090565b80548360031b906001600160a01b03808616831b921b19161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4565b905f821261508857565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b6150d3906150c58360801d8260801d0361592c565b92600f0b90600f0b0361592c565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d94816151118761593a565b9116918291161061519957506fffffffffffffffffffffffffffffffff929350600f0b908261513f8361593a565b9116928391161061514e575050565b906151696fffffffffffffffffffffffffffffffff9261593a565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff906151698661593a565b5f81815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556001600160a01b039081169561525895610fbb959394919390929091604051957fb1a9116f00000000000000000000000000000000000000000000000000000000602088015260248701521660448501526064840152608483015260a482015260a48152610fb560c4826106ae565b61525f5750565b6135e5565b602090602461527b6001600160a01b039594614bbf565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156113c9575f926152e2575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b6152fc91925060203d602011612f8657612f7a81836106ae565b905f6152bc565b60020b908160ff1d82810118620d89e881116156495763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661562d575b60048116615611575b600881166155f5575b601081166155d9575b602081166155bd575b604081166155a1575b60808116615585575b6101008116615569575b610200811661554d575b6104008116615531575b6108008116615515575b61100081166154f9575b61200081166154dd575b61400081166154c1575b61800081166154a5575b620100008116615489575b62020000811661546e575b620400008116615453575b620800001661543a575b5f12615413575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0461540c565b6b048a170391f7dc42444e8fa290910260801c90615405565b6d2216e584f5fa1ea926041bedfe9890920260801c916153fb565b916e5d6af8dedb81196699c329225ee6040260801c916153f0565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916153e5565b916f31be135f97d08fd981231505542fcfa60260801c916153da565b916f70d869a156d2a1b890bb3df62baf32f70260801c916153d0565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916153c6565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916153bc565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916153b2565b916ff3392b0822b70005940c7a398e4b70f30260801c916153a8565b916ff987a7253ac413176f2b074cf7815e540260801c9161539e565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91615394565b916ffe5dee046a99a2a811c461f1969c30530260801c9161538a565b916fff2ea16466c96a3843ec78b326b528610260801c91615381565b916fff973b41fa98c081472e6896dfb254c00260801c91615378565b916fffcb9843d60f6159c9db58835c9266440260801c9161536f565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615366565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161535d565b916ffff97272373d413259a46990580e213a0260801c91615354565b82615959565b936001600160a01b0383166001600160a01b038316116156f4575b6001600160a01b0385811695908316861161568b57505061033993506159b7565b92909391946001600160a01b038216115f146156e85782916156b1916156b795946159b7565b93615987565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f14613b4f575090565b91505061033992615987565b90919061566a565b95939460409161576261570d612409565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156113c9575f945f926157ba575b5081949560ff166157b157505050565b6102b592615a00565b9094506157d6915060403d6040116143a75761439381836106ae565b90935f6157a1565b908160801d600f0b91600f0b915f8112806158f7575b6158955750505f81128061585e575b61580b575050565b9061581b61422261102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff8061587a83613e06565b16166fffffffffffffffffffffffffffffffff831610615803565b906fffffffffffffffffffffffffffffffff6158b361102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff61591282613e06565b166fffffffffffffffffffffffffffffffff8316106157f4565b9081600f0b91820361508857565b5f81600f0b12615088576fffffffffffffffffffffffffffffffff1690565b7f8b86327a000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b916001600160a01b03610339936159ac93828116838316116159b1575b031690615b43565b615d1b565b906159a4565b916159ac91610339936001600160a01b0382166001600160a01b038216116159fa575b6001600160a01b03906159f1828416838316615bff565b92031691615c79565b906159da565b615a6a9192815f5260076020526001600160a01b0360405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152615a646084826106ae565b8261334b565b15615a725750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b156102a657565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000008409928280851094039380850394615b91868511615b3c565b14615bf8576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156102a65714615c70576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395615cb9878611615b3c565b14615d13579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906fffffffffffffffffffffffffffffffff82168092036150885756fea264697066735822122055c0f8c9d83cb872f87b3d6c16d159a539cff8caeaaf66401351242afef45dc664736f6c634300081a0033","sourceMap":"7946:20094:53:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;7946:20094:53;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;1219:22:56;;1204:37;;;1271:13;7946:20094:53;1252:32:56;7946:20094:53;;;1816:66:56;;1075:80;;;;7946:20094:53;1075:80:56;;;1271:13;7946:20094:53;1075:80:56;;;1876:4;7946:20094:53;1075:80:56;;;7946:20094:53;1816:66:56;;;7946:20094:53;1816:66:56;;:::i;:::-;7946:20094:53;1806:77:56;;7946:20094:53;1294:50:56;782:26:58;;903:42:61;;553:18:62;;588:14:60;;7946:20094:53;8548:1;7946:20094;9173:34;;7946:20094;;;;;;;;;;;;;;;;;;;;1204:37:56;7946:20094:53;;;;;782:26:58;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;903:42:61;7946:20094:53;;;;;;;;;;553:18:62;7946:20094:53;;;;;;;;;;;;;;;;;;;;588:14:60;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9173:34;7946:20094;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;-1:-1:-1;7946:20094:53;;;;;;;-1:-1:-1;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;-1:-1:-1;7946:20094:53;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;-1:-1:-1;7946:20094:53;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;-1:-1:-1;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;-1:-1:-1;;7946:20094:53;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610022575b3615610018575f80fd5b6100206129c0565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e576122ae565b612248565b6120c5565b612082565b61203d565b611f56565b611c7c565b611c28565b611b2b565b611a7b565b6119c6565b611884565b61185a565b6117be565b61174f565b611732565b611688565b611659565b611616565b6115cc565b6114d7565b611463565b611429565b611161565b611088565b611057565b610e72565b610d58565b610ae2565b610a65565b610a32565b6109ef565b6108e0565b610839565b610806565b6106ef565b61063e565b61056c565b61033c565b6001600160a01b038116036102a657565b5f80fd5b35906102b582610295565b565b9181601f840112156102a65782359167ffffffffffffffff83116102a657602083818601950101116102a657565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103399281815201906102e5565b90565b60606003193601126102a65760043561035481610295565b6024359067ffffffffffffffff82116102a6578136039160606003198401126102a65760443567ffffffffffffffff81116102a6576103979036906004016102b7565b6060947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290843b156102a6576001600160a01b03604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102a65781016024600482013591019467ffffffffffffffff82116102a6578160071b360386136102a65760606064890152819052869460e48601949392915f5b81811061051a575050506104cb5f9694869488946044856104b36104a360248b99016102aa565b6001600160a01b03166084890152565b013560a48601526003198584030160448601526123c0565b03925af19081610500575b506104f757506104f36104e7612466565b60405191829182610328565b0390f35b6104f3906104e7565b8061050e5f610514936106ae565b80610656565b5f6104d6565b91965091929394608080826105316001948b612361565b01970191019188969594939261047c565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102a657565b346102a65760206003193601126102a65760207fffffffff000000000000000000000000000000000000000000000000000000006004356105ac81610542565b167f01ffc9a7000000000000000000000000000000000000000000000000000000008114908115610614575b81156105ea575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f6105df565b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491506105d8565b60206003193601126102a65761002060043533612a54565b5f9103126102a657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176106a957604052565b610660565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a957604052565b346102a6575f6003193601126102a6576040515f80548060011c90600181169081156107fc575b6020831082146107cf5782855260208501919081156107985750600114610748575b6104f3846104e7818603826106ae565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818410610784575050016104e782610738565b805484840152602090930192600101610771565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b0190506104e782610738565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610716565b346102a65760206003193601126102a6576004355f52600460205260206001600160a01b0360405f205416604051908152f35b346102a65760406003193601126102a65760043561085681610295565b602435805f5260026020526001600160a01b0360405f2054169182331415806108af575b6108875761002092612ab5565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff6108d83360405f20906001600160a01b03165f5260205260405f2090565b54161561087a565b60a06003193601126102a6576004356108f881610295565b602435604435916064359260843567ffffffffffffffff81116102a6576109239036906004016102b7565b948242116109c7576109bc856109c293610020986109b6885f8099868252600260205281896001600160a01b036040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad89526001600160a01b0360208a01911681526040890192835260608901948552608089019687528160a08a20995252525252612b2c565b91612be5565b82612a54565b612ab5565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576004355f52600760205260206001600160a01b0360405f205416604051908152f35b346102a65760206003193601126102a6576020610a9c600435610a8781612669565b919082851c60020b9260081c60020b91612e68565b6fffffffffffffffffffffffffffffffff60405191168152f35b60031960609101126102a657600435610ace81610295565b90602435610adb81610295565b9060443590565b346102a657610af036610ab6565b91610b1a7f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30578291610c41610b54610b48610b3b865f52600260205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b91610b6a6001600160a01b03851693841461302f565b610bb46001600160a01b03821694610b83861515613094565b8433148015610cf2575b8015610ccd575b610b9d906130f9565b6001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610bf5816001600160a01b03165f52600360205260405f2090565b80546001019055610c0e855f52600260205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610c7e610c56845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610cbe610cb7825f52600960205260405f2090565b5460ff1690565b610cc457005b6100209061315e565b50610b9d610ce9610b48610b3b8a5f52600460205260405f2090565b33149050610b94565b50610d2b610cb733610d15846001600160a01b03165f52600560205260405f2090565b906001600160a01b03165f5260205260405f2090565b610b8d565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101006003193601126102a657600435610d7181610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a65760e43567ffffffffffffffff81116102a657610dbb9036906004016102b7565b916060926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576001600160a01b035f80946104cb604051978896879586947f2b67b570000000000000000000000000000000000000000000000000000000008652166004850152610e3d602485016122f6565b6001600160a01b0360a435610e5181610295565b1660a485015260c43560c485015261010060e48501526101048401916123c0565b60606003193601126102a657602435600435610e8d82610295565b60443567ffffffffffffffff81116102a657610ead9036906004016102b7565b610ed99391937f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057610ee783336132b6565b1561102b576001600160a01b03610f09610b3b855f52600760205260405f2090565b1680610fef57505f83815260096020526040902080546001179055610fbf90610fbb90610fb56001600160a01b03851696610f5088610c0e895f52600760205260405f2090565b610f896040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612495565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826106ae565b8361334b565b1590565b610fea57507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b61338c565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f5260048490526001600160a01b031660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102a6575f6003193601126102a65760206110716124ac565b604051908152f35b6044359081151582036102a657565b60c06003193601126102a6576004356110a081610295565b6024356110ac81610295565b6110b4611079565b906064359260843560a43567ffffffffffffffff81116102a6576110dc9036906004016102b7565b8692919242116109c7578361115c936109bc926109b6885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f7689526001600160a01b0360208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252612b2c565b6136b8565b346102a65761116f36610ab6565b6111987f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30576111b4610b48610b3b835f52600260205260405f2090565b916111ca6001600160a01b03851693841461302f565b816001600160a01b03821680946111e2821515613094565b8033148015611401575b80156113dc575b6111fc906130f9565b611217876001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611258846001600160a01b03165f52600360205260405f2090565b8054600101905561127584610c0e855f52600260205260405f2090565b61128a610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46112c3610cb7835f52600960205260405f2090565b6113ce575b3b159182156112db575b6100208361257e565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f9161139a575b5016145f806112d2565b6113bc915060203d6020116113c2575b6113b481836106ae565b810190612569565b5f611390565b503d6113aa565b6123fe565b6113d78261315e565b6112c8565b506111fc6113f8610b48610b3b865f52600460205260405f2090565b331490506111f3565b50611424610cb733610d158a6001600160a01b03165f52600560205260405f2090565b6111ec565b346102a6575f6003193601126102a65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102a65782359167ffffffffffffffff83116102a6576020808501948460051b0101116102a657565b60406003193601126102a65760043567ffffffffffffffff81116102a6576115039036906004016102b7565b60243567ffffffffffffffff81116102a6576115239036906004016114a6565b916001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a45761157f93337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d61376b565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a65760406003193601126102a6576004356115e981610295565b6001600160a01b0360243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576020611677600435612648565b6001600160a01b0360405191168152f35b346102a65760206003193601126102a6576001600160a01b036004356116ad81610295565b1680156116d4575f5260036020526104f360405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102a6575f6003193601126102a6576020600854604051908152f35b346102a65760206003193601126102a65760c061176d600435612669565b6117b760405180936001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102a65760206003193601126102a6576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102a6575f908152600a60209081526040918290208054600182015460029283015485516001600160a01b0393841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102a65760206003193601126102a6576004355f526009602052602060405f2054604051908152f35b346102a65760206003193601126102a65760043567ffffffffffffffff81116102a6576118b59036906004016102b7565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361199e5760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b8881831061196f5790506080929150010191011017611962576060608063ffffffff61195796169401920161376b565b6104f36104e7612452565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611927565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a6576040515f6001548060011c9060018116908115611a71575b6020831082146107cf5782855260208501919081156107985750600114611a1f576104f3846104e7818603826106ae565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b818410611a5d575050016104e782610738565b805484840152602090930192600101611a4a565b91607f16916119ee565b346102a65760406003193601126102a657600435611a9881610295565b60243580151581036102a65761002091336136b8565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611ae057505050505090565b9091929394602080611b1c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102e5565b97019301930191939290611ad1565b60206003193601126102a65760043567ffffffffffffffff81116102a657611b579036906004016114a6565b90611b6182612747565b91611b6f60405193846106ae565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b9c82612747565b015f5b818110611c175750505f5b818110611bbf57604051806104f38682611aae565b5f80611bcc83858761278c565b90611bdc604051809381936127f1565b0390305af4611be9612466565b9015611c0f5790600191611bfd82876127fe565b52611c0881866127fe565b5001611baa565b602081519101fd5b806060602080938801015201611b9f565b60206003193601126102a657600435611c607f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611c6e81336132b6565b1561102b576100209061315e565b346102a65760806003193601126102a657600435611c9981610295565b60243590611ca682610295565b60443560643567ffffffffffffffff81116102a657611cc99036906004016102b7565b939091611cf57f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611d11610b48610b3b835f52600260205260405f2090565b91611d276001600160a01b03861693841461302f565b816001600160a01b0382168094611d3f821515613094565b8033148015611f2e575b8015611f09575b611d59906130f9565b611d74886001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611db5846001600160a01b03165f52600360205260405f2090565b80546001019055611dd284610c0e855f52600260205260405f2090565b611de7610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611e20610cb7835f52600960205260405f2090565b611efb575b3b15938415611e38575b6100208561257e565b602094505f90611e78604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701612812565b03925af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611edc575b5016145f808080611e2f565b611ef5915060203d6020116113c2576113b481836106ae565b5f611ed0565b611f048261315e565b611e25565b50611d59611f25610b48610b3b865f52600460205260405f2090565b33149050611d50565b50611f51610cb733610d158b6001600160a01b03165f52600560205260405f2090565b611d49565b346102a65760206003193601126102a657600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9575f90611fea575b6104f39060405191829182610328565b503d805f833e611ffa81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a6570181601f820112156102a6576104f39181602061203893519101612840565b611fda565b346102a6575f6003193601126102a65760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6001600160a01b0360405191168152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60406003193601126102a65760043567ffffffffffffffff81116102a6576120f19036906004016102b7565b6024356001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a457337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d80421161221d576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061218b6024820187896123c0565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9576121cd575b610020613746565b3d805f833e6121dc81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a657019080601f830112156102a657815161221692602001612840565b50806121c5565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102a65760406003193601126102a657602060ff6122a260043561226c81610295565b6001600160a01b036024359161228183610295565b165f526005845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b600319360160c081126102a65760a0136102a65760206122d860a4356122d381610295565b6128a3565b6040519060020b8152f35b359065ffffffffffff821682036102a657565b6001600160a01b0360243561230a81610295565b1681526001600160a01b0360443561232181610295565b16602082015260643565ffffffffffff81168091036102a657604082015260843565ffffffffffff811681036102a65765ffffffffffff60609116910152565b65ffffffffffff6123ba606080936001600160a01b03813561238281610295565b1686526001600160a01b03602082013561239b81610295565b166020870152836123ae604083016122e3565b166040870152016122e3565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102b56080836106ae565b67ffffffffffffffff81116106a957601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b604051906124616020836106ae565b5f8252565b3d15612490573d9061247782612418565b9161248560405193846106ae565b82523d5f602084013e565b606090565b6040906103399492815281602082015201916123c0565b467f0000000000000000000000000000000000000000000000000000000000000000036124f7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f000000000000000000000000000000000000000000000000000000000000000060408201524660608201523060808201526080815261256360a0826106ae565b51902090565b908160209103126102a6575161033981610542565b1561258557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b156125ea57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f5260026020526001600160a01b0360405f205416906102b58215156125e3565b5f60806040516126788161068d565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f206127446127346002604051936126de8561068d565b6001600160a01b03815416855261272661271c60018301546001600160a01b038116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b01546001600160a01b031690565b6001600160a01b03166080830152565b91565b67ffffffffffffffff81116106a95760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156127ec5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102a657019081359167ffffffffffffffff83116102a65760200182360381136102a6579190565b61275f565b908092918237015f815290565b80518210156127ec5760209160051b010190565b90926001600160a01b03608093816103399896168452166020830152604082015281606082015201916123c0565b92919261284c82612418565b9161285a60405193846106ae565b8294818452818301116102a6578281602093845f96015e010152565b8060020b036102a657565b908160209103126102a6575161033981612876565b62ffffff8116036102a657565b6001600160a01b03604051917f6276cbbe000000000000000000000000000000000000000000000000000000008352816004356128df81610295565b166004840152816024356128f281610295565b16602484015262ffffff60443561290881612896565b16604484015260643561291a81612876565b60020b606484015261294160843561293181610295565b6001600160a01b03166084850152565b1660a482015260208160c4815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af15f918161298f575b506103395750627fffff90565b6129b291925060203d6020116129b9575b6129aa81836106ae565b810190612881565b905f612982565b503d6129a0565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633141580612a21575b6129f957565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314156129f3565b906001600160a01b03600160ff83161b92165f52600660205260405f209060081c5f5260205260405f20818154188091551615612a8d57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b906001600160a01b038091845f526004602052612b038160405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b90612b356124ac565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102a6576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff8211612bd157565b612b92565b90604010156127ec5760400190565b90833b612d7a5760418103612cee5790602092612c6e83612c46612c40612c1a612c125f98880188612b7c565b949097612bd6565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156113c9576001600160a01b035f5116908115612cc6576001600160a01b031603612c9e57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b9060408203612d5257602092612d0b825f94612c6e940190612b7c565b929092612d4c612d47612d417f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b612bbf565b93612c48565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092612dc1936001600160a01b03602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612495565b0392165afa9081156113c9577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f91612e49575b501603612e2157565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b612e62915060203d6020116113c2576113b481836106ae565b5f612e18565b9290612ea39260a092604051956026870152600686015260038501523084525f603a600c860120948160408201528160208201525220614bbf565b60068101809111612bd15760408051602081810194855291810192909252612f0f929091612ed48160608101610f89565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9576fffffffffffffffffffffffffffffffff915f91612f6057501690565b612f82915060203d602011612f86575b612f7a81836106ae565b810190612f8d565b1690565b503d612f70565b908160209103126102a6575190565b60206001600160a01b03916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156113c9575f91613010575b50151590565b613029915060203d602011612f8657612f7a81836106ae565b5f61300a565b1561303657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561309b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b1561310057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b6001600160a01b0361317b610b3b835f52600760205260405f2090565b1690811561328e575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556131cb610c56825f52600760205260405f2090565b813b6131f8575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061328957823b156102a6575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261326789600483019190602083019252565b0393f1613275575b506131d2565b8061050e5f613283936106ae565b5f61326f565b6137d4565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b036132c783612648565b16916001600160a01b03821692831492831561332a575b5082156132ea57505090565b60ff9250906001600160a01b0361330361332593612648565b165f52600560205260405f20906001600160a01b03165f5260205260405f2090565b541690565b908093505f5260046020526001600160a01b0360405f20541614915f6132de565b803b1561336457815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fb1a9116f000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7face944810000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60206001600160a01b03807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f526005835261370c8160405f20906001600160a01b03165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b909291938284036137ac575f5b848110156137a45760019061379e81850161379483888b61278c565b913560f81c6137fc565b01613778565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600b8110156139175780613827575061381b906102b5926149cc565b94939093929192614b63565b60048103613846575061383d906102b592614185565b93929092614a79565b60018103613868575061385c906102b5926149cc565b94939093929192614a0e565b600281036138975750613881613891916102b5936145df565b9890979691959295949394613cc2565b9561478a565b600581036138c357506138b06138bd916102b593614481565b9790969591949294613cc2565b94614543565b91600383146138ff57505061102891505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102b592509061390e91614185565b939290926141c1565b600d8103613933575061392d906102b592613caf565b90614147565b6011810361395b575061394c613955916102b593613e9e565b92909192613cc2565b9161412c565b600b810361398f5750613989613977613983926102b594613e9e565b93829493929193613f73565b92613fa1565b91613fe2565b600e81036139c157506139b56139ab6139bb926102b594613e9e565b9282949291613cc2565b92613eb6565b91613eca565b601281036139dc57506139d7906102b592613ac8565b613e32565b601381036139f857506139f2906102b592613caf565b90613d25565b60148103613a1f5750613a11613a19916102b593613caf565b919091613cc2565b90613d07565b60158103613a6d5750613a38613a68916102b593613ac8565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690613b54565b613c39565b9160168314613a8257505061102891506138d4565b6102b59250613ac391613a9491613ac8565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ad4565b613bb0565b90602011611962573590565b613adf903090614bdf565b7f80000000000000000000000000000000000000000000000000000000000000008214613b4f578115613b3e575b8111613b165790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050613b495f614c5f565b90613b0d565b905090565b90613b5f305f614bdf565b907f80000000000000000000000000000000000000000000000000000000000000008314613baa578215613b98575b508111613b165790565b613ba3919250614c5f565b905f613b8e565b50905090565b80613bb85750565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b156102a6575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af180156113c957613c2f5750565b5f6102b5916106ae565b80613c415750565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af180156113c957613c2f5750565b9190604011611962576020823592013590565b6001600160a01b03811660018103613cfb5750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361033957503090565b90613d1182614cd1565b9081613d1c57505050565b6102b592614d37565b90613d2f82614ddd565b908115613e01578111613dd5576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6575f9283926040519485809481937f80f0b44c0000000000000000000000000000000000000000000000000000000083526020600484016001600160a01b036040820194168152015203925af180156113c957613dc75750565b8061050e5f6102b5936106ae565b6102b5917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90613eca565b505050565b7f80000000000000000000000000000000000000000000000000000000000000008114612bd1575f0390565b613e5d81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215613e94576139896102b593613e06565b6102b59291613eca565b90606011611962578035916040602083013592013590565b9081613ec6576103399150614ddd565b5090565b90918015613e01576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156113c957613f5e5750565b80613f6a5f80936106ae565b8003126102a657565b15613f9d577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f80000000000000000000000000000000000000000000000000000000000000008203613fd3576103399150614cd1565b81613ec6576103399150614c5f565b908215613e01576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f8160248183885af180156113c957614118575b506001600160a01b0381166140ce5750506020906004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b6140cb9060203d602011612f8657612f7a81836106ae565b50565b5f93602093926140dd92614ea7565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b8061050e5f614126936106ae565b5f614064565b9161413e6102b593826139bb82614ddd565b6139bb82614ddd565b906102b59161417c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c918261398982614c5f565b61398982614c5f565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611962579190565b939290927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6141f186826132b6565b156143ae575061420085612669565b9290938360081c60020b958460201c60020b9661423761422289838a8d612e68565b6fffffffffffffffffffffffffffffffff1690565b966142418a612648565b955f6142558c5f52600960205260405f2090565b5561425f8b614faa565b5f9989614291575b505050505050508160ff1661427e575b5050505050565b614287946151b4565b5f80808080614277565b60409495969a509061430e916142d16142b16142ac8d61507e565b613e06565b916142c76142bd612409565b97889060020b9052565b60020b6020870152565b858501528b606085015284519a8b9485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9575f965f9161436e575b509061435d826143629493986150b0565b6150ed565b5f808080808080614267565b61435d97506143629392915061439b9060403d6040116143a7575b61439381836106ae565b8101906143e3565b9790979192935061434c565b503d614389565b6001600160a01b03907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b91908260409103126102a6576020825192015190565b6060610339959361444a83610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201528161012082015201916123c0565b91908260a08101359260c08201359260e083013592610100810135926101208201359263ffffffff6101408401351683019063ffffffff82351693602080840193860101910110611962579190565b91908260a09103126102a6576040516144e88161068d565b608080829480356144f881610295565b8452602081013561450881610295565b6020850152604081013561451b81612896565b6040850152606081013561452e81612876565b606085015201359161453f83610295565b0152565b90916102b59796959493926fffffffffffffffffffffffffffffffff6145d861459860a061457136886144d0565b207f0000000000000000000000000000000000000000000000000000000000000000615264565b5050506145a484615303565b6145ad86615303565b6145c088356145bb81610295565b614ddd565b916145d260208a01356145bb81610295565b9361564f565b169261478a565b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611962579190565b600260806102b593614680813561464c81610295565b85906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b600184016146c9602083013561469581610295565b82906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60408201356146d781612896565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000606086013561472081612876565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b1691161717905501359161475683610295565b01906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90919496929793959760085492600184016008556001600160a01b038a16996147b48b1515613094565b845f5260026020526001600160a01b0360405f20541661496e5761488a6149259861491f93876102b59e61481986614800614917986001600160a01b03165f52600360205260405f2090565b80546001019055610c0e845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461484836886144d0565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b928361489e875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561490760016148fc847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b1561492b575b505061507e565b9236906144d0565b906156fc565b506157de565b614962614967927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614636565b5f85614910565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611962579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614a4283826132b6565b156143ae57509561435d92826142ac6102b59899614a6d614a65614a7397612669565b93909261507e565b916156fc565b906150b0565b949394929091927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614aac82826132b6565b156143ae57506102b59495614b5e9282614ac8614a7394612669565b90614a6d6fffffffffffffffffffffffffffffffff614b58614b0d60a085207f0000000000000000000000000000000000000000000000000000000000000000615264565b505050614b1f8660081c60020b615303565b614b2e8760201c60020b615303565b614b416001600160a01b03885116614ddd565b916145d26001600160a01b0360208a015116614ddd565b1661507e565b6157de565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614b9783826132b6565b156143ae575095614b5e9282614a6d6102b59899614bb7614a7396612669565b92909161507e565b6040516020810191825260066040820152604081526125636060826106ae565b6001600160a01b038116614bf257503190565b906001600160a01b0360246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa9081156113c9575f91614c46575090565b610339915060203d602011612f8657612f7a81836106ae565b614c8a81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8213614c9c575061033990613e06565b6001600160a01b03907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b038116614ce457504790565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290602090829060249082906001600160a01b03165afa9081156113c9575f91614c46575090565b9091906001600160a01b038116614d6457505f808080614d5894865af11590565b614d5f5750565b613532565b91906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d11600185511416171692828152826020820152015215614dcf5750565b6001600160a01b031661345f565b614e0881307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8212614e14575090565b6001600160a01b03907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b03809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa9081156113c9575f91614c46575090565b9091906001600160a01b0383163003614eef576102b592506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690614d37565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0394851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156113c957613dc75750565b805f5260026020525f6001600160a01b03604082205416614fcc8115156125e3565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055615010835f52600260205260405f2090565b80548360031b906001600160a01b03808616831b921b191617905561503d835f52600460205260405f2090565b80548360031b906001600160a01b03808616831b921b19161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4565b905f821261508857565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b6150d3906150c58360801d8260801d0361592c565b92600f0b90600f0b0361592c565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d94816151118761593a565b9116918291161061519957506fffffffffffffffffffffffffffffffff929350600f0b908261513f8361593a565b9116928391161061514e575050565b906151696fffffffffffffffffffffffffffffffff9261593a565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff906151698661593a565b5f81815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556001600160a01b039081169561525895610fbb959394919390929091604051957fb1a9116f00000000000000000000000000000000000000000000000000000000602088015260248701521660448501526064840152608483015260a482015260a48152610fb560c4826106ae565b61525f5750565b6135e5565b602090602461527b6001600160a01b039594614bbf565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156113c9575f926152e2575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b6152fc91925060203d602011612f8657612f7a81836106ae565b905f6152bc565b60020b908160ff1d82810118620d89e881116156495763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661562d575b60048116615611575b600881166155f5575b601081166155d9575b602081166155bd575b604081166155a1575b60808116615585575b6101008116615569575b610200811661554d575b6104008116615531575b6108008116615515575b61100081166154f9575b61200081166154dd575b61400081166154c1575b61800081166154a5575b620100008116615489575b62020000811661546e575b620400008116615453575b620800001661543a575b5f12615413575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0461540c565b6b048a170391f7dc42444e8fa290910260801c90615405565b6d2216e584f5fa1ea926041bedfe9890920260801c916153fb565b916e5d6af8dedb81196699c329225ee6040260801c916153f0565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916153e5565b916f31be135f97d08fd981231505542fcfa60260801c916153da565b916f70d869a156d2a1b890bb3df62baf32f70260801c916153d0565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916153c6565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916153bc565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916153b2565b916ff3392b0822b70005940c7a398e4b70f30260801c916153a8565b916ff987a7253ac413176f2b074cf7815e540260801c9161539e565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91615394565b916ffe5dee046a99a2a811c461f1969c30530260801c9161538a565b916fff2ea16466c96a3843ec78b326b528610260801c91615381565b916fff973b41fa98c081472e6896dfb254c00260801c91615378565b916fffcb9843d60f6159c9db58835c9266440260801c9161536f565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615366565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161535d565b916ffff97272373d413259a46990580e213a0260801c91615354565b82615959565b936001600160a01b0383166001600160a01b038316116156f4575b6001600160a01b0385811695908316861161568b57505061033993506159b7565b92909391946001600160a01b038216115f146156e85782916156b1916156b795946159b7565b93615987565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f14613b4f575090565b91505061033992615987565b90919061566a565b95939460409161576261570d612409565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156113c9575f945f926157ba575b5081949560ff166157b157505050565b6102b592615a00565b9094506157d6915060403d6040116143a75761439381836106ae565b90935f6157a1565b908160801d600f0b91600f0b915f8112806158f7575b6158955750505f81128061585e575b61580b575050565b9061581b61422261102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff8061587a83613e06565b16166fffffffffffffffffffffffffffffffff831610615803565b906fffffffffffffffffffffffffffffffff6158b361102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff61591282613e06565b166fffffffffffffffffffffffffffffffff8316106157f4565b9081600f0b91820361508857565b5f81600f0b12615088576fffffffffffffffffffffffffffffffff1690565b7f8b86327a000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b916001600160a01b03610339936159ac93828116838316116159b1575b031690615b43565b615d1b565b906159a4565b916159ac91610339936001600160a01b0382166001600160a01b038216116159fa575b6001600160a01b03906159f1828416838316615bff565b92031691615c79565b906159da565b615a6a9192815f5260076020526001600160a01b0360405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152615a646084826106ae565b8261334b565b15615a725750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b156102a657565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000008409928280851094039380850394615b91868511615b3c565b14615bf8576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156102a65714615c70576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395615cb9878611615b3c565b14615d13579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906fffffffffffffffffffffffffffffffff82168092036150885756fea264697066735822122055c0f8c9d83cb872f87b3d6c16d159a539cff8caeaaf66401351242afef45dc664736f6c634300081a0033","sourceMap":"7946:20094:53:-:0;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;7946:20094:53;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1379:7:62;-1:-1:-1;;;;;7946:20094:53;;;;;1379:46:62;;;;;-1:-1:-1;;;;;7946:20094:53;;1379:46:62;7946:20094:53;1379:46:62;;7946:20094:53;;1379:46:62;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;:::i;:::-;1379:46:62;;;;;;;;7946:20094:53;-1:-1:-1;1375:127:62;;1437:65;7946:20094:53;1437:65:62;;:::i;:::-;7946:20094:53;;;;;;;:::i;:::-;;;;1375:127:62;7946:20094:53;1375:127:62;;;1379:46;;;-1:-1:-1;1379:46:62;;;:::i;:::-;;;:::i;:::-;;;;7946:20094:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;:::i;:::-;;;4825:25:6;;:100;;;;;7946:20094:53;4825:175:6;;;;7946:20094:53;;;;;;;;;;4825:175:6;7946:20094:53;4975:25:6;;;4825:175;;;:100;7946:20094:53;4900:25:6;;;-1:-1:-1;4825:100:6;;7946:20094:53;;-1:-1:-1;;7946:20094:53;;;;;1100:5:66;7946:20094:53;;1088:10:66;1100:5;:::i;7946:20094:53:-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;-1:-1:-1;7946:20094:53;;;;;-1:-1:-1;;;;;7946:20094:53;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;7946:20094:53;3607:8:57;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;-1:-1:-1;7946:20094:53;;;3634:10:57;;;:19;;:59;;;7946:20094:53;3630:86:57;;3752:2;;;:::i;3630:86::-;3702:14;-1:-1:-1;3702:14:57;7946:20094:53;-1:-1:-1;3702:14:57;3634:59;7946:20094:53;;-1:-1:-1;7946:20094:53;3658:16:57;7946:20094:53;;;3658:35:57;3634:10;7946:20094:53;-1:-1:-1;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;3658:35:57;7946:20094:53;;3657:36:57;3634:59;;7946:20094:53;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;987:15:57;;;:26;983:65;;1538:5;7946:20094:53;1581:5:57;7946:20094:53;1622:7:57;7946:20094:53;1514:22:57;7946:20094:53;-1:-1:-1;7946:20094:53;;;;;1380:8:57;7946:20094:53;;;;-1:-1:-1;;;;;7946:20094:53;;;;;1346:730:83;;;;7946:20094:53;1346:730:83;;;;;-1:-1:-1;;;;;7946:20094:53;1346:730:83;;;;;;7946:20094:53;1346:730:83;;;;;7946:20094:53;1346:730:83;;;;;7946:20094:53;1346:730:83;;;;;;7946:20094:53;1346:730:83;;;;;;;;1514:22:57;:::i;:::-;1538:5;;:::i;:::-;1581;;:::i;:::-;1622:7;:::i;983:65::-;1022:26;-1:-1:-1;1022:26:57;7946:20094:53;-1:-1:-1;1022:26:57;7946:20094:53;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;-1:-1:-1;;;;;452:43:62;7946:20094:53;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;-1:-1:-1;7946:20094:53;776:68:61;7946:20094:53;;;-1:-1:-1;;;;;7946:20094:53;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;27586:67;7946:20094;;27533:31;;;:::i;:::-;2264:106:87;;;;;2057;2264;2057;;;;;27586:67:53;;:::i;:::-;7946:20094;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;:::i;:::-;10202:11;:24;:11;:24;:::i;:::-;10198:62;;3081:12:6;;3596:17;3073:20;3081:12;;;7946:20094:53;;3081:8:6;7946:20094:53;;;;;;;3081:12:6;7946:20094:53;-1:-1:-1;;;;;7946:20094:53;;;3081:12:6;-1:-1:-1;;;;;7946:20094:53;;;3073:20:6;7946:20094:53;3065:43:6;-1:-1:-1;;;;;7946:20094:53;;3073:20:6;;;3065:43;:::i;:::-;3526:16;-1:-1:-1;;;;;7946:20094:53;;3127:16:6;3119:46;3127:16;;;3119:46;:::i;:::-;3197:10;;:18;:56;;;;7946:20094:53;3197:89:6;;;;7946:20094:53;3176:150:6;;;:::i;:::-;-1:-1:-1;;;;;7946:20094:53;;;3526:10:6;7946:20094:53;;;;;;;3526:16:6;7946:20094:53;;;;;;3559:14:6;;-1:-1:-1;;;;;7946:20094:53;;;3526:10:6;7946:20094:53;;;;;;;3559:14:6;7946:20094:53;;;;;;3596:12:6;;7946:20094:53;;3081:8:6;7946:20094:53;;;;;;;3596:12:6;635:23:61;-1:-1:-1;;;;;7946:20094:53;635:23:61;;;;;;;;3596:17:6;7946:20094:53;3631:15:6;;7946:20094:53;;;;;;;;;;3631:15:6;7946:20094:53;;;;;;;;3662:22:6;3141:1;3662:22;;27044:32:53;:16;;7946:20094;;27044:12;7946:20094;;;;;;;27044:16;7946:20094;2478:89:87;;2382:191;;27044:32:53;27040:54;;7946:20094;27040:54;27091:2;;;:::i;3197:89:6:-;3271:15;3176:150;3257:29;3271:15;;;7946:20094:53;;;;;;;;;;3257:29:6;3197:10;3257:29;3197:89;;;;:56;:10;3219:34;;3197:10;3219:22;;-1:-1:-1;;;;;7946:20094:53;;;3219:16:6;7946:20094:53;;;;;;;3219:22:6;7946:20094:53;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;3219:34:6;3197:56;;10198:62:53;10235:25;;;7946:20094;10235:25;;7946:20094;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;912:7:62;-1:-1:-1;;;;;912:7:62;7946:20094:53;912:46:62;;;;;-1:-1:-1;;;;;;7946:20094:53;;;;;912:46:62;;;;;;;7946:20094:53;912:46:62;;7946:20094:53;;912:46:62;;7946:20094:53;;;;;;:::i;:::-;-1:-1:-1;;;;;7946:20094:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10202:24;:11;;;;:24;:::i;:::-;10198:62;;10000:35;1727:10:61;;10000:35:53;:::i;:::-;9999:36;9995:68;;-1:-1:-1;;;;;1788:19:61;;;7946:20094:53;;1788:10:61;7946:20094:53;;;;;;;1788:19:61;7946:20094:53;1822:28:61;1818:89;;-1:-1:-1;;7946:20094:53;;;26490:12;7946:20094;;;;;;;2725:81:87;;7946:20094:53;;2122:8:61;;2025:82;;2046:60;-1:-1:-1;;;;;7946:20094:53;;1951:19:61;:48;:19;;;7946:20094:53;;1788:10:61;7946:20094:53;;;;;;;1951:48:61;2046:60;7946:20094:53;;2046:60:61;;;;7946:20094:53;2046:60:61;;;;7946:20094:53;2046:60:61;;;:::i;:::-;;;;;;;;;:::i;:::-;2025:82;;:::i;:::-;2122:8;;7946:20094:53;2122:8:61;2118:143;;2276:36;;-1:-1:-1;2276:36:61;;7946:20094:53;2118:143:61;2220:29;:::i;1818:89::-;1859:48;-1:-1:-1;1859:48:61;7946:20094:53;;;;-1:-1:-1;;;;;7946:20094:53;635:23:61;7946:20094:53;635:23:61;-1:-1:-1;1859:48:61;;-1:-1:-1;1859:48:61;9995:68:53;10044:19;-1:-1:-1;10044:19:53;1727:10:61;7946:20094:53;;;-1:-1:-1;10044:19:53;7946:20094;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;987:15:57;;;;;:26;983:65;;2963:760:83;2104:5:57;2963:760:83;2061:5:57;2963:760:83;2037:22:57;2963:760:83;-1:-1:-1;2152:8:57;2963:760:83;;;;;;7946:20094:53;2963:760:83;;;;;-1:-1:-1;;;;;7946:20094:53;2963:760:83;;;;;;;7946:20094:53;2963:760:83;;;;;;7946:20094:53;2963:760:83;;;;;7946:20094:53;2963:760:83;;;;;;7946:20094:53;2963:760:83;;;;;;;;2037:22:57;:::i;2104:5::-;2152:8;:::i;7946:20094:53:-;;;;;;;:::i;:::-;10202:24;:11;:24;:::i;:::-;10198:62;;3073:20:6;3081:12;;;7946:20094:53;;3081:8:6;7946:20094:53;;;;;;;3073:20:6;7946:20094:53;3065:43:6;-1:-1:-1;;;;;7946:20094:53;;3073:20:6;;;3065:43;:::i;:::-;7946:20094:53;-1:-1:-1;;;;;7946:20094:53;;3127:16:6;;3119:46;3127:16;;;3119:46;:::i;:::-;3197:10;;:18;:56;;;;7946:20094:53;3197:89:6;;;;7946:20094:53;3176:150:6;;;:::i;:::-;3526:16;;-1:-1:-1;;;;;7946:20094:53;;;3526:10:6;7946:20094:53;;;;;;;3526:16:6;7946:20094:53;;;;;;3559:14:6;;-1:-1:-1;;;;;7946:20094:53;;;3526:10:6;7946:20094:53;;;;;;;3559:14:6;7946:20094:53;;;;;;3596:17:6;:12;;;7946:20094:53;;3081:8:6;7946:20094:53;;;;;;;3596:17:6;7946:20094:53;3631:15:6;;7946:20094:53;;;;;;;;;;;3662:22:6;3141:1;3662:22;;27044:32:53;:16;;7946:20094;;27044:12;7946:20094;;;;;;;27044:32;27040:54;;7946:20094;3874:14:6;:19;:170;;;;;7946:20094:53;3853:233:6;;;:::i;3874:170::-;7946:20094:53;;;3913:66:6;;3197:10;7946:20094:53;3913:66:6;;7946:20094:53;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;3913:66:6;;-1:-1:-1;7946:20094:53;;;;;;3913:66:6;;;;;;7946:20094:53;;3913:66:6;3853:233;3913:66;3141:1;3913:66;;;3874:170;7946:20094:53;;3913:131:6;3874:170;;;;3913:66;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;27040:54:53:-;27091:2;;;:::i;:::-;27040:54;;3197:89:6;3271:15;3176:150;3257:29;3271:15;;;7946:20094:53;;;;;;;;;;3257:29:6;3197:10;3257:29;3197:89;;;;:56;:10;3219:34;;3197:10;3219:22;;-1:-1:-1;;;;;7946:20094:53;;;3219:16:6;7946:20094:53;;;;;;;3219:34:6;3197:56;;7946:20094:53;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;695:44:61;7946:20094:53;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;-1:-1:-1;;;;;407:29:60;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;661:64:85;-1:-1:-1;;;;;661:64:85;;7946:20094:53;285:55:64;;10933:6:53;361:10:64;;661:64:85;522:63;10933:6:53;:::i;:::-;-1:-1:-1;661:64:85;522:63;7946:20094:53;285:55:64;324:16;-1:-1:-1;324:16:64;7946:20094:53;-1:-1:-1;324:16:64;7946:20094:53;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7946:20094:53;;;;-1:-1:-1;7946:20094:53;317:79:66;7946:20094:53;;;-1:-1:-1;7946:20094:53;;-1:-1:-1;7946:20094:53;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;-1:-1:-1;;;;;8556:52:53;7946:20094;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;:::i;:::-;;1572:19:6;;7946:20094:53;;-1:-1:-1;7946:20094:53;1626:10:6;7946:20094:53;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;8519:30;7946:20094;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;8686:58;7946:20094;;;;;;;;;;;8686:58;;;7946:20094;;8686:58;;;7946:20094;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;-1:-1:-1;7946:20094:53;8615:65;7946:20094;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:58;-1:-1:-1;;;;;672:11:58;7946:20094:53;650:10:58;:34;646:63;;1311:2457:82;;;;;;;;;;;;;;;;;7946:20094:53;1311:2457:82;;7946:20094:53;1311:2457:82;;;;;;;;;7946:20094:53;1311:2457:82;;;;;;;;;;;-1:-1:-1;1311:2457:82;;;;;;;;;;;;;;;;;;;;;;7946:20094:53;1311:2457:82;;1713:6:54;1311:2457:82;;;;;;1713:6:54;:::i;:::-;7946:20094:53;;;:::i;1311:2457:82:-;;-1:-1:-1;1311:2457:82;7946:20094:53;1311:2457:82;;;;;;;;;;;7946:20094:53;1311:2457:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;646:63:58;693:16;-1:-1:-1;693:16:58;7946:20094:53;-1:-1:-1;693:16:58;7946:20094:53;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;924:20:6;7946:20094:53;;924:20:6;7946:20094:53;;924:20:6;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;924:20:6;7946:20094:53;;;;;-1:-1:-1;7946:20094:53;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;;;;;;924:20:6;7946:20094:53;;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;;;;;;;;;;2807:8:57;2785:10;;2807:8;:::i;7946:20094:53:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;-1:-1:-1;7946:20094:53;;;;;;462:13:59;;-1:-1:-1;477:15:59;;;;;;7946:20094:53;;;;;;;:::i;494:3:59:-;-1:-1:-1;578:7:59;;;;;;:::i;:::-;7946:20094:53;;;;;;;;;:::i;:::-;551:35:59;559:4;;551:35;;;;:::i;:::-;605:8;;601:182;;797:19;7946:20094:53;797:19:59;;;;;:::i;:::-;;;;;;:::i;:::-;;7946:20094:53;462:13:59;;601:182;7946:20094:53;680:89:59;;;;;7946:20094:53;;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;10202:24;:11;:24;:::i;:::-;10198:62;;10000:35;2481:10:61;;10000:35:53;:::i;:::-;9999:36;9995:68;;2529:7:61;;;:::i;7946:20094:53:-;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;10202:11;;;:24;:11;:24;:::i;:::-;10198:62;;3073:20:6;3081:12;;;7946:20094:53;;3081:8:6;7946:20094:53;;;;;;;3073:20:6;7946:20094:53;3065:43:6;-1:-1:-1;;;;;7946:20094:53;;3073:20:6;;;3065:43;:::i;:::-;7946:20094:53;-1:-1:-1;;;;;7946:20094:53;;3127:16:6;;3119:46;3127:16;;;3119:46;:::i;:::-;3197:10;;:18;:56;;;;7946:20094:53;3197:89:6;;;;7946:20094:53;3176:150:6;;;:::i;:::-;3526:16;;-1:-1:-1;;;;;7946:20094:53;;;3526:10:6;7946:20094:53;;;;;;;3526:16:6;7946:20094:53;;;;;;3559:14:6;;-1:-1:-1;;;;;7946:20094:53;;;3526:10:6;7946:20094:53;;;;;;;3559:14:6;7946:20094:53;;;;;;3596:17:6;:12;;;7946:20094:53;;3081:8:6;7946:20094:53;;;;;;;3596:17:6;7946:20094:53;3631:15:6;;7946:20094:53;;;;;;;;;;;3662:22:6;-1:-1:-1;3662:22:6;;27044:32:53;:16;;7946:20094;;27044:12;7946:20094;;;;;;;27044:32;27040:54;;7946:20094;4305:14:6;:19;:172;;;;;7946:20094:53;4284:235:6;;;:::i;4305:172::-;7946:20094:53;;;-1:-1:-1;7946:20094:53;4344:68:6;7946:20094:53;;4344:68:6;;;;;;;7946:20094:53;4344:68:6;;3197:10;7946:20094:53;4344:68:6;;;:::i;:::-;;;;;;;;;7946:20094:53;;4344:68:6;4284:235;4344:68;-1:-1:-1;4344:68:6;;;4305:172;7946:20094:53;;4344:133:6;4305:172;;;;;;4344:68;;;;7946:20094:53;4344:68:6;7946:20094:53;4344:68:6;;;;;;;:::i;:::-;;;;27040:54:53;27091:2;;;:::i;:::-;27040:54;;3197:89:6;3271:15;3176:150;3257:29;3271:15;;;7946:20094:53;;;;;;;;;;3257:29:6;3197:10;3257:29;3197:89;;;;:56;:10;3219:34;;3197:10;3219:22;;-1:-1:-1;;;;;7946:20094:53;;;3219:16:6;7946:20094:53;;;;;;;3219:34:6;3197:56;;7946:20094:53;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;10381:60;7946:20094;10381:60;;10427:4;7946:20094;10381:60;;7946:20094;;;;;-1:-1:-1;10401:15:53;10381:60;10401:15;-1:-1:-1;;;;;10401:15:53;7946:20094;10381:60;;;;;;-1:-1:-1;10381:60:53;;;7946:20094;;;;;;;;;;:::i;10381:60::-;;;;-1:-1:-1;10381:60:53;;;;;;:::i;:::-;;;7946:20094;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10381:60;;7946:20094;;;;;-1:-1:-1;;7946:20094:53;;;;;;661:64:85;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;-1:-1:-1;;;;;411:41:58;7946:20094:53;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;661:64:85;;7946:20094:53;285:55:64;;361:10;661:64:85;522:63;9426:15:53;;:26;9422:63;;7946:20094;;;1162:30:54;;7946:20094:53;;1162:30:54;;7946:20094:53;-1:-1:-1;7946:20094:53;;;;;;;;;:::i;:::-;1162:30:54;:11;;-1:-1:-1;;;;;1162:11:54;7946:20094:53;1162:30:54;;;;;;;;7946:20094:53;404:10:64;;:::i;1162:30:54:-;;;-1:-1:-1;1162:30:54;;;;;;:::i;:::-;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1162:30:54;;;9422:63:53;9461:24;-1:-1:-1;9461:24:53;7946:20094;;;-1:-1:-1;9461:24:53;7946:20094;;;;;-1:-1:-1;;7946:20094:53;;;;;;;1897:68:6;7946:20094:53;;;;;:::i;:::-;-1:-1:-1;;;;;7946:20094:53;;;;;;:::i;:::-;;-1:-1:-1;7946:20094:53;1897:68:6;7946:20094:53;;;-1:-1:-1;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;1897:68:6;7946:20094:53;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;7946:20094:53;;;;;:::i;:::-;;;;-1:-1:-1;;;;;7946:20094:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;:::i;:::-;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;1089:20:87;7946:20094:53;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;-1:-1:-1;7946:20094:53;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;7946:20094:53;;;;:::o;:::-;;;:::o;635:23:61:-;;;;;;7946:20094:53;;635:23:61;;;;;;;;:::i;1388:241:56:-;1536:13;1553:16;1536:33;1553:16;;1572:24;1388:241;:::o;1536:86::-;7946:20094:53;;1816:66:56;;;7946:20094:53;1075:80:56;7946:20094:53;;1839:12:56;7946:20094:53;1075:80:56;;7946:20094:53;1536:13:56;1075:80;;;7946:20094:53;1876:4:56;1075:80;;;7946:20094:53;1075:80:56;1816:66;;;;;;:::i;:::-;7946:20094:53;1806:77:56;;1388:241;:::o;7946:20094:53:-;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;1327:149:6;-1:-1:-1;7946:20094:53;1427:8:6;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;-1:-1:-1;7946:20094:53;;;1418:36:6;1410:59;1418:36;;;1410:59;:::i;27144:201:53:-;-1:-1:-1;7946:20094:53;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;27274:12;7946:20094;;;-1:-1:-1;7946:20094:53;;1866:90:87;;;-1:-1:-1;7946:20094:53;27315:8;7946:20094;;;-1:-1:-1;7946:20094:53;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;27144:201;:::o;7946:20094::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;7946:20094:53;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;527:274:63:-;-1:-1:-1;;;;;7946:20094:53;;642:41:63;7946:20094:53;642:41:63;;7946:20094:53;;;;;;:::i;:::-;;;642:41:63;;7946:20094:53;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;642:11:63;:41;:11;7946:20094:53;-1:-1:-1;;;;;642:11:63;7946:20094:53;642:41:63;;7946:20094:53;;642:41:63;;;527:274;-1:-1:-1;638:157:63;;762:22;769:15;762:22;:::o;642:41::-;;;;;7946:20094:53;642:41:63;7946:20094:53;642:41:63;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;993:141:60;-1:-1:-1;;;;;1056:5:60;7946:20094:53;1034:10:60;:28;;:66;;;993:141;1030:97;;993:141::o;1030:97::-;1109:18;;;;;;1034:66;1088:11;-1:-1:-1;;;;;1088:11:60;7946:20094:53;1034:10:60;1066:34;;1034:66;;661:303:66;;-1:-1:-1;;;;;830:1:66;7946:20094:53;;;;;;-1:-1:-1;7946:20094:53;869:6:66;7946:20094:53;;;-1:-1:-1;7946:20094:53;;765:1:66;7946:20094:53;-1:-1:-1;7946:20094:53;;;;-1:-1:-1;7946:20094:53;;;;869:29:66;7946:20094:53;;;912:13:66;:18;908:49;;661:303::o;908:49::-;939:18;-1:-1:-1;939:18:66;;-1:-1:-1;939:18:66;3768:156:57;;-1:-1:-1;;;;;3768:156:57;;7946:20094:53;-1:-1:-1;7946:20094:53;3849:11:57;7946:20094:53;;3849:25:57;7946:20094:53;;-1:-1:-1;7946:20094:53;635:23:61;-1:-1:-1;;;;;7946:20094:53;635:23:61;;;;;;;;3849:25:57;7946:20094:53;;;3889:28:57;-1:-1:-1;3889:28:57;;3768:156::o;1947:745:56:-;;2155:18;;:::i;:::-;2183:503;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1947:745::o;7946:20094:53:-;;;;;;;;;;;;;;;;;:::o;625:68:4:-;;;;;;;;;;;7946:20094:53;;625:68:4;7946:20094:53;625:68:4;;7946:20094:53;625:68:4;;;;:::o;:::-;;:::i;:::-;;1043:2;625:68;;;;1043:2;625:68;;:::o;700:1109::-;;863:25;;;;933:2;913:22;;933:2;;964:41;1429:24;964:41;1429:24;964:41;1027:20;1033:13;;964:41;-1:-1:-1;964:41:4;;;;;:::i;:::-;955:50;;1033:13;;:::i;:::-;;625:68;;;;1033:13;625:68;;;;1027:20;909:490;;7946:20094:53;;1429:24:4;;;;625:68;;;;7946:20094:53;625:68:4;;;;;7946:20094:53;;;;625:68:4;;;;;;;7946:20094:53;625:68:4;7946:20094:53;625:68:4;1429:24;;;;;;;;;;;;-1:-1:-1;;;;;;1429:24:4;7946:20094:53;1471:20:4;;;1467:51;;-1:-1:-1;;;;;7946:20094:53;1536:23:4;1532:51;;700:1109::o;1532:51::-;1568:15;-1:-1:-1;1568:15:4;;-1:-1:-1;1568:15:4;1467:51;1500:18;-1:-1:-1;1500:18:4;;-1:-1:-1;1500:18:4;909:490;1072:22;1092:2;1072:22;;1092:2;;1429:24;1180:41;;;-1:-1:-1;1180:41:4;1429:24;1180:41;;;;:::i;:::-;1170:51;;1243:19;1284:30;:25;1298:9;626:66;1243:19;;1298:9;7946:20094:53;;;;1298:9:4;7946:20094:53;;;;1284:25:4;:30;:::i;:::-;1068:331;909:490;;1068:331;1360:24;-1:-1:-1;1360:24:4;;-1:-1:-1;1360:24:4;859:944;7946:20094:53;;1634:57:4;7946:20094:53;-1:-1:-1;;;;;1634:57:4;7946:20094:53;;;1634:57:4;;;;;;;7946:20094:53;1634:57:4;;;;;;:::i;:::-;;7946:20094:53;;1634:57:4;;;;;;;7946:20094:53;1634:57:4;7946:20094:53;1634:57:4;-1:-1:-1;1634:57:4;;;859:944;7946:20094:53;;1709:48:4;1705:87;;700:1109::o;1705:87::-;1766:26;-1:-1:-1;1766:26:4;1634:57;-1:-1:-1;1766:26:4;1634:57;;;;;;;;;;;;;;:::i;:::-;;;;27666:372:53;;;15392:25:41;27666:372:53;357:173:50;27666:372:53;2447:609:37;;;;;;;;;;;;;;;27903:4:53;2447:609:37;;-1:-1:-1;2447:609:37;;;;;;;;;;;;;;;;;357:173:50;15392:25:41;:::i;:::-;2447:609:37;1100:1:41;;;;;;;2447:609:37;7946:20094:53;;2447:609:37;15672:45:41;;;7946:20094:53;;;1100:1:41;;;7946:20094:53;;;;12432:22:41;;2447:609:37;;15672:45:41;7946:20094:53;1100:1:41;;;15672:45;1100:1;15672:45;7946:20094:53;15662:56:41;;2447:609:37;7946:20094:53;12432:22:41;;;;7946:20094:53;12432:22:41;;;;;7946:20094:53;;;;;;;;12432:22:41;;27971:11:53;-1:-1:-1;;;;;27971:11:53;7946:20094;12432:22:41;;;;;;7946:20094:53;12432:22:41;-1:-1:-1;12432:22:41;;;7946:20094:53;;27666:372;:::o;12432:22:41:-;;;;2447:609:37;12432:22:41;2447:609:37;12432:22:41;;;;;;;;:::i;:::-;;;;;:::i;:::-;7946:20094:53;27666:372;:::o;12432:22:41:-;;;;;417:66:33;;;;;;;;;;;:::o;2217:141:45:-;7946:20094:53;-1:-1:-1;;;;;2217:141:45;2305:39;7946:20094:53;;2305:39:45;;;;7946:20094:53;2305:39:45;;417:66:33;2305:39:45;;;7946:20094:53;;2305:39:45;;;;;;;-1:-1:-1;2305:39:45;;;2217:141;2305:46;;;2217:141;:::o;2305:39::-;;;;7946:20094:53;2305:39:45;7946:20094:53;2305:39:45;;;;;;;:::i;:::-;;;;7946:20094:53;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;2550:800:61;-1:-1:-1;;;;;2634:19:61;;;7946:20094:53;;1788:10:61;7946:20094:53;;;;;;;2634:19:61;7946:20094:53;2668:28:61;;;2664:56;;-1:-1:-1;7946:20094:53;;;26686:12;7946:20094;;;;;;;2966:84:87;;7946:20094:53;;;2773:19:61;;7946:20094:53;;1788:10:61;7946:20094:53;;;;;;;;2807:32:61;;2803:480;;2550:800;3298:45;655:1;3298:45;;2550:800::o;2803:480::-;3110:9;3122:19;3110:31;;;3106:73;;3197:64;;;;;655:1;7946:20094:53;;3197:64:61;;7946:20094:53;3197:64:61;;;;;;;;;;;7946:20094:53;;;;;;;;3197:64:61;;;;;;2803:480;;;;3197:64;;;655:1;3197:64;;;:::i;:::-;;;;3106:73;3143:34;:::i;2664:56::-;2705:15;655:1;2705:15;;655:1;2705:15;3930:236:57;-1:-1:-1;;;;;4049:16:57;;;:::i;:::-;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;;4038:27:57;;;:62;;;;;3930:236;4038:121;;;;;4031:128;;3930:236;:::o;4038:121::-;7946:20094:53;4133:16:57;;;-1:-1:-1;;;;;4133:16:57;4116:43;4133:16;;:::i;:::-;7946:20094:53;-1:-1:-1;7946:20094:53;4116:16:57;7946:20094:53;;;-1:-1:-1;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;4116:43:57;7946:20094:53;;3930:236:57;:::o;4038:62::-;7946:20094:53;;;;-1:-1:-1;7946:20094:53;4069:11:57;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;-1:-1:-1;7946:20094:53;;;4069:31:57;4038:62;;;;4610:314:61;4713:18;;:23;4709:67;;4786:132;4735:1;4786:132;;;;;;;;;;;;4610:314;:::o;4709:67::-;4738:25;4735:1;814:96:26;;4735:1:61;814:96:26;3508:1663;3741:1424;;;;;-1:-1:-1;;;;;3741:1424:26;;;3710:21;3741:1424;;;;;;;2046:60:61;3741:1424:26;;;;;;;;;;;;;;;;;;;;;;;;;;;2220:29:61;3741:1424:26;;;;;;;;;;;;;;;3508:1663;3741:1424;;;;;-1:-1:-1;;;;;3741:1424:26;;;3710:21;3741:1424;;;;;;;2238:1774:49;3741:1424:26;;;;;;;;;;;;;;;;;;;;;;;;;;;4268:28:49;3741:1424:26;;;;;;;;;;;;;;;3508:1663;3741:1424;;;;;-1:-1:-1;;;;;3741:1424:26;;;3710:21;3741:1424;;;;;;;7946:20094:53;3741:1424:26;;;;;;;;;;;;;;;;;;;;;;7946:20094:53;3741:1424:26;;;;2163:29:49;3741:1424:26;;;;;;;;;;;;;;;3508:1663;3741:1424;;;;;-1:-1:-1;;;;;3741:1424:26;;;3710:21;3741:1424;;;;;;;3819:86:61;3741:1424:26;;;;;;;;;;;;;;;;;;;;;;;;;;;4012:33:61;3741:1424:26;;;;;;;;;;;;;;;2829:198:57;7946:20094:53;-1:-1:-1;;;;;2829:198:57;2979:41;2829:198;7946:20094:53;;;-1:-1:-1;7946:20094:53;2920:16:57;7946:20094:53;;2920:33:57;7946:20094:53;;-1:-1:-1;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;2920:33:57;7946:20094:53;;;;;;;;;;;;;;;;;;;;2979:41:57;;2829:198::o;474:117:85:-;7946:20094:53;522:63:85;;474:117::o;1752:426:54:-;;;;;1907:27;;;1903:61;;2002:1;2031:13;2005:24;;;;;;7946:20094:53;2083:20:54;2141:19;625:68:4;;;2141:19:54;;;;;:::i;:::-;2083:20;;625:68:4;;2141:19:54;:::i;:::-;7946:20094:53;1980:23:54;;2005:24;;;;;;;1752:426::o;1903:61::-;1943:21;;;;;;753:163:26;3143:23:61;814:96:26;;;;;11093:4967:53;;;;1272:4:81;11195:23:53;;1272:4:81;;;11238:36:53;;;11418;;;16177:795;11418:36;;:::i;:::-;16177:795;;;;;;;;:::i;11234:2586::-;735:4:81;11584:48:53;;735:4:81;;11757:48:53;;;17060:1303;11757:48;;:::i;:::-;17060:1303;;;;;:::i;11580:2240::-;562:4:81;11934:36:53;;562:4:81;;12114:36:53;;;18480:716;12114:36;;:::i;:::-;18480:716;;;;;;;;:::i;11930:1890::-;614:4:81;12280:31:53;;614:4:81;;12671:25:53;;12786:20;12671:25;12808:8;12671:25;;:::i;:::-;12786:20;;;;;;;;;;;;:::i;:::-;12808:8;;:::i;12276:1544::-;799:4:81;12866:43:53;;799:4:81;;13230:35:53;;13354:20;13230:35;13376:8;13230:35;;:::i;:::-;13354:20;;;;;;;;;:::i;:::-;13376:8;;:::i;12862:958::-;13434:31;666:4:81;13434:31:53;;13430:390;;12862:958;;16028:25;12862:958;;11191:4821;16028:25;;;;7946:20094;;;;13430:390;21317:1611;13690:25;;;;;;:::i;:::-;21317:1611;;;;;:::i;11191:4821::-;1371:4:81;13854:29:53;;1371:4:81;;13946:27:53;;;14014:9;13946:27;;:::i;:::-;14014:9;;:::i;13850:2152::-;1574:4:81;14073:27:53;;1574:4:81;;14182:37:53;;14269:24;14182:37;14269:24;14182:37;;:::i;:::-;14269:24;;;;;:::i;:::-;;;:::i;14069:1933::-;1272:4:81;14343:24:53;;1272:4:81;;14443:37:53;14540:34;14443:37;14516:22;14443:37;14540:34;14443:37;;:::i;:::-;14516:22;;;;;;;;:::i;:::-;14540:34;;:::i;:::-;;;:::i;14339:1663::-;1428:4:81;14624:22:53;;1428:4:81;;14723:40:53;14797:24;14723:40;14823:32;14723:40;14823:32;14723:40;;:::i;:::-;14797:24;;;;;;:::i;:::-;14823:32;;:::i;:::-;;;:::i;14620:1382::-;1628:4:81;14905:32:53;;1628:4:81;;14977:23:53;;;15025:8;14977:23;;:::i;:::-;15025:8;:::i;14901:1101::-;1680:4:81;15083:31:53;;1680:4:81;;15175:33:53;;;15249:9;15175:33;;:::i;:::-;15249:9;;:::i;15079:923::-;1724:4:81;15308:23:53;;1724:4:81;;15385:33:53;;15453:17;15385:33;15453:17;15385:33;;:::i;:::-;15453:17;;;;:::i;:::-;;;:::i;15304:698::-;1768:4:81;15520:22:53;;1768:4:81;;15579:22:53;;15625:89;15579:22;15625:89;15579:22;;:::i;:::-;-1:-1:-1;;;;;15706:5:53;7946:20094;15625:89;;:::i;:::-;;:::i;15516:486::-;15764:24;1813:4:81;15764:24:53;;15760:242;;15516:486;;16028:25;15516:486;;11191:4821;;15760:242;15873:89;15825:22;;15873:89;15825:22;;;;:::i;:::-;-1:-1:-1;;;;;15916:5:53;7946:20094;15873:89;:::i;:::-;;:::i;14252:322:82:-;;14347:221;-1:-1:-1;14347:221:82;;;14252:322;:::o;4841:957:55:-;5153:38;4841:957;5185:4;5153:38;;:::i;:::-;678:66:80;5205:42:55;;5201:150;;5364:36;;5360:349;;4841:957;5722:16;;5718:50;;4841:957;:::o;5718:50::-;5747:21;7946:20094:53;5747:21:55;;7946:20094:53;5747:21:55;5360:349;5670:28;;;7946:20094:53;5670:28:55;:::i;:::-;5360:349;;;5201:150;5326:14;;;:::o;4841:957::-;;5153:38;5185:4;7946:20094:53;5153:38:55;:::i;:::-;5205:42;678:66:80;5205:42:55;;5201:150;;5364:36;;5360:349;;4841:957;5722:16;;;5718:50;;4841:957;:::o;5360:349::-;5670:28;;;;;:::i;:::-;5360:349;;;;5201:150;5326:14;;;;:::o;890:97:60:-;946:10;942:38;;890:97;:::o;942:38::-;-1:-1:-1;;;;;958:5:60;7946:20094:53;958:22:60;;;;;;955:1;7946:20094:53;958:22:60;7946:20094:53;;;;958:22:60;;;;;7946:20094:53;958:22:60;;;;;7946:20094:53;958:22:60;;;;;;;;890:97;:::o;958:22::-;955:1;958:22;;;:::i;698:103::-;752:10;748:46;;698:103;:::o;748:46::-;-1:-1:-1;;;;;764:5:60;7946:20094:53;764:30:60;;;;;761:1;7946:20094:53;764:30:60;7946:20094:53;;764:30:60;;;;7946:20094:53;764:30:60;;;;;;;;;;698:103;:::o;12574:447:82:-;;;12729:286;-1:-1:-1;12729:286:82;;;;;;;;12574:447;:::o;2964:323:54:-;-1:-1:-1;;;;;7946:20094:53;;885:1:80;3052:39:54;;885:1:80;;661:64:85;;;;3107:18:54;:::o;3048:233::-;1034:1:80;3146:41:54;1034:1:80;;3218:4:54;;3203:20;:::o;24828:172:53:-;;24912:24;;;:::i;:::-;24950:11;;24946:47;;24828:172;;;:::o;24946:47::-;24985:7;;;:::i;24332:400::-;;24427:24;;;:::i;:::-;24465:10;;;24461:23;;24581:18;;;;-1:-1:-1;;;;;24615:11:53;7946:20094;24615:34;;;;;;24474:1;7946:20094;;;;;24615:34;;;;;;7946:20094;24615:34;;7946:20094;24615:34;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;24615:34;;;;;;;;;;24577:149;24332:400::o;24615:34::-;;;24474:1;24615:34;;;:::i;24577:149::-;24709:5;499:12:64;661:64:85;;24709:5:53;;:::i;24461:23::-;24477:7;;;:::o;7946:20094::-;;;;;;;;;:::o;23454:661::-;23712:50;23746:4;;23712:11;:50;:::i;:::-;661:64:85;;;-1:-1:-1;23862:17:53;;-1:-1:-1;;;24004:14:53;23996:23;24004:14;;:::i;23858:251::-;24075:22;;;;:::i;13116:531:82:-;;13294:347;-1:-1:-1;13294:347:82;;;;;;;;;;;;;13116:531;:::o;4181:249:55:-;;4286:36;;;4345:24;;;;:::i;4282:142::-;4400:13;;:::o;1270:173::-;;;1362:11;;1358:24;;-1:-1:-1;;;;;1391:11:55;7946:20094:53;1391:45:55;;;;;1372:1;7946:20094:53;;1391:45:55;7946:20094:53;-1:-1:-1;;;;;7946:20094:53;;;;1391:45:55;;;;;7946:20094:53;1391:45:55;;7946:20094:53;1391:45:55;;;7946:20094:53;;;;;;;;;;1391:45:55;;;;;;;;1270:173;:::o;1391:45::-;;;1372:1;1391:45;;;:::i;:::-;7946:20094:53;;;;;1270:173:55:o;3344:134:54:-;3430:41;;;661:64:85;;3344:134:54;:::o;3430:41::-;3466:4;3344:134;:::o;3760:359:55:-;;678:66:80;3867:42:55;;678:66:80;;3932:24:55;;;;:::i;3863:250::-;3977:36;;;4036:22;;;;:::i;1766:346::-;;1856:11;;1852:24;;-1:-1:-1;;;;;1886:11:55;7946:20094:53;1886:26:55;;;;;;7946:20094:53;;;1886:26:55;;-1:-1:-1;;;;;7946:20094:53;;1886:26:55;;;7946:20094:53;-1:-1:-1;7946:20094:53;;;-1:-1:-1;1886:26:55;;;;;;;;;1766:346;-1:-1:-1;;;;;;7946:20094:53;;1926:24:55;;7946:20094:53;;1966:35:55;7946:20094:53;1886:26:55;7946:20094:53;;1966:35:55;;;;7946:20094:53;1966:35:55;;;;;;;;;;1922:184;1766:346::o;1966:35::-;;;;;;;;;;;;;:::i;:::-;;890:97:60:o;1922:184:55:-;1866:1;2054:6;2075:20;2054:6;;;;;:::i;:::-;1886:26;7946:20094:53;;2075:20:55;;;;7946:20094:53;2075:20:55;;;;;;;;;;1922:184;1766:346::o;1886:26::-;;;1866:1;1886:26;;;:::i;:::-;;;;23226:222:53;;23351:25;23415;23226:222;23351:25;;;;:::i;:::-;23415;;;:::i;22934:286::-;;23189:23;22934:286;23128:23;661:64:85;;23128:23:53;;;;;:::i;:::-;23189;;;:::i;7339:532:82:-;;;7609:217;;;;;;;;;;;;7847:17;15527:941;;;;;;;;;;;;;;7609:217;15527:941;;;;;;;;;;;;7836:28;7339:532;:::o;9919:162:53:-;;;;;661:64:85;;10000:35:53;;;;:::i;:::-;9999:36;9995:68;;21536:31;;;;:::i;:::-;2057:106:87;;;;;;;;2264;;;;2057;2264;21606:67:53;21598:76;21606:67;;;;;;:::i;:::-;7946:20094;;;;21598:76;21701:16;;;;:::i;:::-;21764:21;-1:-1:-1;21764:21:53;;7946:20094;;27044:12;7946:20094;;;;;;;21764:21;7946:20094;21870:7;;;:::i;:::-;-1:-1:-1;21991:13:53;;21987:774;;9919:162;2478:89:87;;;;;;;;;;22819:102:53;;9919:162;;;;;;:::o;22819:102::-;22909:11;;;:::i;:::-;22819:102;;;;;;;21987:774;22210:237;22371:20;;;;;;22493:54;22371:20;22210:237;22369:23;22371:20;;;:::i;:::-;22369:23;:::i;:::-;1089:20:87;22210:237:53;1089:20:87;;:::i;:::-;22210:237:53;;7946:20094;;;;;;22210:237;7946:20094;;2264:106:87;22210:237:53;;7946:20094;;22210:237;;;;1089:20:87;22210:237:53;;;;1089:20:87;7946:20094:53;;22493:54;;;;;7946:20094;22493:54;;;;;;:::i;:::-;;:11;-1:-1:-1;;;;;;22493:11:53;7946:20094;22493:54;;;;;;-1:-1:-1;;;22493:54:53;;;21987:774;22461:86;;22682:28;22461:86;22739:10;22461:86;;22682:28;;:::i;:::-;22739:10;:::i;:::-;21987:774;;;;;;;;;22493:54;22682:28;22493:54;;22739:10;22493:54;;;;;;22210:237;22493:54;22210:237;22493:54;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;9995:68;-1:-1:-1;;;;;10044:19:53;;-1:-1:-1;10044:19:53;7946:20094;10044:19;7946:20094;;-1:-1:-1;10044:19:53;1089:20:87;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1089:20:87;;;7946:20094:53;;1089:20:87;;;7946:20094:53;1089:20:87;;;;7946:20094:53;;1089:20:87;;;7946:20094:53;1089:20:87;;;;;;;7946:20094:53;1089:20:87;;;;;7946:20094:53;1089:20:87;;;;;;;;:::i;6367:871:82:-;;;6799:393;;;;;;;;;;;;;;;;;;;;;;;;;7213:18;15527:941;;;;;;;;;;;;;;;;;;;;;;;;;;;7202:29;6367:871;:::o;7946:20094:53:-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;:::o;20457:795::-;;;21236:8;20457:795;;;;;;7946:20094;20873:273;20731:36;357:173:50;7946:20094:53;;;;:::i;:::-;357:173:50;20731:11:53;:36;:::i;:::-;20952:38;;;;;;:::i;:::-;21004;;;:::i;:::-;21056:33;7946:20094;;;;;:::i;:::-;21056:33;:::i;:::-;21118:17;21103:33;21118:17;;;7946:20094;;;;:::i;21103:33::-;20873:273;;:::i;:::-;7946:20094;21236:8;;:::i;5287:956:82:-;;;5740:458;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6218:18;15527:941;;;;;;;;;;;;;;;;;;;;;;;;;;;6207:29;5287:956;:::o;7946:20094:53:-;;;;;;;;;;;:::i;:::-;;635:23:61;-1:-1:-1;;;;;7946:20094:53;635:23:61;;;;;;;;7946:20094:53;;;;;;;;;;;;:::i;:::-;;635:23:61;-1:-1:-1;;;;;7946:20094:53;635:23:61;;;;;;;;7946:20094:53;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;635:23:61;-1:-1:-1;;;;;7946:20094:53;635:23:61;;;;;;;;19202:1249:53;;;;;;;;;;19631:13;7946:20094;;;;;19631:13;7946:20094;-1:-1:-1;;;;;7946:20094:53;;5317:16:6;5309:46;5317:16;;;5309:46;:::i;:::-;7946:20094:53;-1:-1:-1;7946:20094:53;5374:8:6;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;-1:-1:-1;7946:20094:53;;;;;19756:61;20301:81;5509:14:6;7946:20094:53;5509:14:6;;20433:10:53;5509:14:6;5546:17;5509:14;;20333:20:53;5509:14:6;-1:-1:-1;;;;;7946:20094:53;;;3526:10:6;7946:20094:53;;;;;;;5509:14:6;7946:20094:53;;;;;;5546:12:6;;7946:20094:53;;3081:8:6;7946:20094:53;;;;;;;5546:17:6;-1:-1:-1;5579:28:6;;;;7946:20094:53;;;;:::i;:::-;3670:266:87;7946:20094:53;357:173:50;3670:266:87;3442:500;357:173:50;7946:20094:53;3670:266:87;;;;;;;;;;3442:500;;19756:61:53;19827:21;;;;7946:20094;;27044:12;7946:20094;;;;;;;19827:21;7946:20094;1866:90:87;;;20098:16:53;7946:20094;;20098:16;;7946:20094;;;;20098:8;7946:20094;;;;;;;20098:16;:28;7946:20094;;;;;;;;5374:8:6;7946:20094:53;20098:33;20094:90;;19202:1249;20333:20;;;:::i;:::-;7946:20094;;;;:::i;:::-;20301:81;;:::i;:::-;20433:10;;:::i;20094:90::-;20147:16;7946:20094;20147:16;7946:20094;;;;20098:8;7946:20094;;;;;;;20147:16;7946:20094;:::i;:::-;20094:90;;;;7946:20094;;;;;;;;;;;;;;;;;;;;;;;3884:614:82;;;4178:275;;;;;;;;;;;;;;;;;4474:17;15527:941;;;;;;;;;;;;;;4178:275;15527:941;;;;;;;;;;;;4463:28;3884:614;:::o;9919:162:53:-;;;;;;;;;661:64:85;;10000:35:53;;;;:::i;:::-;9999:36;9995:68;;18748:31;;19121:28;18748:31;;18944:20;19178:10;18748:31;;18942:23;18748:31;18910:84;18748:31;;:::i;:::-;18944:20;;;;:::i;18942:23::-;18910:84;;:::i;:::-;19121:28;;:::i;9919:162::-;;;;;;;;661:64:85;;10000:35:53;;;;:::i;:::-;9999:36;9995:68;;17293:31;18345:10;17293:31;;18289:28;17293:31;;;18081:81;17293:31;;:::i;:::-;357:173:50;18113:20:53;7946:20094;17546:311;17404:36;357:173:50;;;17404:11:53;:36;:::i;:::-;2057:106:87;;;17633:45:53;2057:106:87;;;;;17633:45:53;:::i;:::-;17696;2264:106:87;;;2057;2264;17696:45:53;:::i;:::-;17759:33;-1:-1:-1;;;;;7946:20094:53;;;17759:33;:::i;:::-;17825:17;17810:33;-1:-1:-1;;;;;2264:106:87;17825:17:53;;7946:20094;;17810:33;:::i;17546:311::-;7946:20094;18113:20;:::i;18289:28::-;18345:10;:::i;9919:162::-;;;;;;;;;661:64:85;;10000:35:53;;;;:::i;:::-;9999:36;9995:68;;16445:31;;16898:28;16445:31;;16722:20;16954:10;16445:31;;;16690:81;16445:31;;:::i;:::-;16722:20;;;;:::i;14553:160:41:-;7946:20094:53;;14654:51:41;;;7946:20094:53;;;414:1:41;7946:20094:53;1100:1:41;;7946:20094:53;;14654:51:41;;;;;;:::i;4633:271:49:-;-1:-1:-1;;;;;7946:20094:53;;4732:24:49;;4779:13;;4772:20;:::o;4728:170::-;7946:20094:53;-1:-1:-1;;;;;4830:57:49;7946:20094:53;;;;;4830:57:49;;;;;7946:20094:53;4830:57:49;;7946:20094:53;4830:57:49;;;7946:20094:53;;4830:57:49;;;;;;;7946:20094:53;4830:57:49;;;4823:64;;:::o;4830:57::-;;;;7946:20094:53;4830:57:49;7946:20094:53;4830:57:49;;;;;;;:::i;2757:401:55:-;2864:50;2898:4;;2864:11;:50;:::i;:::-;2998:11;3008:1;2998:11;;2994:50;;3142:8;;;;:::i;2994:50::-;-1:-1:-1;;;;;3018:26:55;;3008:1;3018:26;7946:20094:53;3018:26:55;7946:20094:53;;3008:1:55;3018:26;4351:276:49;-1:-1:-1;;;;;7946:20094:53;;4439:24:49;;4486:21;;4479:28;:::o;4435:186::-;7946:20094:53;;;4545:65:49;;4604:4;4545:65;;;7946:20094:53;;4545:65:49;;7946:20094:53;;;;;;-1:-1:-1;;;;;7946:20094:53;4545:65:49;;;;;;;7946:20094:53;4545:65:49;;;4538:72;;:::o;1472:2873::-;;;;-1:-1:-1;;;;;7946:20094:53;;1769:24:49;;1809:163;-1:-1:-1;1809:163:49;;;2085:8;1809:163;;;;2085:8;;7946:20094:53;2085:8:49;2081:127;;1765:2574;1472:2873::o;2081:127::-;2163:29;:::i;1765:2574::-;2238:1774;;-1:-1:-1;;;;;2238:1774:49;;;;;;;;;;;;;;;-1:-1:-1;2238:1774:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:8;4120:209;;1765:2574;1472:2873::o;4120:209::-;-1:-1:-1;;;;;7946:20094:53;4268:28:49;:::i;3365:331:55:-;3474:50;3508:4;;3474:11;:50;:::i;:::-;3608:11;3618:1;3608:11;;3604:50;;3664:25;3365:331;:::o;3604:50::-;-1:-1:-1;;;;;3628:26:55;;3618:1;3628:26;7946:20094:53;3628:26:55;7946:20094:53;;3618:1:55;3628:26;1711:436:45;-1:-1:-1;;;;;1711:436:45;;;1853:233;1711:436;1853:233;-1:-1:-1;1853:233:45;;;;2117:21;1853:233;-1:-1:-1;1853:233:45;;7946:20094:53;2117:21:45;;;;;7946:20094:53;2117:21:45;;;;;7946:20094:53;;2117:21:45;;;;;;;-1:-1:-1;2117:21:45;;;2095:45;1711:436;:::o;25918:421:53:-;;;;-1:-1:-1;;;;;7946:20094:53;;26031:4;26014:22;26031:4;;26092:6;26078:11;;-1:-1:-1;;;;;26078:11:53;7946:20094;26092:6;;:::i;26010:323::-;26229:7;-1:-1:-1;;;;;26229:7:53;7946:20094;26229:93;;;;;7946:20094;;;26229:93;;-1:-1:-1;;;;;7946:20094:53;;;26229:93;;;7946:20094;26265:11;7946:20094;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7946:20094:53;;;;;;-1:-1:-1;;26229:93:53;;;;;;;;26010:323;25918:421::o;5620:371:6:-;7946:20094:53;-1:-1:-1;7946:20094:53;5690:8:6;7946:20094:53;;-1:-1:-1;;;;;;7946:20094:53;;;;;5713:42:6;5721:19;;;5713:42;:::i;:::-;7946:20094:53;;;5845:10:6;7946:20094:53;;;;;;;;;;;5892:12:6;;7946:20094:53;;3081:8:6;7946:20094:53;;;;;;;5892:12:6;7946:20094:53;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;5922:15:6;;7946:20094:53;;;;;;;;;;5922:15:6;7946:20094:53;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;;;;;;;;;5953:31:6;;;;5620:371::o;1776:151:39:-;;1879:1;1848:13;1875:5;1871:49;;1776:151::o;1871:49::-;1882:25;1879:1;814:96:26;;1879:1:39;814:96:26;1070:396:47;1447:15;1070:396;1430:15;1183:220;;;;;;;1430:15;:::i;:::-;1183:220;;;;;;;1447:15;:::i;:::-;553:115;;;1183:220;553:115;;1070:396;:::o;954:846:88:-;;;;;7946:20094:53;2052:83:47;;;1501:27:88;;;;;:::i;:::-;7946:20094:53;;;;;;1501:40:88;1497:144;;2241:89:47;7946:20094:53;2241:89:47;;;;;1654:27:88;;;;;:::i;:::-;7946:20094:53;;;;;;1654:40:88;1650:144;;954:846;;:::o;1650:144::-;1755:27;;7946:20094:53;1755:27:88;;:::i;:::-;1717:66;;;;;7946:20094:53;;;;;1717:66:88;;1497:144;7946:20094:53;1602:27:88;;;;:::i;3441:622:61:-;-1:-1:-1;7946:20094:53;;;3672:10:61;7946:20094:53;;;;;;;;;;;;;-1:-1:-1;;;;;7946:20094:53;;;;3921:8:61;;3800:106;;3441:622;;;;;;;;7946:20094:53;;3819:86:61;;7946:20094:53;3819:86:61;;;;;;7946:20094:53;;;;;;;;;;;;;;;;;;;3819:86:61;;;;;;:::i;3921:8::-;3917:140;;3441:622;:::o;3917:140::-;4012:33;:::i;1580:996:41:-;7946:20094:53;1580:996:41;1892:27;1841:25;-1:-1:-1;;;;;1580:996:41;;1841:25;:::i;:::-;7946:20094:53;;1892:27:41;;;;;7946:20094:53;1892:27:41;;;;;7946:20094:53;;1892:27:41;;;;;;;-1:-1:-1;1892:27:41;;;1580:996;2147:423;-1:-1:-1;;;;;2147:423:41;;;;;;;;;;;;;;;;;;;1580:996;:::o;1892:27::-;;;;;7946:20094:53;1892:27:41;7946:20094:53;1892:27:41;;;;;;;:::i;:::-;;;;;3149:4018:44;3297:459;;;;;;;;;;1317:6;3774:35;;3770:78;;6424:727;4356:13;;4383:160;;;;;;;4560:13;3297:459;4560:13;;4556:83;;3149:4018;4667:3;4657:13;;4653:83;;3149:4018;4764:3;4754:13;;4750:83;;3149:4018;4861:4;4851:14;;4847:84;;3149:4018;4959:4;4949:14;;4945:84;;3149:4018;5057:4;5047:14;;5043:84;;3149:4018;4383:160;5145:14;;5141:84;;3149:4018;5253:5;5243:15;;5239:85;;3149:4018;5352:5;5342:15;;5338:85;;3149:4018;5451:5;5441:15;;5437:85;;3149:4018;5550:5;5540:15;;5536:85;;3149:4018;5649:6;5639:16;;5635:86;;3149:4018;5749:6;5739:16;;5735:86;;3149:4018;5849:6;5839:16;;5835:86;;3149:4018;5949:6;5939:16;;5935:86;;3149:4018;6049:7;6039:17;;6035:86;;3149:4018;6149:7;6139:17;;6135:85;;3149:4018;6248:7;6238:17;;6234:83;;3149:4018;6345:7;6335:17;6331:78;;3149:4018;-1:-1:-1;;6424:727:44;;3149:4018;6424:727;4959:4;6424:727;3149:4018;:::o;6424:727::-;;;;;6331:78;6376:25;1317:6;;;7946:20094:53;;;6331:78:44;;6234:83;6279:30;1317:6;;;7946:20094:53;;;6234:83:44;;6135:85;1317:6;6180:32;1317:6;7946:20094:53;;6135:85:44;;;6035:86;1317:6;6080:33;1317:6;7946:20094:53;;6035:86:44;;;5935;1317:6;5979:34;1317:6;7946:20094:53;;5935:86:44;;;5835;1317:6;5879:34;1317:6;7946:20094:53;;5835:86:44;;;5735;1317:6;5779:34;1317:6;7946:20094:53;;5735:86:44;;;5635;1317:6;5679:34;1317:6;7946:20094:53;;5635:86:44;;;5536:85;1317:6;5579:34;1317:6;7946:20094:53;;5536:85:44;;;5437;1317:6;5480:34;1317:6;7946:20094:53;;5437:85:44;;;5338;1317:6;5381:34;1317:6;7946:20094:53;;5338:85:44;;;5239;1317:6;5282:34;1317:6;7946:20094:53;;5239:85:44;;;5141:84;1317:6;5183:34;1317:6;7946:20094:53;;5141:84:44;;;5043;1317:6;5085:34;1317:6;7946:20094:53;;5043:84:44;;;4945;1317:6;4987:34;1317:6;7946:20094:53;;4945:84:44;;;4847;1317:6;4889:34;1317:6;7946:20094:53;;4847:84:44;;;4750:83;1317:6;4791:34;1317:6;7946:20094:53;;4750:83:44;;;4653;1317:6;4694:34;1317:6;7946:20094:53;;4653:83:44;;;4556;1317:6;4597:34;1317:6;7946:20094:53;;4556:83:44;;;3770:78;3843:4;;:::i;2870:901:84:-;;-1:-1:-1;;;;;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;;3106:29:84;3102:98;;2870:901;-1:-1:-1;;;;;7946:20094:53;;;;;;;3215:29:84;;7946:20094:53;;3272:61:84;;;;;;:::i;3211:554::-;7946:20094:53;;;;;-1:-1:-1;;;;;7946:20094:53;;-1:-1:-1;3350:415:84;7946:20094:53;;;3419:60:84;;;;3514;3419;;;:::i;:::-;3514;;:::i;:::-;7946:20094:53;;;;;;3601:23:84;:49;7946:20094:53;;;3601:49:84;3350:415;2870:901::o;3350:415::-;3693:61;;;;;;:::i;3102:98::-;3170:30;3137:63;3102:98;;;25111:739:53;;;;25466:217;25111:739;25404:311;1089:20:87;;:::i;:::-;2057:106;;;;;;7946:20094:53;;2057:106:87;2264;;;;2057;2264;25466:217:53;;;7946:20094;25466:217;;;;1089:20:87;25466:217:53;;;;1089:20:87;7946:20094:53;;25404:311;;;;;7946:20094;25404:311;;;;;;:::i;:::-;;:11;25466:217;-1:-1:-1;;;;;25404:11:53;7946:20094;25404:311;;;;;;;25466:217;;;25404:311;;;25111:739;25372:343;;;2478:89:87;;;25726:118:53;;25111:739;;;:::o;25726:118::-;25821:11;;;:::i;25404:311::-;;;;;;;25466:217;25404:311;25466:217;25404:311;;;;;;;:::i;:::-;;;;;;2210:1207:88;;2052:83:47;;;7946:20094:53;;2241:89:47;7946:20094:53;2241:89:47;3100:11:88;3110:1;3100:11;;:54;;;2210:1207;3096:153;;3262:11;;3110:1;3262:11;;:54;;;2210:1207;3258:153;;2210:1207;;:::o;3258:153::-;3389:8;3373:26;3389:8;3339:61;3389:8;;:::i;3373:26::-;3339:61;3110:1;3339:61;7946:20094:53;;;;3177:61:88;7946:20094:53;;;;;;;3262:54:88;3306:8;7946:20094:53;3306:8:88;;;;:::i;:::-;7946:20094:53;;;;;3277:39:88;3262:54;;3096:153;3227:8;7946:20094:53;3227:8:88;3177:61;3227:8;;:::i;:::-;3177:61;3110:1;3177:61;7946:20094:53;;;;3177:61:88;7946:20094:53;;;;;;;;3100:54:88;3144:8;7946:20094:53;3144:8:88;;;:::i;:::-;7946:20094:53;;;;3115:39:88;3100:54;;1460:151:39;;7946:20094:53;;;1558:6:39;;;1554:50;;1460:151::o;1123:153::-;1204:1;7946:20094:53;;;1200:5:39;1196:49;;7946:20094:53;;1123:153:39;:::o;1357:223:26:-;3811:20:44;1431:143:26;;;;;;;;;1850:420:84;;-1:-1:-1;;;;;2168:85:84;1850:420;2168:73;1850:420;7946:20094:53;;;;;;2053:29:84;2049:98;;1850:420;335:27:28;7946:20094:53;2168:73:84;;:::i;:::-;:85;:::i;2049:98::-;;;;895:516;;1313:69;895:516;1313:81;895:516;-1:-1:-1;;;;;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;;1098:29:84;1094:98;;895:516;-1:-1:-1;;;;;7946:20094:53;1229:63:84;7946:20094:53;;;;;;1229:63:84;:::i;:::-;335:27:28;;7946:20094:53;1313:69:84;;:::i;1094:98::-;1162:30;1094:98;;4069:535:61;4263:132;4069:535;;7946:20094:53;-1:-1:-1;7946:20094:53;4217:10:61;7946:20094:53;;-1:-1:-1;;;;;7946:20094:53;-1:-1:-1;7946:20094:53;;;;;;4295:90:61;;7946:20094:53;4295:90:61;;;;;;7946:20094:53;;;;;;;;;;4295:90:61;;;;;;:::i;:::-;4263:132;;:::i;:::-;4410:8;4406:192;;4069:535;:::o;4406:192::-;4295:90;3741:1424:26;;;;7946:20094:53;3741:1424:26;;3710:21;3741:1424;;;;;;4295:90:61;;3741:1424:26;;;;7946:20094:53;3741:1424:26;;;;;;7946:20094:53;3741:1424:26;;;;4295:90:61;3741:1424:26;;;;-1:-1:-1;3741:1424:26;;;;4529:44:61;3741:1424:26;;;;;;;;;;;;;;;7946:20094:53;;;;:::o;741:4141:29:-;;1317:6:44;;;1347:147:29;;335:27:28;1347:147:29;;;;;;;;;;;;;1619:19;1611:28;1619:19;;;1611:28;:::i;:::-;1720:10;1716:177;;335:27:28;2224:95:29;;;7946:20094:53;;;;2716:31:29;2811:94;;;3776:1;1317:6:44;3757:1:29;1317:6:44;3756:21:29;1317:6:44;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;3254:96:29;;;;7946:20094:53;3254:96:29;;;2391:145;;;;;;1317:6:44;2391:145:29;;2977:82;3363:21;1317:6:44;741:4141:29;:::o;1716:177::-;1750:98;;;;1865:13;:::o;741:4141::-;;1317:6:44;;;1347:147:29;;;;;;;;;;;;;;;;1619:19;;335:27:28;1619:19:29;7946:20094:53;;;1720:10:29;1716:177;;335:27:28;2224:95:29;;2391:145;;;;;;1317:6:44;;2391:145:29;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;;1317:6:44;;;1347:147:29;;;;;;;;;;;;;;;;1619:19;1611:28;1619:19;;;1611:28;:::i;:::-;1720:10;1716:177;;2224:95;;;;7946:20094:53;;;;2716:31:29;2811:94;;;3776:1;1317:6:44;3757:1:29;1317:6:44;3756:21:29;1317:6:44;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;;;;3776:1:29;7946:20094:53;1317:6:44;3254:96:29;;;;7946:20094:53;3254:96:29;;;2391:145;;;;;;1317:6:44;2391:145:29;;2977:82;3363:21;1317:6:44;741:4141:29;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;790:155:39:-;;7946:20094:53;;;892:6:39;;;888:50;;790:155::o","linkReferences":{},"immutableReferences":{"10994":[{"start":5685,"length":32},{"start":8107,"length":32}],"13041":[{"start":9429,"length":32}],"13043":[{"start":9391,"length":32}],"13045":[{"start":9508,"length":32}],"13434":[{"start":2806,"length":32},{"start":3765,"length":32},{"start":4468,"length":32},{"start":6336,"length":32},{"start":7228,"length":32},{"start":7377,"length":32},{"start":8353,"length":32},{"start":8600,"length":32},{"start":10584,"length":32},{"start":10796,"length":32},{"start":12059,"length":32},{"start":15686,"length":32},{"start":15929,"length":32},{"start":16092,"length":32},{"start":16371,"length":32},{"start":17179,"length":32},{"start":17780,"length":32},{"start":19177,"length":32},{"start":19558,"length":32},{"start":19940,"length":32},{"start":20169,"length":32},{"start":20313,"length":32},{"start":22383,"length":32}],"13546":[{"start":5250,"length":32},{"start":10698,"length":32},{"start":14914,"length":32},{"start":15006,"length":32},{"start":15298,"length":32},{"start":15435,"length":32}],"13648":[{"start":5184,"length":32},{"start":12795,"length":32}],"14002":[{"start":924,"length":32},{"start":2574,"length":32},{"start":3529,"length":32},{"start":20218,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","WETH9()":"4aa4a4fc","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","getPoolAndPositionInfo(uint256)":"7ba03aad","getPositionLiquidity(uint256)":"1efeed33","initializePool((address,address,uint24,int24,address),uint160)":"f7020405","isApprovedForAll(address,address)":"e985e9c5","modifyLiquidities(bytes,uint256)":"dd46508f","modifyLiquiditiesWithoutUnlock(bytes,bytes[])":"4afe393c","msgSender()":"d737d0c7","multicall(bytes[])":"ac9650d8","name()":"06fdde03","nextTokenId()":"75794a3c","nonces(address,uint256)":"502e1a16","ownerOf(uint256)":"6352211e","permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit(address,uint256,uint256,uint256,bytes)":"0f5730f1","permit2()":"12261ee7","permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"002a3e3a","permitForAll(address,address,bool,uint256,uint256,bytes)":"3aea60f0","poolKeys(bytes25)":"86b6be7d","poolManager()":"dc4c90d3","positionInfo(uint256)":"89097a6a","revokeNonce(uint256)":"05c1ee20","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","subscribe(uint256,address,bytes)":"2b9261de","subscriber(uint256)":"16a24131","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenDescriptor()":"5a9d7a68","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","unlockCallback(bytes)":"91dd7346","unsubscribe(uint256)":"ad0b27fb","unsubscribeGasLimit()":"4767565f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"_poolManager\",\"type\":\"address\"},{\"internalType\":\"contract IAllowanceTransfer\",\"name\":\"_permit2\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_unsubscribeGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"contract IPositionDescriptor\",\"name\":\"_tokenDescriptor\",\"type\":\"address\"},{\"internalType\":\"contract IWETH9\",\"name\":\"_weth9\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"AlreadySubscribed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"BurnNotificationReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"DeadlinePassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"DeltaNotNegative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"DeltaNotPositive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEthSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"maximumAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountRequested\",\"type\":\"uint128\"}],\"name\":\"MaximumAmountExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"minimumAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountReceived\",\"type\":\"uint128\"}],\"name\":\"MinimumAmountInsufficient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"ModifyLiquidityNotificationReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoCodeSubscriber\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSelfPermit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonceAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPoolManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSubscribed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolManagerMustBeLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureDeadlineExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SubscriptionReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"action\",\"type\":\"uint256\"}],\"name\":\"UnsupportedAction\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"Subscription\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"Unsubscription\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"contract IWETH9\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPoolAndPositionInfo\",\"outputs\":[{\"components\":[{\"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\"}],\"internalType\":\"struct PoolKey\",\"name\":\"poolKey\",\"type\":\"tuple\"},{\"internalType\":\"PositionInfo\",\"name\":\"info\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPositionLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"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\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initializePool\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"unlockData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"modifyLiquidities\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"actions\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"params\",\"type\":\"bytes[]\"}],\"name\":\"modifyLiquiditiesWithoutUnlock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"permit2\",\"outputs\":[{\"internalType\":\"contract IAllowanceTransfer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"_permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitBatch\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitForAll\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes25\",\"name\":\"poolId\",\"type\":\"bytes25\"}],\"name\":\"poolKeys\",\"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\":[],\"name\":\"poolManager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positionInfo\",\"outputs\":[{\"internalType\":\"PositionInfo\",\"name\":\"info\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"revokeNonce\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newSubscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"subscribe\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"subscriber\",\"outputs\":[{\"internalType\":\"contract ISubscriber\",\"name\":\"subscriber\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenDescriptor\",\"outputs\":[{\"internalType\":\"contract IPositionDescriptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlockCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"unsubscribe\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unsubscribeGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"PoolManagerMustBeLocked()\":[{\"details\":\"This is to prevent hooks from being able to trigger notifications at the same time the position is being modified.\"}]},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"bytes32 The domain separator\"}},\"approve(address,uint256)\":{\"details\":\"override Solmate's ERC721 approve so approve() and permit() share the _approve method Passing a spender address of zero can be used to remove any outstanding approvals Throws error unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"id\":\"The tokenId of the NFT to approve\",\"spender\":\"The new approved NFT controller\"}},\"getPoolAndPositionInfo(uint256)\":{\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"returns\":{\"info\":\"PositionInfo a uint256 packed value holding information about the position including the range (tickLower, tickUpper)\",\"poolKey\":\"the pool key of the position\"}},\"getPositionLiquidity(uint256)\":{\"details\":\"this value can be processed as an amount0 and amount1 by using the LiquidityAmounts library\",\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"returns\":{\"liquidity\":\"the position's liquidity, as a liquidityAmount\"}},\"initializePool((address,address,uint24,int24,address),uint160)\":{\"details\":\"If the pool is already initialized, this function will not revert and just return type(int24).max\",\"params\":{\"key\":\"The PoolKey of the pool to initialize\",\"sqrtPriceX96\":\"The initial starting price of the pool, expressed as a sqrtPriceX96\"},\"returns\":{\"_0\":\"The current tick of the pool, or type(int24).max if the pool creation failed, or the pool already existed\"}},\"modifyLiquidities(bytes,uint256)\":{\"details\":\"This is the standard entrypoint for the PositionManager\",\"params\":{\"deadline\":\"is the deadline for the batched actions to be executed\",\"unlockData\":\"is an encoding of actions, and parameters for those actions\"}},\"modifyLiquiditiesWithoutUnlock(bytes,bytes[])\":{\"details\":\"This must be called by a contract that has already unlocked the v4 PoolManager\",\"params\":{\"actions\":\"the actions to perform\",\"params\":\"the parameters to provide for the actions\"}},\"msgSender()\":{\"details\":\"The other context functions, _msgData and _msgValue, are not supported by this contract In many contracts this will be the address that calls the initial entry point that calls `_executeActions` `msg.sender` shouldn't be used, as this will be the v4 pool manager contract that calls `unlockCallback` If using ReentrancyLock.sol, this function can return _getLocker()\"},\"multicall(bytes[])\":{\"details\":\"The `msg.value` is passed onto all subcalls, even if a previous subcall has consumed the ether. Subcalls can instead use `address(this).value` to see the available ETH, and consume it using {value: x}.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"this function is payable to allow multicall with NATIVE based actions\",\"params\":{\"owner\":\"the owner of the tokens\",\"permitSingle\":\"the permit data\",\"signature\":\"the signature of the permit; abi.encodePacked(r, s, v)\"},\"returns\":{\"err\":\"the error returned by a reverting permit call, empty if successful\"}},\"permit(address,uint256,uint256,uint256,bytes)\":{\"details\":\"payable so it can be multicalled with NATIVE related actions\",\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"nonce\":\"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word\",\"signature\":\"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\"}},\"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"this function is payable to allow multicall with NATIVE based actions\",\"params\":{\"_permitBatch\":\"a batch of approvals\",\"owner\":\"the owner of the tokens\",\"signature\":\"the signature of the permit; abi.encodePacked(r, s, v)\"},\"returns\":{\"err\":\"the error returned by a reverting permit call, empty if successful\"}},\"permitForAll(address,address,bool,uint256,uint256,bytes)\":{\"details\":\"payable so it can be multicalled with NATIVE related actions\",\"params\":{\"approved\":\"The permission to set on the operator\",\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"nonce\":\"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word\",\"operator\":\"The address that will be set as an operator for the owner\",\"owner\":\"The address that is setting the operator\",\"signature\":\"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)\"}},\"revokeNonce(uint256)\":{\"details\":\"Used in cases where a valid nonce has not been broadcasted onchain, and the owner wants to revoke the validity of the noncepayable so it can be multicalled with native-token related actions\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.Override Solmate's ERC721 setApprovalForAll so setApprovalForAll() and permit() share the _approveForAll method\",\"params\":{\"approved\":\"True if the operator is approved, false to revoke approval\",\"operator\":\"Address to add to the set of authorized operators\"}},\"subscribe(uint256,address,bytes)\":{\"details\":\"Calling subscribe when a position is already subscribed will revertpayable so it can be multicalled with NATIVE related actionswill revert if pool manager is locked\",\"params\":{\"data\":\"caller-provided data that's forwarded to the subscriber contract\",\"newSubscriber\":\"the address of the subscriber contract\",\"tokenId\":\"the ERC721 tokenId\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"overrides solmate transferFrom in case a notification to subscribers is neededwill revert if pool manager is locked\"},\"unlockCallback(bytes)\":{\"details\":\"We force the onlyPoolManager modifier by exposing a virtual function after the onlyPoolManager check.\",\"params\":{\"data\":\"The data that was passed to the call to unlock\"},\"returns\":{\"_0\":\"Any data that you want to be returned from the unlock call\"}},\"unsubscribe(uint256)\":{\"details\":\"Callers must specify a high gas limit (remaining gas should be higher than unsubscriberGasLimit) such that the subscriber can be notifiedpayable so it can be multicalled with NATIVE related actionsMust always allow a user to unsubscribe. In the case of a malicious subscriber, a user can always unsubscribe safely, ensuring liquidity is always modifiable.will revert if pool manager is locked\",\"params\":{\"tokenId\":\"the ERC721 tokenId\"}}},\"stateVariables\":{\"nextTokenId\":{\"details\":\"The ID of the next token that will be minted. Skips 0\",\"return\":\"uint256 The next token ID\",\"returns\":{\"_0\":\"uint256 The next token ID\"}},\"positionInfo\":{\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"return\":\"info a uint256 packed value holding information about the position including the range (tickLower, tickUpper)\",\"returns\":{\"info\":\"a uint256 packed value holding information about the position including the range (tickLower, tickUpper)\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AlreadySubscribed(uint256,address)\":[{\"notice\":\"Thrown when a tokenId already has a subscriber\"}],\"BurnNotificationReverted(address,bytes)\":[{\"notice\":\"Wraps the revert message of the subscriber contract on a reverting burn notification\"}],\"DeadlinePassed(uint256)\":[{\"notice\":\"Thrown when the block.timestamp exceeds the user-provided deadline\"}],\"DeltaNotNegative(address)\":[{\"notice\":\"Emitted trying to take a negative delta.\"}],\"DeltaNotPositive(address)\":[{\"notice\":\"Emitted trying to settle a positive delta.\"}],\"GasLimitTooLow()\":[{\"notice\":\"Thrown when a user specifies a gas limit too low to avoid valid unsubscribe notifications\"}],\"InputLengthMismatch()\":[{\"notice\":\"emitted when different numbers of parameters and actions are provided\"}],\"InsufficientBalance()\":[{\"notice\":\"Emitted when the contract does not have enough balance to wrap or unwrap.\"}],\"InvalidContractSignature()\":[{\"notice\":\"Thrown when the recovered contract signature is incorrect\"}],\"InvalidEthSender()\":[{\"notice\":\"Thrown when an unexpected address sends ETH to this contract\"}],\"InvalidSignature()\":[{\"notice\":\"Thrown when the recovered signer is equal to the zero address\"}],\"InvalidSignatureLength()\":[{\"notice\":\"Thrown when the passed in signature is not a valid length\"}],\"InvalidSigner()\":[{\"notice\":\"Thrown when the recovered signer does not equal the claimedSigner\"}],\"ModifyLiquidityNotificationReverted(address,bytes)\":[{\"notice\":\"Wraps the revert message of the subscriber contract on a reverting modify liquidity notification\"}],\"NoCodeSubscriber()\":[{\"notice\":\"Thrown when a subscriber does not have code\"}],\"NotApproved(address)\":[{\"notice\":\"Thrown when the caller is not approved to modify a position\"}],\"NotPoolManager()\":[{\"notice\":\"Thrown when the caller is not PoolManager\"}],\"NotSubscribed()\":[{\"notice\":\"Thrown when unsubscribing without a subscriber\"}],\"PoolManagerMustBeLocked()\":[{\"notice\":\"Thrown when calling transfer, subscribe, or unsubscribe when the PoolManager is unlocked.\"}],\"SubscriptionReverted(address,bytes)\":[{\"notice\":\"Wraps the revert message of the subscriber contract on a reverting subscription\"}],\"UnsupportedAction(uint256)\":[{\"notice\":\"emitted when an inheriting contract does not support an action\"}]},\"events\":{\"Subscription(uint256,address)\":{\"notice\":\"Emitted on a successful call to subscribe\"},\"Unsubscription(uint256,address)\":{\"notice\":\"Emitted on a successful call to unsubscribe\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"Returns the domain separator for the current chain.\"},\"WETH9()\":{\"notice\":\"The address for WETH9\"},\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"getPoolAndPositionInfo(uint256)\":{\"notice\":\"Returns the pool key and position info of a position\"},\"getPositionLiquidity(uint256)\":{\"notice\":\"Returns the liquidity of a position\"},\"initializePool((address,address,uint24,int24,address),uint160)\":{\"notice\":\"Initialize a Uniswap v4 Pool\"},\"modifyLiquidities(bytes,uint256)\":{\"notice\":\"Unlocks Uniswap v4 PoolManager and batches actions for modifying liquidity\"},\"modifyLiquiditiesWithoutUnlock(bytes,bytes[])\":{\"notice\":\"Batches actions for modifying liquidity without unlocking v4 PoolManager\"},\"msgSender()\":{\"notice\":\"function that returns address considered executor of the actions\"},\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"},\"nextTokenId()\":{\"notice\":\"Used to get the ID that will be used for the next minted liquidity position\"},\"nonces(address,uint256)\":{\"notice\":\"mapping of nonces consumed by each address, where a nonce is a single bit on the 256-bit bitmap\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"allows forwarding a single permit to permit2\"},\"permit(address,uint256,uint256,uint256,bytes)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"},\"permit2()\":{\"notice\":\"the Permit2 contract to forward approvals\"},\"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"allows forwarding batch permits to permit2\"},\"permitForAll(address,address,bool,uint256,uint256,bytes)\":{\"notice\":\"Set an operator with full permission to an owner's tokens via signature\"},\"poolManager()\":{\"notice\":\"The Uniswap v4 PoolManager contract\"},\"positionInfo(uint256)\":{\"notice\":\"Returns the position info of a position\"},\"revokeNonce(uint256)\":{\"notice\":\"Revoke a nonce by spending it, preventing it from being used again\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"subscribe(uint256,address,bytes)\":{\"notice\":\"Enables the subscriber to receive notifications for a respective position\"},\"subscriber(uint256)\":{\"notice\":\"Returns the subscriber for a respective position\"},\"unlockCallback(bytes)\":{\"notice\":\"Called by the pool manager on `msg.sender` when the manager is unlocked\"},\"unsubscribe(uint256)\":{\"notice\":\"Removes the subscriber from receiving notifications for a respective position\"},\"unsubscribeGasLimit()\":{\"notice\":\"Returns and determines the maximum allowable gas-used for notifying unsubscribe\"}},\"notice\":\"The PositionManager (PosM) contract is responsible for creating liquidity positions on v4. PosM mints and manages ERC721 tokens associated with each position.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v4-periphery/src/PositionManager.sol\":\"PositionManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":30000},\"remappings\":[\":@ensdomains/=lib/v4-periphery/lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/contracts/\",\":@uniswap/v2-core/=node_modules/@uniswap/v2-core/\",\":@uniswap/v3-core/=node_modules/@uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":@uniswap/v4-core/=lib/v4-periphery/lib/v4-core/\",\":@uniswap/v4-periphery/=lib/v4-periphery/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=lib/v4-periphery/lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/permit2/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/solmate/\",\":v3-periphery/=lib/v3-periphery/contracts/\",\":v4-core/=lib/v4-periphery/lib/v4-core/src/\",\":v4-periphery/=lib/v4-periphery/\"],\"viaIR\":true},\"sources\":{\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"lib/permit2/src/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0a546b8535127fb4a49d36d5f306fd5a8bbe6125a1852f935b9bb85a04c1acef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b99651e2df98e283a97c46d8d1ac4eff0d6a3618e25f7f85294472a670b541c\",\"dweb:/ipfs/QmYRy5G8fXE8BfmyvGEbESEYZPPg3zJEFxHzR5GJZEMMTk\"]},\"lib/permit2/src/libraries/SignatureVerification.sol\":{\"keccak256\":\"0x99f437ffe99aa1ff7885aec8b971f48efac00c6ebc59c02eec78c9ca850a5e30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9365414bdb67813d4ef6c89fa152dff05fc2a64992a1a4f212fa414dbdee3eab\",\"dweb:/ipfs/QmfJxSszF1rjmMoNXW5oQMo9gARMHAXYTu68fkZvdEu58i\"]},\"lib/solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]},\"lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0x4c9571aed0c2b6ef11832545554fc11ffdb03746daaf5c73683c00600bfc7ec0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e78b34b58ce9de91b91943b4f3cc3ce121d0b151e123e8a600ac5ef64d91db6c\",\"dweb:/ipfs/QmRkaQnPCYwLrXgbpGujJTx32PaZK63KSPJJV1XmnQuCMb\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xb29607eefac17cb3b0a6f7ca1225a4f5a4baf4873fd1689c770e1fa0b3465399\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1c9d83b6910d2cbd8b711438072b57f7feffcc18321330c0d83e73159c9c828\",\"dweb:/ipfs/QmZfkdqayzYHAiGXrXLXYNaiS6JXSQmKyJLDQHvaXYi5Y2\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x4bbb1e816dd67fd4e958518ef50d216fcdab19912ab98c28d4c5279890c48c2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eab2611adf69904cb0f326dbd82cdd6d1a09630dacace7f741e29c76836e41e8\",\"dweb:/ipfs/QmcCR78dZ8C7pF3DSDoWyYobX7aXkBNxbCmgenkqpgRrbT\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5\",\"dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV\"]},\"lib/v4-periphery/lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-periphery/lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-periphery/lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"lib/v4-periphery/lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"lib/v4-periphery/lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"lib/v4-periphery/src/PositionManager.sol\":{\"keccak256\":\"0x6996866c77410da122d307535083b01746eef470a914b12baedd0721ffd96a24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18d8f752af824da84d3dd826ac4f18a70ea1c94831473c2813825bdc271b0c20\",\"dweb:/ipfs/QmcyGxdkB2gFinYaKt9H9PdTcQoKZyo1hXjtaJ3krf5fPQ\"]},\"lib/v4-periphery/src/base/BaseActionsRouter.sol\":{\"keccak256\":\"0xca1ee500f88951ad351d18ba2adfb5fe23abef6d502f234ce5748a3497674a4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f03ab458be27c29cef1b7ace5b11517d3fef8bf6131af7dd80d6297c224cf71\",\"dweb:/ipfs/QmYoH6o8yeRzbeLoaMG9TjS8q2Fw7T1h4vXvvMnp3XfsUa\"]},\"lib/v4-periphery/src/base/DeltaResolver.sol\":{\"keccak256\":\"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36\",\"dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw\"]},\"lib/v4-periphery/src/base/EIP712_v4.sol\":{\"keccak256\":\"0x151e85890822c1b0fe85ec3c021826cb42f615e2b9d6fcdd79019681a6ee5588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df84221ba4fe59c8223e94bec954b7f7602d4ad81d2f0c046a67c21c1d24be\",\"dweb:/ipfs/QmbTUqqHxRxEDyrMPApozbC6DEYMZGa27dWu3KodNACiLy\"]},\"lib/v4-periphery/src/base/ERC721Permit_v4.sol\":{\"keccak256\":\"0xb1c3d4cc1fa0c7f9562674917d9ffdd119a1ccdb3adca44b2832d5c91c068125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://752a8a679a9cc9e56a8e95fc1fa1d8c39a951a479b6c0b1109238f73520045df\",\"dweb:/ipfs/QmRzLo9KRcJH38Fx2xvweVmvMbTRKzyDR7R7Fui4Ca9cma\"]},\"lib/v4-periphery/src/base/ImmutableState.sol\":{\"keccak256\":\"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337\",\"dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU\"]},\"lib/v4-periphery/src/base/Multicall_v4.sol\":{\"keccak256\":\"0x654c6e65bd9bbf12b2cc393f8523db04e85ec45e829200de3895709479d6d569\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7ee5441ed14cdad5328f8e844403c2969fe2ecd9d110d7b80954bfa41f52d69\",\"dweb:/ipfs/QmQ1r1qmGyg1JXUgmjzi3WxjAmkLtMpUVsRWfYJsRRo3sP\"]},\"lib/v4-periphery/src/base/NativeWrapper.sol\":{\"keccak256\":\"0xfb756bc69e401d621f615746d881cfef7e98f3f563775905a1eca79a074a35ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://507c9b3ddf79ec34b8ae472dfc4d6840343a9a172d7c6f33eec290e0078e9254\",\"dweb:/ipfs/QmWhGck33w1s343mtojttgisJcsdwDf6Ah6oTpjgsWcQWh\"]},\"lib/v4-periphery/src/base/Notifier.sol\":{\"keccak256\":\"0x5f2a29b2a528269643d026bf4698e6520eeb1e5fc773f9d5059b3e279a488bf6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63d5c541039f37ae89533a15fc311e3fec3d143fa11bac42e73964bdf74b3d06\",\"dweb:/ipfs/QmUrvqNYEYwEu1zRWLFVDUW2zEajbkNYxiNqUpc5aWx5ui\"]},\"lib/v4-periphery/src/base/Permit2Forwarder.sol\":{\"keccak256\":\"0xcdf793e6732cdf0c386f89573384032314b0893bf208b3d75ac71d3002674a3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f18d0be711c1d586854e2a78113bf84765e7158c9568b2c73f8750511a22ce7\",\"dweb:/ipfs/QmSe3zz9jvDZo2MqPgCpfNs3yA4xAWPB1deZBoRFzeZiN1\"]},\"lib/v4-periphery/src/base/PoolInitializer_v4.sol\":{\"keccak256\":\"0x068c85032e50ef6374958ff3e7dcc143527f669de1bbba831e552d033344a1e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://674c29491faef627b52cb81495bf3747cd7f7613e2ddcabb1dd258f93f966006\",\"dweb:/ipfs/Qmc1D31ubNDRdxVS6pxDzn7z8disSw7UScHu8rgfpxCAsz\"]},\"lib/v4-periphery/src/base/ReentrancyLock.sol\":{\"keccak256\":\"0x66dd19f8eb40b7a86afea0e5b1dcada6268041027b0dfc493b80ca1f66af217d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6d34517e2dd2c9cd03e16c5333defd003c134a4bff52ad95b673a5e8804609\",\"dweb:/ipfs/QmPSRdswfajCZCchH9j8rC7U3GLJ4w24gK35gxRVY3Qxz4\"]},\"lib/v4-periphery/src/base/SafeCallback.sol\":{\"keccak256\":\"0xd78b583df1b9ee06d58e83b84fc9f08971389b34dd34bc13db072e0c13c710da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0a47f4bcd6060c4462153b9a7c52a60a460ace91acb6ddd5492eab28ec26173\",\"dweb:/ipfs/QmdRCTRS1dhFjWEy6z577j4xz9J5HPfHBwcNzAic8G59oT\"]},\"lib/v4-periphery/src/base/UnorderedNonce.sol\":{\"keccak256\":\"0x0ec175bf2213d75606ebb770227e8622ae9666fbde8ff2d1682d85890b81676e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://079952902a4be56b5e963585349988fcbea853bf8271a5cb88e7629cafb06bcf\",\"dweb:/ipfs/Qmere81cd2Wq9Vq4rL5G1nW4Jv54YJeMr1oaej7468xrgi\"]},\"lib/v4-periphery/src/interfaces/IEIP712_v4.sol\":{\"keccak256\":\"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736\",\"dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR\"]},\"lib/v4-periphery/src/interfaces/IERC721Permit_v4.sol\":{\"keccak256\":\"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d\",\"dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk\"]},\"lib/v4-periphery/src/interfaces/IImmutableState.sol\":{\"keccak256\":\"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341\",\"dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq\"]},\"lib/v4-periphery/src/interfaces/IMulticall_v4.sol\":{\"keccak256\":\"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7\",\"dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ\"]},\"lib/v4-periphery/src/interfaces/INotifier.sol\":{\"keccak256\":\"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746\",\"dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV\"]},\"lib/v4-periphery/src/interfaces/IPermit2Forwarder.sol\":{\"keccak256\":\"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d\",\"dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9\"]},\"lib/v4-periphery/src/interfaces/IPoolInitializer_v4.sol\":{\"keccak256\":\"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92\",\"dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ\"]},\"lib/v4-periphery/src/interfaces/IPositionDescriptor.sol\":{\"keccak256\":\"0x5a4327e608b35ba2d3451c267b609336efbd780912080dbb1a21563db25c9768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c783c7a4834d610586ef6caf79806f4e339ad488046766d03fe3d014d11093e4\",\"dweb:/ipfs/QmcQWiNQz1hAcJRwFfw5NnSz6zcgAE5HytdVL8MAQJUrv4\"]},\"lib/v4-periphery/src/interfaces/IPositionManager.sol\":{\"keccak256\":\"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834\",\"dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc\"]},\"lib/v4-periphery/src/interfaces/ISubscriber.sol\":{\"keccak256\":\"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051\",\"dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw\"]},\"lib/v4-periphery/src/interfaces/IUnorderedNonce.sol\":{\"keccak256\":\"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d\",\"dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i\"]},\"lib/v4-periphery/src/interfaces/IV4Router.sol\":{\"keccak256\":\"0xc4133fae25e61cc2447d7331729f6035322d7c1fe26b39b225422bf98cc63459\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c24ff8428504e973e947a059f96289a66c520cd7f8ef47a3224f9cb6abdaf25\",\"dweb:/ipfs/QmVqxYnngWXXcCiuTC143vTEJrjZK5NXWB92pjvVbuJBQ5\"]},\"lib/v4-periphery/src/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xe88abf12501ac275619aec0687240a07d26968aecbbcdfea88ba8bbd5d6e5e14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7097065d4492b4eccb1a73f99af1e5bec45404c6b973b8f5965c4c91403f5f92\",\"dweb:/ipfs/QmZK8oEqmjmTqhBoh3D3fBpyKGkUEFnptY8xwH9xpNjDm2\"]},\"lib/v4-periphery/src/libraries/ActionConstants.sol\":{\"keccak256\":\"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2\",\"dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7\"]},\"lib/v4-periphery/src/libraries/Actions.sol\":{\"keccak256\":\"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98\",\"dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5\"]},\"lib/v4-periphery/src/libraries/CalldataDecoder.sol\":{\"keccak256\":\"0x26df49e13fb5410fd4db253cca877dfdfb3a1ba03e394d054c0e0514a88a56e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72a0c98c52171708f332f83d517deeb97fdd50ecf28f2510e1866e54593a6ff8\",\"dweb:/ipfs/QmY4LiDUfSKGj86nML7B6a8euiPciUqwYehasAyAVnMCHq\"]},\"lib/v4-periphery/src/libraries/ERC721PermitHash.sol\":{\"keccak256\":\"0xd8024f516738a1f968169875efd4ba803049c933cf6ea5e36189df9915f4e3f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58b45295f87c31f516a727a2a40ba2f34ac57ebd5520c42ea59946d2ffc0f5df\",\"dweb:/ipfs/QmW8xC2xS18r4yhGbhSJTN1DfCgPT6oKHxwwszutn2sPuz\"]},\"lib/v4-periphery/src/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ea74b89831877ffe657f8461164a01a6f3c7e46f415410854fca8d28a8cab53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4015f62e5e8aa154baa555dc39ce36b498e6d875a53f793d62b8556e6b97ccb\",\"dweb:/ipfs/QmUVHyEe3hZZZQum5ct6yDY8qduj62Ta7f7x5Kw95LpQbg\"]},\"lib/v4-periphery/src/libraries/Locker.sol\":{\"keccak256\":\"0x5c0859290a277fbfba8579b506426d3fc4b2ff7d8b691c03dd23aa85797fdae1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18ad9effea8da74b9988373dddddd6669f11701fc954f77d2cb58beb9a9cc3ad\",\"dweb:/ipfs/QmQdBMoXdVACo6k6rumWj15UPDCqGpWNSPvQbejxKuV9RJ\"]},\"lib/v4-periphery/src/libraries/PathKey.sol\":{\"keccak256\":\"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89\",\"dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg\"]},\"lib/v4-periphery/src/libraries/PositionInfoLibrary.sol\":{\"keccak256\":\"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6\",\"dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx\"]},\"lib/v4-periphery/src/libraries/SlippageCheck.sol\":{\"keccak256\":\"0x9b7872e403b417dfbcf9835b16109f80f7abed702652a9817e28f07189983b4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://911974b8e37b3be02150090b64d841fcc1153277d20f75315b3b8eb02c111e66\",\"dweb:/ipfs/QmRYe4UAYG5TNqB2ygM3n7e3GFMhJmW1c29WZjGDfGQyxQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPoolManager","name":"_poolManager","type":"address"},{"internalType":"contract IAllowanceTransfer","name":"_permit2","type":"address"},{"internalType":"uint256","name":"_unsubscribeGasLimit","type":"uint256"},{"internalType":"contract IPositionDescriptor","name":"_tokenDescriptor","type":"address"},{"internalType":"contract IWETH9","name":"_weth9","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"subscriber","type":"address"}],"type":"error","name":"AlreadySubscribed"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"BurnNotificationReverted"},{"inputs":[],"type":"error","name":"ContractLocked"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"DeadlinePassed"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"type":"error","name":"DeltaNotNegative"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"type":"error","name":"DeltaNotPositive"},{"inputs":[],"type":"error","name":"GasLimitTooLow"},{"inputs":[],"type":"error","name":"InputLengthMismatch"},{"inputs":[],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidContractSignature"},{"inputs":[],"type":"error","name":"InvalidEthSender"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"InvalidSignatureLength"},{"inputs":[],"type":"error","name":"InvalidSigner"},{"inputs":[{"internalType":"uint128","name":"maximumAmount","type":"uint128"},{"internalType":"uint128","name":"amountRequested","type":"uint128"}],"type":"error","name":"MaximumAmountExceeded"},{"inputs":[{"internalType":"uint128","name":"minimumAmount","type":"uint128"},{"internalType":"uint128","name":"amountReceived","type":"uint128"}],"type":"error","name":"MinimumAmountInsufficient"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"ModifyLiquidityNotificationReverted"},{"inputs":[],"type":"error","name":"NoCodeSubscriber"},{"inputs":[],"type":"error","name":"NoSelfPermit"},{"inputs":[],"type":"error","name":"NonceAlreadyUsed"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotApproved"},{"inputs":[],"type":"error","name":"NotPoolManager"},{"inputs":[],"type":"error","name":"NotSubscribed"},{"inputs":[],"type":"error","name":"PoolManagerMustBeLocked"},{"inputs":[],"type":"error","name":"SignatureDeadlineExpired"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"SubscriptionReverted"},{"inputs":[],"type":"error","name":"Unauthorized"},{"inputs":[{"internalType":"uint256","name":"action","type":"uint256"}],"type":"error","name":"UnsupportedAction"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"subscriber","type":"address","indexed":true}],"type":"event","name":"Subscription","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"subscriber","type":"address","indexed":true}],"type":"event","name":"Unsubscription","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WETH9","outputs":[{"internalType":"contract IWETH9","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolAndPositionInfo","outputs":[{"internalType":"struct PoolKey","name":"poolKey","type":"tuple","components":[{"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"}]},{"internalType":"PositionInfo","name":"info","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPositionLiquidity","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"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"}]},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"stateMutability":"payable","type":"function","name":"initializePool","outputs":[{"internalType":"int24","name":"","type":"int24"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes","name":"unlockData","type":"bytes"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"modifyLiquidities"},{"inputs":[{"internalType":"bytes","name":"actions","type":"bytes"},{"internalType":"bytes[]","name":"params","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"modifyLiquiditiesWithoutUnlock"},{"inputs":[],"stateMutability":"view","type":"function","name":"msgSender","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"word","type":"uint256"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permit"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple","components":[{"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}]},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}]},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permit","outputs":[{"internalType":"bytes","name":"err","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"permit2","outputs":[{"internalType":"contract IAllowanceTransfer","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct IAllowanceTransfer.PermitBatch","name":"_permitBatch","type":"tuple","components":[{"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}]},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}]},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permitBatch","outputs":[{"internalType":"bytes","name":"err","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permitForAll"},{"inputs":[{"internalType":"bytes25","name":"poolId","type":"bytes25"}],"stateMutability":"view","type":"function","name":"poolKeys","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":[],"stateMutability":"view","type":"function","name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"positionInfo","outputs":[{"internalType":"PositionInfo","name":"info","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"payable","type":"function","name":"revokeNonce"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"newSubscriber","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"subscribe"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"subscriber","outputs":[{"internalType":"contract ISubscriber","name":"subscriber","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenDescriptor","outputs":[{"internalType":"contract IPositionDescriptor","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlockCallback","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"unsubscribe"},{"inputs":[],"stateMutability":"view","type":"function","name":"unsubscribeGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"returns":{"_0":"bytes32 The domain separator"}},"approve(address,uint256)":{"details":"override Solmate's ERC721 approve so approve() and permit() share the _approve method Passing a spender address of zero can be used to remove any outstanding approvals Throws error unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"id":"The tokenId of the NFT to approve","spender":"The new approved NFT controller"}},"getPoolAndPositionInfo(uint256)":{"params":{"tokenId":"the ERC721 tokenId"},"returns":{"info":"PositionInfo a uint256 packed value holding information about the position including the range (tickLower, tickUpper)","poolKey":"the pool key of the position"}},"getPositionLiquidity(uint256)":{"details":"this value can be processed as an amount0 and amount1 by using the LiquidityAmounts library","params":{"tokenId":"the ERC721 tokenId"},"returns":{"liquidity":"the position's liquidity, as a liquidityAmount"}},"initializePool((address,address,uint24,int24,address),uint160)":{"details":"If the pool is already initialized, this function will not revert and just return type(int24).max","params":{"key":"The PoolKey of the pool to initialize","sqrtPriceX96":"The initial starting price of the pool, expressed as a sqrtPriceX96"},"returns":{"_0":"The current tick of the pool, or type(int24).max if the pool creation failed, or the pool already existed"}},"modifyLiquidities(bytes,uint256)":{"details":"This is the standard entrypoint for the PositionManager","params":{"deadline":"is the deadline for the batched actions to be executed","unlockData":"is an encoding of actions, and parameters for those actions"}},"modifyLiquiditiesWithoutUnlock(bytes,bytes[])":{"details":"This must be called by a contract that has already unlocked the v4 PoolManager","params":{"actions":"the actions to perform","params":"the parameters to provide for the actions"}},"msgSender()":{"details":"The other context functions, _msgData and _msgValue, are not supported by this contract In many contracts this will be the address that calls the initial entry point that calls `_executeActions` `msg.sender` shouldn't be used, as this will be the v4 pool manager contract that calls `unlockCallback` If using ReentrancyLock.sol, this function can return _getLocker()"},"multicall(bytes[])":{"details":"The `msg.value` is passed onto all subcalls, even if a previous subcall has consumed the ether. Subcalls can instead use `address(this).value` to see the available ETH, and consume it using {value: x}.","params":{"data":"The encoded function data for each of the calls to make to this contract"},"returns":{"results":"The results from each of the calls passed in via data"}},"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":{"details":"this function is payable to allow multicall with NATIVE based actions","params":{"owner":"the owner of the tokens","permitSingle":"the permit data","signature":"the signature of the permit; abi.encodePacked(r, s, v)"},"returns":{"err":"the error returned by a reverting permit call, empty if successful"}},"permit(address,uint256,uint256,uint256,bytes)":{"details":"payable so it can be multicalled with NATIVE related actions","params":{"deadline":"The deadline timestamp by which the call must be mined for the approve to work","nonce":"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word","signature":"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)","spender":"The account that is being approved","tokenId":"The ID of the token that is being approved for spending"}},"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":{"details":"this function is payable to allow multicall with NATIVE based actions","params":{"_permitBatch":"a batch of approvals","owner":"the owner of the tokens","signature":"the signature of the permit; abi.encodePacked(r, s, v)"},"returns":{"err":"the error returned by a reverting permit call, empty if successful"}},"permitForAll(address,address,bool,uint256,uint256,bytes)":{"details":"payable so it can be multicalled with NATIVE related actions","params":{"approved":"The permission to set on the operator","deadline":"The deadline timestamp by which the call must be mined for the approve to work","nonce":"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word","operator":"The address that will be set as an operator for the owner","owner":"The address that is setting the operator","signature":"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)"}},"revokeNonce(uint256)":{"details":"Used in cases where a valid nonce has not been broadcasted onchain, and the owner wants to revoke the validity of the noncepayable so it can be multicalled with native-token related actions"},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.Override Solmate's ERC721 setApprovalForAll so setApprovalForAll() and permit() share the _approveForAll method","params":{"approved":"True if the operator is approved, false to revoke approval","operator":"Address to add to the set of authorized operators"}},"subscribe(uint256,address,bytes)":{"details":"Calling subscribe when a position is already subscribed will revertpayable so it can be multicalled with NATIVE related actionswill revert if pool manager is locked","params":{"data":"caller-provided data that's forwarded to the subscriber contract","newSubscriber":"the address of the subscriber contract","tokenId":"the ERC721 tokenId"}},"transferFrom(address,address,uint256)":{"details":"overrides solmate transferFrom in case a notification to subscribers is neededwill revert if pool manager is locked"},"unlockCallback(bytes)":{"details":"We force the onlyPoolManager modifier by exposing a virtual function after the onlyPoolManager check.","params":{"data":"The data that was passed to the call to unlock"},"returns":{"_0":"Any data that you want to be returned from the unlock call"}},"unsubscribe(uint256)":{"details":"Callers must specify a high gas limit (remaining gas should be higher than unsubscriberGasLimit) such that the subscriber can be notifiedpayable so it can be multicalled with NATIVE related actionsMust always allow a user to unsubscribe. In the case of a malicious subscriber, a user can always unsubscribe safely, ensuring liquidity is always modifiable.will revert if pool manager is locked","params":{"tokenId":"the ERC721 tokenId"}}},"version":1},"userdoc":{"kind":"user","methods":{"DOMAIN_SEPARATOR()":{"notice":"Returns the domain separator for the current chain."},"WETH9()":{"notice":"The address for WETH9"},"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"getPoolAndPositionInfo(uint256)":{"notice":"Returns the pool key and position info of a position"},"getPositionLiquidity(uint256)":{"notice":"Returns the liquidity of a position"},"initializePool((address,address,uint24,int24,address),uint160)":{"notice":"Initialize a Uniswap v4 Pool"},"modifyLiquidities(bytes,uint256)":{"notice":"Unlocks Uniswap v4 PoolManager and batches actions for modifying liquidity"},"modifyLiquiditiesWithoutUnlock(bytes,bytes[])":{"notice":"Batches actions for modifying liquidity without unlocking v4 PoolManager"},"msgSender()":{"notice":"function that returns address considered executor of the actions"},"multicall(bytes[])":{"notice":"Call multiple functions in the current contract and return the data from all of them if they all succeed"},"nextTokenId()":{"notice":"Used to get the ID that will be used for the next minted liquidity position"},"nonces(address,uint256)":{"notice":"mapping of nonces consumed by each address, where a nonce is a single bit on the 256-bit bitmap"},"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":{"notice":"allows forwarding a single permit to permit2"},"permit(address,uint256,uint256,uint256,bytes)":{"notice":"Approve of a specific token ID for spending by spender via signature"},"permit2()":{"notice":"the Permit2 contract to forward approvals"},"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":{"notice":"allows forwarding batch permits to permit2"},"permitForAll(address,address,bool,uint256,uint256,bytes)":{"notice":"Set an operator with full permission to an owner's tokens via signature"},"poolManager()":{"notice":"The Uniswap v4 PoolManager contract"},"positionInfo(uint256)":{"notice":"Returns the position info of a position"},"revokeNonce(uint256)":{"notice":"Revoke a nonce by spending it, preventing it from being used again"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"subscribe(uint256,address,bytes)":{"notice":"Enables the subscriber to receive notifications for a respective position"},"subscriber(uint256)":{"notice":"Returns the subscriber for a respective position"},"unlockCallback(bytes)":{"notice":"Called by the pool manager on `msg.sender` when the manager is unlocked"},"unsubscribe(uint256)":{"notice":"Removes the subscriber from receiving notifications for a respective position"},"unsubscribeGasLimit()":{"notice":"Returns and determines the maximum allowable gas-used for notifying unsubscribe"}},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-periphery/lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/contracts/","@uniswap/v2-core/=node_modules/@uniswap/v2-core/","@uniswap/v3-core/=node_modules/@uniswap/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","@uniswap/v4-core/=lib/v4-periphery/lib/v4-core/","@uniswap/v4-periphery/=lib/v4-periphery/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=lib/v4-periphery/lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/permit2/lib/openzeppelin-contracts/","permit2/=lib/permit2/","solmate/=lib/solmate/","v3-periphery/=lib/v3-periphery/contracts/","v4-core/=lib/v4-periphery/lib/v4-core/src/","v4-periphery/=lib/v4-periphery/"],"optimizer":{"enabled":true,"runs":30000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v4-periphery/src/PositionManager.sol":"PositionManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29","urls":["bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0","dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138","urls":["bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72","dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk"],"license":"MIT"},"lib/permit2/src/interfaces/IERC1271.sol":{"keccak256":"0x0a546b8535127fb4a49d36d5f306fd5a8bbe6125a1852f935b9bb85a04c1acef","urls":["bzz-raw://4b99651e2df98e283a97c46d8d1ac4eff0d6a3618e25f7f85294472a670b541c","dweb:/ipfs/QmYRy5G8fXE8BfmyvGEbESEYZPPg3zJEFxHzR5GJZEMMTk"],"license":"MIT"},"lib/permit2/src/libraries/SignatureVerification.sol":{"keccak256":"0x99f437ffe99aa1ff7885aec8b971f48efac00c6ebc59c02eec78c9ca850a5e30","urls":["bzz-raw://9365414bdb67813d4ef6c89fa152dff05fc2a64992a1a4f212fa414dbdee3eab","dweb:/ipfs/QmfJxSszF1rjmMoNXW5oQMo9gARMHAXYTu68fkZvdEu58i"],"license":"MIT"},"lib/solmate/src/tokens/ERC721.sol":{"keccak256":"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d","urls":["bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403","dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK"],"license":"AGPL-3.0-only"},"lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0x4c9571aed0c2b6ef11832545554fc11ffdb03746daaf5c73683c00600bfc7ec0","urls":["bzz-raw://e78b34b58ce9de91b91943b4f3cc3ce121d0b151e123e8a600ac5ef64d91db6c","dweb:/ipfs/QmRkaQnPCYwLrXgbpGujJTx32PaZK63KSPJJV1XmnQuCMb"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xb29607eefac17cb3b0a6f7ca1225a4f5a4baf4873fd1689c770e1fa0b3465399","urls":["bzz-raw://d1c9d83b6910d2cbd8b711438072b57f7feffcc18321330c0d83e73159c9c828","dweb:/ipfs/QmZfkdqayzYHAiGXrXLXYNaiS6JXSQmKyJLDQHvaXYi5Y2"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x4bbb1e816dd67fd4e958518ef50d216fcdab19912ab98c28d4c5279890c48c2c","urls":["bzz-raw://eab2611adf69904cb0f326dbd82cdd6d1a09630dacace7f741e29c76836e41e8","dweb:/ipfs/QmcCR78dZ8C7pF3DSDoWyYobX7aXkBNxbCmgenkqpgRrbT"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a","urls":["bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5","dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"lib/v4-periphery/src/PositionManager.sol":{"keccak256":"0x6996866c77410da122d307535083b01746eef470a914b12baedd0721ffd96a24","urls":["bzz-raw://18d8f752af824da84d3dd826ac4f18a70ea1c94831473c2813825bdc271b0c20","dweb:/ipfs/QmcyGxdkB2gFinYaKt9H9PdTcQoKZyo1hXjtaJ3krf5fPQ"],"license":"MIT"},"lib/v4-periphery/src/base/BaseActionsRouter.sol":{"keccak256":"0xca1ee500f88951ad351d18ba2adfb5fe23abef6d502f234ce5748a3497674a4c","urls":["bzz-raw://1f03ab458be27c29cef1b7ace5b11517d3fef8bf6131af7dd80d6297c224cf71","dweb:/ipfs/QmYoH6o8yeRzbeLoaMG9TjS8q2Fw7T1h4vXvvMnp3XfsUa"],"license":"MIT"},"lib/v4-periphery/src/base/DeltaResolver.sol":{"keccak256":"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c","urls":["bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36","dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw"],"license":"MIT"},"lib/v4-periphery/src/base/EIP712_v4.sol":{"keccak256":"0x151e85890822c1b0fe85ec3c021826cb42f615e2b9d6fcdd79019681a6ee5588","urls":["bzz-raw://c5df84221ba4fe59c8223e94bec954b7f7602d4ad81d2f0c046a67c21c1d24be","dweb:/ipfs/QmbTUqqHxRxEDyrMPApozbC6DEYMZGa27dWu3KodNACiLy"],"license":"MIT"},"lib/v4-periphery/src/base/ERC721Permit_v4.sol":{"keccak256":"0xb1c3d4cc1fa0c7f9562674917d9ffdd119a1ccdb3adca44b2832d5c91c068125","urls":["bzz-raw://752a8a679a9cc9e56a8e95fc1fa1d8c39a951a479b6c0b1109238f73520045df","dweb:/ipfs/QmRzLo9KRcJH38Fx2xvweVmvMbTRKzyDR7R7Fui4Ca9cma"],"license":"MIT"},"lib/v4-periphery/src/base/ImmutableState.sol":{"keccak256":"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a","urls":["bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337","dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU"],"license":"MIT"},"lib/v4-periphery/src/base/Multicall_v4.sol":{"keccak256":"0x654c6e65bd9bbf12b2cc393f8523db04e85ec45e829200de3895709479d6d569","urls":["bzz-raw://d7ee5441ed14cdad5328f8e844403c2969fe2ecd9d110d7b80954bfa41f52d69","dweb:/ipfs/QmQ1r1qmGyg1JXUgmjzi3WxjAmkLtMpUVsRWfYJsRRo3sP"],"license":"MIT"},"lib/v4-periphery/src/base/NativeWrapper.sol":{"keccak256":"0xfb756bc69e401d621f615746d881cfef7e98f3f563775905a1eca79a074a35ca","urls":["bzz-raw://507c9b3ddf79ec34b8ae472dfc4d6840343a9a172d7c6f33eec290e0078e9254","dweb:/ipfs/QmWhGck33w1s343mtojttgisJcsdwDf6Ah6oTpjgsWcQWh"],"license":"MIT"},"lib/v4-periphery/src/base/Notifier.sol":{"keccak256":"0x5f2a29b2a528269643d026bf4698e6520eeb1e5fc773f9d5059b3e279a488bf6","urls":["bzz-raw://63d5c541039f37ae89533a15fc311e3fec3d143fa11bac42e73964bdf74b3d06","dweb:/ipfs/QmUrvqNYEYwEu1zRWLFVDUW2zEajbkNYxiNqUpc5aWx5ui"],"license":"MIT"},"lib/v4-periphery/src/base/Permit2Forwarder.sol":{"keccak256":"0xcdf793e6732cdf0c386f89573384032314b0893bf208b3d75ac71d3002674a3b","urls":["bzz-raw://4f18d0be711c1d586854e2a78113bf84765e7158c9568b2c73f8750511a22ce7","dweb:/ipfs/QmSe3zz9jvDZo2MqPgCpfNs3yA4xAWPB1deZBoRFzeZiN1"],"license":"MIT"},"lib/v4-periphery/src/base/PoolInitializer_v4.sol":{"keccak256":"0x068c85032e50ef6374958ff3e7dcc143527f669de1bbba831e552d033344a1e3","urls":["bzz-raw://674c29491faef627b52cb81495bf3747cd7f7613e2ddcabb1dd258f93f966006","dweb:/ipfs/Qmc1D31ubNDRdxVS6pxDzn7z8disSw7UScHu8rgfpxCAsz"],"license":"MIT"},"lib/v4-periphery/src/base/ReentrancyLock.sol":{"keccak256":"0x66dd19f8eb40b7a86afea0e5b1dcada6268041027b0dfc493b80ca1f66af217d","urls":["bzz-raw://ac6d34517e2dd2c9cd03e16c5333defd003c134a4bff52ad95b673a5e8804609","dweb:/ipfs/QmPSRdswfajCZCchH9j8rC7U3GLJ4w24gK35gxRVY3Qxz4"],"license":"MIT"},"lib/v4-periphery/src/base/SafeCallback.sol":{"keccak256":"0xd78b583df1b9ee06d58e83b84fc9f08971389b34dd34bc13db072e0c13c710da","urls":["bzz-raw://c0a47f4bcd6060c4462153b9a7c52a60a460ace91acb6ddd5492eab28ec26173","dweb:/ipfs/QmdRCTRS1dhFjWEy6z577j4xz9J5HPfHBwcNzAic8G59oT"],"license":"MIT"},"lib/v4-periphery/src/base/UnorderedNonce.sol":{"keccak256":"0x0ec175bf2213d75606ebb770227e8622ae9666fbde8ff2d1682d85890b81676e","urls":["bzz-raw://079952902a4be56b5e963585349988fcbea853bf8271a5cb88e7629cafb06bcf","dweb:/ipfs/Qmere81cd2Wq9Vq4rL5G1nW4Jv54YJeMr1oaej7468xrgi"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IEIP712_v4.sol":{"keccak256":"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408","urls":["bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736","dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IERC721Permit_v4.sol":{"keccak256":"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017","urls":["bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d","dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IImmutableState.sol":{"keccak256":"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b","urls":["bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341","dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IMulticall_v4.sol":{"keccak256":"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08","urls":["bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7","dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ"],"license":"MIT"},"lib/v4-periphery/src/interfaces/INotifier.sol":{"keccak256":"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e","urls":["bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746","dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IPermit2Forwarder.sol":{"keccak256":"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5","urls":["bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d","dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IPoolInitializer_v4.sol":{"keccak256":"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98","urls":["bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92","dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IPositionDescriptor.sol":{"keccak256":"0x5a4327e608b35ba2d3451c267b609336efbd780912080dbb1a21563db25c9768","urls":["bzz-raw://c783c7a4834d610586ef6caf79806f4e339ad488046766d03fe3d014d11093e4","dweb:/ipfs/QmcQWiNQz1hAcJRwFfw5NnSz6zcgAE5HytdVL8MAQJUrv4"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IPositionManager.sol":{"keccak256":"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e","urls":["bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834","dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc"],"license":"MIT"},"lib/v4-periphery/src/interfaces/ISubscriber.sol":{"keccak256":"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7","urls":["bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051","dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IUnorderedNonce.sol":{"keccak256":"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3","urls":["bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d","dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IV4Router.sol":{"keccak256":"0xc4133fae25e61cc2447d7331729f6035322d7c1fe26b39b225422bf98cc63459","urls":["bzz-raw://3c24ff8428504e973e947a059f96289a66c520cd7f8ef47a3224f9cb6abdaf25","dweb:/ipfs/QmVqxYnngWXXcCiuTC143vTEJrjZK5NXWB92pjvVbuJBQ5"],"license":"MIT"},"lib/v4-periphery/src/interfaces/external/IWETH9.sol":{"keccak256":"0xe88abf12501ac275619aec0687240a07d26968aecbbcdfea88ba8bbd5d6e5e14","urls":["bzz-raw://7097065d4492b4eccb1a73f99af1e5bec45404c6b973b8f5965c4c91403f5f92","dweb:/ipfs/QmZK8oEqmjmTqhBoh3D3fBpyKGkUEFnptY8xwH9xpNjDm2"],"license":"MIT"},"lib/v4-periphery/src/libraries/ActionConstants.sol":{"keccak256":"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3","urls":["bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2","dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7"],"license":"MIT"},"lib/v4-periphery/src/libraries/Actions.sol":{"keccak256":"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830","urls":["bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98","dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5"],"license":"MIT"},"lib/v4-periphery/src/libraries/CalldataDecoder.sol":{"keccak256":"0x26df49e13fb5410fd4db253cca877dfdfb3a1ba03e394d054c0e0514a88a56e5","urls":["bzz-raw://72a0c98c52171708f332f83d517deeb97fdd50ecf28f2510e1866e54593a6ff8","dweb:/ipfs/QmY4LiDUfSKGj86nML7B6a8euiPciUqwYehasAyAVnMCHq"],"license":"MIT"},"lib/v4-periphery/src/libraries/ERC721PermitHash.sol":{"keccak256":"0xd8024f516738a1f968169875efd4ba803049c933cf6ea5e36189df9915f4e3f2","urls":["bzz-raw://58b45295f87c31f516a727a2a40ba2f34ac57ebd5520c42ea59946d2ffc0f5df","dweb:/ipfs/QmW8xC2xS18r4yhGbhSJTN1DfCgPT6oKHxwwszutn2sPuz"],"license":"MIT"},"lib/v4-periphery/src/libraries/LiquidityAmounts.sol":{"keccak256":"0x8ea74b89831877ffe657f8461164a01a6f3c7e46f415410854fca8d28a8cab53","urls":["bzz-raw://f4015f62e5e8aa154baa555dc39ce36b498e6d875a53f793d62b8556e6b97ccb","dweb:/ipfs/QmUVHyEe3hZZZQum5ct6yDY8qduj62Ta7f7x5Kw95LpQbg"],"license":"MIT"},"lib/v4-periphery/src/libraries/Locker.sol":{"keccak256":"0x5c0859290a277fbfba8579b506426d3fc4b2ff7d8b691c03dd23aa85797fdae1","urls":["bzz-raw://18ad9effea8da74b9988373dddddd6669f11701fc954f77d2cb58beb9a9cc3ad","dweb:/ipfs/QmQdBMoXdVACo6k6rumWj15UPDCqGpWNSPvQbejxKuV9RJ"],"license":"MIT"},"lib/v4-periphery/src/libraries/PathKey.sol":{"keccak256":"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc","urls":["bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89","dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg"],"license":"MIT"},"lib/v4-periphery/src/libraries/PositionInfoLibrary.sol":{"keccak256":"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078","urls":["bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6","dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx"],"license":"MIT"},"lib/v4-periphery/src/libraries/SlippageCheck.sol":{"keccak256":"0x9b7872e403b417dfbcf9835b16109f80f7abed702652a9817e28f07189983b4b","urls":["bzz-raw://911974b8e37b3be02150090b64d841fcc1153277d20f75315b3b8eb02c111e66","dweb:/ipfs/QmRYe4UAYG5TNqB2ygM3n7e3GFMhJmW1c29WZjGDfGQyxQ"],"license":"MIT"}},"version":1},"id":53}