UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 613 kB
{"abi":[{"type":"receive","stateMutability":"payable"},{"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":"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":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setupRouterCurrenciesAndPoolsWithLiquidity","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_nativeIn_swapExactIn_1Hop","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeIn_swapExactIn_2Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeIn_swapExactInputSingle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeIn_swapExactOut_1Hop_sweepExcessETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeIn_swapExactOut_2Hops_sweepExcessETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeIn_swapExactOutputSingle_sweepExcessETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeOut_swapExactIn_1Hop","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeOut_swapExactIn_2Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeOut_swapExactInputSingle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeOut_swapExactOut_1Hop","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeOut_swapExactOutputSingle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactIn_1Hop_oneForZero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactIn_1Hop_zeroForOne","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactIn_2Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactIn_3Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactInputSingle_oneForZero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactInputSingle_revertsForAmountOut","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactInputSingle_zeroForOne_takeAllToRouter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactInputSingle_zeroForOne_takeToMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactInputSingle_zeroForOne_takeToRecipient","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactInputSingle_zeroForOne_takeToRouter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactInput_revertsForAmountOut","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOut_1Hop_oneForZero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOut_1Hop_zeroForOne","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOut_2Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOut_3Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOut_revertsForAmountIn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOut_swapOpenDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOutputSingle_oneForZero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOutputSingle_revertsForAmountIn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOutputSingle_swapOpenDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swapExactOutputSingle_zeroForOne","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_nativeIn_settleRouterBalance_swapOpenDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_settleRouterBalance_swapOpenDelta","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":"0x600c8054600160ff199182168117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e08190526020805465ffffffffffff199081166378ffff8890811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff1961014081905261016083905260238054909216909317905560249190915560258190556101808390526063196101a08190526bb504f333f9de6484597d89b36101c081905260268054909416909417909255602791909155602880546001600160a01b0319908116909317905560428054600e90841617905560438054909216614000600160a01b03179091555f1960465560475561022060405260056101e090815264414c49434560d81b6102005261013390610164565b605680546001600160a01b0319166001600160a01b039290921691909117905534801561015e575f80fd5b5061030a565b5f61016e82610175565b5092915050565b5f80826040516020016101889190610283565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156101f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102159190610299565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189061025190859087906004016102c6565b5f604051808303815f87803b158015610268575f80fd5b505af115801561027a573d5f803e3d5ffd5b50505050915091565b5f82518060208501845e5f920191825250919050565b5f602082840312156102a9575f80fd5b81516001600160a01b03811681146102bf575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b620194f580620003195f395ff3fe60806040526004361061033d575f3560e01c806385226c81116101b2578063b1669f0c116100f2578063c7b8e15d11610092578063e1350f801161006d578063e1350f801461084d578063e20c9f7114610861578063fa7626d414610875578063ff47359f1461088e575f80fd5b8063c7b8e15d14610811578063da3d41ec14610825578063dd4eb95714610839575f80fd5b8063b7780bea116100cd578063b7780bea146107b1578063ba414fa6146107c5578063c15b1cb8146107e9578063c6917b3d146107fd575f80fd5b8063b1669f0c1461071f578063b1a73b8a14610733578063b5508aa91461079d575f80fd5b806398dca1ac1161015d578063a822126611610138578063a8221266146106cf578063ae552cab146106e3578063b0464fdc146106f7578063b0f3d8021461070b575f80fd5b806398dca1ac14610693578063a4d5c0cf146106a7578063a7246cc8146106bb575f80fd5b8063916a17c61161018d578063916a17c614610631578063929a65201461065257806393ad73ed14610666575f80fd5b806385226c81146105e8578063865a553b146106095780638b0d9e9b1461061d575f80fd5b80634120b90c1161027d57806364029805116102285780636a3b0cd2116102035780636a3b0cd2146105985780637791d48d146105ac57806380eaaaef146105c0578063848cb4bf146105d4575f80fd5b8063640298051461054f57806366d9a9a0146105635780636a39d31514610584575f80fd5b80635dabaf6b116102585780635dabaf6b1461051357806360dcaf201461052757806362e3b9881461053b575f80fd5b80634120b90c146104b2578063542524dd146104c657806354ee5060146104ff575f80fd5b80632ef6a8d1116102e85780633e5e3c23116102c35780633e5e3c23146104625780633f7286f4146104765780633f74f7d91461048a57806340dfb5e91461049e575f80fd5b80632ef6a8d1146103e55780632fc4c7fa146103f957806339cd20131461040d575f80fd5b80631c674734116103185780631c674734146103865780631ed7831c1461039a5780632ade3880146103c4575f80fd5b806302a6124b146103485780630a9254e41461035e57806318f25ed714610372575f80fd5b3661034457005b5f80fd5b348015610353575f80fd5b5061035c6108a2565b005b348015610369575f80fd5b5061035c610c5b565b34801561037d575f80fd5b5061035c610c9a565b348015610391575f80fd5b5061035c6112f0565b3480156103a5575f80fd5b506103ae611624565b6040516103bb919061cce6565b60405180910390f35b3480156103cf575f80fd5b506103d8611691565b6040516103bb919061cd8a565b3480156103f0575f80fd5b5061035c6117da565b348015610404575f80fd5b5061035c611cd9565b348015610418575f80fd5b5060235460245460255461043a92600281810b936301000000909204900b9184565b60408051600295860b81529390940b60208401529282015260608101919091526080016103bb565b34801561046d575f80fd5b506103ae611fef565b348015610481575f80fd5b506103ae61205a565b348015610495575f80fd5b5061035c6120c5565b3480156104a9575f80fd5b5061035c612ae3565b3480156104bd575f80fd5b5061035c612f04565b3480156104d1575f80fd5b506104da6131d3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103bb565b34801561050a575f80fd5b5061035c6131f5565b34801561051e575f80fd5b5061035c61350b565b348015610532575f80fd5b5061035c61387d565b348015610546575f80fd5b5061035c614260565b34801561055a575f80fd5b5061035c614566565b34801561056e575f80fd5b50610577614857565b6040516103bb919061cef8565b34801561058f575f80fd5b5061035c6149d0565b3480156105a3575f80fd5b5061035c614d9a565b3480156105b7575f80fd5b5061035c615067565b3480156105cb575f80fd5b5061035c61540c565b3480156105df575f80fd5b5061035c615829565b3480156105f3575f80fd5b506105fc6161d8565b6040516103bb919061cf94565b348015610614575f80fd5b5061035c6162a3565b348015610628575f80fd5b5061035c6166b2565b34801561063c575f80fd5b50610645616ab9565b6040516103bb919061d009565b34801561065d575f80fd5b5061035c616bbc565b348015610671575f80fd5b5060205460215460225461043a92600281810b936301000000909204900b9184565b34801561069e575f80fd5b5061035c616ec2565b3480156106b2575f80fd5b5061035c6172db565b3480156106c6575f80fd5b5061035c617631565b3480156106da575f80fd5b5061035c617fd6565b3480156106ee575f80fd5b5061035c618427565b348015610702575f80fd5b50610645618714565b348015610716575f80fd5b5061035c618817565b34801561072a575f80fd5b5061035c618f08565b34801561073e575f80fd5b5060265460275460285461076a9260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff16908201526060016103bb565b3480156107a8575f80fd5b506105fc61921e565b3480156107bc575f80fd5b5061035c6192e9565b3480156107d0575f80fd5b506107d9619b42565b60405190151581526020016103bb565b3480156107f4575f80fd5b5061035c619c12565b348015610808575f80fd5b5061035c61a0ac565b34801561081c575f80fd5b506104da61a4bb565b348015610830575f80fd5b5061035c61a4cb565b348015610844575f80fd5b5061035c61a798565b348015610858575f80fd5b5061035c61aa85565b34801561086c575f80fd5b506103ae61add1565b348015610880575f80fd5b50601f546107d99060ff1681565b348015610899575f80fd5b5061035c61ae3c565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155603a548554938401865592909301805490931673ffffffffffffffffffffffffffffffffffffffff9290921691909117909155815460408051602083810282018101909252828152670de0b6b3a764000094670dc47c68de877b4994936109ae938301828280156109a357602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610978575b50505050508461b0f3565b9050610b676007826040516020016109c6919061d1f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290610a0b9061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054610a379061d211565b8015610a825780601f10610a5957610100808354040283529160200191610a82565b820191905f5260205f20905b815481529060010190602001808311610a6557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f20018054610acc9061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054610af89061d211565b8015610b435780601f10610b1a57610100808354040283529160200191610b43565b820191905f5260205f20905b815481529060010190602001808311610b2657829003601f168201915b505050505081526020019060010190610aaf565b505050915250909291905061b2e4565b80516054908190610b78908261d2da565b506020828101518051610b91926001850192019061cbf0565b5050603a545f9150819081908190610bc190829073ffffffffffffffffffffffffffffffffffffffff168961b4f8565b6045546039549498509296509094509250610bff91610bf99173ffffffffffffffffffffffffffffffffffffffff918216911661b51a565b5f61b5eb565b604554603a54610c2c91610bf99173ffffffffffffffffffffffffffffffffffffffff908116911661b51a565b610c3f610c39838661d41e565b8861b5eb565b610c52610c4c848361d41e565b8761b5eb565b50505050505050565b610c63618817565b610c6b61b66e565b80516054908190610c7c908261d2da565b506020828101518051610c95926001850192019061cbf0565b505050565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094670dc47c68de877b49949093610da8938301828280156109a357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109785750505050508461b0f3565b9050610db582600161d431565b6fffffffffffffffffffffffffffffffff166060820152604051610f7590600790610de490849060200161d1f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290610e299061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054610e559061d211565b8015610ea05780601f10610e7757610100808354040283529160200191610ea0565b820191905f5260205f20905b815481529060010190602001808311610e8357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f20018054610eea9061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054610f169061d211565b8015610f615780601f10610f3857610100808354040283529160200191610f61565b820191905f5260205f20905b815481529060010190602001808311610f4457829003601f168201915b505050505081526020019060010190610ecd565b80516054908190610f86908261d2da565b506020828101518051610f9f926001850192019061cbf0565b505060485460495460408051808201909152605480545f95506111469473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290610fe99061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546110159061d211565b80156110605780601f1061103757610100808354040283529160200191611060565b820191905f5260205f20905b81548152906001019060200180831161104357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015611135578382905f5260205f200180546110aa9061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546110d69061d211565b80156111215780601f106110f857610100808354040283529160200191611121565b820191905f5260205f20905b81548152906001019060200180831161110457829003601f168201915b50505050508152602001906001019061108d565b50505091525090939291905061b6ca565b604051670dc47c68de877b4a6024820152670dc47c68de877b496044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907f8b063d7300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825261123a9160040161d444565b5f604051808303815f87803b158015611251575f80fd5b505af1158015611263573d5f803e3d5ffd5b50506045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250634f84885b91506112bd90849060040161d444565b5f604051808303815f87803b1580156112d4575f80fd5b505af11580156112e6573d5f803e3d5ffd5b5050505050505050565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281525f6020808301829052670de0b6b3a76400008385018190526060840183905284518083018652928352608084019290925292519092670dc47c68de877b499291611560916006916113cf9185910161d53f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906114149061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546114409061d211565b801561148b5780601f106114625761010080835404028352916020019161148b565b820191905f5260205f20905b81548152906001019060200180831161146e57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f200180546114d59061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546115019061d211565b801561154c5780601f106115235761010080835404028352916020019161154c565b820191905f5260205f20905b81548152906001019060200180831161152f57829003601f168201915b5050505050815260200190600101906114b8565b80516054908190611571908261d2da565b50602082810151805161158a926001850192019061cbf0565b50506049546048545f92508291829182916115bf9173ffffffffffffffffffffffffffffffffffffffff91821691168961b4f8565b60455460295494985092965090945092506115f791610bf99173ffffffffffffffffffffffffffffffffffffffff918216911661b51a565b604554602a54610c2c91610bf99173ffffffffffffffffffffffffffffffffffffffff908116911661b51a565b6060601680548060200260200160405190810160405280929190818152602001828054801561168757602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161165c575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b828210156117d1575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156117ba578382905f5260205f2001805461172f9061d211565b80601f016020809104026020016040519081016040528092919081815260200182805461175b9061d211565b80156117a65780601f1061177d576101008083540402835291602001916117a6565b820191905f5260205f20905b81548152906001019060200180831161178957829003601f168201915b505050505081526020019060010190611712565b5050505081525050815260200190600101906116b4565b50505050905090565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094670dfd4f792bfcd5139490936118ea938301828280156118df57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116118b4575b50505050508461b868565b90506118f760018361d41e565b6fffffffffffffffffffffffffffffffff166060820152604051611ab79060099061192690849060200161d1f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061196b9061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546119979061d211565b80156119e25780601f106119b9576101008083540402835291602001916119e2565b820191905f5260205f20905b8154815290600101906020018083116119c557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f20018054611a2c9061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054611a589061d211565b8015611aa35780601f10611a7a57610100808354040283529160200191611aa3565b820191905f5260205f20905b815481529060010190602001808311611a8657829003601f168201915b505050505081526020019060010190611a0f565b80516054908190611ac8908261d2da565b506020828101518051611ae1926001850192019061cbf0565b505060485460495460408051808201909152605480545f9550611c779473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290611b2b9061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054611b579061d211565b8015611ba25780601f10611b7957610100808354040283529160200191611ba2565b820191905f5260205f20905b815481529060010190602001808311611b8557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015611135578382905f5260205f20018054611bec9061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054611c189061d211565b8015611c635780601f10611c3a57610100808354040283529160200191611c63565b820191905f5260205f20905b815481529060010190602001808311611c4657829003601f168201915b505050505081526020019060010190611bcf565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37f12bacdd300000000000000000000000000000000000000000000000000000000611cbf60018761d41e565b6040516024810191909152604481018790526064016111aa565b602a5460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff978816179091556029548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094670dc47c68de877b49949093611de7938301828280156109a357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109785750505050508461b0f3565b9050611f90600782604051602001611dff919061d1f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290611e449061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054611e709061d211565b8015611ebb5780601f10611e9257610100808354040283529160200191611ebb565b820191905f5260205f20905b815481529060010190602001808311611e9e57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f20018054611f059061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054611f319061d211565b8015611f7c5780601f10611f5357610100808354040283529160200191611f7c565b820191905f5260205f20905b815481529060010190602001808311611f5f57829003601f168201915b505050505081526020019060010190611ee8565b80516054908190611fa1908261d2da565b506020828101518051611fba926001850192019061cbf0565b5050602a546029545f92508291829182916115bf9173ffffffffffffffffffffffffffffffffffffffff91821691168961b4f8565b6060601880548060200260200160405190810160405280929190818152602001828054801561168757602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161165c575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561168757602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161165c575050505050905090565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f606084018190528451808401865290815260808401529251670dc47c68de877b499291612333916006916121a29185910161d53f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906121e79061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546122139061d211565b801561225e5780601f106122355761010080835404028352916020019161225e565b820191905f5260205f20905b81548152906001019060200180831161224157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f200180546122a89061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546122d49061d211565b801561231f5780601f106122f65761010080835404028352916020019161231f565b820191905f5260205f20905b81548152906001019060200180831161230257829003601f168201915b50505050508152602001906001019061228b565b80516054908190612344908261d2da565b50602082810151805161235d926001850192019061cbf0565b505060485461254e9150600c9073ffffffffffffffffffffffffffffffffffffffff16600a61238c868461d551565b612396919061d568565b6040805173ffffffffffffffffffffffffffffffffffffffff9093166020840152820152606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906124029061d211565b80601f016020809104026020016040519081016040528092919081815260200182805461242e9061d211565b80156124795780601f1061245057610100808354040283529160200191612479565b820191905f5260205f20905b81548152906001019060200180831161245c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f200180546124c39061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546124ef9061d211565b801561253a5780601f106125115761010080835404028352916020019161253a565b820191905f5260205f20905b81548152906001019060200180831161251d57829003601f168201915b5050505050815260200190600101906124a6565b8051605490819061255f908261d2da565b506020828101518051612578926001850192019061cbf0565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526002908201525f60608201526127469150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906125fa9061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546126269061d211565b80156126715780601f1061264857610100808354040283529160200191612671565b820191905f5260205f20905b81548152906001019060200180831161265457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f200180546126bb9061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546126e79061d211565b80156127325780601f1061270957610100808354040283529160200191612732565b820191905f5260205f20905b81548152906001019060200180831161271557829003601f168201915b50505050508152602001906001019061269e565b80516054908190612757908261d2da565b506020828101518051612770926001850192019061cbf0565b509050505f6128ed60546040518060400160405290815f820180546127949061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546127c09061d211565b801561280b5780601f106127e25761010080835404028352916020019161280b565b820191905f5260205f20905b8154815290600101906020018083116127ee57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156128e0578382905f5260205f200180546128559061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546128819061d211565b80156128cc5780601f106128a3576101008083540402835291602001916128cc565b820191905f5260205f20905b8154815290600101906020018083116128af57829003601f168201915b505050505081526020019060010190612838565b505050508152505061ba80565b60455460295491925061291d91610bf99173ffffffffffffffffffffffffffffffffffffffff918216911661b51a565b604554602a5461294a91610bf99173ffffffffffffffffffffffffffffffffffffffff908116911661b51a565b6048545f9061296e9073ffffffffffffffffffffffffffffffffffffffff1661bab2565b6049549091505f906129959073ffffffffffffffffffffffffffffffffffffffff1661bab2565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b906129ec90869060040161d444565b5f604051808303815f87803b158015612a03575f80fd5b505af1158015612a15573d5f803e3d5ffd5b5050604554602954612a469350610bf9925073ffffffffffffffffffffffffffffffffffffffff908116911661b51a565b604554602a54612a7991612a739173ffffffffffffffffffffffffffffffffffffffff908116911661b51a565b8661b5eb565b6048545f90612a9d9073ffffffffffffffffffffffffffffffffffffffff1661bab2565b6049549091505f90612ac49073ffffffffffffffffffffffffffffffffffffffff1661bab2565b9050612ad9612ad3838661d41e565b8961b5eb565b6112e6818461b5eb565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a5485548085018755850180548316918816919091179055605154855480850187558501805483169188169190911790556052548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094670e37a3d3f0c348be949093612c23938301828280156118df57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116118b45750505050508461b868565b9050612dcc600982604051602001612c3b919061d1f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290612c809061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054612cac9061d211565b8015612cf75780601f10612cce57610100808354040283529160200191612cf7565b820191905f5260205f20905b815481529060010190602001808311612cda57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f20018054612d419061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054612d6d9061d211565b8015612db85780601f10612d8f57610100808354040283529160200191612db8565b820191905f5260205f20905b815481529060010190602001808311612d9b57829003601f168201915b505050505081526020019060010190612d24565b80516054908190612ddd908261d2da565b506020828101518051612df6926001850192019061cbf0565b50506029546052545f9250829182918291612e2b9173ffffffffffffffffffffffffffffffffffffffff91821691168861b4f8565b6045546029549498509296509094509250612e6391610bf99173ffffffffffffffffffffffffffffffffffffffff918216911661b51a565b604554602a54612e9091610bf99173ffffffffffffffffffffffffffffffffffffffff908116911661b51a565b604554605154612ebd91610bf99173ffffffffffffffffffffffffffffffffffffffff908116911661b51a565b604554605254612eea91610bf99173ffffffffffffffffffffffffffffffffffffffff908116911661b51a565b612ef7610c4c838661d41e565b610c52610c39848361d41e565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b5490911661012083015281525f6020808301829052670de0b6b3a76400008385018190526060840183905284518083018652928352608084019290925292519092670dc47c68de877b49929161317491600691612fe39185910161d53f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906130289061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546130549061d211565b801561309f5780601f106130765761010080835404028352916020019161309f565b820191905f5260205f20905b81548152906001019060200180831161308257829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f200180546130e99061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546131159061d211565b80156131605780601f1061313757610100808354040283529160200191613160565b820191905f5260205f20905b81548152906001019060200180831161314357829003601f168201915b5050505050815260200190600101906130cc565b80516054908190613185908261d2da565b50602082810151805161319e926001850192019061cbf0565b5050603a546039545f9250829182918291610bc19173ffffffffffffffffffffffffffffffffffffffff91821691168961b4f8565b6131f2600173fffd8963efd1fc6a506488495d951d5263988d2661d5a0565b81565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094670dc47c68de877b49949093613303938301828280156109a357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109785750505050508461b0f3565b90506134ac60078260405160200161331b919061d1f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906133609061d211565b80601f016020809104026020016040519081016040528092919081815260200182805461338c9061d211565b80156133d75780601f106133ae576101008083540402835291602001916133d7565b820191905f5260205f20905b8154815290600101906020018083116133ba57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f200180546134219061d211565b80601f016020809104026020016040519081016040528092919081815260200182805461344d9061d211565b80156134985780601f1061346f57610100808354040283529160200191613498565b820191905f5260205f20905b81548152906001019060200180831161347b57829003601f168201915b505050505081526020019060010190613404565b805160549081906134bd908261d2da565b5060208281015180516134d6926001850192019061cbf0565b5050602954602a545f92508291829182916115bf9173ffffffffffffffffffffffffffffffffffffffff91821691168961b4f8565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155603a548554938401865592909301805490931673ffffffffffffffffffffffffffffffffffffffff9290921691909117909155815460408051602083810282018101909252828152670de0b6b3a764000094670dfd4f792bfcd5139493613615938301828280156118df57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116118b45750505050508461b868565b90506137be60098260405160200161362d919061d1f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906136729061d211565b80601f016020809104026020016040519081016040528092919081815260200182805461369e9061d211565b80156136e95780601f106136c0576101008083540402835291602001916136e9565b820191905f5260205f20905b8154815290600101906020018083116136cc57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f200180546137339061d211565b80601f016020809104026020016040519081016040528092919081815260200182805461375f9061d211565b80156137aa5780601f10613781576101008083540402835291602001916137aa565b820191905f5260205f20905b81548152906001019060200180831161378d57829003601f168201915b505050505081526020019060010190613716565b805160549081906137cf908261d2da565b5060208281015180516137e8926001850192019061cbf0565b5050603a545f915081908190819061381890829073ffffffffffffffffffffffffffffffffffffffff168861bb61565b604554603954949850929650909450925061385091610bf99173ffffffffffffffffffffffffffffffffffffffff918216911661b51a565b604554603a54612eea91610bf99173ffffffffffffffffffffffffffffffffffffffff908116911661b51a565b604554603954670de0b6b3a764000091670dc47c68de877b49916138bb9173ffffffffffffffffffffffffffffffffffffffff91821691168461be00565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301818152603a5480841660c086015274010000000000000000000000000000000000000000810462ffffff1660e086015277010000000000000000000000000000000000000000000000900460020b610100850152603b5490921661012084015290825260016020808401919091525f8385018190526060808501829052855180840187528281526080808701919091528651938401949094527f800000000000000000000000000000000000000000000000000000000000000095830195909552938101939093529091613b4891600b9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906139fc9061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054613a289061d211565b8015613a735780601f10613a4a57610100808354040283529160200191613a73565b820191905f5260205f20905b815481529060010190602001808311613a5657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f20018054613abd9061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054613ae99061d211565b8015613b345780601f10613b0b57610100808354040283529160200191613b34565b820191905f5260205f20905b815481529060010190602001808311613b1757829003601f168201915b505050505081526020019060010190613aa0565b80516054908190613b59908261d2da565b506020828101518051613b72926001850192019061cbf0565b50905050613d1d600682604051602001613b8c919061d53f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290613bd19061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054613bfd9061d211565b8015613c485780601f10613c1f57610100808354040283529160200191613c48565b820191905f5260205f20905b815481529060010190602001808311613c2b57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f20018054613c929061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054613cbe9061d211565b8015613d095780601f10613ce057610100808354040283529160200191613d09565b820191905f5260205f20905b815481529060010190602001808311613cec57829003601f168201915b505050505081526020019060010190613c75565b80516054908190613d2e908261d2da565b506020828101518051613d47926001850192019061cbf0565b5050603a546047546040805173ffffffffffffffffffffffffffffffffffffffff9093166020840152820152613f0f9150600f90606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290613dc39061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054613def9061d211565b8015613e3a5780601f10613e1157610100808354040283529160200191613e3a565b820191905f5260205f20905b815481529060010190602001808311613e1d57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f20018054613e849061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054613eb09061d211565b8015613efb5780601f10613ed257610100808354040283529160200191613efb565b820191905f5260205f20905b815481529060010190602001808311613ede57829003601f168201915b505050505081526020019060010190613e67565b80516054908190613f20908261d2da565b506020828101518051613f39926001850192019061cbf0565b509050505f6140a960546040518060400160405290815f82018054613f5d9061d211565b80601f0160208091040260200160405190810160405280929190818152602001828054613f899061d211565b8015613fd45780601f10613fab57610100808354040283529160200191613fd4565b820191905f5260205f20905b815481529060010190602001808311613fb757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156128e0578382905f5260205f2001805461401e9061d211565b80601f016020809104026020016040519081016040528092919081815260200182805461404a9061d211565b80156140955780601f1061406c57610100808354040283529160200191614095565b820191905f5260205f20905b81548152906001019060200180831161407857829003601f168201915b505050505081526020019060010190614001565b6039549091505f906140d09073ffffffffffffffffffffffffffffffffffffffff1661bab2565b6045546039549192505f916140fe9173ffffffffffffffffffffffffffffffffffffffff918216911661b51a565b603a549091505f906141259073ffffffffffffffffffffffffffffffffffffffff1661bab2565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061417c90879060040161d444565b5f604051808303815f87803b158015614193575f80fd5b505af11580156141a5573d5f803e3d5ffd5b50506039545f92506141cd915073ffffffffffffffffffffffffffffffffffffffff1661bab2565b6045546039549192505f916141fb9173ffffffffffffffffffffffffffffffffffffffff918216911661b51a565b603a549091505f906142229073ffffffffffffffffffffffffffffffffffffffff1661bab2565b905061422e868461b5eb565b61424161423b8b8761d41e565b8361b5eb565b61425461424e8a8661d431565b8261b5eb565b50505050505050505050565b603a5460538054600180820183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e928301805473ffffffffffffffffffffffffffffffffffffffff9096167fffffffffffffffffffffffff00000000000000000000000000000000000000009687161790558354918201845591018054909316909255805460408051602080840282018101909252828152670de0b6b3a764000094670dc47c68de877b49949093614364938301828280156109a357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109785750505050508461b0f3565b905061450d60078260405160200161437c919061d1f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906143c19061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546143ed9061d211565b80156144385780601f1061440f57610100808354040283529160200191614438565b820191905f5260205f20905b81548152906001019060200180831161441b57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610b57578382905f5260205f200180546144829061d211565b80601f01602080910402602001604051908101604052809291908181526020018280546144ae9061d211565b80156144f95780601f106144d0576101008083540402835291602001916144f9565b820191905f5260205f20905b8154815290600101906020018083116144dc57829003601f168201915b505050505081526020019060010190614465565b8051605490819061451e908261d2da565b506020828101518051614537926001850192019061cbf0565b5050603a545f9150819081908190610bc19073ffffffffffffffffffffffffffffffffffffffff16828961b4f8565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b549091166101208301528152600160208201819052670de0b6b3a7640000928201839052670dfd4f792bfcd513915f91606082019061462690859061d431565b6fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525090506147f