UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 915 kB
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"_WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWETH9"}],"stateMutability":"view"},{"type":"function","name":"deployAndApprovePosm","inputs":[{"name":"poolManager","type":"address","internalType":"contract IPoolManager"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPermit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookModifyLiquidities","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookSavesDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"positionDescriptor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPositionDescriptor"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_increaseLiquidity_clearExceedsThenTake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_clearNegative_revert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_sameRange_withExcessFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_settleWithBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_slippage_exactDoesNotRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_slippage_revertAmount0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_slippage_revertAmount1","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_slippage_revert_swap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_withCollection_takePair","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_withExactFees_clear","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_withExactFees_clear_donate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_withExactFees_take","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_withExactFees_take_donate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_increaseLiquidity_withInsufficientFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint_settleWithBalance_andSweepToMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint_settleWithBalance_andSweepToOtherAddress","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x600c805460ff199081166001908117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e0819052602080546378ffff8865ffffffffffff19918216811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101e06040526101808290526063196101a08190526bb504f333f9de6484597d89b36101c0819052602680549093168417909255602755602880546001600160a01b0319908116909217905560428054909116600e17905560438054614000600160a11b036001600160a81b031990911617905561011a90429061035c565b604555604b80546001600160a01b03191661050017905560405161013d9061034e565b604051809103905ff080158015610156573d5f803e3d5ffd5b50604c80546001600160a01b03929092166001600160a01b0319928316179055604e8054821661abcd17905560508054909116610f80179055604080518082019091526005815264414c49434560d81b60208201526101b49061022f565b605580546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260038152622127a160e91b60208201526101f79061022f565b605680546001600160a01b0319166001600160a01b039290921691909117905562989680605c55348015610229575f80fd5b50610408565b5f61023982610240565b5092915050565b5f80826040516020016102539190610381565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156102bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e09190610397565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189061031c90859087906004016103c4565b5f604051808303815f87803b158015610333575f80fd5b505af1158015610345573d5f803e3d5ffd5b50505050915091565b61121e806202a3b483390190565b8082018082111561037b57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82518060208501845e5f920191825250919050565b5f602082840312156103a7575f80fd5b81516001600160a01b03811681146103bd575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b62029f9d80620004175f395ff3fe6080604052600436106102c4575f3560e01c806390d9dc6911610170578063c3519e55116100d1578063dd2f6f4711610087578063fa7626d411610062578063fa7626d414610760578063fab9166e14610779578063fed0fc8b1461078d575f80fd5b8063dd2f6f4714610707578063e20c9f711461071b578063f8ccbf471461072f575f80fd5b8063c9dc06d1116100b7578063c9dc06d1146106cb578063c9ec1872146106df578063cb695390146106f3575f80fd5b8063c3519e55146106a3578063c7b8e15d146106b7575f80fd5b8063b0464fdc11610126578063b5508aa91161010c578063b5508aa914610657578063ba414fa61461066b578063c04062261461068f575f80fd5b8063b0464fdc146105d9578063b1a73b8a146105ed575f80fd5b806393ad73ed1161015657806393ad73ed146105845780639ef97f43146105b1578063ad6691d2146105c5575f80fd5b806390d9dc691461054f578063916a17c614610563575f80fd5b80634e01a1861161022557806366d9a9a0116101db57806383d5c738116101b657806383d5c7381461050657806385226c811461051a5780638e7ff0571461053b575f80fd5b806366d9a9a0146104bd57806367382c05146104de57806372fe23f4146104f2575f80fd5b80635c506b791161020b5780635c506b79146104695780635e16f0e51461047d57806363e8f72814610491575f80fd5b80634e01a18614610441578063542524dd14610455575f80fd5b806320ade01d1161027a57806339cd20131161026057806339cd2013146103c45780633e5e3c23146104195780633f7286f41461042d575f80fd5b806320ade01d1461038f5780632ade3880146103a3575f80fd5b80630d5ae9b0116102aa5780630d5ae9b014610304578063106d0231146103185780631ed7831c1461036e575f80fd5b806303ef31f6146102cf5780630a9254e4146102f0575f80fd5b366102cb57005b5f80fd5b3480156102da575f80fd5b506102ee6102e936600461c30f565b6107a1565b005b3480156102fb575f80fd5b506102ee6107b5565b34801561030f575f80fd5b506102ee610b6f565b348015610323575f80fd5b506047546103449073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610379575f80fd5b5061038261166e565b604051610365919061c32a565b34801561039a575f80fd5b506102ee6116db565b3480156103ae575f80fd5b506103b7611b1c565b604051610365919061c3ce565b3480156103cf575f80fd5b506023546024546025546103f192600281810b936301000000909204900b9184565b60408051600295860b81529390940b6020840152928201526060810191909152608001610365565b348015610424575f80fd5b50610382611c65565b348015610438575f80fd5b50610382611cd0565b34801561044c575f80fd5b506102ee611d3b565b348015610460575f80fd5b5061034461208c565b348015610474575f80fd5b506102ee6120ae565b348015610488575f80fd5b506102ee612a69565b34801561049c575f80fd5b50604d546103449073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104c8575f80fd5b506104d161315e565b604051610365919061c53c565b3480156104e9575f80fd5b506102ee6132d7565b3480156104fd575f80fd5b506102ee6133eb565b348015610511575f80fd5b506102ee6137c4565b348015610525575f80fd5b5061052e613dbe565b604051610365919061c5d8565b348015610546575f80fd5b506102ee613e89565b34801561055a575f80fd5b506102ee614d68565b34801561056e575f80fd5b5061057761574e565b604051610365919061c64d565b34801561058f575f80fd5b506020546021546022546103f192600281810b936301000000909204900b9184565b3480156105bc575f80fd5b506102ee615851565b3480156105d0575f80fd5b506102ee615cf3565b3480156105e4575f80fd5b50610577616a3e565b3480156105f8575f80fd5b506026546027546028546106249260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff1690820152606001610365565b348015610662575f80fd5b5061052e616b41565b348015610676575f80fd5b5061067f616c0c565b6040519015158152602001610365565b34801561069a575f80fd5b50610344616cdc565b3480156106ae575f80fd5b506102ee616da2565b3480156106c2575f80fd5b50610344617611565b3480156106d6575f80fd5b506102ee617621565b3480156106ea575f80fd5b50610344617e81565b3480156106fe575f80fd5b506102ee617e8f565b348015610712575f80fd5b506102ee618017565b348015610726575f80fd5b50610382618493565b34801561073a575f80fd5b5060435461067f9074010000000000000000000000000000000000000000900460ff1681565b34801561076b575f80fd5b50601f5461067f9060ff1681565b348015610784575f80fd5b506102ee6184fe565b348015610798575f80fd5b506102ee61874e565b6107aa81618be5565b6107b2618d88565b50565b6107bd618dce565b6107c56193b7565b50506107cf6132d7565b602954602a54604a5461080f9273ffffffffffffffffffffffffffffffffffffffff9081169281169116610bb86c01000000000000000000000000619438565b6054558051603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160378054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff9283168102919091177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009483169490940293909317918290556080909501516038805490941694169390931790915561093292910416670de0b6b3a7640000620f4240619594565b605755602b546109579073ffffffffffffffffffffffffffffffffffffffff166107a1565b6055546109799073ffffffffffffffffffffffffffffffffffffffff166195ce565b60565461099b9073ffffffffffffffffffffffffffffffffffffffff166195ce565b6055546109bd9073ffffffffffffffffffffffffffffffffffffffff1661971b565b6056546109df9073ffffffffffffffffffffffffffffffffffffffff1661971b565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301818152603754808416608086018190527401000000000000000000000000000000000000000080830462ffffff90811660a089018190527701000000000000000000000000000000000000000000000094859004600281900b60c08b015260385490981660e08a018190529589527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed460208a015261012c9890990197909752605880547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169096179055605980547fffffffffffffffffff0000000000000000000000000000000000000000000000169092179702969096177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff169390941690930291909117909255605a8054909216179055605b80547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001664012cfffed4179055565b6055546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015268a2a15d09519be0000090683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015610c01575f80fd5b505af1158015610c13573d5f803e3d5ffd5b505050505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca6919061c6ef565b604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b92820192909252605554929350610d8e9290918691165f5b6040519080825280601f01601f191660200182016040528015610d88576020820181803683370190505b50619818565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610df5575f80fd5b505af1158015610e07573d5f803e3d5ffd5b50506056546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b158015610e87575f80fd5b505af1158015610e99573d5f803e3d5ffd5b5050604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b92820192909252605654610f5694509092508591165f610d5e565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610fbd575f80fd5b505af1158015610fcf573d5f803e3d5ffd5b50506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854909116608082015266038d7ea4c6800092506110a2915060016110708461c760565b5f5b6040519080825280601f01601f19166020018201604052801561109c576020820181803683370190505b506198ab565b506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b60608201526038549091166080820152611136905f6110708461c760565b50602b54604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b928201929092526044545f936111f7939182169291169086619aac565b602b546040805160a0808201835260585473ffffffffffffffffffffffffffffffffffffffff9081168352605954808216602085015274010000000000000000000000000000000000000000810462ffffff16948401949094527701000000000000000000000000000000000000000000000090930460020b6060830152605a548316608083015290209293505f92611294929190911690619b5a565b5050605b549192505f916112e6915083906112b19060020b619c3f565b605b546112c7906301000000900460020b619c3f565b6112d18760801d90565b600f0b6112de88600f0b90565b600f0b619f3c565b6055546029546fffffffffffffffffffffffffffffffff9290921692505f916113289173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b605554602a549192505f916113569173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b90505f61136161a12e565b90506113cf5f89866113738a60801d90565b61137d8b600f0b90565b604080515f81526020810182526113999594939291810161c796565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905283919061a18a565b506040805160a08101825260585473ffffffffffffffffffffffffffffffffffffffff9081168252605954808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152605a5490911660808201525f9061146290839061a3a0565b6055546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156114e1575f80fd5b505af11580156114f3573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f92506115519185919060040161c7c6565b5f604051808303815f87803b158015611568575f80fd5b505af115801561157a573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156115e5575f80fd5b505af11580156115f7573d5f803e3d5ffd5b5050605554602954611632935087925061162a9173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b605c5461a446565b605554602a5461166191859161162a9173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b5050505050505050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156116d157602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116116a6575b5050505050905090565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa158015611748573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176c919061c6ef565b604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a5490921660e08401528252605b5480820b602084015263010000009004900b9181019190915290915061182c9068056bc75e2d6310000060015f610d5e565b605b5468056bc75e2d63100000905f90611877906c010000000000000000000000009061185b9060020b619c3f565b605b54611871906301000000900460020b619c3f565b8561a4c8565b50604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a5490921660e08401528252605b5480820b602084015263010000009004900b918101919091529091505f906119749085906fffffffffffffffffffffffffffffffff80871690600190865b6040519080825280601f01601f19166020018201604052801561196e576020820181803683370190505b5061a5b1565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37f31e30ad00000000000000000000000000000000000000000000000000000000060016119bd868261c7e7565b60405160ff90921660248301526044820152606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252611a629160040161c7fa565b5f604051808303815f87803b158015611a79575f80fd5b505af1158015611a8b573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f9250611ae99185919060040161c7c6565b5f604051808303815f87803b158015611b00575f80fd5b505af1158015611b12573d5f803e3d5ffd5b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015611c5c575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611c45578382905f5260205f20018054611bba9061c80c565b80601f0160208091040260200160405190810160405280929190818152602001828054611be69061c80c565b8015611c315780601f10611c0857610100808354040283529160200191611c31565b820191905f5260205f20905b815481529060010190602001808311611c1457829003601f168201915b505050505081526020019060010190611b9d565b505050508152505081526020019060010190611b3f565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156116d157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116116a6575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156116d157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116116a6575050505050905090565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa158015611da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dcc919061c6ef565b604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a5490921660e08401528252605b5480820b602084015263010000009004900b91810191909152909150611e8c9068056bc75e2d6310000060015f610d5e565b605b54678ac7230489e80000905f908190611ed8906c0100000000000000000000000090611ebc9060020b619c3f565b605b54611ed2906301000000900460020b619c3f565b8661a4c8565b91509150611ee6828261a5f5565b5f611ef283600161c85d565b604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a5490921660e08401528252605b5480820b602084015263010000009004900b918101919091529091505f90611fbf9087906fffffffffffffffffffffffffffffffff8816858086611944565b6044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff9091169163dd46508f9161201c9185919060040161c7c6565b5f604051808303815f87803b158015612033575f80fd5b505af1158015612045573d5f803e3d5ffd5b505050505f61205261a679565b90506120766120618260801d90565b61206a9061c885565b600f0b84600f0b61a77d565b61208361206182600f0b90565b50505050505050565b6120ab600173fffd8963efd1fc6a506488495d951d5263988d2661c8c1565b81565b6055546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015268a2a15d09519be0000090683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612140575f80fd5b505af1158015612152573d5f803e3d5ffd5b505050505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121e5919061c6ef565b604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b928201929092526055549293506122a19290918691165f610d5e565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612308575f80fd5b505af115801561231a573d5f803e3d5ffd5b50506056546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b15801561239a575f80fd5b505af11580156123ac573d5f803e3d5ffd5b5050604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b9282019290925260565461246994509092508591165f610d5e565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156124d0575f80fd5b505af11580156124e2573d5f803e3d5ffd5b50506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854909116608082015266038d7ea4c680009250612583915060016110708461c760565b506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b60608201526038549091166080820152612617905f6110708461c760565b50602b54604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b928201929092526044545f936126d8939182169291169086619aac565b602b546040805160a0808201835260585473ffffffffffffffffffffffffffffffffffffffff9081168352605954808216602085015274010000000000000000000000000000000000000000810462ffffff16948401949094527701000000000000000000000000000000000000000000000090930460020b6060830152605a548316608083015290209293505f92612775929190911690619b5a565b5050605b549192505f91612792915083906112b19060020b619c3f565b6055546029546fffffffffffffffffffffffffffffffff9290921692505f916127d49173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b605554602a549192505f916128029173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b90505f61280d61a12e565b90506128685f89866fffffffffffffffffffffffffffffffff80845b6040519080825280601f01601f191660200182016040528015612853576020820181803683370190505b5060405160200161139995949392919061c8ed565b506058546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526012908201526128a290601390606001611399565b506059546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526012908201526128dc90601390606001611399565b505f6128e78261a7d5565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015612966575f80fd5b505af1158015612978573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f92506129d69185919060040161c7c6565b5f604051808303815f87803b1580156129ed575f80fd5b505af11580156129ff573d5f803e3d5ffd5b5050605554602954612a369350612a30925073ffffffffffffffffffffffffffffffffffffffff908116911661a05d565b8561a5f5565b605554602a5461166191612a639173ffffffffffffffffffffffffffffffffffffffff908116911661a05d565b8461a5f5565b6055546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015268a2a15d09519be0000090683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612afb575f80fd5b505af1158015612b0d573d5f803e3d5ffd5b505050505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba0919061c6ef565b604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b92820192909252605554929350612c5c9290918691165f610d5e565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612cc3575f80fd5b505af1158015612cd5573d5f803e3d5ffd5b50506056546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b158015612d55575f80fd5b505af1158015612d67573d5f803e3d5ffd5b5050604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b92820192909252605654612e2494509092508591165f610d5e565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612e8b575f80fd5b505af1158015612e9d573d5f803e3d5ffd5b5050603054604080515f815260208101918290527f234266d7000000000000000000000000000000000000000000000000000000009091526702c68af0bb140000935073ffffffffffffffffffffffffffffffffffffffff909116915063234266d790612f1490603690859081906024810161c93b565b6020604051808303815f875af1158015612f30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f54919061c6ef565b505f6001612f6e86612f66878261c7e7565b859190619594565b612f78919061c9ac565b602b546040805160a0808201835260585473ffffffffffffffffffffffffffffffffffffffff9081168352605954808216602085015274010000000000000000000000000000000000000000810462ffffff16948401949094527701000000000000000000000000000000000000000000000090930460020b6060830152605a548316608083015290209293505f92613015929190911690619b5a565b5050605b549192505f9161304f915083906130329060020b619c3f565b605b54613048906301000000900460020b619c3f565b8687619f3c565b6055546029546fffffffffffffffffffffffffffffffff9290921692505f916130919173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b605554602a549192505f916130bf9173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b90505f6130ca61a12e565b90506130ea5f89866fffffffffffffffffffffffffffffffff8084612829565b506058546040805173ffffffffffffffffffffffffffffffffffffffff909216602083015260019082015261312490601390606001611399565b506059546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526001908201526128dc90601390606001611399565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015611c5c578382905f5260205f2090600202016040518060400160405290815f820180546131b19061c80c565b80601f01602080910402602001604051908101604052809291908181526020018280546131dd9061c80c565b80156132285780601f106131ff57610100808354040283529160200191613228565b820191905f5260205f20905b81548152906001019060200180831161320b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156132bf57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161326c5790505b50505050508152505081526020019060010190613181565b5f6040516132e49061c238565b604051809103905ff0801580156132fd573d5f803e3d5ffd5b50604b546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b815260040161337492919061c9bf565b5f604051808303815f87803b15801561338b575f80fd5b505af115801561339d573d5f803e3d5ffd5b5050604b54604a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa158015613458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061347c919061c6ef565b604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a5490921660e08401528252605b5480820b602084015263010000009004900b9181019190915290915061353b90683635c9adc5dea00000305f610d5e565b5f61354461a12e565b604080515f808252602082018352929350613587929161139991869168056bc75e2d63100000916fffffffffffffffffffffffffffffffff91829190810161c9ed565b506058546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908201526135e090601390606001611399565b506059546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9082015261363990601390606001611399565b505f6136448261a7d5565b6029546040805173ffffffffffffffffffffffffffffffffffffffff90921660248084019190915281518084039091018152604490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4c085bf100000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3916137149160040161c7fa565b5f604051808303815f87803b15801561372b575f80fd5b505af115801561373d573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f925061379b9185919060040161c7c6565b5f604051808303815f87803b1580156137b2575f80fd5b505af1158015612083573d5f803e3d5ffd5b68a2a15d09519be000005f6137d761a12e565b605b546055549192506138689160029160589181840b9163010000009004840b9087906fffffffffffffffffffffffffffffffff90819073ffffffffffffffffffffffffffffffffffffffff165f5b6040519080825280601f01601f191660200182016040528015613850576020820181803683370190505b5060405160200161139998979695949392919061ca46565b506029546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301525f90820181905260608201526138a890600b90608001611399565b50602a546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301525f90820181905260608201526138e890600b90608001611399565b506029546040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152309082015261392190601490606001611399565b50602a546040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152309082015261395a90601490606001611399565b506029545f906139809073ffffffffffffffffffffffffffffffffffffffff163061a05d565b602a549091505f906139a89073ffffffffffffffffffffffffffffffffffffffff163061a05d565b6044546029549192506139de916139d89173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b5f61a5f5565b604454602954613a0b916139d89173ffffffffffffffffffffffffffffffffffffffff908116911661a05d565b604454602954613a3e9173ffffffffffffffffffffffffffffffffffffffff918216911668056bc75e2d6310000061a807565b604454602a54613a719173ffffffffffffffffffffffffffffffffffffffff918216911668056bc75e2d6310000061a807565b604454602954613aad91613a9e9173ffffffffffffffffffffffffffffffffffffffff908116911661a05d565b68056bc75e2d6310000061a5f5565b604454602954613ada91613a9e9173ffffffffffffffffffffffffffffffffffffffff908116911661a05d565b5f613ae48461a7d5565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015613b63575f80fd5b505af1158015613b75573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f9250613bd39185919060040161c7c6565b5f604051808303815f87803b158015613bea575f80fd5b505af1158015613bfc573d5f803e3d5ffd5b505050505f613c0961a679565b90505f613c168260801d90565b613c1f9061c885565b6fffffffffffffffffffffffffffffffff1690505f613c3e83600f0b90565b613c479061c885565b6029546044546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526fffffffffffffffffffffffffffffffff939093169350613cf7929116906370a08231906024015b602060405180830381865afa158015613cd3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139d8919061c6ef565b602a546044546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152613d579291909116906370a0823190602401613cb8565b602954613d8d90613d7e9073ffffffffffffffffffffffffffffffffffffffff163061a05d565b613d88848961c9ac565b61a5f5565b602a54611b1290613db49073ffffffffffffffffffffffffffffffffffffffff163061a05d565b613d88838861c9ac565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015611c5c578382905f5260205f20018054613dfe9061c80c565b80601f0160208091040260200160405190810160405280929190818152602001828054613e2a9061c80c565b8015613e755780601f10613e4c57610100808354040283529160200191613e75565b820191905f5260205f20905b815481529060010190602001808311613e5857829003601f168201915b505050505081526020019060010190613de1565b68a2a15d09519be00000683635c9adc5dea000005f613ea8828461c7e7565b6055546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015613f27575f80fd5b505af1158015613f39573d5f803e3d5ffd5b505050505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fa8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fcc919061c6ef565b604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b928201929092526055549293506140889290918791165f610d5e565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156140ef575f80fd5b505af1158015614101573d5f803e3d5ffd5b50506056546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015614181575f80fd5b505af1158015614193573d5f803e3d5ffd5b505050505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614202573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614226919061c6ef565b604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b928201929092526056549293506142e29290918791165f610d5e565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015614349575f80fd5b505af115801561435b573d5f803e3d5ffd5b50506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854909116608082015266038d7ea4c6800092506143fc915060016110708461c760565b506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b60608201526038549091166080820152614490905f6110708461c760565b50602b54604080516101008101825260585473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605954808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605a54831660e0850152908352605b5480820b602085015263010000009004900b928201929092526044545f93614551939182169291169087619aac565b602b546040805160a0808201835260585473ffffffffffffffffffffffffffffffffffffffff9081168352605954808216602085015274010000000000000000000000000000000000000000810462ffffff16948401949094527701000000000000000000000000000000000000000000000090930460020b6060830152605a548316608083015290209293505f926145ee929190911690619b5a565b5050605b549192505f916146509150839061460b9060020b619c3f565b605b54614621906301000000900460020b619c3f565b600261462d8860801d90565b614637919061cb4f565b600f0b600261464689600f0b90565b6112de919061cb4f565b6055546029546fffffffffffffffffffffffffffffffff9290921692505f916146929173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b605554602a549192505f916146c09173ffffffffffffffffffffffffffffffffffffffff918216911661a05d565b6055546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801561473f575f80fd5b505af1158015614751573d5f803e3d5ffd5b5050604080516101008101825260585473fffffffffffffff