UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 413 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_gas_swap_settleFromCaller_takeAllToMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swap_settleFromCaller_takeAllToSpecifiedAddress","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swap_settleWithBalance_takeAllToMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swap_settleWithBalance_takeAllToSpecifiedAddress","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":"0x600c8054600160ff199182168117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e08190526020805465ffffffffffff199081166378ffff8890811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff1961014081905261016083905260238054909216909317905560249190915560258190556101e06040526101808390526063196101a08190526bb504f333f9de6484597d89b36101c081905260268054909416909417909255602791909155602880546001600160a01b0319908116909317905560428054600e90841617905560438054909216614000600160a01b03179091555f19604655604755348015610120575f80fd5b5062010e9b80620001305f395ff3fe60806040526004361061017b575f3560e01c8063916a17c6116100d1578063ba414fa61161007c578063d8cc2b4011610057578063d8cc2b4014610447578063e20c9f711461045b578063fa7626d41461046f575f80fd5b8063ba414fa6146103fb578063c2f6c3a91461041f578063c7b8e15d14610433575f80fd5b8063b0f3d802116100ac578063b0f3d80214610369578063b1a73b8a1461037d578063b5508aa9146103e7575f80fd5b8063916a17c61461030757806393ad73ed14610328578063b0464fdc14610355575f80fd5b80633f7286f41161013157806366d9a9a01161010c57806366d9a9a0146102b157806385226c81146102d25780638dd3c5bd146102f3575f80fd5b80633f7286f4146102505780634996879b14610264578063542524dd14610278575f80fd5b80632ade3880116101615780632ade3880146101c657806339cd2013146101e75780633e5e3c231461023c575f80fd5b80630a9254e4146101865780631ed7831c1461019c575f80fd5b3661018257005b5f80fd5b348015610191575f80fd5b5061019a610488565b005b3480156101a7575f80fd5b506101b06104c7565b6040516101bd9190614874565b60405180910390f35b3480156101d1575f80fd5b506101da610534565b6040516101bd9190614918565b3480156101f2575f80fd5b5060235460245460255461021492600281810b936301000000909204900b9184565b60408051600295860b81529390940b60208401529282015260608101919091526080016101bd565b348015610247575f80fd5b506101b061067d565b34801561025b575f80fd5b506101b06106e8565b34801561026f575f80fd5b5061019a610753565b348015610283575f80fd5b5061028c61109e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bd565b3480156102bc575f80fd5b506102c56110c0565b6040516101bd9190614a86565b3480156102dd575f80fd5b506102e6611239565b6040516101bd9190614b22565b3480156102fe575f80fd5b5061019a611304565b348015610312575f80fd5b5061031b611c12565b6040516101bd9190614b97565b348015610333575f80fd5b5060205460215460225461021492600281810b936301000000909204900b9184565b348015610360575f80fd5b5061031b611d15565b348015610374575f80fd5b5061019a611e18565b348015610388575f80fd5b506026546027546028546103b49260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff16908201526060016101bd565b3480156103f2575f80fd5b506102e6612509565b348015610406575f80fd5b5061040f6125d4565b60405190151581526020016101bd565b34801561042a575f80fd5b5061019a6126a4565b34801561043e575f80fd5b5061028c612fe7565b348015610452575f80fd5b5061019a612ff7565b348015610466575f80fd5b506101b0613939565b34801561047a575f80fd5b50601f5461040f9060ff1681565b610490611e18565b6104986139a4565b805160549081906104a99082614d02565b5060208281015180516104c2926001850192019061477e565b505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610674575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561065d578382905f5260205f200180546105d290614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546105fe90614c66565b80156106495780601f1061062057610100808354040283529160200191610649565b820191905f5260205f20905b81548152906001019060200180831161062c57829003601f168201915b5050505050815260200190600101906105b5565b505050508152505081526020019060010190610557565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575050505050905090565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f6060840181905284518084018652908152608084015292516109c69160069161082591859101614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061086a90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461089690614c66565b80156108e15780601f106108b8576101008083540402835291602001916108e1565b820191905f5260205f20905b8154815290600101906020018083116108c457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f2001805461092b90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461095790614c66565b80156109a25780601f10610979576101008083540402835291602001916109a2565b820191905f5260205f20905b81548152906001019060200180831161098557829003601f168201915b50505050508152602001906001019061090e565b5050509152509092919050613a00565b805160549081906109d79082614d02565b5060208281015180516109f0926001850192019061477e565b50506048546040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152810184905260016060820152610bbe9150600b90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290610a7290614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e90614c66565b8015610ae95780601f10610ac057610100808354040283529160200191610ae9565b820191905f5260205f20905b815481529060010190602001808311610acc57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054610b3390614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5f90614c66565b8015610baa5780601f10610b8157610100808354040283529160200191610baa565b820191905f5260205f20905b815481529060010190602001808311610b8d57829003601f168201915b505050505081526020019060010190610b16565b80516054908190610bcf9082614d02565b506020828101518051610be8926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301525f8282015280518083038201815260a0830190915260548054610d8d9450600f93606001919082908290610c4190614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6d90614c66565b8015610cb85780601f10610c8f57610100808354040283529160200191610cb8565b820191905f5260205f20905b815481529060010190602001808311610c9b57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054610d0290614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2e90614c66565b8015610d795780601f10610d5057610100808354040283529160200191610d79565b820191905f5260205f20905b815481529060010190602001808311610d5c57829003601f168201915b505050505081526020019060010190610ce5565b80516054908190610d9e9082614d02565b506020828101518051610db7926001850192019061477e565b509050505f610f3460546040518060400160405290815f82018054610ddb90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0790614c66565b8015610e525780601f10610e2957610100808354040283529160200191610e52565b820191905f5260205f20905b815481529060010190602001808311610e3557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f20018054610e9c90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec890614c66565b8015610f135780601f10610eea57610100808354040283529160200191610f13565b820191905f5260205f20905b815481529060010190602001808311610ef657829003601f168201915b505050505081526020019060010190610e7f565b5050505081525050613c14565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90610f8b908490600401614f08565b5f604051808303815f87803b158015610fa2575f80fd5b505af1158015610fb4573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5061796d656e74735f737761705f736574746c6546726f6d43616c6c65725f7460448201527f616b65416c6c546f4d736753656e6465720000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca1291506084015b6020604051808303815f875af1158015611074573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110989190614f21565b50505050565b6110bd600173fffd8963efd1fc6a506488495d951d5263988d26614f65565b81565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610674578382905f5260205f2090600202016040518060400160405290815f8201805461111390614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461113f90614c66565b801561118a5780601f106111615761010080835404028352916020019161118a565b820191905f5260205f20905b81548152906001019060200180831161116d57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561122157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116111ce5790505b505050505081525050815260200190600101906110e3565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610674578382905f5260205f2001805461127990614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546112a590614c66565b80156112f05780601f106112c7576101008083540402835291602001916112f0565b820191905f5260205f20905b8154815290600101906020018083116112d357829003601f168201915b50505050508152602001906001019061125c565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f606084018190528451808401865290815260808401529251611567916006916113d691859101614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061141b90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461144790614c66565b80156114925780601f1061146957610100808354040283529160200191611492565b820191905f5260205f20905b81548152906001019060200180831161147557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546114dc90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461150890614c66565b80156115535780601f1061152a57610100808354040283529160200191611553565b820191905f5260205f20905b81548152906001019060200180831161153657829003601f168201915b5050505050815260200190600101906114bf565b805160549081906115789082614d02565b506020828101518051611591926001850192019061477e565b50506048546046546040805173ffffffffffffffffffffffffffffffffffffffff90931660208401528201526117599150600c90606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061160d90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461163990614c66565b80156116845780601f1061165b57610100808354040283529160200191611684565b820191905f5260205f20905b81548152906001019060200180831161166757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546116ce90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546116fa90614c66565b80156117455780601f1061171c57610100808354040283529160200191611745565b820191905f5260205f20905b81548152906001019060200180831161172857829003601f168201915b5050505050815260200190600101906116b1565b8051605490819061176a9082614d02565b506020828101518051611783926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff909216602083015230908201525f60608201526119509150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061180490614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461183090614c66565b801561187b5780601f106118525761010080835404028352916020019161187b565b820191905f5260205f20905b81548152906001019060200180831161185e57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546118c590614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546118f190614c66565b801561193c5780601f106119135761010080835404028352916020019161193c565b820191905f5260205f20905b81548152906001019060200180831161191f57829003601f168201915b5050505050815260200190600101906118a8565b805160549081906119619082614d02565b50602082810151805161197a926001850192019061477e565b509050505f611aea60546040518060400160405290815f8201805461199e90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546119ca90614c66565b8015611a155780601f106119ec57610100808354040283529160200191611a15565b820191905f5260205f20905b8154815290600101906020018083116119f857829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f20018054611a5f90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b90614c66565b8015611ad65780601f10611aad57610100808354040283529160200191611ad6565b820191905f5260205f20905b815481529060010190602001808311611ab957829003601f168201915b505050505081526020019060010190611a42565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90611b41908490600401614f08565b5f604051808303815f87803b158015611b58575f80fd5b505af1158015611b6a573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f5061796d656e74735f737761705f736574746c6546726f6d43616c6c65725f7460448201527f616b65416c6c546f5370656369666965644164647265737300000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401611058565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610674575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015611cfd57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611caa5790505b50505050508152505081526020019060010190611c35565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610674575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015611e0057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611dad5790505b50505050508152505081526020019060010190611d38565b611e20613c46565b602b5460405173ffffffffffffffffffffffffffffffffffffffff90911690611e48906147d2565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015611e7e573d5f803e3d5ffd5b50604580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690611ed2906147e0565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015611f08573d5f803e3d5ffd5b50604480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555f611f596004613cd1565b9050805f81518110611f6d57611f6d614f97565b602002602001015160295f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181518110611fc757611fc7614f97565b6020026020010151602a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060028151811061202157612021614f97565b602002602001015160515f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060038151811061207b5761207b614f97565b6020908102919091010151605280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556029546120d591165f613de3565b8051603980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151603a8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151603b805490931690821617909155602954602a546121e79291821691165f61407b565b8051604880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160498054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604a805490931690821617909155602a546051546122f99291821691165f61407b565b8051604b80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604c8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604d80549093169082161790915560515460525461240b9291821691165f61407b565b8051604e80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604f8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000919093160291909117905560809092015160508054909316911617905550565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610674578382905f5260205f2001805461254990614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461257590614c66565b80156125c05780601f10612597576101008083540402835291602001916125c0565b820191905f5260205f20905b8154815290600101906020018083116125a357829003601f168201915b50505050508152602001906001019061252c565b6008545f9060ff16156125eb575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015612679573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061269d9190614f21565b1415905090565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830181815260495480841660c086015262ffffff7401000000000000000000000000000000000000000082041660e086015277010000000000000000000000000000000000000000000000900460020b610100850152604a54831661012085015283526001602080850191909152670de0b6b3a76400008486018190525f606086018190528651928301909652948152608084015260455461276f92168461440a565b6129166006826040516020016127859190614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906127ca90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546127f690614c66565b80156128415780601f1061281857610100808354040283529160200191612841565b820191905f5260205f20905b81548152906001019060200180831161282457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f2001805461288b90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546128b790614c66565b80156129025780601f106128d957610100808354040283529160200191612902565b820191905f5260205f20905b8154815290600101906020018083116128e557829003601f168201915b50505050508152602001906001019061286e565b805160549081906129279082614d02565b506020828101518051612940926001850192019061477e565b50506029546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527f8000000000000000000000000000000000000000000000000000000000000000908201525f6060820152612b2d9150600b90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906129e190614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612a0d90614c66565b8015612a585780601f10612a2f57610100808354040283529160200191612a58565b820191905f5260205f20905b815481529060010190602001808311612a3b57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054612aa290614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612ace90614c66565b8015612b195780601f10612af057610100808354040283529160200191612b19565b820191905f5260205f20905b815481529060010190602001808311612afc57829003601f168201915b505050505081526020019060010190612a85565b80516054908190612b3e9082614d02565b506020828101518051612b57926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526001908201525f6060820152612d259150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290612bd990614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0590614c66565b8015612c505780601f10612c2757610100808354040283529160200191612c50565b820191905f5260205f20905b815481529060010190602001808311612c3357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054612c9a90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612cc690614c66565b8015612d115780601f10612ce857610100808354040283529160200191612d11565b820191905f5260205f20905b815481529060010190602001808311612cf457829003601f168201915b505050505081526020019060010190612c7d565b80516054908190612d369082614d02565b506020828101518051612d4f926001850192019061477e565b509050505f612ebf60546040518060400160405290815f82018054612d7390614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612d9f90614c66565b8015612dea5780601f10612dc157610100808354040283529160200191612dea565b820191905f5260205f20905b815481529060010190602001808311612dcd57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f20018054612e3490614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612e6090614c66565b8015612eab5780601f10612e8257610100808354040283529160200191612eab565b820191905f5260205f20905b815481529060010190602001808311612e8e57829003601f168201915b505050505081526020019060010190612e17565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90612f16908490600401614f08565b5f604051808303815f87803b158015612f2d575f80fd5b505af1158015612f3f573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f5061796d656e74735f737761705f736574746c655769746842616c616e63655f60448201527f74616b65416c6c546f4d736753656e64657200000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401611058565b6110bd6401000276a36001614fc4565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830181815260495480841660c086015262ffffff7401000000000000000000000000000000000000000082041660e086015277010000000000000000000000000000000000000000000000900460020b610100850152604a54831661012085015283526001602080850191909152670de0b6b3a76400008486018190525f60608601819052865192830190965294815260808401526045546130c292168461440a565b6132696006826040516020016130d89190614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061311d90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461314990614c66565b80156131945780601f1061316b57610100808354040283529160200191613194565b820191905f5260205f20905b81548152906001019060200180831161317757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546131de90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461320a90614c66565b80156132555780601f1061322c57610100808354040283529160200191613255565b820191905f5260205f20905b81548152906001019060200180831161323857829003601f168201915b5050505050815260200190600101906131c1565b8051605490819061327a9082614d02565b506020828101518051613293926001850192019061477e565b50506048546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527f8000000000000000000000000000000000000000000000000000000000000000908201525f60608201526134809150600b90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061333490614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461336090614c66565b80156133ab5780601f10613382576101008083540402835291602001916133ab565b820191905f5260205f20905b81548152906001019060200180831161338e57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546133f590614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461342190614c66565b801561346c5780601f106134435761010080835404028352916020019161346c565b820191905f5260205f20905b81548152906001019060200180831161344f57829003601f168201915b5050505050815260200190600101906133d8565b805160549081906134919082614d02565b5060208281015180516134aa926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff909216602083015230908201525f60608201526136779150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061352b90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461355790614c66565b80156135a25780601f10613579576101008083540402835291602001916135a2565b820191905f5260205f20905b81548152906001019060200180831161358557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546135ec90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461361890614c66565b80156136635780601f1061363a57610100808354040283529160200191613663565b820191905f5260205f20905b81548152906001019060200180831161364657829003601f168201915b5050505050815260200190600101906135cf565b805160549081906136889082614d02565b5060208281015180516136a1926001850192019061477e565b509050505f61381160546040518060400160405290815f820180546136c590614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546136f190614c66565b801561373c5780601f106137135761010080835404028352916020019161373c565b820191905f5260205f20905b81548152906001019060200180831161371f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f2001805461378690614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546137b290614c66565b80156137fd5780601f106137d4576101008083540402835291602001916137fd565b820191905f5260205f20905b8154815290600101906020018083116137e057829003601f168201915b505050505081526020019060010190613769565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90613868908490600401614f08565b5f604051808303815f87803b15801561387f575f80fd5b505af1158015613891573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f5061796d656e74735f737761705f736574746c655769746842616c616e63655f60448201527f74616b65416c6c546f53706563696669656441646472657373000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401611058565b6060601580548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575050505050905090565b60408051808201825260608082526020808301829052835191820184525f828501818152835284518181528083019095529293919290830191906139f8565b60608152602001906001900390816139e35790505b509052919050565b60408051808201909152606080825260208201525f8460200151516001613a279190614ff0565b67ffffffffffffffff811115613a3f57613a3f614c39565b6040519080825280601f01601f191660200182016040528015613a69576020820181803683370190505b5090505f8560200151516001613a7f9190614ff0565b67ffffffffffffffff811115613a9757613a97614c39565b604051908082528060200260200182016040528015613aca57816020015b6060815260200190600190039081613ab55790505b5090505f5b60018251613add9190615003565b811015613b875786602001518181518110613afa57613afa614f97565b6020026020010151828281518110613b1457613b14614f97565b6020026020010181905250865f01518181518110613b3457613b34614f97565b602001015160f81c60f81b838281518110613b5157613b51614f97565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101613acf565b50838160018351613b989190615003565b81518110613ba857613ba8614f97565b60200260200101819052508460f81b8260018351613bc69190615003565b81518110613bd657613bd6614f97565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053509085526020850152509192915050565b6060815f01518260200151604051602001613c30929190615016565b6040516020818303038152906040529050919050565b30604051613c53906147ee565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613c89573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f613cef83700100000000000000000000000000000000614527565b90505f5b8360ff16811015613ddc57818181518110613d1057613d10614f97565b60209081029190910101516045546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015291169063095ea7b3906044016020604051808303815f875af1158015613daf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dd391906150a9565b50600101613cf3565b5092915050565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a0810182525f815273ffffffffffffffffffffffffffffffffffffffff8481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe90613e9d9084906c01000000000000000000000000906004016150c8565b6020604051808303815f875af1158015613eb9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613edd919061516e565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af1158015613f72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f9691906150a9565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac62000008183018190525f606083015291517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692635a6bcfda929161403a9186919060040161518e565b60206040518083038185885af1158015614056573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613ddc9190614f21565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091528273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156140dd579192915b506040805160a08101825273ffffffffffffffffffffffffffffffffffffffff80861682528481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe9061416f9084906c01000000000000000000000000906004016150c8565b6020604051808303815f875af115801561418b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141af919061516e565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529086169163095ea7b391016020604051808303815f875af1158015614244573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061426891906150a9565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af11580156142fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061432191906150a9565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac6200000818301525f606082015290517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda916143c29185919060040161518e565b6020604051808303815f875af11580156143de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144029190614f21565b509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416614465575f805f8085875af190508061446057614460835f7ff4b3b1bc000000000000000000000000000000000000000000000000000000006146b0565b611098565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061109857611098847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e4000000000000000000000000000000000000000000000000000000006146b0565b60608260ff1667ffffffffffffffff81111561454557614545614c39565b60405190808252806020026020018201604052801561456e578160200160208202803683370190505b5090505f5b8360ff168160ff161015613ddc57601260405161458f906147fc565b6145999190615280565b604051809103905ff0801580156145b2573d5f803e3d5ffd5b50828260ff16815181106145c8576145c8614f97565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160ff168151811061461757614617614f97565b60209081029190910101516040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044015f604051808303815f87803b15801561468e575f80fd5b505af11580156146a0573d5f803e3d5ffd5b5050600190920191506145739050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b828054828255905f5260205f209081019282156147c2579160200282015b828111156147c257825182906147b29082614d02565b509160200191906001019061479c565b506147ce92915061480a565b5090565b6123da806200530b83390190565b611c3d80620076e583390190565b616a05806200932283390190565b611168806200fd2783390190565b808211156147ce575f61481d8282614826565b5060010161480a565b50805461483290614c66565b5f825580601f10614841575050565b601f0160209004905f5260205f209081019061485d9190614860565b50565b5b808211156147ce575f8155600101614861565b602080825282518282018190525f918401906040840190835b818110156148c157835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161488d565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015614a04577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526149ee8486516148cc565b60209586019590945092909201916001016149b4565b50919750505060209485019492909201915060010161493e565b50929695505050505050565b5f8151808452602084019350602083015f5b82811015614a7c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101614a3c565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752614af060408801826148cc565b9050602082015191508681036020880152614b0b8183614a2a565b965050506020938401939190910190600101614aac565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452614b828583516148cc565b94506020938401939190910190600101614b48565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151905060406020870152614c236040870182614a2a565b9550506020938401939190910190600101614bbd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c90821680614c7a57607f821691505b602082108103614cb1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156104c257805f5260205f20601f840160051c81016020851015614cdc5750805b601f840160051c820191505b81811015614cfb575f8155600101614ce8565b5050505050565b815167ffffffffffffffff811115614d1c57614d1c614c39565b614d3081614d2a8454614c66565b84614cb7565b6020601f821160018114614d81575f8315614d4b5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455614cfb565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614dce5787850151825560209485019460019092019101614dae565b5084821015614e0a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60208152614ea060208201835173ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b6020820151151560c08201526fffffffffffffffffffffffffffffffff60408301511660e08201526fffffffffffffffffffffffffffffffff6060830151166101008201525f608083015161012080840152614f006101408401826148cc565b949350505050565b602081525f614f1a60208301846148cc565b9392505050565b5f60208284031215614f31575f80fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000