{"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_bytecodeSize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeIn_swapExactIn_1Hop","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeIn_swapExactIn_2Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeIn_swapExactIn_3Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeIn_swapExactInputSingle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeIn_swapExactOut_1Hop_sweepExcessETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeIn_swapExactOut_2Hops_sweepExcessETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeIn_swapExactOut_3Hops_sweepExcessETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeIn_swapExactOutputSingle_sweepExcessETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeOut_swapExactIn_1Hop","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeOut_swapExactInputSingle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeOut_swapExactOut_1Hop","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeOut_swapExactOut_3Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_nativeOut_swapExactOutputSingle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactIn_1Hop_oneForZero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactIn_1Hop_zeroForOne","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactIn_2Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactIn_3Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactInputSingle_zeroForOne","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactOut_1Hop_oneForZero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactOut_1Hop_zeroForOne","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactOut_2Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactOut_3Hops","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swapExactOutputSingle_zeroForOne","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_router_initcodeHash","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":"0x600c8054600160ff199182168117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e08190526020805465ffffffffffff199081166378ffff8890811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff1961014081905261016083905260238054909216909317905560249190915560258190556101e06040526101808390526063196101a08190526bb504f333f9de6484597d89b36101c081905260268054909416909417909255602791909155602880546001600160a01b0319908116909317905560428054600e90841617905560438054909216614000600160a01b03179091555f19604655604755348015610120575f80fd5b50620173b380620001305f395ff3fe6080604052600436106102da575f3560e01c806385226c811161017b578063b5508aa9116100d1578063c9bcb77a11610087578063ede3d78a11610062578063ede3d78a1461074a578063f0cd759a1461075e578063fa7626d414610772575f80fd5b8063c9bcb77a1461070e578063e20c9f7114610722578063e54add6814610736575f80fd5b8063bd9ab727116100b7578063bd9ab727146106d2578063c148f4f8146106e6578063c7b8e15d146106fa575f80fd5b8063b5508aa91461069a578063ba414fa6146106ae575f80fd5b80639d06c51d11610131578063b0464fdc1161010c578063b0464fdc14610608578063b0f3d8021461061c578063b1a73b8a14610630575f80fd5b80639d06c51d146105cc578063a0775dd8146105e0578063a3a4aec0146105f4575f80fd5b80638a1a4893116101615780638a1a48931461056a578063916a17c61461057e57806393ad73ed1461059f575f80fd5b806385226c811461053557806388e5410714610556575f80fd5b80633e5e3c2311610230578063567dc4b8116101e657806364724a2d116101c157806364724a2d146104ec57806366d9a9a0146105005780637ed16fa014610521575f80fd5b8063567dc4b8146104b05780635999bb35146104c45780635a9fba9a146104d8575f80fd5b806340d8983e1161021657806340d8983e1461044f5780634e9c949514610463578063542524dd14610477575f80fd5b80633e5e3c23146104275780633f7286f41461043b575f80fd5b80631ed7831c11610290578063294823301161026b578063294823301461039d5780632ade3880146103b157806339cd2013146103d2575f80fd5b80631ed7831c1461034b57806320c27a5c14610375578063258ae5a114610389575f80fd5b80630bc1c41e116102c05780630bc1c41e1461030f5780630feca937146103235780631546ac1214610337575f80fd5b80630a7d9154146102e55780630a9254e4146102fb575f80fd5b366102e157005b5f80fd5b3480156102f0575f80fd5b506102f961078b565b005b348015610306575f80fd5b506102f9610d3b565b34801561031a575f80fd5b506102f9610d7a565b34801561032e575f80fd5b506102f96112df565b348015610342575f80fd5b506102f9611843565b348015610356575f80fd5b5061035f611db5565b60405161036c919061aae7565b60405180910390f35b348015610380575f80fd5b506102f9611e22565b348015610394575f80fd5b506102f9611ffe565b3480156103a8575f80fd5b506102f9612571565b3480156103bc575f80fd5b506103c5612ae4565b60405161036c919061ab8b565b3480156103dd575f80fd5b506023546024546025546103ff92600281810b936301000000909204900b9184565b60408051600295860b81529390940b602084015292820152606081019190915260800161036c565b348015610432575f80fd5b5061035f612c2d565b348015610446575f80fd5b5061035f612c98565b34801561045a575f80fd5b506102f9612d03565b34801561046e575f80fd5b506102f9613295565b348015610482575f80fd5b5061048b6137ba565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161036c565b3480156104bb575f80fd5b506102f96137dc565b3480156104cf575f80fd5b506102f9613d64565b3480156104e3575f80fd5b506102f96142c6565b3480156104f7575f80fd5b506102f9614367565b34801561050b575f80fd5b506105146148f3565b60405161036c919061acf9565b34801561052c575f80fd5b506102f9614a6c565b348015610540575f80fd5b50610549614ff8565b60405161036c919061ad95565b348015610561575f80fd5b506102f96150c3565b348015610575575f80fd5b506102f961561e565b348015610589575f80fd5b50610592615bc3565b60405161036c919061ae0a565b3480156105aa575f80fd5b506020546021546022546103ff92600281810b936301000000909204900b9184565b3480156105d7575f80fd5b506102f9615cc6565b3480156105eb575f80fd5b506102f9616266565b3480156105ff575f80fd5b506102f96167b5565b348015610613575f80fd5b50610592616d49565b348015610627575f80fd5b506102f9616e4c565b34801561063b575f80fd5b506026546027546028546106679260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff169082015260600161036c565b3480156106a5575f80fd5b5061054961753d565b3480156106b9575f80fd5b506106c2617608565b604051901515815260200161036c565b3480156106dd575f80fd5b506102f96176d8565b3480156106f1575f80fd5b506102f9617c81565b348015610705575f80fd5b5061048b6181f4565b348015610719575f80fd5b506102f9618204565b34801561072d575f80fd5b5061035f618777565b348015610741575f80fd5b506102f96187e2565b348015610755575f80fd5b506102f9618d15565b348015610769575f80fd5b506102f96192ba565b34801561077d575f80fd5b50601f546106c29060ff1681565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b5490911661012083015281525f6020808301829052670de0b6b3a76400008385018190526060840183905284518083018652928352608084019290925292519092610a009160069161085f9185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906108a49061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546108d09061afae565b801561091b5780601f106108f25761010080835404028352916020019161091b565b820191905f5260205f20905b8154815290600101906020018083116108fe57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546109659061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546109919061afae565b80156109dc5780601f106109b3576101008083540402835291602001916109dc565b820191905f5260205f20905b8154815290600101906020018083116109bf57829003601f168201915b505050505081526020019060010190610948565b505050915250909291905061985b565b80516054908190610a11908261b077565b506020828101518051610a2a926001850192019061a9f1565b5050603a5460395460408051808201909152605480545f9550610bd19473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290610a749061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa09061afae565b8015610aeb5780601f10610ac257610100808354040283529160200191610aeb565b820191905f5260205f20905b815481529060010190602001808311610ace57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054610b359061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054610b619061afae565b8015610bac5780601f10610b8357610100808354040283529160200191610bac565b820191905f5260205f20905b815481529060010190602001808311610b8f57829003601f168201915b505050505081526020019060010190610b18565b505050915250909392919050619a6f565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90610c2890849060040161b18e565b5f604051808303815f87803b158015610c3f575f80fd5b505af1158015610c51573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5634526f757465725f4578616374496e70757453696e676c655f6e617469766560448201527f4f757400000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca1291506084015b6020604051808303815f875af1158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d35919061b1a0565b50505050565b610d43616e4c565b610d4b619c0d565b80516054908190610d5c908261b077565b506020828101518051610d75926001850192019061a9f1565b505050565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190526fffffffffffffffffffffffffffffffff6060840152835180830185525f815260808401529251610feb91600891610e5a9185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290610e9f9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecb9061afae565b8015610f165780601f10610eed57610100808354040283529160200191610f16565b820191905f5260205f20905b815481529060010190602001808311610ef957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054610f609061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8c9061afae565b8015610fd75780601f10610fae57610100808354040283529160200191610fd7565b820191905f5260205f20905b815481529060010190602001808311610fba57829003601f168201915b505050505081526020019060010190610f43565b80516054908190610ffc908261b077565b506020828101518051611015926001850192019061a9f1565b5050603954603a5460408051808201909152605480545f95506111ab9473ffffffffffffffffffffffffffffffffffffffff90811694169260019290918290829061105f9061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461108b9061afae565b80156110d65780601f106110ad576101008083540402835291602001916110d6565b820191905f5260205f20905b8154815290600101906020018083116110b957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546111209061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461114c9061afae565b80156111975780601f1061116e57610100808354040283529160200191611197565b820191905f5260205f20905b81548152906001019060200180831161117a57829003601f168201915b505050505081526020019060010190611103565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff90671bc16d674ec800009061120c90859060040161b18e565b5f604051808303818588803b158015611223575f80fd5b505af1158015611235573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5634526f757465725f45786163744f757470757453696e676c655f6e6174697660448201527f65496e5f737765657045544800000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506084019050610cf5565b60295460538054600180820183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e928301805473ffffffffffffffffffffffffffffffffffffffff9096167fffffffffffffffffffffffff00000000000000000000000000000000000000009687161790558354918201845591018054909316909255805460408051602080840282018101909252828152670de0b6b3a764000094936113df9391929091908301828280156113d457602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a9575b505050505083619c69565b90506115886007826040516020016113f7919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061143c9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546114689061afae565b80156114b35780601f1061148a576101008083540402835291602001916114b3565b820191905f5260205f20905b81548152906001019060200180831161149657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546114fd9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546115299061afae565b80156115745780601f1061154b57610100808354040283529160200191611574565b820191905f5260205f20905b81548152906001019060200180831161155757829003601f168201915b5050505050815260200190600101906114e0565b80516054908190611599908261b077565b5060208281015180516115b2926001850192019061a9f1565b505060295460408051808201909152605480545f94506117419373ffffffffffffffffffffffffffffffffffffffff16928592600192829082906115f59061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546116219061afae565b801561166c5780601f106116435761010080835404028352916020019161166c565b820191905f5260205f20905b81548152906001019060200180831161164f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546116b69061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546116e29061afae565b801561172d5780601f106117045761010080835404028352916020019161172d565b820191905f5260205f20905b81548152906001019060200180831161171057829003601f168201915b505050505081526020019060010190611699565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061179890849060040161b18e565b5f604051808303815f87803b1580156117af575f80fd5b505af11580156117c1573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5634526f757465725f4578616374496e31486f705f6e61746976654f757400006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554938401865592909301805490931673ffffffffffffffffffffffffffffffffffffffff9290921691909117909155815460408051602083810282018101909252828152670de0b6b3a7640000946119479391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050611af060078260405160200161195f919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906119a49061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546119d09061afae565b8015611a1b5780601f106119f257610100808354040283529160200191611a1b565b820191905f5260205f20905b8154815290600101906020018083116119fe57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054611a659061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054611a919061afae565b8015611adc5780601f10611ab357610100808354040283529160200191611adc565b820191905f5260205f20905b815481529060010190602001808311611abf57829003601f168201915b505050505081526020019060010190611a48565b80516054908190611b01908261b077565b506020828101518051611b1a926001850192019061a9f1565b509050505f611caf5f60295f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f82018054611b639061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054611b8f9061afae565b8015611bda5780601f10611bb157610100808354040283529160200191611bda565b820191905f5260205f20905b815481529060010190602001808311611bbd57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054611c249061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054611c509061afae565b8015611c9b5780601f10611c7257610100808354040283529160200191611c9b565b820191905f5260205f20905b815481529060010190602001808311611c7e57829003601f168201915b505050505081526020019060010190611c07565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b908590611d0890859060040161b18e565b5f604051808303818588803b158015611d1f575f80fd5b505af1158015611d31573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5634526f757465725f4578616374496e31486f705f6e6174697665496e0000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b60606016805480602002602001604051908101604052809291908181526020018280548015611e1857602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ded575b5050505050905090565b6040517f8d1cc92500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6f636b5634526f757465722e736f6c3a4d6f636b5634526f757465720000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a908290638d1cc925906064015f60405180830381865afa158015611ebd573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f02919081019061b316565b604051602001611f12919061b406565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209091012060e084901b7fffffffff000000000000000000000000000000000000000000000000000000001683526004830191909152603d60448301527f726f7574657220696e6974636f646520686173682028776974686f757420636f60648301527f6e7374727563746f7220706172616d732c2061732075696e74323536290000006084830152602482015260a4015b5f604051808303815f87803b158015611fec575f80fd5b505af1158015610d35573d5f803e3d5ffd5b602a5460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff978816179091556029548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094936121069391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b90506122af60078260405160200161211e919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906121639061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461218f9061afae565b80156121da5780601f106121b1576101008083540402835291602001916121da565b820191905f5260205f20905b8154815290600101906020018083116121bd57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546122249061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546122509061afae565b801561229b5780601f106122725761010080835404028352916020019161229b565b820191905f5260205f20905b81548152906001019060200180831161227e57829003601f168201915b505050505081526020019060010190612207565b805160549081906122c0908261b077565b5060208281015180516122d9926001850192019061a9f1565b5050602a5460295460408051808201909152605480545f955061246f9473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906123239061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461234f9061afae565b801561239a5780601f106123715761010080835404028352916020019161239a565b820191905f5260205f20905b81548152906001019060200180831161237d57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546123e49061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546124109061afae565b801561245b5780601f106124325761010080835404028352916020019161245b565b820191905f5260205f20905b81548152906001019060200180831161243e57829003601f168201915b5050505050815260200190600101906123c7565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b906124c690849060040161b18e565b5f604051808303815f87803b1580156124dd575f80fd5b505af11580156124ef573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f4578616374496e31486f705f6f6e65466f725a65726f006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094936126799391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050612822600782604051602001612691919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906126d69061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546127029061afae565b801561274d5780601f106127245761010080835404028352916020019161274d565b820191905f5260205f20905b81548152906001019060200180831161273057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546127979061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546127c39061afae565b801561280e5780601f106127e55761010080835404028352916020019161280e565b820191905f5260205f20905b8154815290600101906020018083116127f157829003601f168201915b50505050508152602001906001019061277a565b80516054908190612833908261b077565b50602082810151805161284c926001850192019061a9f1565b5050602954602a5460408051808201909152605480545f95506129e29473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906128969061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546128c29061afae565b801561290d5780601f106128e45761010080835404028352916020019161290d565b820191905f5260205f20905b8154815290600101906020018083116128f057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546129579061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546129839061afae565b80156129ce5780601f106129a5576101008083540402835291602001916129ce565b820191905f5260205f20905b8154815290600101906020018083116129b157829003601f168201915b50505050508152602001906001019061293a565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90612a3990849060040161b18e565b5f604051808303815f87803b158015612a50575f80fd5b505af1158015612a62573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f4578616374496e31486f705f7a65726f466f724f6e65006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015612c24575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015612c0d578382905f5260205f20018054612b829061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054612bae9061afae565b8015612bf95780601f10612bd057610100808354040283529160200191612bf9565b820191905f5260205f20905b815481529060010190602001808311612bdc57829003601f168201915b505050505081526020019060010190612b65565b505050508152505081526020019060010190612b07565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611e1857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ded575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e1857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ded575050505050905090565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554808501875585018054831673ffffffffffffffffffffffffffffffffffffffff928316179055602a54865494850187559390940180549091169290931691909117909155815460408051602083810282018101909252828152670de0b6b3a764000094612e1f939192909190830182828015612e1457602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de9575b505050505083619e5a565b9050612fc8600982604051602001612e37919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290612e7c9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054612ea89061afae565b8015612ef35780601f10612eca57610100808354040283529160200191612ef3565b820191905f5260205f20905b815481529060010190602001808311612ed657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054612f3d9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054612f699061afae565b8015612fb45780601f10612f8b57610100808354040283529160200191612fb4565b820191905f5260205f20905b815481529060010190602001808311612f9757829003601f168201915b505050505081526020019060010190612f20565b80516054908190612fd9908261b077565b506020828101518051612ff2926001850192019061a9f1565b509050505f6131875f602a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f8201805461303b9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546130679061afae565b80156130b25780601f10613089576101008083540402835291602001916130b2565b820191905f5260205f20905b81548152906001019060200180831161309557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546130fc9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546131289061afae565b80156131735780601f1061314a57610100808354040283529160200191613173565b820191905f5260205f20905b81548152906001019060200180831161315657829003601f168201915b5050505050815260200190600101906130df565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff90671bc16d674ec80000906131e890859060040161b18e565b5f604051808303818588803b1580156131ff575f80fd5b505af1158015613211573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f45786163744f757432486f70735f6e6174697665496e006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f6060840181905284518084018652908152608084015292516134f8916006916133679185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906133ac9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546133d89061afae565b80156134235780601f106133fa57610100808354040283529160200191613423565b820191905f5260205f20905b81548152906001019060200180831161340657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f2001805461346d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546134999061afae565b80156134e45780601f106134bb576101008083540402835291602001916134e4565b820191905f5260205f20905b8154815290600101906020018083116134c757829003601f168201915b505050505081526020019060010190613450565b80516054908190613509908261b077565b506020828101518051613522926001850192019061a9f1565b505060485460495460408051808201909152605480545f95506136b89473ffffffffffffffffffffffffffffffffffffffff90811694169260019290918290829061356c9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546135989061afae565b80156135e35780601f106135ba576101008083540402835291602001916135e3565b820191905f5260205f20905b8154815290600101906020018083116135c657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f2001805461362d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546136599061afae565b80156136a45780601f1061367b576101008083540402835291602001916136a4565b820191905f5260205f20905b81548152906001019060200180831161368757829003601f168201915b505050505081526020019060010190613610565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061370f90849060040161b18e565b5f604051808303815f87803b158015613726575f80fd5b505af1158015613738573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5634526f757465725f4578616374496e70757453696e676c65000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6137d9600173fffd8963efd1fc6a506488495d951d5263988d2661b449565b81565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554808501875585018054831673ffffffffffffffffffffffffffffffffffffffff928316179055602a54865494850187559390940180549091169290931691909117909155815460408051602083810282018101909252828152670de0b6b3a7640000946138f69391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050613a9f60078260405160200161390e919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906139539061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461397f9061afae565b80156139ca5780601f106139a1576101008083540402835291602001916139ca565b820191905f5260205f20905b8154815290600101906020018083116139ad57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054613a149061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613a409061afae565b8015613a8b5780601f10613a6257610100808354040283529160200191613a8b565b820191905f5260205f20905b815481529060010190602001808311613a6e57829003601f168201915b5050505050815260200190600101906139f7565b80516054908190613ab0908261b077565b506020828101518051613ac9926001850192019061a9f1565b509050505f613c5e5f602a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f82018054613b129061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613b3e9061afae565b8015613b895780601f10613b6057610100808354040283529160200191613b89565b820191905f5260205f20905b815481529060010190602001808311613b6c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054613bd39061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613bff9061afae565b8015613c4a5780601f10613c2157610100808354040283529160200191613c4a565b820191905f5260205f20905b815481529060010190602001808311613c2d57829003601f168201915b505050505081526020019060010190613bb6565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b908590613cb790859060040161b18e565b5f604051808303818588803b158015613cce575f80fd5b505af1158015613ce0573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5634526f757465725f4578616374496e32486f70735f6e6174697665496e00006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b60295460538054600180820183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e928301805473ffffffffffffffffffffffffffffffffffffffff9096167fffffffffffffffffffffffff00000000000000000000000000000000000000009687161790558354918201845591018054909316909255805460408051602080840282018101909252828152670de0b6b3a76400009493613e62939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b905061400b600982604051602001613e7a919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290613ebf9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613eeb9061afae565b8015613f365780601f10613f0d57610100808354040283529160200191613f36565b820191905f5260205f20905b815481529060010190602001808311613f1957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054613f809061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613fac9061afae565b8015613ff75780601f10613fce57610100808354040283529160200191613ff7565b820191905f5260205f20905b815481529060010190602001808311613fda57829003601f168201915b505050505081526020019060010190613f63565b8051605490819061401c908261b077565b506020828101518051614035926001850192019061a9f1565b505060295460408051808201909152605480545f94506141c49373ffffffffffffffffffffffffffffffffffffffff16928592600192829082906140789061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546140a49061afae565b80156140ef5780601f106140c6576101008083540402835291602001916140ef565b820191905f5260205f20905b8154815290600101906020018083116140d257829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546141399061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546141659061afae565b80156141b05780601f10614187576101008083540402835291602001916141b0565b820191905f5260205f20905b81548152906001019060200180831161419357829003601f168201915b50505050508152602001906001019061411c565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061421b90849060040161b18e565b5f604051808303815f87803b158015614232575f80fd5b505af1158015614244573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f45786163744f757431486f705f6e61746976654f7574006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b604554604080517f51db805a0000000000000000000000000000000000000000000000000000000081526004810191909152601160448201527f5634526f757465725f42797465636f6465000000000000000000000000000000606482015273ffffffffffffffffffffffffffffffffffffffff9091163b6024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a90608401611fd5565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a54855480850187558501805483169188169190911790556051548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094936144889391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b90506146316007826040516020016144a0919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906144e59061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546145119061afae565b801561455c5780601f106145335761010080835404028352916020019161455c565b820191905f5260205f20905b81548152906001019060200180831161453f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546145a69061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546145d29061afae565b801561461d5780601f106145f45761010080835404028352916020019161461d565b820191905f5260205f20905b81548152906001019060200180831161460057829003601f168201915b505050505081526020019060010190614589565b80516054908190614642908261b077565b50602082810151805161465b926001850192019061a9f1565b505060295460515460408051808201909152605480545f95506147f19473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906146a59061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546146d19061afae565b801561471c5780601f106146f35761010080835404028352916020019161471c565b820191905f5260205f20905b8154815290600101906020018083116146ff57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546147669061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546147929061afae565b80156147dd5780601f106147b4576101008083540402835291602001916147dd565b820191905f5260205f20905b8154815290600101906020018083116147c057829003601f168201915b505050505081526020019060010190614749565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061484890849060040161b18e565b5f604051808303815f87803b15801561485f575f80fd5b505af1158015614871573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5634526f757465725f4578616374496e32486f707300000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015612c24578382905f5260205f2090600202016040518060400160405290815f820180546149469061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546149729061afae565b80156149bd5780601f10614994576101008083540402835291602001916149bd565b820191905f5260205f20905b8154815290600101906020018083116149a057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015614a5457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411614a015790505b50505050508152505081526020019060010190614916565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a54855480850187558501805483169188169190911790556051548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a76400009493614b8d939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050614d36600982604051602001614ba5919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290614bea9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054614c169061afae565b8015614c615780601f10614c3857610100808354040283529160200191614c61565b820191905f5260205f20905b815481529060010190602001808311614c4457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054614cab9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054614cd79061afae565b8015614d225780601f10614cf957610100808354040283529160200191614d22565b820191905f5260205f20905b815481529060010190602001808311614d0557829003601f168201915b505050505081526020019060010190614c8e565b80516054908190614d47908261b077565b506020828101518051614d60926001850192019061a9f1565b505060295460515460408051808201909152605480545f9550614ef69473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290614daa9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054614dd69061afae565b8015614e215780601f10614df857610100808354040283529160200191614e21565b820191905f5260205f20905b815481529060010190602001808311614e0457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054614e6b9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054614e979061afae565b8015614ee25780601f10614eb957610100808354040283529160200191614ee2565b820191905f5260205f20905b815481529060010190602001808311614ec557829003601f168201915b505050505081526020019060010190614e4e565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90614f4d90849060040161b18e565b5f604051808303815f87803b158015614f64575f80fd5b505af1158015614f76573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5634526f757465725f45786163744f757432486f7073000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015612c24578382905f5260205f200180546150389061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546150649061afae565b80156150af5780601f10615086576101008083540402835291602001916150af565b820191905f5260205f20905b81548152906001019060200180831161509257829003601f168201915b50505050508152602001906001019061501b565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b5490911661012083015281525f6020808301829052670de0b6b3a76400008385018190526fffffffffffffffffffffffffffffffff606085015284518083018652928352608084019290925292519092615337916008916151a69185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906151eb9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546152179061afae565b80156152625780601f1061523957610100808354040283529160200191615262565b820191905f5260205f20905b81548152906001019060200180831161524557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546152ac9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546152d89061afae565b80156153235780601f106152fa57610100808354040283529160200191615323565b820191905f5260205f20905b81548152906001019060200180831161530657829003601f168201915b50505050508152602001906001019061528f565b80516054908190615348908261b077565b506020828101518051615361926001850192019061a9f1565b5050603a5460395460408051808201909152605480545f95506154f79473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906153ab9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546153d79061afae565b80156154225780601f106153f957610100808354040283529160200191615422565b820191905f5260205f20905b81548152906001019060200180831161540557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f2001805461546c9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546154989061afae565b80156154e35780601f106154ba576101008083540402835291602001916154e3565b820191905f5260205f20905b8154815290600101906020018083116154c657829003601f168201915b50505050508152602001906001019061544f565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff9061554e90849060040161b18e565b5f604051808303815f87803b158015615565575f80fd5b505af1158015615577573d5f803e3d5ffd5b50506040517fdd9fca12000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5634526f757465725f45786163744f757470757453696e676c655f6e6174697660448201527f654f7574000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401610cf5565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a5485548085018755850180548316918816919091179055605154855480850187558501805483169188169190911790556052548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a76400009493615758939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050615901600982604051602001615770919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906157b59061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546157e19061afae565b801561582c5780601f106158035761010080835404028352916020019161582c565b820191905f5260205f20905b81548152906001019060200180831161580f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546158769061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546158a29061afae565b80156158ed5780601f106158c4576101008083540402835291602001916158ed565b820191905f5260205f20905b8154815290600101906020018083116158d057829003601f168201915b505050505081526020019060010190615859565b80516054908190615912908261b077565b50602082810151805161592b926001850192019061a9f1565b505060295460525460408051808201909152605480545f9550615ac19473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906159759061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546159a19061afae565b80156159ec5780601f106159c3576101008083540402835291602001916159ec565b820191905f5260205f20905b8154815290600101906020018083116159cf57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054615a369061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054615a629061afae565b8015615aad5780601f10615a8457610100808354040283529160200191615aad565b820191905f5260205f20905b815481529060010190602001808311615a9057829003601f168201915b505050505081526020019060010190615a19565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90615b1890849060040161b18e565b5f604051808303815f87803b158015615b2f575f80fd5b505af1158015615b41573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5634526f757465725f45786163744f757433486f7073000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015612c24575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015615cae57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411615c5b5790505b50505050508152505081526020019060010190615be6565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554938401865592909301805490931673ffffffffffffffffffffffffffffffffffffffff9290921691909117909155815460408051602083810282018101909252828152670de0b6b3a764000094615dca939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050615f73600982604051602001615de2919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290615e279061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054615e539061afae565b8015615e9e5780601f10615e7557610100808354040283529160200191615e9e565b820191905f5260205f20905b815481529060010190602001808311615e8157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054615ee89061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054615f149061afae565b8015615f5f5780601f10615f3657610100808354040283529160200191615f5f565b820191905f5260205f20905b815481529060010190602001808311615f4257829003601f168201915b505050505081526020019060010190615ecb565b80516054908190615f84908261b077565b506020828101518051615f9d926001850192019061a9f1565b509050505f6161325f60295f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f82018054615fe69061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546160129061afae565b801561605d5780601f106160345761010080835404028352916020019161605d565b820191905f5260205f20905b81548152906001019060200180831161604057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546160a79061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546160d39061afae565b801561611e5780601f106160f55761010080835404028352916020019161611e565b820191905f5260205f20905b81548152906001019060200180831161610157829003601f168201915b50505050508152602001906001019061608a565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff90671bc16d674ec800009061619390859060040161b18e565b5f604051808303818588803b1580156161aa575f80fd5b505af11580156161bc573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5634526f757465725f45786163744f757431486f705f6e6174697665496e5f7360448201527f77656570455448000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506084019050610cf5565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f6060840181905284518084018652908152608084015292516164c9916006916163389185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061637d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546163a99061afae565b80156163f45780601f106163cb576101008083540402835291602001916163f4565b820191905f5260205f20905b8154815290600101906020018083116163d757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f2001805461643e9061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461646a9061afae565b80156164b55780601f1061648c576101008083540402835291602001916164b5565b820191905f5260205f20905b81548152906001019060200180831161649857829003601f168201915b505050505081526020019060010190616421565b805160549081906164da908261b077565b5060208281015180516164f3926001850192019061a9f1565b5050603954603a5460408051808201909152605480545f95506166899473ffffffffffffffffffffffffffffffffffffffff90811694169260019290918290829061653d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546165699061afae565b80156165b45780601f1061658b576101008083540402835291602001916165b4565b820191905f5260205f20905b81548152906001019060200180831161659757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546165fe9061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461662a9061afae565b80156166755780601f1061664c57610100808354040283529160200191616675565b820191905f5260205f20905b81548152906001019060200180831161665857829003601f168201915b5050505050815260200190600101906165e1565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9085906166e290859060040161b18e565b5f604051808303818588803b1580156166f9575f80fd5b505af115801561670b573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f5634526f757465725f4578616374496e70757453696e676c655f6e617469766560448201527f496e0000000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506084019050610cf5565b60515460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a54855480850187558501805483169188169190911790556029548554808501875585018054831691909716179095558354918201845591018054909316909255805460408051602083810282018101909252828152670de0b6b3a764000094936168e5939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050616a8e6009826040516020016168fd919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906169429061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461696e9061afae565b80156169b95780601f10616990576101008083540402835291602001916169b9565b820191905f5260205f20905b81548152906001019060200180831161699c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054616a039061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054616a2f9061afae565b8015616a7a5780601f10616a5157610100808354040283529160200191616a7a565b820191905f5260205f20905b815481529060010190602001808311616a5d57829003601f168201915b5050505050815260200190600101906169e6565b80516054908190616a9f908261b077565b506020828101518051616ab8926001850192019061a9f1565b505060515460408051808201909152605480545f9450616c479373ffffffffffffffffffffffffffffffffffffffff1692859260019282908290616afb9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054616b279061afae565b8015616b725780601f10616b4957610100808354040283529160200191616b72565b820191905f5260205f20905b815481529060010190602001808311616b5557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054616bbc9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054616be89061afae565b8015616c335780601f10616c0a57610100808354040283529160200191616c33565b820191905f5260205f20905b815481529060010190602001808311616c1657829003601f168201915b505050505081526020019060010190616b9f565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90616c9e90849060040161b18e565b5f604051808303815f87803b158015616cb5575f80fd5b505af1158015616cc7573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5634526f757465725f45786163744f757433486f70735f6e61746976654f75746044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015612c24575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015616e3457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411616de15790505b50505050508152505081526020019060010190616d6c565b616e5461a072565b602b5460405173ffffffffffffffffffffffffffffffffffffffff90911690616e7c9061aa45565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015616eb2573d5f803e3d5ffd5b50604580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690616f069061aa53565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015616f3c573d5f803e3d5ffd5b50604480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555f616f8d600461a0fd565b9050805f81518110616fa157616fa161b47b565b602002602001015160295f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181518110616ffb57616ffb61b47b565b6020026020010151602a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002815181106170555761705561b47b565b602002602001015160515f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806003815181106170af576170af61b47b565b6020908102919091010151605280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560295461710991165f61a20f565b8051603980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151603a8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151603b805490931690821617909155602954602a5461721b9291821691165f61a4a7565b8051604880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160498054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604a805490931690821617909155602a5460515461732d9291821691165f61a4a7565b8051604b80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604c8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604d80549093169082161790915560515460525461743f9291821691165f61a4a7565b8051604e80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604f8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000919093160291909117905560809092015160508054909316911617905550565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015612c24578382905f5260205f2001805461757d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546175a99061afae565b80156175f45780601f106175cb576101008083540402835291602001916175f4565b820191905f5260205f20905b8154815290600101906020018083116175d757829003601f168201915b505050505081526020019060010190617560565b6008545f9060ff161561761f575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa1580156176ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906176d1919061b1a0565b1415905090565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554808501875585018054831673ffffffffffffffffffffffffffffffffffffffff928316179055602a5486548086018855860180548416918316919091179055605154865494850187559390940180549091169290931691909117909155815460408051602083810282018101909252828152670de0b6b3a76400009461780b939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b90506179b4600982604051602001617823919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906178689061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546178949061afae565b80156178df5780601f106178b6576101008083540402835291602001916178df565b820191905f5260205f20905b8154815290600101906020018083116178c257829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546179299061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546179559061afae565b80156179a05780601f10617977576101008083540402835291602001916179a0565b820191905f5260205f20905b81548152906001019060200180831161798357829003601f168201915b50505050508152602001906001019061790c565b805160549081906179c5908261b077565b5060208281015180516179de926001850192019061a9f1565b509050505f617b735f60515f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f82018054617a279061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617a539061afae565b8015617a9e5780601f10617a7557610100808354040283529160200191617a9e565b820191905f5260205f20905b815481529060010190602001808311617a8157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054617ae89061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617b149061afae565b8015617b5f5780601f10617b3657610100808354040283529160200191617b5f565b820191905f5260205f20905b815481529060010190602001808311617b4257829003601f168201915b505050505081526020019060010190617acb565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff90671bc16d674ec8000090617bd490859060040161b18e565b5f604051808303818588803b158015617beb575f80fd5b505af1158015617bfd573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f45786163744f757433486f70735f6e6174697665496e006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b602a5460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff978816179091556029548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a76400009493617d89939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050617f32600982604051602001617da1919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290617de69061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617e129061afae565b8015617e5d5780601f10617e3457610100808354040283529160200191617e5d565b820191905f5260205f20905b815481529060010190602001808311617e4057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054617ea79061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617ed39061afae565b8015617f1e5780601f10617ef557610100808354040283529160200191617f1e565b820191905f5260205f20905b815481529060010190602001808311617f0157829003601f168201915b505050505081526020019060010190617e8a565b80516054908190617f43908261b077565b506020828101518051617f5c926001850192019061a9f1565b5050602a5460295460408051808201909152605480545f95506180f29473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290617fa69061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617fd29061afae565b801561801d5780601f10617ff45761010080835404028352916020019161801d565b820191905f5260205f20905b81548152906001019060200180831161800057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546180679061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546180939061afae565b80156180de5780601f106180b5576101008083540402835291602001916180de565b820191905f5260205f20905b8154815290600101906020018083116180c157829003601f168201915b50505050508152602001906001019061804a565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061814990849060040161b18e565b5f604051808303815f87803b158015618160575f80fd5b505af1158015618172573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5634526f757465725f45786163744f757431486f705f6f6e65466f725a65726f6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6137d96401000276a3600161b4a8565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a7640000949361830c939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b90506184b5600982604051602001618324919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906183699061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546183959061afae565b80156183e05780601f106183b7576101008083540402835291602001916183e0565b820191905f5260205f20905b8154815290600101906020018083116183c357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f2001805461842a9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546184569061afae565b80156184a15780601f10618478576101008083540402835291602001916184a1565b820191905f5260205f20905b81548152906001019060200180831161848457829003601f168201915b50505050508152602001906001019061840d565b805160549081906184c6908261b077565b5060208281015180516184df926001850192019061a9f1565b5050602954602a5460408051808201909152605480545f95506186759473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906185299061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546185559061afae565b80156185a05780601f10618577576101008083540402835291602001916185a0565b820191905f5260205f20905b81548152906001019060200180831161858357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546185ea9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546186169061afae565b80156186615780601f1061863857610100808354040283529160200191618661565b820191905f5260205f20905b81548152906001019060200180831161864457829003601f168201915b5050505050815260200190600101906185cd565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b906186cc90849060040161b18e565b5f604051808303815f87803b1580156186e3575f80fd5b505af11580156186f5573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5634526f757465725f45786163744f757431486f705f7a65726f466f724f6e656044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60606015805480602002602001604051908101604052809291908181526020018280548015611e1857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ded575050505050905090565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190526fffffffffffffffffffffffffffffffff6060840152835180830185525f815260808401529251618a53916008916188c29185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906189079061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546189339061afae565b801561897e5780601f106189555761010080835404028352916020019161897e565b820191905f5260205f20905b81548152906001019060200180831161896157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546189c89061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546189f49061afae565b8015618a3f5780601f10618a1657610100808354040283529160200191618a3f565b820191905f5260205f20905b815481529060010190602001808311618a2257829003601f168201915b5050505050815260200190600101906189ab565b80516054908190618a64908261b077565b506020828101518051618a7d926001850192019061a9f1565b505060485460495460408051808201909152605480545f9550618c139473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290618ac79061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054618af39061afae565b8015618b3e5780601f10618b1557610100808354040283529160200191618b3e565b820191905f5260205f20905b815481529060010190602001808311618b2157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054618b889061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054618bb49061afae565b8015618bff5780601f10618bd657610100808354040283529160200191618bff565b820191905f5260205f20905b815481529060010190602001808311618be257829003601f168201915b505050505081526020019060010190618b6b565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90618c6a90849060040161b18e565b5f604051808303815f87803b158015618c81575f80fd5b505af1158015618c93573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5634526f757465725f45786163744f757470757453696e676c650000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a5485548085018755850180548316918816919091179055605154855480850187558501805483169188169190911790556052548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a76400009493618e4f9391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050618ff8600782604051602001618e67919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290618eac9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054618ed89061afae565b8015618f235780601f10618efa57610100808354040283529160200191618f23565b820191905f5260205f20905b815481529060010190602001808311618f0657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054618f6d9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054618f999061afae565b8015618fe45780601f10618fbb57610100808354040283529160200191618fe4565b820191905f5260205f20905b815481529060010190602001808311618fc757829003601f168201915b505050505081526020019060010190618f50565b80516054908190619009908261b077565b506020828101518051619022926001850192019061a9f1565b505060295460525460408051808201909152605480545f95506191b89473ffffffffffffffffffffffffffffffffffffffff90811694169260019290918290829061906c9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546190989061afae565b80156190e35780601f106190ba576101008083540402835291602001916190e3565b820191905f5260205f20905b8154815290600101906020018083116190c657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f2001805461912d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546191599061afae565b80156191a45780601f1061917b576101008083540402835291602001916191a4565b820191905f5260205f20905b81548152906001019060200180831161918757829003601f168201915b505050505081526020019060010190619110565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061920f90849060040161b18e565b5f604051808303815f87803b158015619226575f80fd5b505af1158015619238573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5634526f757465725f4578616374496e33486f707300000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554808501875585018054831673ffffffffffffffffffffffffffffffffffffffff928316179055602a5486548086018855860180548416918316919091179055605154865494850187559390940180549091169290931691909117909155815460408051602083810282018101909252828152670de0b6b3a7640000946193ed9391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050619596600782604051602001619405919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061944a9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546194769061afae565b80156194c15780601f10619498576101008083540402835291602001916194c1565b820191905f5260205f20905b8154815290600101906020018083116194a457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f2001805461950b9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546195379061afae565b80156195825780601f1061955957610100808354040283529160200191619582565b820191905f5260205f20905b81548152906001019060200180831161956557829003601f168201915b5050505050815260200190600101906194ee565b805160549081906195a7908261b077565b5060208281015180516195c0926001850192019061a9f1565b509050505f6197555f60515f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f820180546196099061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546196359061afae565b80156196805780601f1061965757610100808354040283529160200191619680565b820191905f5260205f20905b81548152906001019060200180831161966357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546196ca9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546196f69061afae565b80156197415780601f1061971857610100808354040283529160200191619741565b820191905f5260205f20905b81548152906001019060200180831161972457829003601f168201915b5050505050815260200190600101906196ad565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9085906197ae90859060040161b18e565b5f604051808303818588803b1580156197c5575f80fd5b505af11580156197d7573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5634526f757465725f4578616374496e33486f70735f6e6174697665496e00006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b60408051808201909152606080825260208201525f8460200151516001619882919061b4d4565b67ffffffffffffffff81111561989a5761989a61afff565b6040519080825280601f01601f1916602001820160405280156198c4576020820181803683370190505b5090505f85602001515160016198da919061b4d4565b67ffffffffffffffff8111156198f2576198f261afff565b60405190808252806020026020018201604052801561992557816020015b60608152602001906001900390816199105790505b5090505f5b60018251619938919061b4e7565b8110156199e257866020015181815181106199555761995561b47b565b602002602001015182828151811061996f5761996f61b47b565b6020026020010181905250865f0151818151811061998f5761998f61b47b565b602001015160f81c60f81b8382815181106199ac576199ac61b47b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060010161992a565b508381600183516199f3919061b4e7565b81518110619a0357619a0361b47b565b60200260200101819052508460f81b8260018351619a21919061b4e7565b81518110619a3157619a3161b47b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053509085526020850152509192915050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff831601619b78576040805173ffffffffffffffffffffffffffffffffffffffff861660208201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91810191909152619b3790600c906060015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905287919061985b565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201525f91810191909152909550619b7190600f90606001619b01565b9450619bfb565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201525f9181019190915260016060820152619bb690600b90608001619b01565b6040805173ffffffffffffffffffffffffffffffffffffffff80871660208301528516918101919091525f6060820152909550619bf890600e90608001619b01565b94505b619c048561a836565b95945050505050565b60408051808201825260608082526020808301829052835191820184525f82850181815283528451818152808301909552929391929083019190619c61565b6060815260200190600190039081619c4c5790505b509052919050565b604080516080810182525f808252606060208301819052928201819052918101919091525f60018451619c9c919061b4e7565b67ffffffffffffffff811115619cb457619cb461afff565b604051908082528060200260200182016040528015619d2c57816020015b6040805160a0810182525f8082526020808301829052928201819052606080830191909152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181619cd25790505b5090505f5b60018551619d3f919061b4e7565b811015619dfc576040518060a0016040528086836001619d5f919061b4d4565b81518110619d6f57619d6f61b47b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff168152602001603c60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250828281518110619de957619de961b47b565b6020908102919091010152600101619d31565b50835f81518110619e0f57619e0f61b47b565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1683528201526fffffffffffffffffffffffffffffffff90911660408201525f6060820152919050565b604080516080810182525f808252606060208301819052928201819052918101919091525f60018451619e8d919061b4e7565b67ffffffffffffffff811115619ea557619ea561afff565b604051908082528060200260200182016040528015619f1d57816020015b6040805160a0810182525f8082526020808301829052928201819052606080830191909152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181619ec35790505b5090505f60018551619f2f919061b4e7565b90505b801561a005576040518060a0016040528086600184619f51919061b4e7565b81518110619f6157619f6161b47b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff168152602001603c60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525082600183619fd7919061b4e7565b81518110619fe757619fe761b47b565b60200260200101819052508080619ffd9061b4fa565b915050619f32565b50836001855161a015919061b4e7565b8151811061a0255761a02561b47b565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1683528201526fffffffffffffffffffffffffffffffff91821660408201526060810191909152919050565b3060405161a07f9061aa61565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801561a0b5573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f61a11b8370010000000000000000000000000000000061a868565b90505f5b8360ff1681101561a2085781818151811061a13c5761a13c61b47b565b60209081029190910101516045546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015291169063095ea7b3906044016020604051808303815f875af115801561a1db573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a1ff919061b52e565b5060010161a11f565b5092915050565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a0810182525f815273ffffffffffffffffffffffffffffffffffffffff8481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe9061a2c99084906c010000000000000000000000009060040161b54d565b6020604051808303815f875af115801561a2e5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a309919061b5f3565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af115801561a39e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a3c2919061b52e565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac62000008183018190525f606083015291517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692635a6bcfda929161a4669186919060040161b613565b60206040518083038185885af115801561a482573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061a208919061b1a0565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091528273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111561a509579192915b506040805160a08101825273ffffffffffffffffffffffffffffffffffffffff80861682528481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe9061a59b9084906c010000000000000000000000009060040161b54d565b6020604051808303815f875af115801561a5b7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a5db919061b5f3565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529086169163095ea7b391016020604051808303815f875af115801561a670573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a694919061b52e565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af115801561a729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a74d919061b52e565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac6200000818301525f606082015290517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda9161a7ee9185919060040161b613565b6020604051808303815f875af115801561a80a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a82e919061b1a0565b509392505050565b6060815f0151826020015160405160200161a85292919061b705565b6040516020818303038152906040529050919050565b60608260ff1667ffffffffffffffff81111561a8865761a88661afff565b60405190808252806020026020018201604052801561a8af578160200160208202803683370190505b5090505f5b8360ff168160ff16101561a20857601260405161a8d09061aa6f565b61a8da919061b798565b604051809103905ff08015801561a8f3573d5f803e3d5ffd5b50828260ff168151811061a9095761a90961b47b565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160ff168151811061a9585761a95861b47b565b60209081029190910101516040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044015f604051808303815f87803b15801561a9cf575f80fd5b505af115801561a9e1573d5f803e3d5ffd5b50506001909201915061a8b49050565b828054828255905f5260205f2090810192821561aa35579160200282015b8281111561aa35578251829061aa25908261b077565b509160200191906001019061aa0f565b5061aa4192915061aa7d565b5090565b6123da806200b82383390190565b611c3d806200dbfd83390190565b616a05806200f83a83390190565b611168806201623f83390190565b8082111561aa41575f61aa90828261aa99565b5060010161aa7d565b50805461aaa59061afae565b5f825580601f1061aab4575050565b601f0160209004905f5260205f209081019061aad0919061aad3565b50565b5b8082111561aa41575f815560010161aad4565b602080825282518282018190525f918401906040840190835b8181101561ab3457835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161ab00565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561ac91577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b8181101561ac77577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261ac6184865161ab3f565b602095860195909450929092019160010161ac27565b50919750505060209485019492909201915060010161abb1565b50929695505050505050565b5f8151808452602084019350602083015f5b8281101561acef5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161acaf565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561ac91577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261ad63604088018261ab3f565b905060208201519150868103602088015261ad7e818361ac9d565b96505050602093840193919091019060010161ad1f565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561ac91577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261adf585835161ab3f565b9450602093840193919091019060010161adbb565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561ac91577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff8151168652602081015190506040602087015261ae96604087018261ac9d565b955050602093840193919091019060010161ae30565b61af2c82825173ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b6020810151151560a08301526fffffffffffffffffffffffffffffffff60408201511660c08301526fffffffffffffffffffffffffffffffff60608201511660e08301525f608082015161012061010085015261af8d61012085018261ab3f565b949350505050565b602081525f61afa7602083018461aeac565b9392505050565b600181811c9082168061afc257607f821691505b60208210810361aff9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f821115610d7557805f5260205f20601f840160051c8101602085101561b0515750805b601f840160051c820191505b8181101561b070575f815560010161b05d565b5050505050565b815167ffffffffffffffff81111561b0915761b09161afff565b61b0a58161b09f845461afae565b8461b02c565b6020601f82116001811461b0f6575f831561b0c05750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17845561b070565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b8281101561b143578785015182556020948501946001909201910161b123565b508482101561b17f57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b602081525f61afa7602083018461ab3f565b5f6020828403121561b1b0575f80fd5b5051919050565b5f6080830173ffffffffffffffffffffffffffffffffffffffff835116845260208301516080602086015281815180845260a08701915060a08160051b88010193506020830192505f5b8181101561b2b9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888603018352835173ffffffffffffffffffffffffffffffffffffffff815116865262ffffff6020820151166020870152604081015160020b604087015273ffffffffffffffffffffffffffffffffffffffff60608201511660608701526080810151905060a0608087015261b2a360a087018261ab3f565b955050602093840193929092019160010161b201565b50505050604083015161b2e060408601826fffffffffffffffffffffffffffffffff169052565b50606083015161a82e60608601826fffffffffffffffffffffffffffffffff169052565b602081525f61afa7602083018461b1b7565b5f6020828403121561b326575f80fd5b815167ffffffffffffffff81111561b33c575f80fd5b8201601f8101841361b34c575f80fd5b805167ffffffffffffffff81111561b3665761b36661afff565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561b3d25761b3d261afff565b60405281815282820160200186101561b3e9575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff828116828216039081111561b4755761b47561b41c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff818116838216019081111561b4755761b47561b41c565b8082018082111561b4755761b47561b41c565b8181038181111561b4755761b47561b41c565b5f8161b5085761b50861b41c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f6020828403121561b53e575f80fd5b8151801515811461afa7575f80fd5b60c0810161b5d0828573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660a08301529392505050565b5f6020828403121561b603575f80fd5b81518060020b811461afa7575f80fd5b61b692818473ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b815160020b60a0820152602082015160020b60c0820152604082015160e0820152606082015161010082015261014061012082015260026101408201527f30780000000000000000000000000000000000000000000000000000000000006101608201525f610180820190509392505050565b604081525f61b717604083018561ab3f565b828103602084015280845180835260208301915060208160051b840101602087015f5b8381101561b78a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301855261b77483835161ab3f565b602095860195909350919091019060010161b73a565b509098975050505050505050565b606081525f61b7d460608301600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b828103602084015261b81081600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b91505060ff831660408301529291505056fe60a0604052348015600e575f80fd5b506040516123da3803806123da833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161230f6100cb5f395f8181610128015281816101f30152818161035901528181610f0201528181610fde01528181611052015281816110ed0152818161119501528181611270015281816116230152818161187401526118b6015261230f5ff3fe60806040526004361061005b575f3560e01c8063a1bfb5ff11610041578063a1bfb5ff146100b0578063d737d0c7146100c3578063dc4c90d314610117575f80fd5b80634f84885b1461006657806391dd73461461007b575f80fd5b3661006257005b5f80fd5b610079610074366004611c6b565b61014a565b005b348015610086575f80fd5b5061009a610095366004611c6b565b6101d9565b6040516100a79190611cd9565b60405180910390f35b6100796100be366004611c6b565b61025d565b3480156100ce575f80fd5b507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a7565b348015610122575f80fd5b506100f27f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156101b9576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101c2336102f6565b6101cc828261031c565b6101d55f6102f6565b5050565b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461024a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61025483836103f5565b90505b92915050565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156102cc576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102d5336102f6565b6102df828261031c565b4780156102f0576102f03382610432565b506101d55f5b807f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d50565b6040517f48c8949100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906348c89491906103909085908590600401611d73565b5f604051808303815f875af11580156103ab573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103f09190810190611e0a565b505050565b6060365f365f61040587876104a9565b935093509350935061041984848484610551565b505060408051602081019091525f815295945050505050565b5f805f805f85875af19050806103f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064015b60405180910390fd5b365f365f604086351860608701945063ffffffff6040880135169350606063ffffffe0601f860116018060208901351882179150808801905063ffffffff8135169250602081019350508160051b805f5b8281101561052957858101358281189490941793860135601f0163ffffffe016909101602090810191016104fa565b508085018989011083171561054557633b99b53d5f526004601cfd5b50505092959194509250565b8281811461058b576040517faaad13f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156105ea575f8686838181106105a8576105a8611ebc565b919091013560f81c91506105e19050818686858181106105ca576105ca611ebc565b90506020028101906105dc9190611ee9565b6105f2565b5060010161058d565b505050505050565b600b83101561067e576007830361061f573661060e8383610884565b9050610619816108a3565b50505050565b6006830361063d57366106328383610a41565b905061061981610a59565b6009830361065b57366106508383610884565b905061061981610baf565b60088303610679573661066e8383610a41565b905061061981610d64565b61084f565b600c8303610712575f806106928484610ebe565b915091505f6106a083610ee6565b9050818111156106e6576040517f12bacdd300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016104a0565b6105ea837f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c83610f8d565b600f83036107a6575f806107268484610ebe565b915091505f61073483611179565b90508181101561077a576040517f8b063d7300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016104a0565b6105ea837f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c83611210565b600b83036107dd575f805f6107bb85856112cc565b9250925092506105ea836107ce836112fa565b6107d8858761132d565b610f8d565b600e8303610814575f805f6107f285856112cc565b9250925092506105ea8361080584611390565b61080f8487611442565b611210565b6010830361084f575f805f61082985856112cc565b9250925092506105ea8361083c84611390565b61080f8461084988611179565b90611451565b6040517f5cda29d7000000000000000000000000000000000000000000000000000000008152600481018490526024016104a0565b3660a082101561089b57633b99b53d5f526004601cfd5b505080350190565b5f6108b16020830183611f51565b91505f9050806108c46020850185611fd9565b90505f6108d76060860160408701611ff4565b90506fffffffffffffffffffffffffffffffff8116610904576109016108fc83611179565b6114a5565b90505b365f5b858110156109a65761091c6020880188611f51565b8281811061092c5761092c611ebc565b905060200281019061093e9190612023565b91505f8061094c84876114e8565b909250905061098861098083836fffffffffffffffffffffffffffffffff89165f0361097b60808a018a611ee9565b61161f565b600f0b611748565b965086945061099a6020850185611fd9565b95505050600101610907565b506109b76080870160608801611ff4565b6fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1610156105ea576109f26080870160608801611ff4565b6040517f8b063d730000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290851660248201526044016104a0565b3661014082101561089b57633b99b53d5f526004601cfd5b5f610a6a60e0830160c08401611ff4565b90506fffffffffffffffffffffffffffffffff8116610ac257610abf6108fc610a9960c0850160a0860161205f565b610ab257610aad6040850160208601611fd9565b611179565b610aad6020850185611fd9565b90505b5f610b11610980610ad8368690038601866120a1565b610ae860c0870160a0880161205f565b610b036fffffffffffffffffffffffffffffffff8716612162565b61097b610100890189611ee9565b9050610b24610100840160e08501611ff4565b6fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610156103f057610b60610100840160e08501611ff4565b6040517f8b063d730000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290821660248201526044016104a0565b5f610bbd6020830183611f51565b91505f905080610bd36060850160408601611ff4565b90505f610be36020860186611fd9565b9050366fffffffffffffffffffffffffffffffff8316610c0c57610c096108fc83610ee6565b92505b845b8015610cc957610c216020880188611f51565b60018303818110610c3457610c34611ebc565b9050602002810190610c469190612023565b91505f80610c5484866114e8565b9092509050610c8c610c828383156fffffffffffffffffffffffffffffffff8a1661097b60808a018a611ee9565b600f0b5f036114a5565b9650869550610c9e6020850185611fd9565b945050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610c0e565b50610cda6080870160608801611ff4565b6fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611156105ea57610d156080870160608801611ff4565b6040517f12bacdd30000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290851660248201526044016104a0565b5f610d7560e0830160c08401611ff4565b90506fffffffffffffffffffffffffffffffff8116610dcd57610dca6108fc610da460c0850160a0860161205f565b610dba57610db56020850185611fd9565b610ee6565b610db56040850160208601611fd9565b90505b5f610e20610e14610de3368690038601866120a1565b610df360c0870160a0880161205f565b6fffffffffffffffffffffffffffffffff861661097b610100890189611ee9565b600f0b6108fc90612162565b9050610e33610100840160e08501611ff4565b6fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1611156103f057610e6f610100840160e08501611ff4565b6040517f12bacdd30000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290821660248201526044016104a0565b5f806040831015610ed657633b99b53d5f526004601cfd5b5050813592602090920135919050565b5f80610f2973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561177d565b90505f811315610f7d576040517f3351b26000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016104a0565b610f8681612162565b9392505050565b805f03610f9957505050565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b15801561101f575f80fd5b505af1158015611031573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83166110e0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156110bb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906106199190612198565b6110eb83838361183b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611155573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106199190612198565b5f806111bc73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561177d565b90505f811215610257576040517f4c085bf100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016104a0565b805f0361121c57505050565b6040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b1580156112b1575f80fd5b505af11580156112c3573d5f803e3d5ffd5b50505050505050565b5f805f60608410156112e557633b99b53d5f526004601cfd5b50508235936020840135936040013592509050565b5f816113065730610257565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c610257565b5f7f8000000000000000000000000000000000000000000000000000000000000000830361137b576113748273ffffffffffffffffffffffffffffffffffffffff166118db565b9050610257565b826113895761137482610ee6565b5081610257565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff8316016113f5577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c610257565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff831601611439575030919050565b5090565b919050565b5f826113895761137482611179565b5f61271082111561148e576040517fdeaa01e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061149b83856121af565b61025491906121c6565b806fffffffffffffffffffffffffffffffff8116811461143d5761143d7f93dafdf10000000000000000000000000000000000000000000000000000000061198a565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091525f806115216020860186611fd9565b90505f8073ffffffffffffffffffffffffffffffffffffffff8084169087161061154c57828661154f565b85835b909250905073ffffffffffffffffffffffffffffffffffffffff8087169083161493506040518060a001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020018860200160208101906115c891906121fe565b62ffffff1681526020016115e260608a0160408b01612217565b60020b81526020016115fa60808a0160608b01611fd9565b73ffffffffffffffffffffffffffffffffffffffff1681525094505050509250929050565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f3cd914c8860405180606001604052808a151581526020018981526020018a6116965773fffd8963efd1fc6a506488495d951d5263988d2561169d565b6401000276a45b73ffffffffffffffffffffffffffffffffffffffff1681525087876040518563ffffffff1660e01b81526004016116d79493929190612230565b6020604051808303815f875af11580156116f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117179190612198565b90508515155f8612146117335761172e8160801d90565b61173d565b61173d81600f0b90565b979650505050505050565b5f8082600f0b1215611439576114397f93dafdf10000000000000000000000000000000000000000000000000000000061198a565b5f8073ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b81526004016117f391815260200190565b602060405180830381865afa15801561180e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118329190612198565b95945050505050565b3073ffffffffffffffffffffffffffffffffffffffff831603611899576103f073ffffffffffffffffffffffffffffffffffffffff84167f000000000000000000000000000000000000000000000000000000000000000083611992565b6103f073ffffffffffffffffffffffffffffffffffffffff8416837f000000000000000000000000000000000000000000000000000000000000000084611aaf565b5f73ffffffffffffffffffffffffffffffffffffffff82166118fe575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611966573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102579190612198565b805f5260045ffd5b5f73ffffffffffffffffffffffffffffffffffffffff84166119ed575f805f8085875af19050806119e8576119e8835f7ff4b3b1bc00000000000000000000000000000000000000000000000000000000611b9d565b610619565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061061957610619847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e400000000000000000000000000000000000000000000000000000000611b9d565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016104a0565b5050505050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b5f8060208385031215611c7c575f80fd5b823567ffffffffffffffff811115611c92575f80fd5b8301601f81018513611ca2575f80fd5b803567ffffffffffffffff811115611cb8575f80fd5b856020828401011115611cc9575f80fd5b6020919091019590945092505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611d86602083018486611d2c565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e0257611e02611d8e565b604052919050565b5f60208284031215611e1a575f80fd5b815167ffffffffffffffff811115611e30575f80fd5b8201601f81018413611e40575f80fd5b805167ffffffffffffffff811115611e5a57611e5a611d8e565b611e8b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dbb565b818152856020838501011115611e9f575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f1c575f80fd5b83018035915067ffffffffffffffff821115611f36575f80fd5b602001915036819003821315611f4a575f80fd5b9250929050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f84575f80fd5b83018035915067ffffffffffffffff821115611f9e575f80fd5b6020019150600581901b3603821315611f4a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611fd6575f80fd5b50565b5f60208284031215611fe9575f80fd5b8135610f8681611fb5565b5f60208284031215612004575f80fd5b81356fffffffffffffffffffffffffffffffff81168114610f86575f80fd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612055575f80fd5b9190910192915050565b5f6020828403121561206f575f80fd5b81358015158114610f86575f80fd5b803562ffffff8116811461143d575f80fd5b8035600281900b811461143d575f80fd5b5f60a08284031280156120b2575f80fd5b5060405160a0810167ffffffffffffffff811182821017156120d6576120d6611d8e565b60405282356120e481611fb5565b815260208301356120f481611fb5565b60208201526121056040840161207e565b604082015261211660608401612090565b6060820152608083013561212981611fb5565b60808201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7f8000000000000000000000000000000000000000000000000000000000000000820361219257612192612135565b505f0390565b5f602082840312156121a8575f80fd5b5051919050565b808202811582820484141761025757610257612135565b5f826121f9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f6020828403121561220e575f80fd5b6102548261207e565b5f60208284031215612227575f80fd5b61025482612090565b73ffffffffffffffffffffffffffffffffffffffff855116815273ffffffffffffffffffffffffffffffffffffffff602086015116602082015262ffffff6040860151166040820152606085015160020b606082015273ffffffffffffffffffffffffffffffffffffffff60808601511660808201526122df60a08201858051151582526020808201519083015260409081015173ffffffffffffffffffffffffffffffffffffffff16910152565b6101206101008201525f6122f861012083018486611d2c565b969550505050505056fea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051611c3d380380611c3d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b608051611b736100ca5f395f81816079015281816101020152818161027f015281816102f301528181610324015281816104090152818161058d015281816105f001528181610679015281816106d7015281816108e401526109240152611b735ff3fe60806040526004361061003e575f3560e01c80630a5b11e414610042578063481c6a75146100685780635a6bcfda146100c057806391dd7346146100d3575b5f80fd5b6100556100503660046114c3565b6100ff565b6040519081526020015b60405180910390f35b348015610073575f80fd5b5061009b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161005f565b6100556100ce36600461154a565b61024f565b3480156100de575f80fd5b506100f26100ed3660046115a8565b610265565b60405161005f9190611662565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c894916040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018615158152602001851515815250604051602001610193919061167b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016101be9190611662565b5f604051808303815f875af11580156101d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261021e919081019061179a565b806020019051810190610231919061180f565b9050478015610245576102455f3383610729565b5095945050505050565b5f61025d8484845f806100ff565b949350505050565b60603373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a8575f80fd5b5f6102b583850185611826565b90505f61031d6102ca836020015160a0902090565b60408401518051602082015160609092015173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016939230929161084c565b505090505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635a6bcfda8460200151856040015186606001516040518463ffffffff1660e01b815260040161038b939291906118ef565b60408051808303815f875af11580156103a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ca91906119b3565b5090505f6104336103e0856020015160a0902090565b60408601518051602082015160609092015173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016939230929161084c565b505090505f61044d85602001515f0151865f0151306108a3565b925050505f610468866020015160200151875f0151306108a3565b9250505082600f0b86604001516040015186600f0b6104879190611a02565b146104f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f7272656374000000000000604482015260640160405180910390fd5b5f866040015160400151121561053a575f82138061050f57505f81135b61051b5761051b611a29565b5f82128061052857505f81125b1561053557610535611a29565b61057d565b5f866040015160400151131561057d575f82128061055757505f81125b61056357610563611a29565b5f82138061057057505f81135b1561057d5761057d611a29565b5f8212156105e05785516105e0907f0000000000000000000000000000000000000000000000000000000000000000906105b685611a56565b60808a015160208b01515173ffffffffffffffffffffffffffffffffffffffff1693929190610956565b5f811215610645578551610645907f00000000000000000000000000000000000000000000000000000000000000009061061984611a56565b60808a01516020808c0151015173ffffffffffffffffffffffffffffffffffffffff1693929190610956565b5f8213156106a157855160a08701516020880151516106a19273ffffffffffffffffffffffffffffffffffffffff909116917f000000000000000000000000000000000000000000000000000000000000000091908690610d14565b5f8113156106ff57855160a087015160208089015101516106ff9273ffffffffffffffffffffffffffffffffffffffff909116917f000000000000000000000000000000000000000000000000000000000000000091908590610d14565b60408051602081018690520160405160208183030381529060405296505050505050505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8416610784575f805f8085875af190508061077f5761077f835f7ff4b3b1bc00000000000000000000000000000000000000000000000000000000610e58565b610846565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061084657610846847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e400000000000000000000000000000000000000000000000000000000610e58565b50505050565b60408051602681018390526006810184905260038101859052858152603a600c8201205f9282018390526020820183905290829052819081906108908a8a83610f26565b919c909b50909950975050505050505050565b5f80806108c673ffffffffffffffffffffffffffffffffffffffff87168661100d565b925061090873ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000061100d565b915061094b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685886110dc565b905093509350939050565b8015610a37578373ffffffffffffffffffffffffffffffffffffffff1663f5298aca846109ac8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610a1c575f80fd5b505af1158015610a2e573d5f803e3d5ffd5b50505050610d0d565b73ffffffffffffffffffffffffffffffffffffffff8516610ac8578373ffffffffffffffffffffffffffffffffffffffff166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af1158015610a9d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ac2919061180f565b50610d0d565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285169063a5841194906024015f604051808303815f87803b158015610b2e575f80fd5b505af1158015610b40573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83163014610c05576040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af1158015610bdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bff9190611a8c565b50610c9d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610c77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9b9190611a8c565b505b8373ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0b919061180f565b505b5050505050565b80610d7c576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152848116602483015260448201849052851690630b0d9c0990606401610a05565b8373ffffffffffffffffffffffffffffffffffffffff1663156e29f684610dcc8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604481018590526064015f604051808303815f87803b158015610e3b575f80fd5b505af1158015610e4d573d5f803e3d5ffd5b505050505050505050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b5f805f80610f34868661119a565b6040517f35fd631a00000000000000000000000000000000000000000000000000000000815260048101829052600360248201529091505f9073ffffffffffffffffffffffffffffffffffffffff8916906335fd631a906044015f60405180830381865afa158015610fa8573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fed9190810190611aa7565b60208101516040820151606090920151909a919950975095505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8316611047575073ffffffffffffffffffffffffffffffffffffffff811631610723565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa1580156110b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d5919061180f565b9050610723565b5f8073ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b815260040161115291815260200190565b602060405180830381865afa15801561116d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611191919061180f565b95945050505050565b5f806111a5846111ea565b90505f6111b3600683611b53565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b6040515f90611209908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561127657611276611226565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156112c3576112c3611226565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112ec575f80fd5b50565b8035600281900b8114611300575f80fd5b919050565b5f60a08284031215611315575f80fd5b60405160a0810167ffffffffffffffff8111828210171561133857611338611226565b6040529050808235611349816112cb565b81526020830135611359816112cb565b6020820152604083013562ffffff81168114611373575f80fd5b6040820152611384606084016112ef565b60608201526080830135611397816112cb565b6080919091015292915050565b5f608082840312156113b4575f80fd5b6040516080810167ffffffffffffffff811182821017156113d7576113d7611226565b6040529050806113e6836112ef565b81526113f4602084016112ef565b602082015260408301356040820152606083013560608201525092915050565b5f67ffffffffffffffff82111561142d5761142d611226565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611468575f80fd5b813561147b61147682611414565b61127c565b81815284602083860101111561148f575f80fd5b816020850160208301375f918101602001919091529392505050565b80151581146112ec575f80fd5b8035611300816114ab565b5f805f805f61018086880312156114d8575f80fd5b6114e28787611305565b94506114f18760a088016113a4565b935061012086013567ffffffffffffffff81111561150d575f80fd5b61151988828901611459565b93505061014086013561152b816114ab565b915061016086013561153c816114ab565b809150509295509295909350565b5f805f610140848603121561155d575f80fd5b6115678585611305565b92506115768560a086016113a4565b915061012084013567ffffffffffffffff811115611592575f80fd5b61159e86828701611459565b9150509250925092565b5f80602083850312156115b9575f80fd5b823567ffffffffffffffff8111156115cf575f80fd5b8301601f810185136115df575f80fd5b803567ffffffffffffffff8111156115f5575f80fd5b856020828401011115611606575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6116746020830184611616565b9392505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151611724604084018273ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b506040838101518051600290810b60e08601526020820151900b610100850152908101516101208401526060908101516101408401528301516101a06101608401526117746101c0840182611616565b90506080840151151561018084015260a084015115156101a08401528091505092915050565b5f602082840312156117aa575f80fd5b815167ffffffffffffffff8111156117c0575f80fd5b8201601f810184136117d0575f80fd5b80516117de61147682611414565b8181528560208385010111156117f2575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561181f575f80fd5b5051919050565b5f60208284031215611836575f80fd5b813567ffffffffffffffff81111561184c575f80fd5b82016101a0818503121561185e575f80fd5b611866611253565b8135611871816112cb565b81526118808560208401611305565b60208201526118928560c084016113a4565b604082015261014082013567ffffffffffffffff8111156118b1575f80fd5b6118bd86828501611459565b6060830152506118d061016083016114b8565b60808201526118e261018083016114b8565b60a0820152949350505050565b61196e818573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8251600290810b60a08301526020840151900b60c0820152604083015160e082015260608301516101008201526101406101208201525f611191610140830184611616565b5f80604083850312156119c4575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018281125f831280158216821582161715611a2157611a216119d5565b505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b5f7f80000000000000000000000000000000000000000000000000000000000000008203611a8657611a866119d5565b505f0390565b5f60208284031215611a9c575f80fd5b8151611674816114ab565b5f60208284031215611ab7575f80fd5b815167ffffffffffffffff811115611acd575f80fd5b8201601f81018413611add575f80fd5b805167ffffffffffffffff811115611af757611af7611226565b8060051b611b076020820161127c565b91825260208184018101929081019087841115611b22575f80fd5b6020850194505b83851015611b4857845180835260209586019590935090910190611b29565b979650505050505050565b80820180821115610723576107236119d556fea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051616a05380380616a05833981016040819052602b91607f565b5f80546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050306080525060aa565b5f60208284031215608e575f80fd5b81516001600160a01b038116811460a3575f80fd5b9392505050565b6080516169436100c25f395f61205f01526169435ff3fe6080604052600436106101f4575f3560e01c80635a6bcfda11610117578063a5841194116100ac578063f135baaa1161007c578063f3cd914c11610062578063f3cd914c14610676578063f5298aca14610695578063fe99049a146106b4575f80fd5b8063f135baaa14610638578063f2fde38b14610657575f80fd5b8063a584119414610595578063b6363cf2146105b4578063dbd035ff146105ed578063f02de3b21461060c575f80fd5b80638161b874116100e75780638161b874146104dc5780638da5cb5b146104fb57806397e8cd4e1461054b5780639bf6645f14610576575f80fd5b80635a6bcfda146104385780636276cbbe1461046c5780637e87ce7d1461049e57806380f0b44c146104bd575f80fd5b80632d7713891161018d57806348c894911161015d57806348c894911461039257806352759651146103be578063558a7297146103dd578063598af9e7146103fc575f80fd5b80632d7713891461031557806335fd631a146103345780633dd45adb14610360578063426a849314610373575f80fd5b806311da60b4116101c857806311da60b4146102b0578063156e29f6146102b85780631e2eaeaf146102d7578063234266d7146102f6575f80fd5b8062fdd58e146101f857806301ffc9a714610241578063095bcdb6146102705780630b0d9c091461028f575b5f80fd5b348015610203575f80fd5b5061022e610212366004615908565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561024c575f80fd5b5061026061025b366004615932565b6106d3565b6040519015158152602001610238565b34801561027b575f80fd5b5061026061028a366004615971565b61076b565b34801561029a575f80fd5b506102ae6102a93660046159a3565b61083f565b005b61022e6108c9565b3480156102c3575f80fd5b506102ae6102d2366004615971565b610927565b3480156102e2575f80fd5b5061022e6102f13660046159e1565b6109ab565b348015610301575f80fd5b5061022e610310366004615b9b565b6109b5565b348015610320575f80fd5b506102ae61032f366004615c00565b610ad9565b34801561033f575f80fd5b5061035361034e366004615c1b565b610bcc565b6040516102389190615c3b565b61022e61036e366004615c00565b610c09565b34801561037e575f80fd5b5061026061038d366004615971565b610c67565b34801561039d575f80fd5b506103b16103ac366004615c7d565b610cd8565b6040516102389190615cbc565b3480156103c9575f80fd5b506102ae6103d8366004615d0f565b610e2a565b3480156103e8575f80fd5b506102606103f7366004615d50565b610ecc565b348015610407575f80fd5b5061022e6104163660046159a3565b600560209081525f938452604080852082529284528284209052825290205481565b348015610443575f80fd5b50610457610452366004615d7a565b610f66565b60408051928352602083019190915201610238565b348015610477575f80fd5b5061048b610486366004615e3b565b611165565b60405160029190910b8152602001610238565b3480156104a9575f80fd5b506102ae6104b8366004615d0f565b6113fc565b3480156104c8575f80fd5b506102ae6104d7366004615908565b6114ed565b3480156104e7575f80fd5b5061022e6104f63660046159a3565b6115ac565b348015610506575f80fd5b505f546105269073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610238565b348015610556575f80fd5b5061022e610565366004615c00565b60016020525f908152604090205481565b348015610581575f80fd5b50610353610590366004615e71565b611714565b3480156105a0575f80fd5b506102ae6105af366004615c00565b61174d565b3480156105bf575f80fd5b506102606105ce366004615ee2565b600360209081525f928352604080842090915290825290205460ff1681565b3480156105f8575f80fd5b50610353610607366004615e71565b6117a3565b348015610617575f80fd5b506002546105269073ffffffffffffffffffffffffffffffffffffffff1681565b348015610643575f80fd5b5061022e6106523660046159e1565b6117da565b348015610662575f80fd5b506102ae610671366004615c00565b6117e4565b348015610681575f80fd5b5061022e610690366004615f0e565b6118d3565b3480156106a0575f80fd5b506102ae6106af366004615971565b611a85565b3480156106bf575f80fd5b506102606106ce366004615fcc565b611b09565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061076557507f0f632fb3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061079690849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f908152600460209081526040808320868452909152812080548492906107da90849061604f565b9091555050604080513380825260208201859052859273ffffffffffffffffffffffffffffffffffffffff8816927f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a45060015b9392505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61088e5761088e7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b6108a38361089b83611cfd565b5f0333611d42565b6108c473ffffffffffffffffffffffffffffffffffffffff84168383611da2565b505050565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610919576109197f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61092233611ebf565b905090565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610976576109767f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b816109848161089b84611cfd565b6109a58473ffffffffffffffffffffffffffffffffffffffff831684611fa8565b50505050565b5f81545f5260205ff35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610a0557610a057f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610a0d612047565b60a086205f818152600660205260409020610a27816120af565b6080880151610a509073ffffffffffffffffffffffffffffffffffffffff1689898989896120f6565b610a5b8188886121d9565b9250610a688884336122d3565b6040805188815260208101889052339184917f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb910160405180910390a36080880151610ace9073ffffffffffffffffffffffffffffffffffffffff1689898989896122fb565b505095945050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b85548352602083019250600186019550808310610bec5781810382f35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610c5957610c597f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61076582611ebf565b919050565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a79061082c9087815260200190565b60607fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c15610d2a57610d2a7f5090d6c600000000000000000000000000000000000000000000000000000000611cf5565b610d326123d3565b6040517f91dd734600000000000000000000000000000000000000000000000000000000815233906391dd734690610d7090869086906004016160a9565b5f604051808303815f875af1158015610d8b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dd091908101906160bc565b90507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c15610e2257610e227f5212cba100000000000000000000000000000000000000000000000000000000611cf5565b6107656123f9565b604082015162ffffff1662800000141580610e755750816080015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ea357610ea37f30d2164100000000000000000000000000000000000000000000000000000000611cf5565b610eb18162ffffff1661241e565b60a082205f8181526006602052604090206108c4908361245d565b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f807fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610fb757610fb77f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610fbf612047565b60a086205f818152600660205260409020610fd9816120af565b60808801516110019073ffffffffffffffffffffffffffffffffffffffff16898989896124b6565b5f6110756040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018a5f015160020b81526020018a6020015160020b81526020016110528b60400151612677565b600f0b81526060808d015160020b60208301528b015160409091015283906126ac565b945090506110838185612af1565b945050503373ffffffffffffffffffffffffffffffffffffffff16817ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec885f015189602001518a604001518b606001516040516111019493929190600294850b81529290930b60208301526040820152606081019190915260800190565b60405180910390a360808701515f906111359073ffffffffffffffffffffffffffffffffffffffff16898987878b8b612b24565b9094509050801561114f5761114f88828a608001516122d3565b61115a8885336122d3565b505094509492505050565b5f61116e612047565b6060830151617fff60029190910b13156111b25760608301516111b2907fb70024f80000000000000000000000000000000000000000000000000000000090612cfb565b600160020b836060015160020b12156111f55760608301516111f5907fe9e905880000000000000000000000000000000000000000000000000000000090612cfb565b8251602084015173ffffffffffffffffffffffffffffffffffffffff90811691161061124d578251602084015161124d917f6e6c98300000000000000000000000000000000000000000000000000000000091612d0a565b61127e8360400151846080015173ffffffffffffffffffffffffffffffffffffffff16612d4d90919063ffffffff16565b6112b25760808301516112b2907fe65af6a00000000000000000000000000000000000000000000000000000000090612e1b565b5f6112c5846040015162ffffff16612e3d565b60808501519091506112ee9073ffffffffffffffffffffffffffffffffffffffff168585612e62565b60a084205f81815260066020526040902061130a908584612f35565b9250846020015173ffffffffffffffffffffffffffffffffffffffff16855f015173ffffffffffffffffffffffffffffffffffffffff16827fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438886040015189606001518a608001518a8a6040516113c595949392919062ffffff959095168552600293840b602086015273ffffffffffffffffffffffffffffffffffffffff928316604086015291166060840152900b608082015260a00190565b60405180910390a460808501516113f49073ffffffffffffffffffffffffffffffffffffffff16868686612fed565b505092915050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611444576114447f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b6103e9610fff821610623e900062fff0008316101661148c5761148c7fa7abe2f70000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b60a082206114ae826114a8835f90815260066020526040902090565b906130c2565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61153c5761153c7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b335f90815273ffffffffffffffffffffffffffffffffffffffff8316602052604081205c9061156a83611cfd565b90508181600f0b1461159f5761159f7fbda73abf00000000000000000000000000000000000000000000000000000000611cf5565b6109a584825f0333611d42565b6002545f9073ffffffffffffffffffffffffffffffffffffffff1633146115f6576115f67f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff831615158015611654575073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c8116908416145b15611682576116827fc79e594800000000000000000000000000000000000000000000000000000000611cf5565b811561168e57816116b4565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600160205260409020545b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160205260408120805492935083929091906116ed90849061603c565b90915550610838905073ffffffffffffffffffffffffffffffffffffffff84168583611da2565b606060405180602082528360208301526040820191508360051b8201855b80355c845260209384019301818410611732575b5081810382f35b73ffffffffffffffffffffffffffffffffffffffff811661177357611770613116565b50565b5f6117938273ffffffffffffffffffffffffffffffffffffffff1661313b565b905061179f82826131ea565b5050565b606060405180602082528360208301526040820191508360051b8201855b80355484526020938401930181841015611746576117c1565b5f815c5f5260205ff35b5f5473ffffffffffffffffffffffffffffffffffffffff163314611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610b55565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611923576119237f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61192b612047565b83602001515f0361195f5761195f7fbe8b850700000000000000000000000000000000000000000000000000000000611cf5565b60a085205f818152600660205260409020611979816120af565b60808701515f90819081906119a79073ffffffffffffffffffffffffffffffffffffffff168b8b8b8b61324a565b809350819550829450505050611a2384866040518060a001604052808681526020018e6060015160020b81526020018d5f0151151581526020018d6040015173ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff168152508c5f0151611a1c578d602001516133f1565b8d516133f1565b60808b01519096505f9250611a54915073ffffffffffffffffffffffffffffffffffffffff168a8a888b8b886134f2565b90955090508015611a6e57611a6e89828b608001516122d3565b611a798986336122d3565b50505050949350505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611ad457611ad47f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b81611ae881611ae284611cfd565b33611d42565b6109a58473ffffffffffffffffffffffffffffffffffffffff83168461368b565b5f3373ffffffffffffffffffffffffffffffffffffffff861614801590611b60575073ffffffffffffffffffffffffffffffffffffffff85165f90815260036020908152604080832033845290915290205460ff16155b15611c095773ffffffffffffffffffffffffffffffffffffffff85165f90815260056020908152604080832033845282528083208684529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c0757611bce838261603c565b73ffffffffffffffffffffffffffffffffffffffff87165f90815260056020908152604080832033845282528083208884529091529020555b505b73ffffffffffffffffffffffffffffffffffffffff85165f90815260046020908152604080832086845290915281208054849290611c4890849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f90815260046020908152604080832086845290915281208054849290611c8c90849061604f565b90915550506040805133815260208101849052849173ffffffffffffffffffffffffffffffffffffffff80881692908916917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6f800000000000000000000000000000008210611d3e57611d3e7f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5090565b81600f0b5f03611d5157505050565b5f80611d7473ffffffffffffffffffffffffffffffffffffffff8616848661379c565b91509150805f03611d8c57611d876137e2565b611d9b565b815f03611d9b57611d9b613830565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416611dfd575f805f8085875af1905080611df857611df8835f7ff4b3b1bc0000000000000000000000000000000000000000000000000000000061387e565b6109a5565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806109a5576109a5847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e40000000000000000000000000000000000000000000000000000000061387e565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c73ffffffffffffffffffffffffffffffffffffffff8116611f0557349150611f8f565b3415611f3457611f347fb0ec849e00000000000000000000000000000000000000000000000000000000611cf5565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f611f7673ffffffffffffffffffffffffffffffffffffffff841661313b565b9050611f82828261603c565b9350611f8c613116565b50505b611fa281611f9c84611cfd565b85611d42565b50919050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290611fe790849061604f565b90915550506040805133815260208101839052839173ffffffffffffffffffffffffffffffffffffffff8616915f917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a4505050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146120ad576120ad7f0d89438e00000000000000000000000000000000000000000000000000000000611cf5565b565b805473ffffffffffffffffffffffffffffffffffffffff165f03611770576117707f486aa30700000000000000000000000000000000000000000000000000000000611cf5565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760208716156121d0576121ce33878787878760405160240161213b9695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb6a8b0fa0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b505b50505050505050565b60038301545f906fffffffffffffffffffffffffffffffff16808203612222576122227fa74f97ab00000000000000000000000000000000000000000000000000000000611cf5565b61225961222e85611cfd565b5f0361223985611cfd565b5f0360809190911b6fffffffffffffffffffffffffffffffff9091161790565b91508315612293576001850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008702040190555b82156122cb576002850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008602040190555b509392505050565b82516122e9906122e38460801d90565b83611d42565b6108c483602001516122e384600f0b90565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760108716156121d0576121ce3387878787876040516024016123409695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1b4af690000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b60017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b620f424062ffffff82161115611770576117707f140021130000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b612466826120af565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167cffffff000000000000000000000000000000000000000000000000000060d083901b16175b90915550565b843373ffffffffffffffffffffffffffffffffffffffff82161461266f575f84604001511380156124ea5750610800861615155b156125a45761259e338686868660405160240161250b95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f259982e50000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b5061266f565b5f8460400151131580156125bb5750610200861615155b1561266f576121d033868686866040516024016125dc95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f21d0ee700000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b505050505050565b80600f81900b8114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b6060810151602082015160408301515f92839290916126cb8282613a48565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f1461289b576127048884865f613b0f565b6fffffffffffffffffffffffffffffffff1660208301521515815261272c8883866001613b0f565b6fffffffffffffffffffffffffffffffff166060830152151560408201525f600f85900b126128605760808701515f9060020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761881810783139082900503620d89e891909105036001016fffffffffffffffffffffffffffffffff049050806fffffffffffffffffffffffffffffffff1682602001516fffffffffffffffffffffffffffffffff161115612804576128047fb8e3c3850000000000000000000000000000000000000000000000000000000085612cfb565b806fffffffffffffffffffffffffffffffff1682606001516fffffffffffffffffffffffffffffffff16111561285e5761285e7fb8e3c3850000000000000000000000000000000000000000000000000000000084612cfb565b505b80511561287c57608087015161287c9060058a01908590613bf8565b80604001511561289b57608087015161289b9060058a01908490613bf8565b5f806128a88a8686613c4a565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080612905838a8787613cfe565b9150915061293a61291583611cfd565b61291e83611cfd565b6fffffffffffffffffffffffffffffffff1660809190911b1790565b995050505050505f84600f0b12156129a35780511561297657600283810b5f90815260048a016020526040812081815560018101829055909101555b8060400151156129a357600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14612ae75786545f806129bf8360a01c60020b90565b73ffffffffffffffffffffffffffffffffffffffff8416915091508460020b8260020b1215612a1b57612a14612a0e612a096129fa88613e2f565b612a0388613e2f565b8a61412c565b612677565b60801b90565b9750612ae3565b8360020b8260020b1215612abe57612a52612a3c612a0983612a0388613e2f565b61291e612a09612a4b89613e2f565b858b614164565b60038b0154909850612a76906fffffffffffffffffffffffffffffffff1687614190565b60038b0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055612ae3565b612ae05f61291e612a09612ad189613e2f565b612ada89613e2f565b8b614164565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01612b1b612b1283612677565b61291e83612677565b95945050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff89163303612b4d57508490505f612cef565b8591505f87604001511315612c3557610400891615612c3057612c2133898989898989604051602401612b86979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9f063efc0000000000000000000000000000000000000000000000000000000017905260028b1615155b73ffffffffffffffffffffffffffffffffffffffff8c1691906141c0565b9050612c2d828261421a565b91505b612cef565b610100891615612cef57612ce033898989898989604051602401612c5f979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6c2bbe7e0000000000000000000000000000000000000000000000000000000017905260018b161515612c03565b9050612cec828261421a565b91505b97509795505050505050565b815f528060020b60045260245ffd5b60405183815273ffffffffffffffffffffffffffffffffffffffff8316600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152604481fd5b5f60808316158015612d6157506008831615155b15612d6d57505f610765565b60408316158015612d8057506004831615155b15612d8c57505f610765565b6104008316158015612da057506002831615155b15612dac57505f610765565b6101008316158015612dc057506001831615155b15612dcc57505f610765565b73ffffffffffffffffffffffffffffffffffffffff831615612e0a57613fff8316151580612e0557506280000062ffffff831614610838565b610838565b5062ffffff16628000001415919050565b815f5273ffffffffffffffffffffffffffffffffffffffff811660045260245ffd5b5f6280000062ffffff831603612e5457505f919050565b611d3e8262ffffff1661241e565b823373ffffffffffffffffffffffffffffffffffffffff8216146109a5576120008416156109a557611d9b338484604051602401612ea29392919061640c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdc98354e0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff86169061394c565b82545f9073ffffffffffffffffffffffffffffffffffffffff1615612f7d57612f7d7f7983c05100000000000000000000000000000000000000000000000000000000611cf5565b612f868361423b565b90507cffffff000000000000000000000000000000000000000000000000000060d083901b1673ffffffffffffffffffffffffffffffffffffffff841660a083901b76ffffff00000000000000000000000000000000000000001617179093555090919050565b833373ffffffffffffffffffffffffffffffffffffffff821614611d9b57611000851615611d9b5761266f3385858560405160240161302f94939291906164cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6fe7e6eb0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff87169061394c565b6130cb826120af565b81547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1679ffffff000000000000000000000000000000000000000000000060b883901b16176124b0565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d565b5f73ffffffffffffffffffffffffffffffffffffffff821661315e575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa1580156131c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610765919061659d565b73ffffffffffffffffffffffffffffffffffffffff82167f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f8073ffffffffffffffffffffffffffffffffffffffff88163303613276575f91506133e6565b60808816156133e6575f61331889338a8a8a8a60405160240161329d9594939291906165b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f575e24b40000000000000000000000000000000000000000000000000000000017905261394c565b9050805160601461334c5761334c7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b604088015162ffffff16628000000361336757606081015191505b60088916156133e457604081015192505f6133828460801d90565b905080600f0b5f146133e2575f851261339f600f83900b8761669c565b9550806133ae575f86126133b2565b5f86135b156133e0576133e07ffa0b71d600000000000000000000000000000000000000000000000000000000611cf5565b505b505b505b955095509592505050565b5f80808080613400898861455f565b93509350935093505f83111561343b5773ffffffffffffffffffffffffffffffffffffffff86165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6134688760801d90565b61347288600f0b90565b85516040808801516020808a01518351600f97880b81529590960b9085015273ffffffffffffffffffffffffffffffffffffffff909216908301526fffffffffffffffffffffffffffffffff16606082015260029190910b608082015262ffffff861660a082015260c00160405180910390a35091979650505050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff8916330361351b57508490505f612cef565b5f6135268460801d90565b90505f61353385600f0b90565b905060408b1615613606576135f9612a09338c8c8c8c8c60405160240161355f969594939291906166bb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb47b2fb10000000000000000000000000000000000000000000000000000000017905260048e16151573ffffffffffffffffffffffffffffffffffffffff8f1691906141c0565b61360390826167aa565b90505b5f81600f0b5f14158061361c575082600f0b5f14155b1561367957895160208b01515f1390151514613650576fffffffffffffffffffffffffffffffff8316608083901b1761366a565b6fffffffffffffffffffffffffffffffff8216608084901b175b9050613676898261421a565b98505b979b979a509698505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff841681148015906136e4575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526003602090815260408083209385168352929052205460ff16155b156137915773ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209385168352928152828220868352905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461378f57613754838261603c565b73ffffffffffffffffffffffffffffffffffffffff8087165f9081526005602090815260408083209387168352928152828220888352905220555b505b6109a5848484614dfc565b73ffffffffffffffffffffffffffffffffffffffff8281165f90815290841660205260408120805c91906137d4600f85900b8461669c565b915081815d50935093915050565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181039050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181019050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b60605f805f8451602086015f885af1905080613995576139958461396f856167f8565b7fa9e35b2f0000000000000000000000000000000000000000000000000000000061387e565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080613a13575060208301517fffffffff00000000000000000000000000000000000000000000000000000000166139ee836020015190565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b15613a4157613a417f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b5092915050565b8060020b8260020b12613a8057613a807fc4433ed5000000000000000000000000000000000000000000000000000000008383614e92565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600283900b1215613ad657613ad67fd5e2f7ab0000000000000000000000000000000000000000000000000000000083612cfb565b620d89e8600282900b131561179f5761179f7f1ad777f80000000000000000000000000000000000000000000000000000000082612cfb565b600283900b5f908152600485016020526040812080548291906fffffffffffffffffffffffffffffffff8116907001000000000000000000000000000000009004600f0b613b5d8288614190565b6fffffffffffffffffffffffffffffffff808216159084168015919091141596509094505f03613bb057885460a01c60020b60020b8860020b13613bb0576001808a0154908401556002808a0154908401555b5f86613bc557613bc088836167aa565b613bcf565b613bcf8883616864565b90508060801b6fffffffffffffffffffffffffffffffff86161784555050505094509492505050565b600291820b910b80820715613c255760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215613ca0578160010154836001015403945081600201548360020154039350613cf3565b8560020b8160020b12613ccc578260010154826001015403945082600201548260020154039350613cf3565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906fffffffffffffffffffffffffffffffff16600f86900b8203613d6857806fffffffffffffffffffffffffffffffff165f03613d6357613d637faefeb92400000000000000000000000000000000000000000000000000000000611cf5565b613daf565b613d728187614190565b87547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff919091161787555b613de387600101548603826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b9250613e1987600201548503826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115613e7157613e717f8b86327a0000000000000000000000000000000000000000000000000000000084612cfb565b7001fffcb933bd6fad37aa2d162d1a5940016001821602700100000000000000000000000000000000186002821615613eba576ffff97272373d413259a46990580e213a0260801c5b6004821615613ed9576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613ef8576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613f17576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613f36576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613f55576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613f74576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613f94576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613fb4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613fd4576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ff4576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614014576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614034576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614054576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614074576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614095576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156140b5576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156140d4576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156140f1576b048a170391f7dc42444e8fa20260801c5b5f84131561411c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff045b63ffffffff0160201c9392505050565b5f8082600f0b126141535761414c6141478585856001614f6a565b6150a7565b5f03611ced565b611ced6141478585855f035f614f6a565b5f8082600f0b1261417f5761414c61414785858560016150d9565b611ced6141478585855f035f6150d9565b6fffffffffffffffffffffffffffffffff8216600f82900b01608081901c15610765576393dafdf15f526004601cfd5b5f806141cc858561394c565b9050826141dc575f915050610838565b805160401461420e5761420e7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03612b1b612b1283612677565b5f73fffd8963efd1fc6a506488495d951d51639616827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830173ffffffffffffffffffffffffffffffffffffffff1611156142ba576142ba7f614875240000000000000000000000000000000000000000000000000000000083612e1b565b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b16805f6142e482615144565b60ff169050608081106142ff57607f810383901c9150614309565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14614550578873ffffffffffffffffffffffffffffffffffffffff1661452882613e2f565b73ffffffffffffffffffffffffffffffffffffffff16111561454a5781614552565b80614552565b815b9998505050505050505050565b604080516060810182525f8082526020820181905291810182905281908190855460408601515f8161459957610fff60c484901c166145a3565b610fff60b884901c165b885173ffffffffffffffffffffffffffffffffffffffff8516865261ffff9190911691505f60a085901c60020b60020b602087015260038b01546fffffffffffffffffffffffffffffffff16604087015260808a01515f9062400000166146135760d086901c62ffffff16614625565b6146258b6080015162ffffff166151d8565b9050831561464b57620f4240610fff851662ffffff83168181029290920491010361464d565b805b975050620f42408762ffffff16106146915789515f1215614691576146917f9620624600000000000000000000000000000000000000000000000000000000611cf5565b89515f036146a9575f80985098505050505050614df3565b831561478c5760608a015173ffffffffffffffffffffffffffffffffffffffff86811691161061471b5761471b73ffffffffffffffffffffffffffffffffffffffff86165b60608c01517f7c9c6e8f000000000000000000000000000000000000000000000000000000009190612d0a565b6401000276a373ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff16116147875760608a0151614787907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b61484a565b60608a015173ffffffffffffffffffffffffffffffffffffffff8681169116116147cf576147cf73ffffffffffffffffffffffffffffffffffffffff86166146ee565b73fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff161061484a5760608a015161484a907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915284614899578b6002015461489f565b8b600101545b60e08201525b8215806148e457508a6060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff16145b614c7f57865173ffffffffffffffffffffffffffffffffffffffff168152602080880151908c015161491b9160058f0191886151e7565b1515604083015260020b602082018190527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761812614979577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860208201525b620d89e860020b816020015160020b1261499757620d89e860208201525b6149a48160200151613e2f565b73ffffffffffffffffffffffffffffffffffffffff90811660608381018290528951908e01516149ee939192911680821891811160018a161891909102188960400151868c615312565b60c085015260a0840152608083015273ffffffffffffffffffffffffffffffffffffffff1687528a515f1215614a5757614a2b8160a001516150a7565b83039250614a468160c001518260800151614147919061604f565b614a5090836168b2565b9150614a88565b614a6a8160c001518260800151016150a7565b83019250614a7b8160a001516150a7565b614a85908361669c565b91505b8315614ad7575f848962ffffff1614614abf57620f4240858360c001518460800151010281614ab957614ab96168d1565b04614ac5565b8160c001515b60c08301805182900390529990990198505b60408701516fffffffffffffffffffffffffffffffff1615614b3657614b2a8160c0015170010000000000000000000000000000000089604001516fffffffffffffffffffffffffffffffff1691020490565b60e08201805190910190525b806060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff1603614c4c57806040015115614c27575f8086614b90578d600101548360e00151614b9b565b8260e001518e600201545b915091505f614bf38f85602001518585600292830b5f908152600490940160205260409093206001810180549092039091559081018054909203909155547001000000000000000000000000000000009004600f0b90565b90508715614bfe575f035b614c0c8a6040015182614190565b6fffffffffffffffffffffffffffffffff1660408b01525050505b84614c36578060200151614c3f565b60018160200151035b60020b60208801526148a5565b8051875173ffffffffffffffffffffffffffffffffffffffff908116911614614c7a578651614c3f9061423b565b6148a5565b86516020880151614d149190614cd690899060a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff919091161790565b7fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161790565b8c55604087015160038d01546fffffffffffffffffffffffffffffffff908116911614614d8357604087015160038d0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b84614d975760e081015160028d0155614da2565b60e081015160018d01555b8a515f1385151514614dcf57614dc8614dba83612677565b61291e858e5f015103612677565b9950614dec565b614de9614de0848d5f015103612677565b61291e84612677565b99505b5050505050505b92959194509250565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290614e3b90849061603c565b9091555050604080513381526020810183905283915f9173ffffffffffffffffffffffffffffffffffffffff8716917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910161203a565b6040518381528260020b60048201528160020b6024820152604481fd5b5f838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870982811083820303915050808411614eed575f80fd5b805f03614eff57508290049050610838565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115614fa3579293925b73ffffffffffffffffffffffffffffffffffffffff8516614fca5762bfc9215f526004601cfd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b1673ffffffffffffffffffffffffffffffffffffffff8686031683615056578673ffffffffffffffffffffffffffffffffffffffff1661504383838973ffffffffffffffffffffffffffffffffffffffff16614eaf565b81615050576150506168d1565b0461509c565b61509c61507a83838973ffffffffffffffffffffffffffffffffffffffff16615482565b8873ffffffffffffffffffffffffffffffffffffffff16808204910615150190565b979650505050505050565b805f811215610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5f73ffffffffffffffffffffffffffffffffffffffff8481169086160360ff81901d908101186c010000000000000000000000006fffffffffffffffffffffffffffffffff851661512b818484614eaf565b9350845f83858409111684019350505050949350505050565b5f808211615150575f80fd5b507f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b62bfffff8116610c628161241e565b5f80600284810b9086900b818107831391900503831561528557600281900b60081d600181900b5f908152602089905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff808516908190039190911c91821680151595509091908561526757888360ff1686030261527a565b8861527182615144565b840360ff168603025b965050505050615308565b6001908101600281900b60081d80830b5f90815260208a905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841694851b0119908116801515955092939192856152ee57888360ff0360ff16860102615301565b88836152f9836154b2565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff851673ffffffffffffffffffffffffffffffffffffffff808a16908b16101582881280156153f5575f6153588a5f0385620f424003620f4240614eaf565b9050826153715761536c8d8d8d60016150d9565b61537e565b61537e8c8e8d6001614f6a565b96508681106153b2578b9750620f424084146153a9576153a4878586620f424003615482565b6153ab565b865b94506153cb565b8096506153c18d8c838661554c565b9750868a5f030394505b826153e1576153dc8d898d5f614f6a565b6153ed565b6153ed888e8d5f6150d9565b955050615473565b8161540b576154068c8c8c5f614f6a565b615417565b6154178b8d8c5f6150d9565b9450848910615428578a965061543a565b8894506154378c8b87856155b0565b96505b816154515761544c8c888c60016150d9565b61545e565b61545e878d8c6001614f6a565b9550615470868485620f424003615482565b93505b50505095509550955095915050565b5f61548e848484614eaf565b9050818061549e5761549e6168d1565b838509156108385760010180610838575f80fd5b5f8082116154be575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b15031604055f8290039091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff861615171561558c57634f2461b85f526004601cfd5b816155a35761559e8585856001615609565b612b1b565b612b1b858585600161576b565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff86161517156155f057634f2461b85f526004601cfd5b816156015761559e8585855f61576b565b612b1b8585855f5b5f81156156ae575f73ffffffffffffffffffffffffffffffffffffffff84111561565c57615657846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16614eaf565b61567c565b61567c6fffffffffffffffffffffffffffffffff8616606086901b6168fe565b90506156a66156a18273ffffffffffffffffffffffffffffffffffffffff891661604f565b6158a0565b915050611ced565b5f73ffffffffffffffffffffffffffffffffffffffff8411156156fa576156f5846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16615482565b615720565b615720606085901b6fffffffffffffffffffffffffffffffff8716808204910615150190565b90508073ffffffffffffffffffffffffffffffffffffffff87161161574c57634323a5555f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff8616039050611ced565b5f825f0361577a575083611ced565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156158455773ffffffffffffffffffffffffffffffffffffffff8616848102908582816157cd576157cd6168d1565b040361580a57818101828110615808576157fe838973ffffffffffffffffffffffffffffffffffffffff1683615482565b9350505050611ced565b505b506156a6818561583073ffffffffffffffffffffffffffffffffffffffff8a16836168fe565b61583a919061604f565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff86168481029085820414818311166158795763f5c787f15f526004601cfd5b8082036157fe6156a18473ffffffffffffffffffffffffffffffffffffffff8b1684615482565b8073ffffffffffffffffffffffffffffffffffffffff81168114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff81168114611770575f80fd5b5f8060408385031215615919575f80fd5b8235615924816158e7565b946020939093013593505050565b5f60208284031215615942575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610838575f80fd5b5f805f60608486031215615983575f80fd5b833561598e816158e7565b95602085013595506040909401359392505050565b5f805f606084860312156159b5575f80fd5b83356159c0816158e7565b925060208401356159d0816158e7565b929592945050506040919091013590565b5f602082840312156159f1575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715615a4857615a486159f8565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615a9557615a956159f8565b604052919050565b803562ffffff81168114610c62575f80fd5b8035600281900b8114610c62575f80fd5b5f60a08284031215615ad0575f80fd5b60405160a0810167ffffffffffffffff81118282101715615af357615af36159f8565b6040529050808235615b04816158e7565b81526020830135615b14816158e7565b6020820152615b2560408401615a9d565b6040820152615b3660608401615aaf565b60608201526080830135615b49816158e7565b6080919091015292915050565b5f8083601f840112615b66575f80fd5b50813567ffffffffffffffff811115615b7d575f80fd5b602083019150836020828501011115615b94575f80fd5b9250929050565b5f805f805f6101008688031215615bb0575f80fd5b615bba8787615ac0565b945060a0860135935060c0860135925060e086013567ffffffffffffffff811115615be3575f80fd5b615bef88828901615b56565b969995985093965092949392505050565b5f60208284031215615c10575f80fd5b8135610838816158e7565b5f8060408385031215615c2c575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015615c72578351835260209384019390920191600101615c54565b509095945050505050565b5f8060208385031215615c8e575f80fd5b823567ffffffffffffffff811115615ca4575f80fd5b615cb085828601615b56565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f8060c08385031215615d20575f80fd5b615d2a8484615ac0565b9150615d3860a08401615a9d565b90509250929050565b80358015158114610c62575f80fd5b5f8060408385031215615d61575f80fd5b8235615d6c816158e7565b9150615d3860208401615d41565b5f805f80848603610140811215615d8f575f80fd5b615d998787615ac0565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615dca575f80fd5b50615dd3615a25565b615ddf60a08701615aaf565b8152615ded60c08701615aaf565b602082015260e086013560408201526101008601356060820152925061012085013567ffffffffffffffff811115615e23575f80fd5b615e2f87828801615b56565b95989497509550505050565b5f8060c08385031215615e4c575f80fd5b615e568484615ac0565b915060a0830135615e66816158e7565b809150509250929050565b5f8060208385031215615e82575f80fd5b823567ffffffffffffffff811115615e98575f80fd5b8301601f81018513615ea8575f80fd5b803567ffffffffffffffff811115615ebe575f80fd5b8560208260051b8401011115615ed2575f80fd5b6020919091019590945092505050565b5f8060408385031215615ef3575f80fd5b8235615efe816158e7565b91506020830135615e66816158e7565b5f805f80848603610120811215615f23575f80fd5b615f2d8787615ac0565b945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615f5e575f80fd5b506040516060810167ffffffffffffffff81118282101715615f8257615f826159f8565b604052615f9160a08701615d41565b815260c0860135602082015260e0860135615fab816158e7565b6040820152925061010085013567ffffffffffffffff811115615e23575f80fd5b5f805f8060808587031215615fdf575f80fd5b8435615fea816158e7565b93506020850135615ffa816158e7565b93969395505050506040820135916060013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107655761076561600f565b808201808211156107655761076561600f565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611ced602083018486616062565b5f602082840312156160cc575f80fd5b815167ffffffffffffffff8111156160e2575f80fd5b8201601f810184136160f2575f80fd5b805167ffffffffffffffff81111561610c5761610c6159f8565b61613d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615a4e565b818152856020838501011115616151575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b73ffffffffffffffffffffffffffffffffffffffff87168152616209602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8460c08201528360e08201526101206101008201525f61622e61012083018486616062565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff861681526162d5602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f61509c61016083018486616062565b73ffffffffffffffffffffffffffffffffffffffff881681526163b7602082018873ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8551600290810b60c08301526020870151900b60e08201526040860151610100820152606086015161012082015284610140820152836101608201526101a06101808201525f6145526101a083018486616062565b73ffffffffffffffffffffffffffffffffffffffff8416815260e081016164ab602083018573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660c0830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff85168152610100810161656f602083018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff841660c08301528260020b60e083015295945050505050565b5f602082840312156165ad575f80fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8616815261664f602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351151560c0820152602084015160e0820152604084015173ffffffffffffffffffffffffffffffffffffffff166101008201526101406101208201525f61509c61014083018486616062565b8082018281125f8312801582168215821617156113f4576113f461600f565b73ffffffffffffffffffffffffffffffffffffffff87168152616756602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8451151560c0820152602085015160e0820152604085015173ffffffffffffffffffffffffffffffffffffffff16610100820152836101208201526101606101408201525f61622e61016083018486616062565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff80000000000000000000000000000000821217156107655761076561600f565b805160208201517fffffffff0000000000000000000000000000000000000000000000000000000081169190600482101561685d577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff821317156107655761076561600f565b8181035f831280158383131683831282161715613a4157613a4161600f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82616931577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea164736f6c634300081a000a60e060405234801561000f575f80fd5b5060405161116838038061116883398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610d716103f75f395f6104cf01525f61049a01525f6101590152610d715ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806370a08231116100885780639dc29fac116100635780639dc29fac146101f0578063a9059cbb14610203578063d505accf14610216578063dd62ed3e14610229575f80fd5b806370a08231146101aa5780637ecebe00146101c957806395d89b41146101e8575f80fd5b806323b872dd116100c357806323b872dd14610141578063313ce567146101545780633644e5151461018d57806340c10f1914610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610253565b6040516100fe9190610a52565b60405180910390f35b61011a610115366004610acd565b6102de565b60405190151581526020016100fe565b61013360025481565b6040519081526020016100fe565b61011a61014f366004610af5565b610357565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100fe565b610133610497565b6101a86101a3366004610acd565b6104f1565b005b6101336101b8366004610b2f565b60036020525f908152604090205481565b6101336101d7366004610b2f565b60056020525f908152604090205481565b6100f16104ff565b6101a86101fe366004610acd565b61050c565b61011a610211366004610acd565b610516565b6101a8610224366004610b4f565b610599565b610133610237366004610bbc565b600460209081525f928352604080842090915290825290205481565b5f805461025f90610bed565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610bed565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103e9576103b88382610c6b565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120805485929061041d908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104849087815260200190565b60405180910390a3506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146104cc576104c76108b7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6104fb828261094f565b5050565b6001805461025f90610bed565b6104fb82826109c6565b335f90815260036020526040812080548391908390610536908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103459086815260200190565b42841015610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f6001610613610497565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610761573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906107dc57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016105ff565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516108e79190610c7e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546109609190610d51565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260036020526040812080548392906109fa908490610c6b565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109ba565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac8575f80fd5b919050565b5f8060408385031215610ade575f80fd5b610ae783610aa5565b946020939093013593505050565b5f805f60608486031215610b07575f80fd5b610b1084610aa5565b9250610b1e60208501610aa5565b929592945050506040919091013590565b5f60208284031215610b3f575f80fd5b610b4882610aa5565b9392505050565b5f805f805f805f60e0888a031215610b65575f80fd5b610b6e88610aa5565b9650610b7c60208901610aa5565b95506040880135945060608801359350608088013560ff81168114610b9f575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610bcd575f80fd5b610bd683610aa5565b9150610be460208401610aa5565b90509250929050565b600181811c90821680610c0157607f821691505b602082108103610c38577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561035157610351610c3e565b5f8083545f8160011c90506001821680610c9957607f821691505b602082108103610cd0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b808015610ce45760018114610d1757610d45565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450610d45565b5f888152602090205f5b84811015610d3d57815489820152600190910190602001610d21565b505082870194505b50929695505050505050565b8082018082111561035157610351610c3e56fea164736f6c634300081a000aa164736f6c634300081a000a","sourceMap":"3126:44:9:-:0;;;3166:4;-1:-1:-1;;3126:44:9;;;;;;;;1016:26:19;;;;;;;;;-1:-1:-1;;458:15005:245;2461:87:127;;;2512:3;2461:87;;;;2533:4;2461:87;;;;-1:-1:-1;2461:87:127;;;;;2405:143;;-1:-1:-1;;2405:143:127;;;;;;;;;;;;;;;;;;;3126:44:9;2617:88:127;;;;;;;;;-1:-1:-1;;2617:88:127;;;;;;;;2554:151;;;;;;;;;;;;;;;;;;;;2751:88;458:15005:245;2751:88:127;2617;2751;;;-1:-1:-1;;2751:88:127;;;;356:29:125;2751:88:127;;;;2711:128;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2711:128:127;;;;;;;;3511:32;;;3541:2;3511:32;;;;;;3549:74;;;;;;-1:-1:-1;;;;;3549:74:127;;;;-1:-1:-1;;1367:45:259;;1418:27;;458:15005:245;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102da575f3560e01c806385226c811161017b578063b5508aa9116100d1578063c9bcb77a11610087578063ede3d78a11610062578063ede3d78a1461074a578063f0cd759a1461075e578063fa7626d414610772575f80fd5b8063c9bcb77a1461070e578063e20c9f7114610722578063e54add6814610736575f80fd5b8063bd9ab727116100b7578063bd9ab727146106d2578063c148f4f8146106e6578063c7b8e15d146106fa575f80fd5b8063b5508aa91461069a578063ba414fa6146106ae575f80fd5b80639d06c51d11610131578063b0464fdc1161010c578063b0464fdc14610608578063b0f3d8021461061c578063b1a73b8a14610630575f80fd5b80639d06c51d146105cc578063a0775dd8146105e0578063a3a4aec0146105f4575f80fd5b80638a1a4893116101615780638a1a48931461056a578063916a17c61461057e57806393ad73ed1461059f575f80fd5b806385226c811461053557806388e5410714610556575f80fd5b80633e5e3c2311610230578063567dc4b8116101e657806364724a2d116101c157806364724a2d146104ec57806366d9a9a0146105005780637ed16fa014610521575f80fd5b8063567dc4b8146104b05780635999bb35146104c45780635a9fba9a146104d8575f80fd5b806340d8983e1161021657806340d8983e1461044f5780634e9c949514610463578063542524dd14610477575f80fd5b80633e5e3c23146104275780633f7286f41461043b575f80fd5b80631ed7831c11610290578063294823301161026b578063294823301461039d5780632ade3880146103b157806339cd2013146103d2575f80fd5b80631ed7831c1461034b57806320c27a5c14610375578063258ae5a114610389575f80fd5b80630bc1c41e116102c05780630bc1c41e1461030f5780630feca937146103235780631546ac1214610337575f80fd5b80630a7d9154146102e55780630a9254e4146102fb575f80fd5b366102e157005b5f80fd5b3480156102f0575f80fd5b506102f961078b565b005b348015610306575f80fd5b506102f9610d3b565b34801561031a575f80fd5b506102f9610d7a565b34801561032e575f80fd5b506102f96112df565b348015610342575f80fd5b506102f9611843565b348015610356575f80fd5b5061035f611db5565b60405161036c919061aae7565b60405180910390f35b348015610380575f80fd5b506102f9611e22565b348015610394575f80fd5b506102f9611ffe565b3480156103a8575f80fd5b506102f9612571565b3480156103bc575f80fd5b506103c5612ae4565b60405161036c919061ab8b565b3480156103dd575f80fd5b506023546024546025546103ff92600281810b936301000000909204900b9184565b60408051600295860b81529390940b602084015292820152606081019190915260800161036c565b348015610432575f80fd5b5061035f612c2d565b348015610446575f80fd5b5061035f612c98565b34801561045a575f80fd5b506102f9612d03565b34801561046e575f80fd5b506102f9613295565b348015610482575f80fd5b5061048b6137ba565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161036c565b3480156104bb575f80fd5b506102f96137dc565b3480156104cf575f80fd5b506102f9613d64565b3480156104e3575f80fd5b506102f96142c6565b3480156104f7575f80fd5b506102f9614367565b34801561050b575f80fd5b506105146148f3565b60405161036c919061acf9565b34801561052c575f80fd5b506102f9614a6c565b348015610540575f80fd5b50610549614ff8565b60405161036c919061ad95565b348015610561575f80fd5b506102f96150c3565b348015610575575f80fd5b506102f961561e565b348015610589575f80fd5b50610592615bc3565b60405161036c919061ae0a565b3480156105aa575f80fd5b506020546021546022546103ff92600281810b936301000000909204900b9184565b3480156105d7575f80fd5b506102f9615cc6565b3480156105eb575f80fd5b506102f9616266565b3480156105ff575f80fd5b506102f96167b5565b348015610613575f80fd5b50610592616d49565b348015610627575f80fd5b506102f9616e4c565b34801561063b575f80fd5b506026546027546028546106679260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff169082015260600161036c565b3480156106a5575f80fd5b5061054961753d565b3480156106b9575f80fd5b506106c2617608565b604051901515815260200161036c565b3480156106dd575f80fd5b506102f96176d8565b3480156106f1575f80fd5b506102f9617c81565b348015610705575f80fd5b5061048b6181f4565b348015610719575f80fd5b506102f9618204565b34801561072d575f80fd5b5061035f618777565b348015610741575f80fd5b506102f96187e2565b348015610755575f80fd5b506102f9618d15565b348015610769575f80fd5b506102f96192ba565b34801561077d575f80fd5b50601f546106c29060ff1681565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b5490911661012083015281525f6020808301829052670de0b6b3a76400008385018190526060840183905284518083018652928352608084019290925292519092610a009160069161085f9185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906108a49061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546108d09061afae565b801561091b5780601f106108f25761010080835404028352916020019161091b565b820191905f5260205f20905b8154815290600101906020018083116108fe57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546109659061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546109919061afae565b80156109dc5780601f106109b3576101008083540402835291602001916109dc565b820191905f5260205f20905b8154815290600101906020018083116109bf57829003601f168201915b505050505081526020019060010190610948565b505050915250909291905061985b565b80516054908190610a11908261b077565b506020828101518051610a2a926001850192019061a9f1565b5050603a5460395460408051808201909152605480545f9550610bd19473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290610a749061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa09061afae565b8015610aeb5780601f10610ac257610100808354040283529160200191610aeb565b820191905f5260205f20905b815481529060010190602001808311610ace57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054610b359061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054610b619061afae565b8015610bac5780601f10610b8357610100808354040283529160200191610bac565b820191905f5260205f20905b815481529060010190602001808311610b8f57829003601f168201915b505050505081526020019060010190610b18565b505050915250909392919050619a6f565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90610c2890849060040161b18e565b5f604051808303815f87803b158015610c3f575f80fd5b505af1158015610c51573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5634526f757465725f4578616374496e70757453696e676c655f6e617469766560448201527f4f757400000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca1291506084015b6020604051808303815f875af1158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d35919061b1a0565b50505050565b610d43616e4c565b610d4b619c0d565b80516054908190610d5c908261b077565b506020828101518051610d75926001850192019061a9f1565b505050565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190526fffffffffffffffffffffffffffffffff6060840152835180830185525f815260808401529251610feb91600891610e5a9185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290610e9f9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecb9061afae565b8015610f165780601f10610eed57610100808354040283529160200191610f16565b820191905f5260205f20905b815481529060010190602001808311610ef957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054610f609061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8c9061afae565b8015610fd75780601f10610fae57610100808354040283529160200191610fd7565b820191905f5260205f20905b815481529060010190602001808311610fba57829003601f168201915b505050505081526020019060010190610f43565b80516054908190610ffc908261b077565b506020828101518051611015926001850192019061a9f1565b5050603954603a5460408051808201909152605480545f95506111ab9473ffffffffffffffffffffffffffffffffffffffff90811694169260019290918290829061105f9061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461108b9061afae565b80156110d65780601f106110ad576101008083540402835291602001916110d6565b820191905f5260205f20905b8154815290600101906020018083116110b957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546111209061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461114c9061afae565b80156111975780601f1061116e57610100808354040283529160200191611197565b820191905f5260205f20905b81548152906001019060200180831161117a57829003601f168201915b505050505081526020019060010190611103565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff90671bc16d674ec800009061120c90859060040161b18e565b5f604051808303818588803b158015611223575f80fd5b505af1158015611235573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5634526f757465725f45786163744f757470757453696e676c655f6e6174697660448201527f65496e5f737765657045544800000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506084019050610cf5565b60295460538054600180820183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e928301805473ffffffffffffffffffffffffffffffffffffffff9096167fffffffffffffffffffffffff00000000000000000000000000000000000000009687161790558354918201845591018054909316909255805460408051602080840282018101909252828152670de0b6b3a764000094936113df9391929091908301828280156113d457602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a9575b505050505083619c69565b90506115886007826040516020016113f7919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061143c9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546114689061afae565b80156114b35780601f1061148a576101008083540402835291602001916114b3565b820191905f5260205f20905b81548152906001019060200180831161149657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546114fd9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546115299061afae565b80156115745780601f1061154b57610100808354040283529160200191611574565b820191905f5260205f20905b81548152906001019060200180831161155757829003601f168201915b5050505050815260200190600101906114e0565b80516054908190611599908261b077565b5060208281015180516115b2926001850192019061a9f1565b505060295460408051808201909152605480545f94506117419373ffffffffffffffffffffffffffffffffffffffff16928592600192829082906115f59061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546116219061afae565b801561166c5780601f106116435761010080835404028352916020019161166c565b820191905f5260205f20905b81548152906001019060200180831161164f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546116b69061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546116e29061afae565b801561172d5780601f106117045761010080835404028352916020019161172d565b820191905f5260205f20905b81548152906001019060200180831161171057829003601f168201915b505050505081526020019060010190611699565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061179890849060040161b18e565b5f604051808303815f87803b1580156117af575f80fd5b505af11580156117c1573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5634526f757465725f4578616374496e31486f705f6e61746976654f757400006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554938401865592909301805490931673ffffffffffffffffffffffffffffffffffffffff9290921691909117909155815460408051602083810282018101909252828152670de0b6b3a7640000946119479391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050611af060078260405160200161195f919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906119a49061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546119d09061afae565b8015611a1b5780601f106119f257610100808354040283529160200191611a1b565b820191905f5260205f20905b8154815290600101906020018083116119fe57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054611a659061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054611a919061afae565b8015611adc5780601f10611ab357610100808354040283529160200191611adc565b820191905f5260205f20905b815481529060010190602001808311611abf57829003601f168201915b505050505081526020019060010190611a48565b80516054908190611b01908261b077565b506020828101518051611b1a926001850192019061a9f1565b509050505f611caf5f60295f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f82018054611b639061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054611b8f9061afae565b8015611bda5780601f10611bb157610100808354040283529160200191611bda565b820191905f5260205f20905b815481529060010190602001808311611bbd57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054611c249061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054611c509061afae565b8015611c9b5780601f10611c7257610100808354040283529160200191611c9b565b820191905f5260205f20905b815481529060010190602001808311611c7e57829003601f168201915b505050505081526020019060010190611c07565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b908590611d0890859060040161b18e565b5f604051808303818588803b158015611d1f575f80fd5b505af1158015611d31573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5634526f757465725f4578616374496e31486f705f6e6174697665496e0000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b60606016805480602002602001604051908101604052809291908181526020018280548015611e1857602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ded575b5050505050905090565b6040517f8d1cc92500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6f636b5634526f757465722e736f6c3a4d6f636b5634526f757465720000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a908290638d1cc925906064015f60405180830381865afa158015611ebd573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f02919081019061b316565b604051602001611f12919061b406565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209091012060e084901b7fffffffff000000000000000000000000000000000000000000000000000000001683526004830191909152603d60448301527f726f7574657220696e6974636f646520686173682028776974686f757420636f60648301527f6e7374727563746f7220706172616d732c2061732075696e74323536290000006084830152602482015260a4015b5f604051808303815f87803b158015611fec575f80fd5b505af1158015610d35573d5f803e3d5ffd5b602a5460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff978816179091556029548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094936121069391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b90506122af60078260405160200161211e919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906121639061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461218f9061afae565b80156121da5780601f106121b1576101008083540402835291602001916121da565b820191905f5260205f20905b8154815290600101906020018083116121bd57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546122249061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546122509061afae565b801561229b5780601f106122725761010080835404028352916020019161229b565b820191905f5260205f20905b81548152906001019060200180831161227e57829003601f168201915b505050505081526020019060010190612207565b805160549081906122c0908261b077565b5060208281015180516122d9926001850192019061a9f1565b5050602a5460295460408051808201909152605480545f955061246f9473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906123239061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461234f9061afae565b801561239a5780601f106123715761010080835404028352916020019161239a565b820191905f5260205f20905b81548152906001019060200180831161237d57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546123e49061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546124109061afae565b801561245b5780601f106124325761010080835404028352916020019161245b565b820191905f5260205f20905b81548152906001019060200180831161243e57829003601f168201915b5050505050815260200190600101906123c7565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b906124c690849060040161b18e565b5f604051808303815f87803b1580156124dd575f80fd5b505af11580156124ef573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f4578616374496e31486f705f6f6e65466f725a65726f006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094936126799391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050612822600782604051602001612691919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906126d69061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546127029061afae565b801561274d5780601f106127245761010080835404028352916020019161274d565b820191905f5260205f20905b81548152906001019060200180831161273057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546127979061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546127c39061afae565b801561280e5780601f106127e55761010080835404028352916020019161280e565b820191905f5260205f20905b8154815290600101906020018083116127f157829003601f168201915b50505050508152602001906001019061277a565b80516054908190612833908261b077565b50602082810151805161284c926001850192019061a9f1565b5050602954602a5460408051808201909152605480545f95506129e29473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906128969061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546128c29061afae565b801561290d5780601f106128e45761010080835404028352916020019161290d565b820191905f5260205f20905b8154815290600101906020018083116128f057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546129579061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546129839061afae565b80156129ce5780601f106129a5576101008083540402835291602001916129ce565b820191905f5260205f20905b8154815290600101906020018083116129b157829003601f168201915b50505050508152602001906001019061293a565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90612a3990849060040161b18e565b5f604051808303815f87803b158015612a50575f80fd5b505af1158015612a62573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f4578616374496e31486f705f7a65726f466f724f6e65006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015612c24575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015612c0d578382905f5260205f20018054612b829061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054612bae9061afae565b8015612bf95780601f10612bd057610100808354040283529160200191612bf9565b820191905f5260205f20905b815481529060010190602001808311612bdc57829003601f168201915b505050505081526020019060010190612b65565b505050508152505081526020019060010190612b07565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611e1857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ded575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e1857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ded575050505050905090565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554808501875585018054831673ffffffffffffffffffffffffffffffffffffffff928316179055602a54865494850187559390940180549091169290931691909117909155815460408051602083810282018101909252828152670de0b6b3a764000094612e1f939192909190830182828015612e1457602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de9575b505050505083619e5a565b9050612fc8600982604051602001612e37919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290612e7c9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054612ea89061afae565b8015612ef35780601f10612eca57610100808354040283529160200191612ef3565b820191905f5260205f20905b815481529060010190602001808311612ed657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054612f3d9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054612f699061afae565b8015612fb45780601f10612f8b57610100808354040283529160200191612fb4565b820191905f5260205f20905b815481529060010190602001808311612f9757829003601f168201915b505050505081526020019060010190612f20565b80516054908190612fd9908261b077565b506020828101518051612ff2926001850192019061a9f1565b509050505f6131875f602a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f8201805461303b9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546130679061afae565b80156130b25780601f10613089576101008083540402835291602001916130b2565b820191905f5260205f20905b81548152906001019060200180831161309557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546130fc9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546131289061afae565b80156131735780601f1061314a57610100808354040283529160200191613173565b820191905f5260205f20905b81548152906001019060200180831161315657829003601f168201915b5050505050815260200190600101906130df565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff90671bc16d674ec80000906131e890859060040161b18e565b5f604051808303818588803b1580156131ff575f80fd5b505af1158015613211573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f45786163744f757432486f70735f6e6174697665496e006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f6060840181905284518084018652908152608084015292516134f8916006916133679185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906133ac9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546133d89061afae565b80156134235780601f106133fa57610100808354040283529160200191613423565b820191905f5260205f20905b81548152906001019060200180831161340657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f2001805461346d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546134999061afae565b80156134e45780601f106134bb576101008083540402835291602001916134e4565b820191905f5260205f20905b8154815290600101906020018083116134c757829003601f168201915b505050505081526020019060010190613450565b80516054908190613509908261b077565b506020828101518051613522926001850192019061a9f1565b505060485460495460408051808201909152605480545f95506136b89473ffffffffffffffffffffffffffffffffffffffff90811694169260019290918290829061356c9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546135989061afae565b80156135e35780601f106135ba576101008083540402835291602001916135e3565b820191905f5260205f20905b8154815290600101906020018083116135c657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f2001805461362d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546136599061afae565b80156136a45780601f1061367b576101008083540402835291602001916136a4565b820191905f5260205f20905b81548152906001019060200180831161368757829003601f168201915b505050505081526020019060010190613610565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061370f90849060040161b18e565b5f604051808303815f87803b158015613726575f80fd5b505af1158015613738573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5634526f757465725f4578616374496e70757453696e676c65000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6137d9600173fffd8963efd1fc6a506488495d951d5263988d2661b449565b81565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554808501875585018054831673ffffffffffffffffffffffffffffffffffffffff928316179055602a54865494850187559390940180549091169290931691909117909155815460408051602083810282018101909252828152670de0b6b3a7640000946138f69391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050613a9f60078260405160200161390e919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906139539061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461397f9061afae565b80156139ca5780601f106139a1576101008083540402835291602001916139ca565b820191905f5260205f20905b8154815290600101906020018083116139ad57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054613a149061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613a409061afae565b8015613a8b5780601f10613a6257610100808354040283529160200191613a8b565b820191905f5260205f20905b815481529060010190602001808311613a6e57829003601f168201915b5050505050815260200190600101906139f7565b80516054908190613ab0908261b077565b506020828101518051613ac9926001850192019061a9f1565b509050505f613c5e5f602a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f82018054613b129061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613b3e9061afae565b8015613b895780601f10613b6057610100808354040283529160200191613b89565b820191905f5260205f20905b815481529060010190602001808311613b6c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054613bd39061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613bff9061afae565b8015613c4a5780601f10613c2157610100808354040283529160200191613c4a565b820191905f5260205f20905b815481529060010190602001808311613c2d57829003601f168201915b505050505081526020019060010190613bb6565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b908590613cb790859060040161b18e565b5f604051808303818588803b158015613cce575f80fd5b505af1158015613ce0573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5634526f757465725f4578616374496e32486f70735f6e6174697665496e00006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b60295460538054600180820183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e928301805473ffffffffffffffffffffffffffffffffffffffff9096167fffffffffffffffffffffffff00000000000000000000000000000000000000009687161790558354918201845591018054909316909255805460408051602080840282018101909252828152670de0b6b3a76400009493613e62939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b905061400b600982604051602001613e7a919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290613ebf9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613eeb9061afae565b8015613f365780601f10613f0d57610100808354040283529160200191613f36565b820191905f5260205f20905b815481529060010190602001808311613f1957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054613f809061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054613fac9061afae565b8015613ff75780601f10613fce57610100808354040283529160200191613ff7565b820191905f5260205f20905b815481529060010190602001808311613fda57829003601f168201915b505050505081526020019060010190613f63565b8051605490819061401c908261b077565b506020828101518051614035926001850192019061a9f1565b505060295460408051808201909152605480545f94506141c49373ffffffffffffffffffffffffffffffffffffffff16928592600192829082906140789061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546140a49061afae565b80156140ef5780601f106140c6576101008083540402835291602001916140ef565b820191905f5260205f20905b8154815290600101906020018083116140d257829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546141399061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546141659061afae565b80156141b05780601f10614187576101008083540402835291602001916141b0565b820191905f5260205f20905b81548152906001019060200180831161419357829003601f168201915b50505050508152602001906001019061411c565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061421b90849060040161b18e565b5f604051808303815f87803b158015614232575f80fd5b505af1158015614244573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f45786163744f757431486f705f6e61746976654f7574006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b604554604080517f51db805a0000000000000000000000000000000000000000000000000000000081526004810191909152601160448201527f5634526f757465725f42797465636f6465000000000000000000000000000000606482015273ffffffffffffffffffffffffffffffffffffffff9091163b6024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a90608401611fd5565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a54855480850187558501805483169188169190911790556051548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a764000094936144889391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b90506146316007826040516020016144a0919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906144e59061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546145119061afae565b801561455c5780601f106145335761010080835404028352916020019161455c565b820191905f5260205f20905b81548152906001019060200180831161453f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546145a69061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546145d29061afae565b801561461d5780601f106145f45761010080835404028352916020019161461d565b820191905f5260205f20905b81548152906001019060200180831161460057829003601f168201915b505050505081526020019060010190614589565b80516054908190614642908261b077565b50602082810151805161465b926001850192019061a9f1565b505060295460515460408051808201909152605480545f95506147f19473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906146a59061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546146d19061afae565b801561471c5780601f106146f35761010080835404028352916020019161471c565b820191905f5260205f20905b8154815290600101906020018083116146ff57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546147669061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546147929061afae565b80156147dd5780601f106147b4576101008083540402835291602001916147dd565b820191905f5260205f20905b8154815290600101906020018083116147c057829003601f168201915b505050505081526020019060010190614749565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061484890849060040161b18e565b5f604051808303815f87803b15801561485f575f80fd5b505af1158015614871573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5634526f757465725f4578616374496e32486f707300000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015612c24578382905f5260205f2090600202016040518060400160405290815f820180546149469061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546149729061afae565b80156149bd5780601f10614994576101008083540402835291602001916149bd565b820191905f5260205f20905b8154815290600101906020018083116149a057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015614a5457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411614a015790505b50505050508152505081526020019060010190614916565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a54855480850187558501805483169188169190911790556051548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a76400009493614b8d939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050614d36600982604051602001614ba5919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290614bea9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054614c169061afae565b8015614c615780601f10614c3857610100808354040283529160200191614c61565b820191905f5260205f20905b815481529060010190602001808311614c4457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054614cab9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054614cd79061afae565b8015614d225780601f10614cf957610100808354040283529160200191614d22565b820191905f5260205f20905b815481529060010190602001808311614d0557829003601f168201915b505050505081526020019060010190614c8e565b80516054908190614d47908261b077565b506020828101518051614d60926001850192019061a9f1565b505060295460515460408051808201909152605480545f9550614ef69473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290614daa9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054614dd69061afae565b8015614e215780601f10614df857610100808354040283529160200191614e21565b820191905f5260205f20905b815481529060010190602001808311614e0457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054614e6b9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054614e979061afae565b8015614ee25780601f10614eb957610100808354040283529160200191614ee2565b820191905f5260205f20905b815481529060010190602001808311614ec557829003601f168201915b505050505081526020019060010190614e4e565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90614f4d90849060040161b18e565b5f604051808303815f87803b158015614f64575f80fd5b505af1158015614f76573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5634526f757465725f45786163744f757432486f7073000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015612c24578382905f5260205f200180546150389061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546150649061afae565b80156150af5780601f10615086576101008083540402835291602001916150af565b820191905f5260205f20905b81548152906001019060200180831161509257829003601f168201915b50505050508152602001906001019061501b565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b5490911661012083015281525f6020808301829052670de0b6b3a76400008385018190526fffffffffffffffffffffffffffffffff606085015284518083018652928352608084019290925292519092615337916008916151a69185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906151eb9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546152179061afae565b80156152625780601f1061523957610100808354040283529160200191615262565b820191905f5260205f20905b81548152906001019060200180831161524557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546152ac9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546152d89061afae565b80156153235780601f106152fa57610100808354040283529160200191615323565b820191905f5260205f20905b81548152906001019060200180831161530657829003601f168201915b50505050508152602001906001019061528f565b80516054908190615348908261b077565b506020828101518051615361926001850192019061a9f1565b5050603a5460395460408051808201909152605480545f95506154f79473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906153ab9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546153d79061afae565b80156154225780601f106153f957610100808354040283529160200191615422565b820191905f5260205f20905b81548152906001019060200180831161540557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f2001805461546c9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546154989061afae565b80156154e35780601f106154ba576101008083540402835291602001916154e3565b820191905f5260205f20905b8154815290600101906020018083116154c657829003601f168201915b50505050508152602001906001019061544f565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff9061554e90849060040161b18e565b5f604051808303815f87803b158015615565575f80fd5b505af1158015615577573d5f803e3d5ffd5b50506040517fdd9fca12000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5634526f757465725f45786163744f757470757453696e676c655f6e6174697660448201527f654f7574000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401610cf5565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a5485548085018755850180548316918816919091179055605154855480850187558501805483169188169190911790556052548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a76400009493615758939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050615901600982604051602001615770919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906157b59061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546157e19061afae565b801561582c5780601f106158035761010080835404028352916020019161582c565b820191905f5260205f20905b81548152906001019060200180831161580f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546158769061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546158a29061afae565b80156158ed5780601f106158c4576101008083540402835291602001916158ed565b820191905f5260205f20905b8154815290600101906020018083116158d057829003601f168201915b505050505081526020019060010190615859565b80516054908190615912908261b077565b50602082810151805161592b926001850192019061a9f1565b505060295460525460408051808201909152605480545f9550615ac19473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906159759061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546159a19061afae565b80156159ec5780601f106159c3576101008083540402835291602001916159ec565b820191905f5260205f20905b8154815290600101906020018083116159cf57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054615a369061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054615a629061afae565b8015615aad5780601f10615a8457610100808354040283529160200191615aad565b820191905f5260205f20905b815481529060010190602001808311615a9057829003601f168201915b505050505081526020019060010190615a19565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90615b1890849060040161b18e565b5f604051808303815f87803b158015615b2f575f80fd5b505af1158015615b41573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5634526f757465725f45786163744f757433486f7073000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015612c24575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015615cae57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411615c5b5790505b50505050508152505081526020019060010190615be6565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554938401865592909301805490931673ffffffffffffffffffffffffffffffffffffffff9290921691909117909155815460408051602083810282018101909252828152670de0b6b3a764000094615dca939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050615f73600982604051602001615de2919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290615e279061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054615e539061afae565b8015615e9e5780601f10615e7557610100808354040283529160200191615e9e565b820191905f5260205f20905b815481529060010190602001808311615e8157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054615ee89061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054615f149061afae565b8015615f5f5780601f10615f3657610100808354040283529160200191615f5f565b820191905f5260205f20905b815481529060010190602001808311615f4257829003601f168201915b505050505081526020019060010190615ecb565b80516054908190615f84908261b077565b506020828101518051615f9d926001850192019061a9f1565b509050505f6161325f60295f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f82018054615fe69061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546160129061afae565b801561605d5780601f106160345761010080835404028352916020019161605d565b820191905f5260205f20905b81548152906001019060200180831161604057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546160a79061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546160d39061afae565b801561611e5780601f106160f55761010080835404028352916020019161611e565b820191905f5260205f20905b81548152906001019060200180831161610157829003601f168201915b50505050508152602001906001019061608a565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff90671bc16d674ec800009061619390859060040161b18e565b5f604051808303818588803b1580156161aa575f80fd5b505af11580156161bc573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5634526f757465725f45786163744f757431486f705f6e6174697665496e5f7360448201527f77656570455448000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506084019050610cf5565b604080516101408101825260395473ffffffffffffffffffffffffffffffffffffffff90811660a08301908152603a5480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152603b5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f6060840181905284518084018652908152608084015292516164c9916006916163389185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061637d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546163a99061afae565b80156163f45780601f106163cb576101008083540402835291602001916163f4565b820191905f5260205f20905b8154815290600101906020018083116163d757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f2001805461643e9061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461646a9061afae565b80156164b55780601f1061648c576101008083540402835291602001916164b5565b820191905f5260205f20905b81548152906001019060200180831161649857829003601f168201915b505050505081526020019060010190616421565b805160549081906164da908261b077565b5060208281015180516164f3926001850192019061a9f1565b5050603954603a5460408051808201909152605480545f95506166899473ffffffffffffffffffffffffffffffffffffffff90811694169260019290918290829061653d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546165699061afae565b80156165b45780601f1061658b576101008083540402835291602001916165b4565b820191905f5260205f20905b81548152906001019060200180831161659757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546165fe9061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461662a9061afae565b80156166755780601f1061664c57610100808354040283529160200191616675565b820191905f5260205f20905b81548152906001019060200180831161665857829003601f168201915b5050505050815260200190600101906165e1565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9085906166e290859060040161b18e565b5f604051808303818588803b1580156166f9575f80fd5b505af115801561670b573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f5634526f757465725f4578616374496e70757453696e676c655f6e617469766560448201527f496e0000000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506084019050610cf5565b60515460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a54855480850187558501805483169188169190911790556029548554808501875585018054831691909716179095558354918201845591018054909316909255805460408051602083810282018101909252828152670de0b6b3a764000094936168e5939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050616a8e6009826040516020016168fd919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906169429061afae565b80601f016020809104026020016040519081016040528092919081815260200182805461696e9061afae565b80156169b95780601f10616990576101008083540402835291602001916169b9565b820191905f5260205f20905b81548152906001019060200180831161699c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054616a039061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054616a2f9061afae565b8015616a7a5780601f10616a5157610100808354040283529160200191616a7a565b820191905f5260205f20905b815481529060010190602001808311616a5d57829003601f168201915b5050505050815260200190600101906169e6565b80516054908190616a9f908261b077565b506020828101518051616ab8926001850192019061a9f1565b505060515460408051808201909152605480545f9450616c479373ffffffffffffffffffffffffffffffffffffffff1692859260019282908290616afb9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054616b279061afae565b8015616b725780601f10616b4957610100808354040283529160200191616b72565b820191905f5260205f20905b815481529060010190602001808311616b5557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054616bbc9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054616be89061afae565b8015616c335780601f10616c0a57610100808354040283529160200191616c33565b820191905f5260205f20905b815481529060010190602001808311616c1657829003601f168201915b505050505081526020019060010190616b9f565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90616c9e90849060040161b18e565b5f604051808303815f87803b158015616cb5575f80fd5b505af1158015616cc7573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5634526f757465725f45786163744f757433486f70735f6e61746976654f75746044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015612c24575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015616e3457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411616de15790505b50505050508152505081526020019060010190616d6c565b616e5461a072565b602b5460405173ffffffffffffffffffffffffffffffffffffffff90911690616e7c9061aa45565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015616eb2573d5f803e3d5ffd5b50604580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690616f069061aa53565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015616f3c573d5f803e3d5ffd5b50604480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555f616f8d600461a0fd565b9050805f81518110616fa157616fa161b47b565b602002602001015160295f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181518110616ffb57616ffb61b47b565b6020026020010151602a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002815181106170555761705561b47b565b602002602001015160515f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806003815181106170af576170af61b47b565b6020908102919091010151605280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560295461710991165f61a20f565b8051603980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151603a8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151603b805490931690821617909155602954602a5461721b9291821691165f61a4a7565b8051604880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160498054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604a805490931690821617909155602a5460515461732d9291821691165f61a4a7565b8051604b80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604c8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604d80549093169082161790915560515460525461743f9291821691165f61a4a7565b8051604e80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604f8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000919093160291909117905560809092015160508054909316911617905550565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015612c24578382905f5260205f2001805461757d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546175a99061afae565b80156175f45780601f106175cb576101008083540402835291602001916175f4565b820191905f5260205f20905b8154815290600101906020018083116175d757829003601f168201915b505050505081526020019060010190617560565b6008545f9060ff161561761f575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa1580156176ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906176d1919061b1a0565b1415905090565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554808501875585018054831673ffffffffffffffffffffffffffffffffffffffff928316179055602a5486548086018855860180548416918316919091179055605154865494850187559390940180549091169290931691909117909155815460408051602083810282018101909252828152670de0b6b3a76400009461780b939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b90506179b4600982604051602001617823919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906178689061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546178949061afae565b80156178df5780601f106178b6576101008083540402835291602001916178df565b820191905f5260205f20905b8154815290600101906020018083116178c257829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546179299061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546179559061afae565b80156179a05780601f10617977576101008083540402835291602001916179a0565b820191905f5260205f20905b81548152906001019060200180831161798357829003601f168201915b50505050508152602001906001019061790c565b805160549081906179c5908261b077565b5060208281015180516179de926001850192019061a9f1565b509050505f617b735f60515f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f82018054617a279061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617a539061afae565b8015617a9e5780601f10617a7557610100808354040283529160200191617a9e565b820191905f5260205f20905b815481529060010190602001808311617a8157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054617ae89061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617b149061afae565b8015617b5f5780601f10617b3657610100808354040283529160200191617b5f565b820191905f5260205f20905b815481529060010190602001808311617b4257829003601f168201915b505050505081526020019060010190617acb565b6045546040517fa1bfb5ff00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063a1bfb5ff90671bc16d674ec8000090617bd490859060040161b18e565b5f604051808303818588803b158015617beb575f80fd5b505af1158015617bfd573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5634526f757465725f45786163744f757433486f70735f6e6174697665496e006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b602a5460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff978816179091556029548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a76400009493617d89939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b9050617f32600982604051602001617da1919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290617de69061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617e129061afae565b8015617e5d5780601f10617e3457610100808354040283529160200191617e5d565b820191905f5260205f20905b815481529060010190602001808311617e4057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054617ea79061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617ed39061afae565b8015617f1e5780601f10617ef557610100808354040283529160200191617f1e565b820191905f5260205f20905b815481529060010190602001808311617f0157829003601f168201915b505050505081526020019060010190617e8a565b80516054908190617f43908261b077565b506020828101518051617f5c926001850192019061a9f1565b5050602a5460295460408051808201909152605480545f95506180f29473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290617fa69061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054617fd29061afae565b801561801d5780601f10617ff45761010080835404028352916020019161801d565b820191905f5260205f20905b81548152906001019060200180831161800057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546180679061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546180939061afae565b80156180de5780601f106180b5576101008083540402835291602001916180de565b820191905f5260205f20905b8154815290600101906020018083116180c157829003601f168201915b50505050508152602001906001019061804a565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061814990849060040161b18e565b5f604051808303815f87803b158015618160575f80fd5b505af1158015618172573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5634526f757465725f45786163744f757431486f705f6f6e65466f725a65726f6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b6137d96401000276a3600161b4a8565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a7640000949361830c939192909190830182828015612e1457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612de957505050505083619e5a565b90506184b5600982604051602001618324919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906183699061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546183959061afae565b80156183e05780601f106183b7576101008083540402835291602001916183e0565b820191905f5260205f20905b8154815290600101906020018083116183c357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f2001805461842a9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546184569061afae565b80156184a15780601f10618478576101008083540402835291602001916184a1565b820191905f5260205f20905b81548152906001019060200180831161848457829003601f168201915b50505050508152602001906001019061840d565b805160549081906184c6908261b077565b5060208281015180516184df926001850192019061a9f1565b5050602954602a5460408051808201909152605480545f95506186759473ffffffffffffffffffffffffffffffffffffffff9081169416926001929091829082906185299061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546185559061afae565b80156185a05780601f10618577576101008083540402835291602001916185a0565b820191905f5260205f20905b81548152906001019060200180831161858357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546185ea9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546186169061afae565b80156186615780601f1061863857610100808354040283529160200191618661565b820191905f5260205f20905b81548152906001019060200180831161864457829003601f168201915b5050505050815260200190600101906185cd565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b906186cc90849060040161b18e565b5f604051808303815f87803b1580156186e3575f80fd5b505af11580156186f5573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5634526f757465725f45786163744f757431486f705f7a65726f466f724f6e656044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60606015805480602002602001604051908101604052809291908181526020018280548015611e1857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ded575050505050905090565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190526fffffffffffffffffffffffffffffffff6060840152835180830185525f815260808401529251618a53916008916188c29185910161af95565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906189079061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546189339061afae565b801561897e5780601f106189555761010080835404028352916020019161897e565b820191905f5260205f20905b81548152906001019060200180831161896157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f200180546189c89061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546189f49061afae565b8015618a3f5780601f10618a1657610100808354040283529160200191618a3f565b820191905f5260205f20905b815481529060010190602001808311618a2257829003601f168201915b5050505050815260200190600101906189ab565b80516054908190618a64908261b077565b506020828101518051618a7d926001850192019061a9f1565b505060485460495460408051808201909152605480545f9550618c139473ffffffffffffffffffffffffffffffffffffffff908116941692600192909182908290618ac79061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054618af39061afae565b8015618b3e5780601f10618b1557610100808354040283529160200191618b3e565b820191905f5260205f20905b815481529060010190602001808311618b2157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f20018054618b889061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054618bb49061afae565b8015618bff5780601f10618bd657610100808354040283529160200191618bff565b820191905f5260205f20905b815481529060010190602001808311618be257829003601f168201915b505050505081526020019060010190618b6b565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90618c6a90849060040161b18e565b5f604051808303815f87803b158015618c81575f80fd5b505af1158015618c93573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5634526f757465725f45786163744f757470757453696e676c650000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60295460538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff97881617909155602a5485548085018755850180548316918816919091179055605154855480850187558501805483169188169190911790556052548554938401865592909301805490931691909416179055805460408051602083810282018101909252828152670de0b6b3a76400009493618e4f9391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050618ff8600782604051602001618e67919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290618eac9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054618ed89061afae565b8015618f235780601f10618efa57610100808354040283529160200191618f23565b820191905f5260205f20905b815481529060010190602001808311618f0657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f20018054618f6d9061afae565b80601f0160208091040260200160405190810160405280929190818152602001828054618f999061afae565b8015618fe45780601f10618fbb57610100808354040283529160200191618fe4565b820191905f5260205f20905b815481529060010190602001808311618fc757829003601f168201915b505050505081526020019060010190618f50565b80516054908190619009908261b077565b506020828101518051619022926001850192019061a9f1565b505060295460525460408051808201909152605480545f95506191b89473ffffffffffffffffffffffffffffffffffffffff90811694169260019290918290829061906c9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546190989061afae565b80156190e35780601f106190ba576101008083540402835291602001916190e3565b820191905f5260205f20905b8154815290600101906020018083116190c657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f2001805461912d9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546191599061afae565b80156191a45780601f1061917b576101008083540402835291602001916191a4565b820191905f5260205f20905b81548152906001019060200180831161918757829003601f168201915b505050505081526020019060010190619110565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9061920f90849060040161b18e565b5f604051808303815f87803b158015619226575f80fd5b505af1158015619238573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5634526f757465725f4578616374496e33486f707300000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150606401610cf5565b60538054600181810183555f8381527f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e92830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556029548554808501875585018054831673ffffffffffffffffffffffffffffffffffffffff928316179055602a5486548086018855860180548416918316919091179055605154865494850187559390940180549091169290931691909117909155815460408051602083810282018101909252828152670de0b6b3a7640000946193ed9391929091908301828280156113d457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a957505050505083619c69565b9050619596600782604051602001619405919061b304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061944a9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546194769061afae565b80156194c15780601f10619498576101008083540402835291602001916194c1565b820191905f5260205f20905b8154815290600101906020018083116194a457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109f0578382905f5260205f2001805461950b9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546195379061afae565b80156195825780601f1061955957610100808354040283529160200191619582565b820191905f5260205f20905b81548152906001019060200180831161956557829003601f168201915b5050505050815260200190600101906194ee565b805160549081906195a7908261b077565b5060208281015180516195c0926001850192019061a9f1565b509050505f6197555f60515f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160546040518060400160405290815f820180546196099061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546196359061afae565b80156196805780601f1061965757610100808354040283529160200191619680565b820191905f5260205f20905b81548152906001019060200180831161966357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610bc0578382905f5260205f200180546196ca9061afae565b80601f01602080910402602001604051908101604052809291908181526020018280546196f69061afae565b80156197415780601f1061971857610100808354040283529160200191619741565b820191905f5260205f20905b81548152906001019060200180831161972457829003601f168201915b5050505050815260200190600101906196ad565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b9085906197ae90859060040161b18e565b5f604051808303818588803b1580156197c5575f80fd5b505af11580156197d7573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5634526f757465725f4578616374496e33486f70735f6e6174697665496e00006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063dd9fca1292506064019050610cf5565b60408051808201909152606080825260208201525f8460200151516001619882919061b4d4565b67ffffffffffffffff81111561989a5761989a61afff565b6040519080825280601f01601f1916602001820160405280156198c4576020820181803683370190505b5090505f85602001515160016198da919061b4d4565b67ffffffffffffffff8111156198f2576198f261afff565b60405190808252806020026020018201604052801561992557816020015b60608152602001906001900390816199105790505b5090505f5b60018251619938919061b4e7565b8110156199e257866020015181815181106199555761995561b47b565b602002602001015182828151811061996f5761996f61b47b565b6020026020010181905250865f0151818151811061998f5761998f61b47b565b602001015160f81c60f81b8382815181106199ac576199ac61b47b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060010161992a565b508381600183516199f3919061b4e7565b81518110619a0357619a0361b47b565b60200260200101819052508460f81b8260018351619a21919061b4e7565b81518110619a3157619a3161b47b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053509085526020850152509192915050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff831601619b78576040805173ffffffffffffffffffffffffffffffffffffffff861660208201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91810191909152619b3790600c906060015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905287919061985b565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201525f91810191909152909550619b7190600f90606001619b01565b9450619bfb565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201525f9181019190915260016060820152619bb690600b90608001619b01565b6040805173ffffffffffffffffffffffffffffffffffffffff80871660208301528516918101919091525f6060820152909550619bf890600e90608001619b01565b94505b619c048561a836565b95945050505050565b60408051808201825260608082526020808301829052835191820184525f82850181815283528451818152808301909552929391929083019190619c61565b6060815260200190600190039081619c4c5790505b509052919050565b604080516080810182525f808252606060208301819052928201819052918101919091525f60018451619c9c919061b4e7565b67ffffffffffffffff811115619cb457619cb461afff565b604051908082528060200260200182016040528015619d2c57816020015b6040805160a0810182525f8082526020808301829052928201819052606080830191909152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181619cd25790505b5090505f5b60018551619d3f919061b4e7565b811015619dfc576040518060a0016040528086836001619d5f919061b4d4565b81518110619d6f57619d6f61b47b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff168152602001603c60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250828281518110619de957619de961b47b565b6020908102919091010152600101619d31565b50835f81518110619e0f57619e0f61b47b565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1683528201526fffffffffffffffffffffffffffffffff90911660408201525f6060820152919050565b604080516080810182525f808252606060208301819052928201819052918101919091525f60018451619e8d919061b4e7565b67ffffffffffffffff811115619ea557619ea561afff565b604051908082528060200260200182016040528015619f1d57816020015b6040805160a0810182525f8082526020808301829052928201819052606080830191909152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181619ec35790505b5090505f60018551619f2f919061b4e7565b90505b801561a005576040518060a0016040528086600184619f51919061b4e7565b81518110619f6157619f6161b47b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff168152602001603c60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525082600183619fd7919061b4e7565b81518110619fe757619fe761b47b565b60200260200101819052508080619ffd9061b4fa565b915050619f32565b50836001855161a015919061b4e7565b8151811061a0255761a02561b47b565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1683528201526fffffffffffffffffffffffffffffffff91821660408201526060810191909152919050565b3060405161a07f9061aa61565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801561a0b5573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f61a11b8370010000000000000000000000000000000061a868565b90505f5b8360ff1681101561a2085781818151811061a13c5761a13c61b47b565b60209081029190910101516045546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015291169063095ea7b3906044016020604051808303815f875af115801561a1db573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a1ff919061b52e565b5060010161a11f565b5092915050565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a0810182525f815273ffffffffffffffffffffffffffffffffffffffff8481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe9061a2c99084906c010000000000000000000000009060040161b54d565b6020604051808303815f875af115801561a2e5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a309919061b5f3565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af115801561a39e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a3c2919061b52e565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac62000008183018190525f606083015291517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692635a6bcfda929161a4669186919060040161b613565b60206040518083038185885af115801561a482573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061a208919061b1a0565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091528273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111561a509579192915b506040805160a08101825273ffffffffffffffffffffffffffffffffffffffff80861682528481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe9061a59b9084906c010000000000000000000000009060040161b54d565b6020604051808303815f875af115801561a5b7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a5db919061b5f3565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529086169163095ea7b391016020604051808303815f875af115801561a670573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a694919061b52e565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af115801561a729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a74d919061b52e565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac6200000818301525f606082015290517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda9161a7ee9185919060040161b613565b6020604051808303815f875af115801561a80a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061a82e919061b1a0565b509392505050565b6060815f0151826020015160405160200161a85292919061b705565b6040516020818303038152906040529050919050565b60608260ff1667ffffffffffffffff81111561a8865761a88661afff565b60405190808252806020026020018201604052801561a8af578160200160208202803683370190505b5090505f5b8360ff168160ff16101561a20857601260405161a8d09061aa6f565b61a8da919061b798565b604051809103905ff08015801561a8f3573d5f803e3d5ffd5b50828260ff168151811061a9095761a90961b47b565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160ff168151811061a9585761a95861b47b565b60209081029190910101516040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044015f604051808303815f87803b15801561a9cf575f80fd5b505af115801561a9e1573d5f803e3d5ffd5b50506001909201915061a8b49050565b828054828255905f5260205f2090810192821561aa35579160200282015b8281111561aa35578251829061aa25908261b077565b509160200191906001019061aa0f565b5061aa4192915061aa7d565b5090565b6123da806200b82383390190565b611c3d806200dbfd83390190565b616a05806200f83a83390190565b611168806201623f83390190565b8082111561aa41575f61aa90828261aa99565b5060010161aa7d565b50805461aaa59061afae565b5f825580601f1061aab4575050565b601f0160209004905f5260205f209081019061aad0919061aad3565b50565b5b8082111561aa41575f815560010161aad4565b602080825282518282018190525f918401906040840190835b8181101561ab3457835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161ab00565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561ac91577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b8181101561ac77577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261ac6184865161ab3f565b602095860195909450929092019160010161ac27565b50919750505060209485019492909201915060010161abb1565b50929695505050505050565b5f8151808452602084019350602083015f5b8281101561acef5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161acaf565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561ac91577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261ad63604088018261ab3f565b905060208201519150868103602088015261ad7e818361ac9d565b96505050602093840193919091019060010161ad1f565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561ac91577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261adf585835161ab3f565b9450602093840193919091019060010161adbb565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561ac91577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff8151168652602081015190506040602087015261ae96604087018261ac9d565b955050602093840193919091019060010161ae30565b61af2c82825173ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b6020810151151560a08301526fffffffffffffffffffffffffffffffff60408201511660c08301526fffffffffffffffffffffffffffffffff60608201511660e08301525f608082015161012061010085015261af8d61012085018261ab3f565b949350505050565b602081525f61afa7602083018461aeac565b9392505050565b600181811c9082168061afc257607f821691505b60208210810361aff9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f821115610d7557805f5260205f20601f840160051c8101602085101561b0515750805b601f840160051c820191505b8181101561b070575f815560010161b05d565b5050505050565b815167ffffffffffffffff81111561b0915761b09161afff565b61b0a58161b09f845461afae565b8461b02c565b6020601f82116001811461b0f6575f831561b0c05750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17845561b070565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b8281101561b143578785015182556020948501946001909201910161b123565b508482101561b17f57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b602081525f61afa7602083018461ab3f565b5f6020828403121561b1b0575f80fd5b5051919050565b5f6080830173ffffffffffffffffffffffffffffffffffffffff835116845260208301516080602086015281815180845260a08701915060a08160051b88010193506020830192505f5b8181101561b2b9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888603018352835173ffffffffffffffffffffffffffffffffffffffff815116865262ffffff6020820151166020870152604081015160020b604087015273ffffffffffffffffffffffffffffffffffffffff60608201511660608701526080810151905060a0608087015261b2a360a087018261ab3f565b955050602093840193929092019160010161b201565b50505050604083015161b2e060408601826fffffffffffffffffffffffffffffffff169052565b50606083015161a82e60608601826fffffffffffffffffffffffffffffffff169052565b602081525f61afa7602083018461b1b7565b5f6020828403121561b326575f80fd5b815167ffffffffffffffff81111561b33c575f80fd5b8201601f8101841361b34c575f80fd5b805167ffffffffffffffff81111561b3665761b36661afff565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561b3d25761b3d261afff565b60405281815282820160200186101561b3e9575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff828116828216039081111561b4755761b47561b41c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff818116838216019081111561b4755761b47561b41c565b8082018082111561b4755761b47561b41c565b8181038181111561b4755761b47561b41c565b5f8161b5085761b50861b41c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f6020828403121561b53e575f80fd5b8151801515811461afa7575f80fd5b60c0810161b5d0828573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660a08301529392505050565b5f6020828403121561b603575f80fd5b81518060020b811461afa7575f80fd5b61b692818473ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b815160020b60a0820152602082015160020b60c0820152604082015160e0820152606082015161010082015261014061012082015260026101408201527f30780000000000000000000000000000000000000000000000000000000000006101608201525f610180820190509392505050565b604081525f61b717604083018561ab3f565b828103602084015280845180835260208301915060208160051b840101602087015f5b8381101561b78a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301855261b77483835161ab3f565b602095860195909350919091019060010161b73a565b509098975050505050505050565b606081525f61b7d460608301600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b828103602084015261b81081600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b91505060ff831660408301529291505056fe60a0604052348015600e575f80fd5b506040516123da3803806123da833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161230f6100cb5f395f8181610128015281816101f30152818161035901528181610f0201528181610fde01528181611052015281816110ed0152818161119501528181611270015281816116230152818161187401526118b6015261230f5ff3fe60806040526004361061005b575f3560e01c8063a1bfb5ff11610041578063a1bfb5ff146100b0578063d737d0c7146100c3578063dc4c90d314610117575f80fd5b80634f84885b1461006657806391dd73461461007b575f80fd5b3661006257005b5f80fd5b610079610074366004611c6b565b61014a565b005b348015610086575f80fd5b5061009a610095366004611c6b565b6101d9565b6040516100a79190611cd9565b60405180910390f35b6100796100be366004611c6b565b61025d565b3480156100ce575f80fd5b507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a7565b348015610122575f80fd5b506100f27f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156101b9576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101c2336102f6565b6101cc828261031c565b6101d55f6102f6565b5050565b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461024a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61025483836103f5565b90505b92915050565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156102cc576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102d5336102f6565b6102df828261031c565b4780156102f0576102f03382610432565b506101d55f5b807f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d50565b6040517f48c8949100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906348c89491906103909085908590600401611d73565b5f604051808303815f875af11580156103ab573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103f09190810190611e0a565b505050565b6060365f365f61040587876104a9565b935093509350935061041984848484610551565b505060408051602081019091525f815295945050505050565b5f805f805f85875af19050806103f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064015b60405180910390fd5b365f365f604086351860608701945063ffffffff6040880135169350606063ffffffe0601f860116018060208901351882179150808801905063ffffffff8135169250602081019350508160051b805f5b8281101561052957858101358281189490941793860135601f0163ffffffe016909101602090810191016104fa565b508085018989011083171561054557633b99b53d5f526004601cfd5b50505092959194509250565b8281811461058b576040517faaad13f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156105ea575f8686838181106105a8576105a8611ebc565b919091013560f81c91506105e19050818686858181106105ca576105ca611ebc565b90506020028101906105dc9190611ee9565b6105f2565b5060010161058d565b505050505050565b600b83101561067e576007830361061f573661060e8383610884565b9050610619816108a3565b50505050565b6006830361063d57366106328383610a41565b905061061981610a59565b6009830361065b57366106508383610884565b905061061981610baf565b60088303610679573661066e8383610a41565b905061061981610d64565b61084f565b600c8303610712575f806106928484610ebe565b915091505f6106a083610ee6565b9050818111156106e6576040517f12bacdd300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016104a0565b6105ea837f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c83610f8d565b600f83036107a6575f806107268484610ebe565b915091505f61073483611179565b90508181101561077a576040517f8b063d7300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016104a0565b6105ea837f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c83611210565b600b83036107dd575f805f6107bb85856112cc565b9250925092506105ea836107ce836112fa565b6107d8858761132d565b610f8d565b600e8303610814575f805f6107f285856112cc565b9250925092506105ea8361080584611390565b61080f8487611442565b611210565b6010830361084f575f805f61082985856112cc565b9250925092506105ea8361083c84611390565b61080f8461084988611179565b90611451565b6040517f5cda29d7000000000000000000000000000000000000000000000000000000008152600481018490526024016104a0565b3660a082101561089b57633b99b53d5f526004601cfd5b505080350190565b5f6108b16020830183611f51565b91505f9050806108c46020850185611fd9565b90505f6108d76060860160408701611ff4565b90506fffffffffffffffffffffffffffffffff8116610904576109016108fc83611179565b6114a5565b90505b365f5b858110156109a65761091c6020880188611f51565b8281811061092c5761092c611ebc565b905060200281019061093e9190612023565b91505f8061094c84876114e8565b909250905061098861098083836fffffffffffffffffffffffffffffffff89165f0361097b60808a018a611ee9565b61161f565b600f0b611748565b965086945061099a6020850185611fd9565b95505050600101610907565b506109b76080870160608801611ff4565b6fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1610156105ea576109f26080870160608801611ff4565b6040517f8b063d730000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290851660248201526044016104a0565b3661014082101561089b57633b99b53d5f526004601cfd5b5f610a6a60e0830160c08401611ff4565b90506fffffffffffffffffffffffffffffffff8116610ac257610abf6108fc610a9960c0850160a0860161205f565b610ab257610aad6040850160208601611fd9565b611179565b610aad6020850185611fd9565b90505b5f610b11610980610ad8368690038601866120a1565b610ae860c0870160a0880161205f565b610b036fffffffffffffffffffffffffffffffff8716612162565b61097b610100890189611ee9565b9050610b24610100840160e08501611ff4565b6fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610156103f057610b60610100840160e08501611ff4565b6040517f8b063d730000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290821660248201526044016104a0565b5f610bbd6020830183611f51565b91505f905080610bd36060850160408601611ff4565b90505f610be36020860186611fd9565b9050366fffffffffffffffffffffffffffffffff8316610c0c57610c096108fc83610ee6565b92505b845b8015610cc957610c216020880188611f51565b60018303818110610c3457610c34611ebc565b9050602002810190610c469190612023565b91505f80610c5484866114e8565b9092509050610c8c610c828383156fffffffffffffffffffffffffffffffff8a1661097b60808a018a611ee9565b600f0b5f036114a5565b9650869550610c9e6020850185611fd9565b945050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610c0e565b50610cda6080870160608801611ff4565b6fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611156105ea57610d156080870160608801611ff4565b6040517f12bacdd30000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290851660248201526044016104a0565b5f610d7560e0830160c08401611ff4565b90506fffffffffffffffffffffffffffffffff8116610dcd57610dca6108fc610da460c0850160a0860161205f565b610dba57610db56020850185611fd9565b610ee6565b610db56040850160208601611fd9565b90505b5f610e20610e14610de3368690038601866120a1565b610df360c0870160a0880161205f565b6fffffffffffffffffffffffffffffffff861661097b610100890189611ee9565b600f0b6108fc90612162565b9050610e33610100840160e08501611ff4565b6fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1611156103f057610e6f610100840160e08501611ff4565b6040517f12bacdd30000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290821660248201526044016104a0565b5f806040831015610ed657633b99b53d5f526004601cfd5b5050813592602090920135919050565b5f80610f2973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561177d565b90505f811315610f7d576040517f3351b26000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016104a0565b610f8681612162565b9392505050565b805f03610f9957505050565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b15801561101f575f80fd5b505af1158015611031573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83166110e0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156110bb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906106199190612198565b6110eb83838361183b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611155573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106199190612198565b5f806111bc73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561177d565b90505f811215610257576040517f4c085bf100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016104a0565b805f0361121c57505050565b6040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b1580156112b1575f80fd5b505af11580156112c3573d5f803e3d5ffd5b50505050505050565b5f805f60608410156112e557633b99b53d5f526004601cfd5b50508235936020840135936040013592509050565b5f816113065730610257565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c610257565b5f7f8000000000000000000000000000000000000000000000000000000000000000830361137b576113748273ffffffffffffffffffffffffffffffffffffffff166118db565b9050610257565b826113895761137482610ee6565b5081610257565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff8316016113f5577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c610257565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff831601611439575030919050565b5090565b919050565b5f826113895761137482611179565b5f61271082111561148e576040517fdeaa01e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061149b83856121af565b61025491906121c6565b806fffffffffffffffffffffffffffffffff8116811461143d5761143d7f93dafdf10000000000000000000000000000000000000000000000000000000061198a565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091525f806115216020860186611fd9565b90505f8073ffffffffffffffffffffffffffffffffffffffff8084169087161061154c57828661154f565b85835b909250905073ffffffffffffffffffffffffffffffffffffffff8087169083161493506040518060a001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020018860200160208101906115c891906121fe565b62ffffff1681526020016115e260608a0160408b01612217565b60020b81526020016115fa60808a0160608b01611fd9565b73ffffffffffffffffffffffffffffffffffffffff1681525094505050509250929050565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f3cd914c8860405180606001604052808a151581526020018981526020018a6116965773fffd8963efd1fc6a506488495d951d5263988d2561169d565b6401000276a45b73ffffffffffffffffffffffffffffffffffffffff1681525087876040518563ffffffff1660e01b81526004016116d79493929190612230565b6020604051808303815f875af11580156116f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117179190612198565b90508515155f8612146117335761172e8160801d90565b61173d565b61173d81600f0b90565b979650505050505050565b5f8082600f0b1215611439576114397f93dafdf10000000000000000000000000000000000000000000000000000000061198a565b5f8073ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b81526004016117f391815260200190565b602060405180830381865afa15801561180e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118329190612198565b95945050505050565b3073ffffffffffffffffffffffffffffffffffffffff831603611899576103f073ffffffffffffffffffffffffffffffffffffffff84167f000000000000000000000000000000000000000000000000000000000000000083611992565b6103f073ffffffffffffffffffffffffffffffffffffffff8416837f000000000000000000000000000000000000000000000000000000000000000084611aaf565b5f73ffffffffffffffffffffffffffffffffffffffff82166118fe575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611966573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102579190612198565b805f5260045ffd5b5f73ffffffffffffffffffffffffffffffffffffffff84166119ed575f805f8085875af19050806119e8576119e8835f7ff4b3b1bc00000000000000000000000000000000000000000000000000000000611b9d565b610619565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061061957610619847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e400000000000000000000000000000000000000000000000000000000611b9d565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016104a0565b5050505050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b5f8060208385031215611c7c575f80fd5b823567ffffffffffffffff811115611c92575f80fd5b8301601f81018513611ca2575f80fd5b803567ffffffffffffffff811115611cb8575f80fd5b856020828401011115611cc9575f80fd5b6020919091019590945092505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611d86602083018486611d2c565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e0257611e02611d8e565b604052919050565b5f60208284031215611e1a575f80fd5b815167ffffffffffffffff811115611e30575f80fd5b8201601f81018413611e40575f80fd5b805167ffffffffffffffff811115611e5a57611e5a611d8e565b611e8b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dbb565b818152856020838501011115611e9f575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f1c575f80fd5b83018035915067ffffffffffffffff821115611f36575f80fd5b602001915036819003821315611f4a575f80fd5b9250929050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f84575f80fd5b83018035915067ffffffffffffffff821115611f9e575f80fd5b6020019150600581901b3603821315611f4a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611fd6575f80fd5b50565b5f60208284031215611fe9575f80fd5b8135610f8681611fb5565b5f60208284031215612004575f80fd5b81356fffffffffffffffffffffffffffffffff81168114610f86575f80fd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612055575f80fd5b9190910192915050565b5f6020828403121561206f575f80fd5b81358015158114610f86575f80fd5b803562ffffff8116811461143d575f80fd5b8035600281900b811461143d575f80fd5b5f60a08284031280156120b2575f80fd5b5060405160a0810167ffffffffffffffff811182821017156120d6576120d6611d8e565b60405282356120e481611fb5565b815260208301356120f481611fb5565b60208201526121056040840161207e565b604082015261211660608401612090565b6060820152608083013561212981611fb5565b60808201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7f8000000000000000000000000000000000000000000000000000000000000000820361219257612192612135565b505f0390565b5f602082840312156121a8575f80fd5b5051919050565b808202811582820484141761025757610257612135565b5f826121f9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f6020828403121561220e575f80fd5b6102548261207e565b5f60208284031215612227575f80fd5b61025482612090565b73ffffffffffffffffffffffffffffffffffffffff855116815273ffffffffffffffffffffffffffffffffffffffff602086015116602082015262ffffff6040860151166040820152606085015160020b606082015273ffffffffffffffffffffffffffffffffffffffff60808601511660808201526122df60a08201858051151582526020808201519083015260409081015173ffffffffffffffffffffffffffffffffffffffff16910152565b6101206101008201525f6122f861012083018486611d2c565b969550505050505056fea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051611c3d380380611c3d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b608051611b736100ca5f395f81816079015281816101020152818161027f015281816102f301528181610324015281816104090152818161058d015281816105f001528181610679015281816106d7015281816108e401526109240152611b735ff3fe60806040526004361061003e575f3560e01c80630a5b11e414610042578063481c6a75146100685780635a6bcfda146100c057806391dd7346146100d3575b5f80fd5b6100556100503660046114c3565b6100ff565b6040519081526020015b60405180910390f35b348015610073575f80fd5b5061009b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161005f565b6100556100ce36600461154a565b61024f565b3480156100de575f80fd5b506100f26100ed3660046115a8565b610265565b60405161005f9190611662565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c894916040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018615158152602001851515815250604051602001610193919061167b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016101be9190611662565b5f604051808303815f875af11580156101d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261021e919081019061179a565b806020019051810190610231919061180f565b9050478015610245576102455f3383610729565b5095945050505050565b5f61025d8484845f806100ff565b949350505050565b60603373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a8575f80fd5b5f6102b583850185611826565b90505f61031d6102ca836020015160a0902090565b60408401518051602082015160609092015173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016939230929161084c565b505090505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635a6bcfda8460200151856040015186606001516040518463ffffffff1660e01b815260040161038b939291906118ef565b60408051808303815f875af11580156103a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ca91906119b3565b5090505f6104336103e0856020015160a0902090565b60408601518051602082015160609092015173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016939230929161084c565b505090505f61044d85602001515f0151865f0151306108a3565b925050505f610468866020015160200151875f0151306108a3565b9250505082600f0b86604001516040015186600f0b6104879190611a02565b146104f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f7272656374000000000000604482015260640160405180910390fd5b5f866040015160400151121561053a575f82138061050f57505f81135b61051b5761051b611a29565b5f82128061052857505f81125b1561053557610535611a29565b61057d565b5f866040015160400151131561057d575f82128061055757505f81125b61056357610563611a29565b5f82138061057057505f81135b1561057d5761057d611a29565b5f8212156105e05785516105e0907f0000000000000000000000000000000000000000000000000000000000000000906105b685611a56565b60808a015160208b01515173ffffffffffffffffffffffffffffffffffffffff1693929190610956565b5f811215610645578551610645907f00000000000000000000000000000000000000000000000000000000000000009061061984611a56565b60808a01516020808c0151015173ffffffffffffffffffffffffffffffffffffffff1693929190610956565b5f8213156106a157855160a08701516020880151516106a19273ffffffffffffffffffffffffffffffffffffffff909116917f000000000000000000000000000000000000000000000000000000000000000091908690610d14565b5f8113156106ff57855160a087015160208089015101516106ff9273ffffffffffffffffffffffffffffffffffffffff909116917f000000000000000000000000000000000000000000000000000000000000000091908590610d14565b60408051602081018690520160405160208183030381529060405296505050505050505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8416610784575f805f8085875af190508061077f5761077f835f7ff4b3b1bc00000000000000000000000000000000000000000000000000000000610e58565b610846565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061084657610846847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e400000000000000000000000000000000000000000000000000000000610e58565b50505050565b60408051602681018390526006810184905260038101859052858152603a600c8201205f9282018390526020820183905290829052819081906108908a8a83610f26565b919c909b50909950975050505050505050565b5f80806108c673ffffffffffffffffffffffffffffffffffffffff87168661100d565b925061090873ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000061100d565b915061094b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685886110dc565b905093509350939050565b8015610a37578373ffffffffffffffffffffffffffffffffffffffff1663f5298aca846109ac8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610a1c575f80fd5b505af1158015610a2e573d5f803e3d5ffd5b50505050610d0d565b73ffffffffffffffffffffffffffffffffffffffff8516610ac8578373ffffffffffffffffffffffffffffffffffffffff166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af1158015610a9d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ac2919061180f565b50610d0d565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285169063a5841194906024015f604051808303815f87803b158015610b2e575f80fd5b505af1158015610b40573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83163014610c05576040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af1158015610bdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bff9190611a8c565b50610c9d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610c77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9b9190611a8c565b505b8373ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0b919061180f565b505b5050505050565b80610d7c576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152848116602483015260448201849052851690630b0d9c0990606401610a05565b8373ffffffffffffffffffffffffffffffffffffffff1663156e29f684610dcc8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604481018590526064015f604051808303815f87803b158015610e3b575f80fd5b505af1158015610e4d573d5f803e3d5ffd5b505050505050505050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b5f805f80610f34868661119a565b6040517f35fd631a00000000000000000000000000000000000000000000000000000000815260048101829052600360248201529091505f9073ffffffffffffffffffffffffffffffffffffffff8916906335fd631a906044015f60405180830381865afa158015610fa8573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fed9190810190611aa7565b60208101516040820151606090920151909a919950975095505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8316611047575073ffffffffffffffffffffffffffffffffffffffff811631610723565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa1580156110b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d5919061180f565b9050610723565b5f8073ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b815260040161115291815260200190565b602060405180830381865afa15801561116d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611191919061180f565b95945050505050565b5f806111a5846111ea565b90505f6111b3600683611b53565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b6040515f90611209908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561127657611276611226565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156112c3576112c3611226565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112ec575f80fd5b50565b8035600281900b8114611300575f80fd5b919050565b5f60a08284031215611315575f80fd5b60405160a0810167ffffffffffffffff8111828210171561133857611338611226565b6040529050808235611349816112cb565b81526020830135611359816112cb565b6020820152604083013562ffffff81168114611373575f80fd5b6040820152611384606084016112ef565b60608201526080830135611397816112cb565b6080919091015292915050565b5f608082840312156113b4575f80fd5b6040516080810167ffffffffffffffff811182821017156113d7576113d7611226565b6040529050806113e6836112ef565b81526113f4602084016112ef565b602082015260408301356040820152606083013560608201525092915050565b5f67ffffffffffffffff82111561142d5761142d611226565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611468575f80fd5b813561147b61147682611414565b61127c565b81815284602083860101111561148f575f80fd5b816020850160208301375f918101602001919091529392505050565b80151581146112ec575f80fd5b8035611300816114ab565b5f805f805f61018086880312156114d8575f80fd5b6114e28787611305565b94506114f18760a088016113a4565b935061012086013567ffffffffffffffff81111561150d575f80fd5b61151988828901611459565b93505061014086013561152b816114ab565b915061016086013561153c816114ab565b809150509295509295909350565b5f805f610140848603121561155d575f80fd5b6115678585611305565b92506115768560a086016113a4565b915061012084013567ffffffffffffffff811115611592575f80fd5b61159e86828701611459565b9150509250925092565b5f80602083850312156115b9575f80fd5b823567ffffffffffffffff8111156115cf575f80fd5b8301601f810185136115df575f80fd5b803567ffffffffffffffff8111156115f5575f80fd5b856020828401011115611606575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6116746020830184611616565b9392505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151611724604084018273ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b506040838101518051600290810b60e08601526020820151900b610100850152908101516101208401526060908101516101408401528301516101a06101608401526117746101c0840182611616565b90506080840151151561018084015260a084015115156101a08401528091505092915050565b5f602082840312156117aa575f80fd5b815167ffffffffffffffff8111156117c0575f80fd5b8201601f810184136117d0575f80fd5b80516117de61147682611414565b8181528560208385010111156117f2575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561181f575f80fd5b5051919050565b5f60208284031215611836575f80fd5b813567ffffffffffffffff81111561184c575f80fd5b82016101a0818503121561185e575f80fd5b611866611253565b8135611871816112cb565b81526118808560208401611305565b60208201526118928560c084016113a4565b604082015261014082013567ffffffffffffffff8111156118b1575f80fd5b6118bd86828501611459565b6060830152506118d061016083016114b8565b60808201526118e261018083016114b8565b60a0820152949350505050565b61196e818573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8251600290810b60a08301526020840151900b60c0820152604083015160e082015260608301516101008201526101406101208201525f611191610140830184611616565b5f80604083850312156119c4575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018281125f831280158216821582161715611a2157611a216119d5565b505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b5f7f80000000000000000000000000000000000000000000000000000000000000008203611a8657611a866119d5565b505f0390565b5f60208284031215611a9c575f80fd5b8151611674816114ab565b5f60208284031215611ab7575f80fd5b815167ffffffffffffffff811115611acd575f80fd5b8201601f81018413611add575f80fd5b805167ffffffffffffffff811115611af757611af7611226565b8060051b611b076020820161127c565b91825260208184018101929081019087841115611b22575f80fd5b6020850194505b83851015611b4857845180835260209586019590935090910190611b29565b979650505050505050565b80820180821115610723576107236119d556fea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051616a05380380616a05833981016040819052602b91607f565b5f80546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050306080525060aa565b5f60208284031215608e575f80fd5b81516001600160a01b038116811460a3575f80fd5b9392505050565b6080516169436100c25f395f61205f01526169435ff3fe6080604052600436106101f4575f3560e01c80635a6bcfda11610117578063a5841194116100ac578063f135baaa1161007c578063f3cd914c11610062578063f3cd914c14610676578063f5298aca14610695578063fe99049a146106b4575f80fd5b8063f135baaa14610638578063f2fde38b14610657575f80fd5b8063a584119414610595578063b6363cf2146105b4578063dbd035ff146105ed578063f02de3b21461060c575f80fd5b80638161b874116100e75780638161b874146104dc5780638da5cb5b146104fb57806397e8cd4e1461054b5780639bf6645f14610576575f80fd5b80635a6bcfda146104385780636276cbbe1461046c5780637e87ce7d1461049e57806380f0b44c146104bd575f80fd5b80632d7713891161018d57806348c894911161015d57806348c894911461039257806352759651146103be578063558a7297146103dd578063598af9e7146103fc575f80fd5b80632d7713891461031557806335fd631a146103345780633dd45adb14610360578063426a849314610373575f80fd5b806311da60b4116101c857806311da60b4146102b0578063156e29f6146102b85780631e2eaeaf146102d7578063234266d7146102f6575f80fd5b8062fdd58e146101f857806301ffc9a714610241578063095bcdb6146102705780630b0d9c091461028f575b5f80fd5b348015610203575f80fd5b5061022e610212366004615908565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561024c575f80fd5b5061026061025b366004615932565b6106d3565b6040519015158152602001610238565b34801561027b575f80fd5b5061026061028a366004615971565b61076b565b34801561029a575f80fd5b506102ae6102a93660046159a3565b61083f565b005b61022e6108c9565b3480156102c3575f80fd5b506102ae6102d2366004615971565b610927565b3480156102e2575f80fd5b5061022e6102f13660046159e1565b6109ab565b348015610301575f80fd5b5061022e610310366004615b9b565b6109b5565b348015610320575f80fd5b506102ae61032f366004615c00565b610ad9565b34801561033f575f80fd5b5061035361034e366004615c1b565b610bcc565b6040516102389190615c3b565b61022e61036e366004615c00565b610c09565b34801561037e575f80fd5b5061026061038d366004615971565b610c67565b34801561039d575f80fd5b506103b16103ac366004615c7d565b610cd8565b6040516102389190615cbc565b3480156103c9575f80fd5b506102ae6103d8366004615d0f565b610e2a565b3480156103e8575f80fd5b506102606103f7366004615d50565b610ecc565b348015610407575f80fd5b5061022e6104163660046159a3565b600560209081525f938452604080852082529284528284209052825290205481565b348015610443575f80fd5b50610457610452366004615d7a565b610f66565b60408051928352602083019190915201610238565b348015610477575f80fd5b5061048b610486366004615e3b565b611165565b60405160029190910b8152602001610238565b3480156104a9575f80fd5b506102ae6104b8366004615d0f565b6113fc565b3480156104c8575f80fd5b506102ae6104d7366004615908565b6114ed565b3480156104e7575f80fd5b5061022e6104f63660046159a3565b6115ac565b348015610506575f80fd5b505f546105269073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610238565b348015610556575f80fd5b5061022e610565366004615c00565b60016020525f908152604090205481565b348015610581575f80fd5b50610353610590366004615e71565b611714565b3480156105a0575f80fd5b506102ae6105af366004615c00565b61174d565b3480156105bf575f80fd5b506102606105ce366004615ee2565b600360209081525f928352604080842090915290825290205460ff1681565b3480156105f8575f80fd5b50610353610607366004615e71565b6117a3565b348015610617575f80fd5b506002546105269073ffffffffffffffffffffffffffffffffffffffff1681565b348015610643575f80fd5b5061022e6106523660046159e1565b6117da565b348015610662575f80fd5b506102ae610671366004615c00565b6117e4565b348015610681575f80fd5b5061022e610690366004615f0e565b6118d3565b3480156106a0575f80fd5b506102ae6106af366004615971565b611a85565b3480156106bf575f80fd5b506102606106ce366004615fcc565b611b09565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061076557507f0f632fb3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061079690849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f908152600460209081526040808320868452909152812080548492906107da90849061604f565b9091555050604080513380825260208201859052859273ffffffffffffffffffffffffffffffffffffffff8816927f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a45060015b9392505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61088e5761088e7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b6108a38361089b83611cfd565b5f0333611d42565b6108c473ffffffffffffffffffffffffffffffffffffffff84168383611da2565b505050565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610919576109197f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61092233611ebf565b905090565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610976576109767f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b816109848161089b84611cfd565b6109a58473ffffffffffffffffffffffffffffffffffffffff831684611fa8565b50505050565b5f81545f5260205ff35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610a0557610a057f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610a0d612047565b60a086205f818152600660205260409020610a27816120af565b6080880151610a509073ffffffffffffffffffffffffffffffffffffffff1689898989896120f6565b610a5b8188886121d9565b9250610a688884336122d3565b6040805188815260208101889052339184917f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb910160405180910390a36080880151610ace9073ffffffffffffffffffffffffffffffffffffffff1689898989896122fb565b505095945050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b85548352602083019250600186019550808310610bec5781810382f35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610c5957610c597f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61076582611ebf565b919050565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a79061082c9087815260200190565b60607fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c15610d2a57610d2a7f5090d6c600000000000000000000000000000000000000000000000000000000611cf5565b610d326123d3565b6040517f91dd734600000000000000000000000000000000000000000000000000000000815233906391dd734690610d7090869086906004016160a9565b5f604051808303815f875af1158015610d8b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dd091908101906160bc565b90507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c15610e2257610e227f5212cba100000000000000000000000000000000000000000000000000000000611cf5565b6107656123f9565b604082015162ffffff1662800000141580610e755750816080015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ea357610ea37f30d2164100000000000000000000000000000000000000000000000000000000611cf5565b610eb18162ffffff1661241e565b60a082205f8181526006602052604090206108c4908361245d565b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f807fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610fb757610fb77f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610fbf612047565b60a086205f818152600660205260409020610fd9816120af565b60808801516110019073ffffffffffffffffffffffffffffffffffffffff16898989896124b6565b5f6110756040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018a5f015160020b81526020018a6020015160020b81526020016110528b60400151612677565b600f0b81526060808d015160020b60208301528b015160409091015283906126ac565b945090506110838185612af1565b945050503373ffffffffffffffffffffffffffffffffffffffff16817ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec885f015189602001518a604001518b606001516040516111019493929190600294850b81529290930b60208301526040820152606081019190915260800190565b60405180910390a360808701515f906111359073ffffffffffffffffffffffffffffffffffffffff16898987878b8b612b24565b9094509050801561114f5761114f88828a608001516122d3565b61115a8885336122d3565b505094509492505050565b5f61116e612047565b6060830151617fff60029190910b13156111b25760608301516111b2907fb70024f80000000000000000000000000000000000000000000000000000000090612cfb565b600160020b836060015160020b12156111f55760608301516111f5907fe9e905880000000000000000000000000000000000000000000000000000000090612cfb565b8251602084015173ffffffffffffffffffffffffffffffffffffffff90811691161061124d578251602084015161124d917f6e6c98300000000000000000000000000000000000000000000000000000000091612d0a565b61127e8360400151846080015173ffffffffffffffffffffffffffffffffffffffff16612d4d90919063ffffffff16565b6112b25760808301516112b2907fe65af6a00000000000000000000000000000000000000000000000000000000090612e1b565b5f6112c5846040015162ffffff16612e3d565b60808501519091506112ee9073ffffffffffffffffffffffffffffffffffffffff168585612e62565b60a084205f81815260066020526040902061130a908584612f35565b9250846020015173ffffffffffffffffffffffffffffffffffffffff16855f015173ffffffffffffffffffffffffffffffffffffffff16827fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438886040015189606001518a608001518a8a6040516113c595949392919062ffffff959095168552600293840b602086015273ffffffffffffffffffffffffffffffffffffffff928316604086015291166060840152900b608082015260a00190565b60405180910390a460808501516113f49073ffffffffffffffffffffffffffffffffffffffff16868686612fed565b505092915050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611444576114447f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b6103e9610fff821610623e900062fff0008316101661148c5761148c7fa7abe2f70000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b60a082206114ae826114a8835f90815260066020526040902090565b906130c2565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61153c5761153c7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b335f90815273ffffffffffffffffffffffffffffffffffffffff8316602052604081205c9061156a83611cfd565b90508181600f0b1461159f5761159f7fbda73abf00000000000000000000000000000000000000000000000000000000611cf5565b6109a584825f0333611d42565b6002545f9073ffffffffffffffffffffffffffffffffffffffff1633146115f6576115f67f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff831615158015611654575073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c8116908416145b15611682576116827fc79e594800000000000000000000000000000000000000000000000000000000611cf5565b811561168e57816116b4565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600160205260409020545b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160205260408120805492935083929091906116ed90849061603c565b90915550610838905073ffffffffffffffffffffffffffffffffffffffff84168583611da2565b606060405180602082528360208301526040820191508360051b8201855b80355c845260209384019301818410611732575b5081810382f35b73ffffffffffffffffffffffffffffffffffffffff811661177357611770613116565b50565b5f6117938273ffffffffffffffffffffffffffffffffffffffff1661313b565b905061179f82826131ea565b5050565b606060405180602082528360208301526040820191508360051b8201855b80355484526020938401930181841015611746576117c1565b5f815c5f5260205ff35b5f5473ffffffffffffffffffffffffffffffffffffffff163314611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610b55565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611923576119237f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61192b612047565b83602001515f0361195f5761195f7fbe8b850700000000000000000000000000000000000000000000000000000000611cf5565b60a085205f818152600660205260409020611979816120af565b60808701515f90819081906119a79073ffffffffffffffffffffffffffffffffffffffff168b8b8b8b61324a565b809350819550829450505050611a2384866040518060a001604052808681526020018e6060015160020b81526020018d5f0151151581526020018d6040015173ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff168152508c5f0151611a1c578d602001516133f1565b8d516133f1565b60808b01519096505f9250611a54915073ffffffffffffffffffffffffffffffffffffffff168a8a888b8b886134f2565b90955090508015611a6e57611a6e89828b608001516122d3565b611a798986336122d3565b50505050949350505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611ad457611ad47f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b81611ae881611ae284611cfd565b33611d42565b6109a58473ffffffffffffffffffffffffffffffffffffffff83168461368b565b5f3373ffffffffffffffffffffffffffffffffffffffff861614801590611b60575073ffffffffffffffffffffffffffffffffffffffff85165f90815260036020908152604080832033845290915290205460ff16155b15611c095773ffffffffffffffffffffffffffffffffffffffff85165f90815260056020908152604080832033845282528083208684529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c0757611bce838261603c565b73ffffffffffffffffffffffffffffffffffffffff87165f90815260056020908152604080832033845282528083208884529091529020555b505b73ffffffffffffffffffffffffffffffffffffffff85165f90815260046020908152604080832086845290915281208054849290611c4890849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f90815260046020908152604080832086845290915281208054849290611c8c90849061604f565b90915550506040805133815260208101849052849173ffffffffffffffffffffffffffffffffffffffff80881692908916917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6f800000000000000000000000000000008210611d3e57611d3e7f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5090565b81600f0b5f03611d5157505050565b5f80611d7473ffffffffffffffffffffffffffffffffffffffff8616848661379c565b91509150805f03611d8c57611d876137e2565b611d9b565b815f03611d9b57611d9b613830565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416611dfd575f805f8085875af1905080611df857611df8835f7ff4b3b1bc0000000000000000000000000000000000000000000000000000000061387e565b6109a5565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806109a5576109a5847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e40000000000000000000000000000000000000000000000000000000061387e565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c73ffffffffffffffffffffffffffffffffffffffff8116611f0557349150611f8f565b3415611f3457611f347fb0ec849e00000000000000000000000000000000000000000000000000000000611cf5565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f611f7673ffffffffffffffffffffffffffffffffffffffff841661313b565b9050611f82828261603c565b9350611f8c613116565b50505b611fa281611f9c84611cfd565b85611d42565b50919050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290611fe790849061604f565b90915550506040805133815260208101839052839173ffffffffffffffffffffffffffffffffffffffff8616915f917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a4505050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146120ad576120ad7f0d89438e00000000000000000000000000000000000000000000000000000000611cf5565b565b805473ffffffffffffffffffffffffffffffffffffffff165f03611770576117707f486aa30700000000000000000000000000000000000000000000000000000000611cf5565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760208716156121d0576121ce33878787878760405160240161213b9695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb6a8b0fa0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b505b50505050505050565b60038301545f906fffffffffffffffffffffffffffffffff16808203612222576122227fa74f97ab00000000000000000000000000000000000000000000000000000000611cf5565b61225961222e85611cfd565b5f0361223985611cfd565b5f0360809190911b6fffffffffffffffffffffffffffffffff9091161790565b91508315612293576001850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008702040190555b82156122cb576002850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008602040190555b509392505050565b82516122e9906122e38460801d90565b83611d42565b6108c483602001516122e384600f0b90565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760108716156121d0576121ce3387878787876040516024016123409695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1b4af690000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b60017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b620f424062ffffff82161115611770576117707f140021130000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b612466826120af565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167cffffff000000000000000000000000000000000000000000000000000060d083901b16175b90915550565b843373ffffffffffffffffffffffffffffffffffffffff82161461266f575f84604001511380156124ea5750610800861615155b156125a45761259e338686868660405160240161250b95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f259982e50000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b5061266f565b5f8460400151131580156125bb5750610200861615155b1561266f576121d033868686866040516024016125dc95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f21d0ee700000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b505050505050565b80600f81900b8114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b6060810151602082015160408301515f92839290916126cb8282613a48565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f1461289b576127048884865f613b0f565b6fffffffffffffffffffffffffffffffff1660208301521515815261272c8883866001613b0f565b6fffffffffffffffffffffffffffffffff166060830152151560408201525f600f85900b126128605760808701515f9060020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761881810783139082900503620d89e891909105036001016fffffffffffffffffffffffffffffffff049050806fffffffffffffffffffffffffffffffff1682602001516fffffffffffffffffffffffffffffffff161115612804576128047fb8e3c3850000000000000000000000000000000000000000000000000000000085612cfb565b806fffffffffffffffffffffffffffffffff1682606001516fffffffffffffffffffffffffffffffff16111561285e5761285e7fb8e3c3850000000000000000000000000000000000000000000000000000000084612cfb565b505b80511561287c57608087015161287c9060058a01908590613bf8565b80604001511561289b57608087015161289b9060058a01908490613bf8565b5f806128a88a8686613c4a565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080612905838a8787613cfe565b9150915061293a61291583611cfd565b61291e83611cfd565b6fffffffffffffffffffffffffffffffff1660809190911b1790565b995050505050505f84600f0b12156129a35780511561297657600283810b5f90815260048a016020526040812081815560018101829055909101555b8060400151156129a357600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14612ae75786545f806129bf8360a01c60020b90565b73ffffffffffffffffffffffffffffffffffffffff8416915091508460020b8260020b1215612a1b57612a14612a0e612a096129fa88613e2f565b612a0388613e2f565b8a61412c565b612677565b60801b90565b9750612ae3565b8360020b8260020b1215612abe57612a52612a3c612a0983612a0388613e2f565b61291e612a09612a4b89613e2f565b858b614164565b60038b0154909850612a76906fffffffffffffffffffffffffffffffff1687614190565b60038b0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055612ae3565b612ae05f61291e612a09612ad189613e2f565b612ada89613e2f565b8b614164565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01612b1b612b1283612677565b61291e83612677565b95945050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff89163303612b4d57508490505f612cef565b8591505f87604001511315612c3557610400891615612c3057612c2133898989898989604051602401612b86979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9f063efc0000000000000000000000000000000000000000000000000000000017905260028b1615155b73ffffffffffffffffffffffffffffffffffffffff8c1691906141c0565b9050612c2d828261421a565b91505b612cef565b610100891615612cef57612ce033898989898989604051602401612c5f979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6c2bbe7e0000000000000000000000000000000000000000000000000000000017905260018b161515612c03565b9050612cec828261421a565b91505b97509795505050505050565b815f528060020b60045260245ffd5b60405183815273ffffffffffffffffffffffffffffffffffffffff8316600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152604481fd5b5f60808316158015612d6157506008831615155b15612d6d57505f610765565b60408316158015612d8057506004831615155b15612d8c57505f610765565b6104008316158015612da057506002831615155b15612dac57505f610765565b6101008316158015612dc057506001831615155b15612dcc57505f610765565b73ffffffffffffffffffffffffffffffffffffffff831615612e0a57613fff8316151580612e0557506280000062ffffff831614610838565b610838565b5062ffffff16628000001415919050565b815f5273ffffffffffffffffffffffffffffffffffffffff811660045260245ffd5b5f6280000062ffffff831603612e5457505f919050565b611d3e8262ffffff1661241e565b823373ffffffffffffffffffffffffffffffffffffffff8216146109a5576120008416156109a557611d9b338484604051602401612ea29392919061640c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdc98354e0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff86169061394c565b82545f9073ffffffffffffffffffffffffffffffffffffffff1615612f7d57612f7d7f7983c05100000000000000000000000000000000000000000000000000000000611cf5565b612f868361423b565b90507cffffff000000000000000000000000000000000000000000000000000060d083901b1673ffffffffffffffffffffffffffffffffffffffff841660a083901b76ffffff00000000000000000000000000000000000000001617179093555090919050565b833373ffffffffffffffffffffffffffffffffffffffff821614611d9b57611000851615611d9b5761266f3385858560405160240161302f94939291906164cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6fe7e6eb0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff87169061394c565b6130cb826120af565b81547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1679ffffff000000000000000000000000000000000000000000000060b883901b16176124b0565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d565b5f73ffffffffffffffffffffffffffffffffffffffff821661315e575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa1580156131c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610765919061659d565b73ffffffffffffffffffffffffffffffffffffffff82167f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f8073ffffffffffffffffffffffffffffffffffffffff88163303613276575f91506133e6565b60808816156133e6575f61331889338a8a8a8a60405160240161329d9594939291906165b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f575e24b40000000000000000000000000000000000000000000000000000000017905261394c565b9050805160601461334c5761334c7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b604088015162ffffff16628000000361336757606081015191505b60088916156133e457604081015192505f6133828460801d90565b905080600f0b5f146133e2575f851261339f600f83900b8761669c565b9550806133ae575f86126133b2565b5f86135b156133e0576133e07ffa0b71d600000000000000000000000000000000000000000000000000000000611cf5565b505b505b505b955095509592505050565b5f80808080613400898861455f565b93509350935093505f83111561343b5773ffffffffffffffffffffffffffffffffffffffff86165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6134688760801d90565b61347288600f0b90565b85516040808801516020808a01518351600f97880b81529590960b9085015273ffffffffffffffffffffffffffffffffffffffff909216908301526fffffffffffffffffffffffffffffffff16606082015260029190910b608082015262ffffff861660a082015260c00160405180910390a35091979650505050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff8916330361351b57508490505f612cef565b5f6135268460801d90565b90505f61353385600f0b90565b905060408b1615613606576135f9612a09338c8c8c8c8c60405160240161355f969594939291906166bb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb47b2fb10000000000000000000000000000000000000000000000000000000017905260048e16151573ffffffffffffffffffffffffffffffffffffffff8f1691906141c0565b61360390826167aa565b90505b5f81600f0b5f14158061361c575082600f0b5f14155b1561367957895160208b01515f1390151514613650576fffffffffffffffffffffffffffffffff8316608083901b1761366a565b6fffffffffffffffffffffffffffffffff8216608084901b175b9050613676898261421a565b98505b979b979a509698505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff841681148015906136e4575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526003602090815260408083209385168352929052205460ff16155b156137915773ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209385168352928152828220868352905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461378f57613754838261603c565b73ffffffffffffffffffffffffffffffffffffffff8087165f9081526005602090815260408083209387168352928152828220888352905220555b505b6109a5848484614dfc565b73ffffffffffffffffffffffffffffffffffffffff8281165f90815290841660205260408120805c91906137d4600f85900b8461669c565b915081815d50935093915050565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181039050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181019050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b60605f805f8451602086015f885af1905080613995576139958461396f856167f8565b7fa9e35b2f0000000000000000000000000000000000000000000000000000000061387e565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080613a13575060208301517fffffffff00000000000000000000000000000000000000000000000000000000166139ee836020015190565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b15613a4157613a417f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b5092915050565b8060020b8260020b12613a8057613a807fc4433ed5000000000000000000000000000000000000000000000000000000008383614e92565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600283900b1215613ad657613ad67fd5e2f7ab0000000000000000000000000000000000000000000000000000000083612cfb565b620d89e8600282900b131561179f5761179f7f1ad777f80000000000000000000000000000000000000000000000000000000082612cfb565b600283900b5f908152600485016020526040812080548291906fffffffffffffffffffffffffffffffff8116907001000000000000000000000000000000009004600f0b613b5d8288614190565b6fffffffffffffffffffffffffffffffff808216159084168015919091141596509094505f03613bb057885460a01c60020b60020b8860020b13613bb0576001808a0154908401556002808a0154908401555b5f86613bc557613bc088836167aa565b613bcf565b613bcf8883616864565b90508060801b6fffffffffffffffffffffffffffffffff86161784555050505094509492505050565b600291820b910b80820715613c255760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215613ca0578160010154836001015403945081600201548360020154039350613cf3565b8560020b8160020b12613ccc578260010154826001015403945082600201548260020154039350613cf3565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906fffffffffffffffffffffffffffffffff16600f86900b8203613d6857806fffffffffffffffffffffffffffffffff165f03613d6357613d637faefeb92400000000000000000000000000000000000000000000000000000000611cf5565b613daf565b613d728187614190565b87547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff919091161787555b613de387600101548603826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b9250613e1987600201548503826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115613e7157613e717f8b86327a0000000000000000000000000000000000000000000000000000000084612cfb565b7001fffcb933bd6fad37aa2d162d1a5940016001821602700100000000000000000000000000000000186002821615613eba576ffff97272373d413259a46990580e213a0260801c5b6004821615613ed9576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613ef8576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613f17576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613f36576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613f55576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613f74576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613f94576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613fb4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613fd4576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ff4576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614014576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614034576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614054576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614074576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614095576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156140b5576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156140d4576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156140f1576b048a170391f7dc42444e8fa20260801c5b5f84131561411c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff045b63ffffffff0160201c9392505050565b5f8082600f0b126141535761414c6141478585856001614f6a565b6150a7565b5f03611ced565b611ced6141478585855f035f614f6a565b5f8082600f0b1261417f5761414c61414785858560016150d9565b611ced6141478585855f035f6150d9565b6fffffffffffffffffffffffffffffffff8216600f82900b01608081901c15610765576393dafdf15f526004601cfd5b5f806141cc858561394c565b9050826141dc575f915050610838565b805160401461420e5761420e7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03612b1b612b1283612677565b5f73fffd8963efd1fc6a506488495d951d51639616827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830173ffffffffffffffffffffffffffffffffffffffff1611156142ba576142ba7f614875240000000000000000000000000000000000000000000000000000000083612e1b565b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b16805f6142e482615144565b60ff169050608081106142ff57607f810383901c9150614309565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14614550578873ffffffffffffffffffffffffffffffffffffffff1661452882613e2f565b73ffffffffffffffffffffffffffffffffffffffff16111561454a5781614552565b80614552565b815b9998505050505050505050565b604080516060810182525f8082526020820181905291810182905281908190855460408601515f8161459957610fff60c484901c166145a3565b610fff60b884901c165b885173ffffffffffffffffffffffffffffffffffffffff8516865261ffff9190911691505f60a085901c60020b60020b602087015260038b01546fffffffffffffffffffffffffffffffff16604087015260808a01515f9062400000166146135760d086901c62ffffff16614625565b6146258b6080015162ffffff166151d8565b9050831561464b57620f4240610fff851662ffffff83168181029290920491010361464d565b805b975050620f42408762ffffff16106146915789515f1215614691576146917f9620624600000000000000000000000000000000000000000000000000000000611cf5565b89515f036146a9575f80985098505050505050614df3565b831561478c5760608a015173ffffffffffffffffffffffffffffffffffffffff86811691161061471b5761471b73ffffffffffffffffffffffffffffffffffffffff86165b60608c01517f7c9c6e8f000000000000000000000000000000000000000000000000000000009190612d0a565b6401000276a373ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff16116147875760608a0151614787907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b61484a565b60608a015173ffffffffffffffffffffffffffffffffffffffff8681169116116147cf576147cf73ffffffffffffffffffffffffffffffffffffffff86166146ee565b73fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff161061484a5760608a015161484a907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915284614899578b6002015461489f565b8b600101545b60e08201525b8215806148e457508a6060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff16145b614c7f57865173ffffffffffffffffffffffffffffffffffffffff168152602080880151908c015161491b9160058f0191886151e7565b1515604083015260020b602082018190527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761812614979577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860208201525b620d89e860020b816020015160020b1261499757620d89e860208201525b6149a48160200151613e2f565b73ffffffffffffffffffffffffffffffffffffffff90811660608381018290528951908e01516149ee939192911680821891811160018a161891909102188960400151868c615312565b60c085015260a0840152608083015273ffffffffffffffffffffffffffffffffffffffff1687528a515f1215614a5757614a2b8160a001516150a7565b83039250614a468160c001518260800151614147919061604f565b614a5090836168b2565b9150614a88565b614a6a8160c001518260800151016150a7565b83019250614a7b8160a001516150a7565b614a85908361669c565b91505b8315614ad7575f848962ffffff1614614abf57620f4240858360c001518460800151010281614ab957614ab96168d1565b04614ac5565b8160c001515b60c08301805182900390529990990198505b60408701516fffffffffffffffffffffffffffffffff1615614b3657614b2a8160c0015170010000000000000000000000000000000089604001516fffffffffffffffffffffffffffffffff1691020490565b60e08201805190910190525b806060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff1603614c4c57806040015115614c27575f8086614b90578d600101548360e00151614b9b565b8260e001518e600201545b915091505f614bf38f85602001518585600292830b5f908152600490940160205260409093206001810180549092039091559081018054909203909155547001000000000000000000000000000000009004600f0b90565b90508715614bfe575f035b614c0c8a6040015182614190565b6fffffffffffffffffffffffffffffffff1660408b01525050505b84614c36578060200151614c3f565b60018160200151035b60020b60208801526148a5565b8051875173ffffffffffffffffffffffffffffffffffffffff908116911614614c7a578651614c3f9061423b565b6148a5565b86516020880151614d149190614cd690899060a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff919091161790565b7fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161790565b8c55604087015160038d01546fffffffffffffffffffffffffffffffff908116911614614d8357604087015160038d0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b84614d975760e081015160028d0155614da2565b60e081015160018d01555b8a515f1385151514614dcf57614dc8614dba83612677565b61291e858e5f015103612677565b9950614dec565b614de9614de0848d5f015103612677565b61291e84612677565b99505b5050505050505b92959194509250565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290614e3b90849061603c565b9091555050604080513381526020810183905283915f9173ffffffffffffffffffffffffffffffffffffffff8716917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910161203a565b6040518381528260020b60048201528160020b6024820152604481fd5b5f838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870982811083820303915050808411614eed575f80fd5b805f03614eff57508290049050610838565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115614fa3579293925b73ffffffffffffffffffffffffffffffffffffffff8516614fca5762bfc9215f526004601cfd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b1673ffffffffffffffffffffffffffffffffffffffff8686031683615056578673ffffffffffffffffffffffffffffffffffffffff1661504383838973ffffffffffffffffffffffffffffffffffffffff16614eaf565b81615050576150506168d1565b0461509c565b61509c61507a83838973ffffffffffffffffffffffffffffffffffffffff16615482565b8873ffffffffffffffffffffffffffffffffffffffff16808204910615150190565b979650505050505050565b805f811215610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5f73ffffffffffffffffffffffffffffffffffffffff8481169086160360ff81901d908101186c010000000000000000000000006fffffffffffffffffffffffffffffffff851661512b818484614eaf565b9350845f83858409111684019350505050949350505050565b5f808211615150575f80fd5b507f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b62bfffff8116610c628161241e565b5f80600284810b9086900b818107831391900503831561528557600281900b60081d600181900b5f908152602089905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff808516908190039190911c91821680151595509091908561526757888360ff1686030261527a565b8861527182615144565b840360ff168603025b965050505050615308565b6001908101600281900b60081d80830b5f90815260208a905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841694851b0119908116801515955092939192856152ee57888360ff0360ff16860102615301565b88836152f9836154b2565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff851673ffffffffffffffffffffffffffffffffffffffff808a16908b16101582881280156153f5575f6153588a5f0385620f424003620f4240614eaf565b9050826153715761536c8d8d8d60016150d9565b61537e565b61537e8c8e8d6001614f6a565b96508681106153b2578b9750620f424084146153a9576153a4878586620f424003615482565b6153ab565b865b94506153cb565b8096506153c18d8c838661554c565b9750868a5f030394505b826153e1576153dc8d898d5f614f6a565b6153ed565b6153ed888e8d5f6150d9565b955050615473565b8161540b576154068c8c8c5f614f6a565b615417565b6154178b8d8c5f6150d9565b9450848910615428578a965061543a565b8894506154378c8b87856155b0565b96505b816154515761544c8c888c60016150d9565b61545e565b61545e878d8c6001614f6a565b9550615470868485620f424003615482565b93505b50505095509550955095915050565b5f61548e848484614eaf565b9050818061549e5761549e6168d1565b838509156108385760010180610838575f80fd5b5f8082116154be575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b15031604055f8290039091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff861615171561558c57634f2461b85f526004601cfd5b816155a35761559e8585856001615609565b612b1b565b612b1b858585600161576b565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff86161517156155f057634f2461b85f526004601cfd5b816156015761559e8585855f61576b565b612b1b8585855f5b5f81156156ae575f73ffffffffffffffffffffffffffffffffffffffff84111561565c57615657846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16614eaf565b61567c565b61567c6fffffffffffffffffffffffffffffffff8616606086901b6168fe565b90506156a66156a18273ffffffffffffffffffffffffffffffffffffffff891661604f565b6158a0565b915050611ced565b5f73ffffffffffffffffffffffffffffffffffffffff8411156156fa576156f5846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16615482565b615720565b615720606085901b6fffffffffffffffffffffffffffffffff8716808204910615150190565b90508073ffffffffffffffffffffffffffffffffffffffff87161161574c57634323a5555f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff8616039050611ced565b5f825f0361577a575083611ced565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156158455773ffffffffffffffffffffffffffffffffffffffff8616848102908582816157cd576157cd6168d1565b040361580a57818101828110615808576157fe838973ffffffffffffffffffffffffffffffffffffffff1683615482565b9350505050611ced565b505b506156a6818561583073ffffffffffffffffffffffffffffffffffffffff8a16836168fe565b61583a919061604f565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff86168481029085820414818311166158795763f5c787f15f526004601cfd5b8082036157fe6156a18473ffffffffffffffffffffffffffffffffffffffff8b1684615482565b8073ffffffffffffffffffffffffffffffffffffffff81168114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff81168114611770575f80fd5b5f8060408385031215615919575f80fd5b8235615924816158e7565b946020939093013593505050565b5f60208284031215615942575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610838575f80fd5b5f805f60608486031215615983575f80fd5b833561598e816158e7565b95602085013595506040909401359392505050565b5f805f606084860312156159b5575f80fd5b83356159c0816158e7565b925060208401356159d0816158e7565b929592945050506040919091013590565b5f602082840312156159f1575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715615a4857615a486159f8565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615a9557615a956159f8565b604052919050565b803562ffffff81168114610c62575f80fd5b8035600281900b8114610c62575f80fd5b5f60a08284031215615ad0575f80fd5b60405160a0810167ffffffffffffffff81118282101715615af357615af36159f8565b6040529050808235615b04816158e7565b81526020830135615b14816158e7565b6020820152615b2560408401615a9d565b6040820152615b3660608401615aaf565b60608201526080830135615b49816158e7565b6080919091015292915050565b5f8083601f840112615b66575f80fd5b50813567ffffffffffffffff811115615b7d575f80fd5b602083019150836020828501011115615b94575f80fd5b9250929050565b5f805f805f6101008688031215615bb0575f80fd5b615bba8787615ac0565b945060a0860135935060c0860135925060e086013567ffffffffffffffff811115615be3575f80fd5b615bef88828901615b56565b969995985093965092949392505050565b5f60208284031215615c10575f80fd5b8135610838816158e7565b5f8060408385031215615c2c575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015615c72578351835260209384019390920191600101615c54565b509095945050505050565b5f8060208385031215615c8e575f80fd5b823567ffffffffffffffff811115615ca4575f80fd5b615cb085828601615b56565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f8060c08385031215615d20575f80fd5b615d2a8484615ac0565b9150615d3860a08401615a9d565b90509250929050565b80358015158114610c62575f80fd5b5f8060408385031215615d61575f80fd5b8235615d6c816158e7565b9150615d3860208401615d41565b5f805f80848603610140811215615d8f575f80fd5b615d998787615ac0565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615dca575f80fd5b50615dd3615a25565b615ddf60a08701615aaf565b8152615ded60c08701615aaf565b602082015260e086013560408201526101008601356060820152925061012085013567ffffffffffffffff811115615e23575f80fd5b615e2f87828801615b56565b95989497509550505050565b5f8060c08385031215615e4c575f80fd5b615e568484615ac0565b915060a0830135615e66816158e7565b809150509250929050565b5f8060208385031215615e82575f80fd5b823567ffffffffffffffff811115615e98575f80fd5b8301601f81018513615ea8575f80fd5b803567ffffffffffffffff811115615ebe575f80fd5b8560208260051b8401011115615ed2575f80fd5b6020919091019590945092505050565b5f8060408385031215615ef3575f80fd5b8235615efe816158e7565b91506020830135615e66816158e7565b5f805f80848603610120811215615f23575f80fd5b615f2d8787615ac0565b945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615f5e575f80fd5b506040516060810167ffffffffffffffff81118282101715615f8257615f826159f8565b604052615f9160a08701615d41565b815260c0860135602082015260e0860135615fab816158e7565b6040820152925061010085013567ffffffffffffffff811115615e23575f80fd5b5f805f8060808587031215615fdf575f80fd5b8435615fea816158e7565b93506020850135615ffa816158e7565b93969395505050506040820135916060013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107655761076561600f565b808201808211156107655761076561600f565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611ced602083018486616062565b5f602082840312156160cc575f80fd5b815167ffffffffffffffff8111156160e2575f80fd5b8201601f810184136160f2575f80fd5b805167ffffffffffffffff81111561610c5761610c6159f8565b61613d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615a4e565b818152856020838501011115616151575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b73ffffffffffffffffffffffffffffffffffffffff87168152616209602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8460c08201528360e08201526101206101008201525f61622e61012083018486616062565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff861681526162d5602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f61509c61016083018486616062565b73ffffffffffffffffffffffffffffffffffffffff881681526163b7602082018873ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8551600290810b60c08301526020870151900b60e08201526040860151610100820152606086015161012082015284610140820152836101608201526101a06101808201525f6145526101a083018486616062565b73ffffffffffffffffffffffffffffffffffffffff8416815260e081016164ab602083018573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660c0830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff85168152610100810161656f602083018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff841660c08301528260020b60e083015295945050505050565b5f602082840312156165ad575f80fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8616815261664f602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351151560c0820152602084015160e0820152604084015173ffffffffffffffffffffffffffffffffffffffff166101008201526101406101208201525f61509c61014083018486616062565b8082018281125f8312801582168215821617156113f4576113f461600f565b73ffffffffffffffffffffffffffffffffffffffff87168152616756602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8451151560c0820152602085015160e0820152604085015173ffffffffffffffffffffffffffffffffffffffff16610100820152836101208201526101606101408201525f61622e61016083018486616062565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff80000000000000000000000000000000821217156107655761076561600f565b805160208201517fffffffff0000000000000000000000000000000000000000000000000000000081169190600482101561685d577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff821317156107655761076561600f565b8181035f831280158383131683831282161715613a4157613a4161600f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82616931577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea164736f6c634300081a000a60e060405234801561000f575f80fd5b5060405161116838038061116883398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610d716103f75f395f6104cf01525f61049a01525f6101590152610d715ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806370a08231116100885780639dc29fac116100635780639dc29fac146101f0578063a9059cbb14610203578063d505accf14610216578063dd62ed3e14610229575f80fd5b806370a08231146101aa5780637ecebe00146101c957806395d89b41146101e8575f80fd5b806323b872dd116100c357806323b872dd14610141578063313ce567146101545780633644e5151461018d57806340c10f1914610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610253565b6040516100fe9190610a52565b60405180910390f35b61011a610115366004610acd565b6102de565b60405190151581526020016100fe565b61013360025481565b6040519081526020016100fe565b61011a61014f366004610af5565b610357565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100fe565b610133610497565b6101a86101a3366004610acd565b6104f1565b005b6101336101b8366004610b2f565b60036020525f908152604090205481565b6101336101d7366004610b2f565b60056020525f908152604090205481565b6100f16104ff565b6101a86101fe366004610acd565b61050c565b61011a610211366004610acd565b610516565b6101a8610224366004610b4f565b610599565b610133610237366004610bbc565b600460209081525f928352604080842090915290825290205481565b5f805461025f90610bed565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610bed565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103e9576103b88382610c6b565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120805485929061041d908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104849087815260200190565b60405180910390a3506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146104cc576104c76108b7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6104fb828261094f565b5050565b6001805461025f90610bed565b6104fb82826109c6565b335f90815260036020526040812080548391908390610536908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103459086815260200190565b42841015610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f6001610613610497565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610761573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906107dc57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016105ff565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516108e79190610c7e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546109609190610d51565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260036020526040812080548392906109fa908490610c6b565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109ba565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac8575f80fd5b919050565b5f8060408385031215610ade575f80fd5b610ae783610aa5565b946020939093013593505050565b5f805f60608486031215610b07575f80fd5b610b1084610aa5565b9250610b1e60208501610aa5565b929592945050506040919091013590565b5f60208284031215610b3f575f80fd5b610b4882610aa5565b9392505050565b5f805f805f805f60e0888a031215610b65575f80fd5b610b6e88610aa5565b9650610b7c60208901610aa5565b95506040880135945060608801359350608088013560ff81168114610b9f575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610bcd575f80fd5b610bd683610aa5565b9150610be460208401610aa5565b90509250929050565b600181811c90821680610c0157607f821691505b602082108103610c38577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561035157610351610c3e565b5f8083545f8160011c90506001821680610c9957607f821691505b602082108103610cd0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b808015610ce45760018114610d1757610d45565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450610d45565b5f888152602090205f5b84811015610d3d57815489820152600190910190602001610d21565b505082870194505b50929695505050505050565b8082018082111561035157610351610c3e56fea164736f6c634300081a000aa164736f6c634300081a000a","sourceMap":"458:15005:245:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4752:558;;;;;;;;;;;;;:::i;:::-;;508:116;;;;;;;;;;;;;:::i;10978:635::-;;;;;;;;;;;;;:::i;5907:570::-;;;;;;;;;;;;;:::i;5316:585::-;;;;;;;;;;;;;:::i;2907:134:12:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;759:258:245;;;;;;;;;;;;;:::i;2292:534::-;;;;;;;;;;;;;:::i;1752:::-;;;;;;;;;;;;;:::i;3823:151:12:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2554::127:-;;;;;;;;;;-1:-1:-1;2554:151:127;;;;;;;;;;;;;;;;;;;;;;;;;;3054:1:262;3043:21;;;3025:40;;3101:21;;;;3096:2;3081:18;;3074:49;3139:18;;;3132:34;3197:2;3182:18;;3175:34;;;;3012:3;2997:19;2554:151:127;2804:411:262;3684:133:12;;;;;;;;;;;;;:::i;3385:141::-;;;;;;;;;;;;;:::i;13444:660:245:-;;;;;;;;;;;;;:::i;1213:533::-;;;;;;;;;;;;;:::i;2329:69:127:-;;;;;;;;;;;;;:::i;:::-;;;3396:42:262;3384:55;;;3366:74;;3354:2;3339:18;2329:69:127;3220:226:262;6483:622:245;;;;;;;;;;;;;:::i;12861:577::-;;;;;;;;;;;;;:::i;630:123::-;;;;;;;;;;;;;:::i;2832:549::-;;;;;;;;;;;;;:::i;3193:186:12:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9621:556:245:-;;;;;;;;;;;;;:::i;3047:140:12:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11619:598:245:-;;;;;;;;;;;;;:::i;10183:591::-;;;;;;;;;;;;;:::i;3532:146:12:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2405:143:127:-;;;;;;;;;;-1:-1:-1;2405:143:127;;;;;;;;;;;;;;;;;;;;;;12223:632:245;;;;;;;;;;;;;:::i;4174:572::-;;;;;;;;;;;;;:::i;14811:650::-;;;;;;;;;;;;;:::i;2754:147:12:-;;;;;;;;;;;;;:::i;1711:793:259:-;;;;;;;;;;;;;:::i;2711:128:127:-;;;;;;;;;;-1:-1:-1;2711:128:127;;;;;;;;;;;;;;;;;;;;7338:14:262;;7331:22;7313:41;;7385:2;7370:18;;7363:34;;;;7445:42;7433:55;7413:18;;;7406:83;7301:2;7286:18;2711:128:127;7119:376:262;2459:141:12;;;;;;;;;;;;;:::i;1243:204:8:-;;;;;;;;;;;;;:::i;:::-;;;7665:14:262;;7658:22;7640:41;;7628:2;7613:18;1243:204:8;7500:187:262;14110:695:245;;;;;;;;;;;;;:::i;9074:541::-;;;;;;;;;;;;;:::i;2254:69:127:-;;;;;;;;;;;;;:::i;8527:541:245:-;;;;;;;;;;;;;:::i;2606:142:12:-;;;;;;;;;;;;;:::i;7965:556:245:-;;;;;;;;;;;;;:::i;3387:584::-;;;;;;;;;;;;;:::i;7111:657::-;;;;;;;;;;;;;:::i;1016:26:19:-;;;;;;;;;;-1:-1:-1;1016:26:19;;;;;;;;4752:558:245;4918:83;;;;;;;;4951:9;4918:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4820:16;4918:83;;;;;;;4839:7;4918:83;;;;;;-1:-1:-1;4918:83:245;;;;;4991:9;;;;;;;;;;-1:-1:-1;4918:83:245;;;;;;5058:18;;4839:7;;5019:58;;875:4:173;;5058:18:245;;4918:83;;5058:18;;:::i;:::-;;;;;;;;;;;5019:8;;;;;;:4;:8;;5058:18;;;;;5019:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5019:8:245;;-1:-1:-1;5019:8:245;;:58;;-1:-1:-1;5019:8:245;:58::i;:::-;5012:65;;:4;;;;:65;;:4;:65;:::i;:::-;-1:-1:-1;5012:65:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5125:19:245;;:9;5146:19;5107:17;;;;;;;;;:4;:17;;5087;;-1:-1:-1;5107:87:245;;5125:19;;;;;5146;;5125;;5107:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5107:17:245;;-1:-1:-1;5107:17:245;;:87;;;-1:-1:-1;5107:17:245;:87::i;:::-;5205:6;;:27;;;;;5087:107;;-1:-1:-1;5205:6:245;;;:21;;:27;;5087:107;;5205:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5242:61:245;;;;;12539:2:262;5242:61:245;;;12521:21:262;12578:2;12558:18;;;12551:30;12617:34;12597:18;;;12590:62;12688:5;12668:18;;;12661:33;5242:22:245;;-1:-1:-1;5242:22:245;;-1:-1:-1;12711:19:262;;5242:61:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4810:500;;;4752:558::o;508:116::-;542:44;:42;:44::i;:::-;603:14;:12;:14::i;:::-;596:21;;:4;;;;:21;;:4;:21;:::i;:::-;-1:-1:-1;596:21:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;508:116:245:o;10978:635::-;11161:100;;;;;;;;11195:9;11161:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11081:7;11161:100;;;;;;;-1:-1:-1;11161:100:245;;;11251:9;;;;;;;11061:17;11251:9;;-1:-1:-1;11161:100:245;;;11319:18;;11279:59;;987:4:173;;11319:18:245;;11161:100;;11319:18;;:::i;:::-;;;;;;;;;;;11279:8;;;;;;:4;:8;;11319:18;;;;;11279:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:59;11272:66;;:4;;;;:66;;:4;:66;:::i;:::-;-1:-1:-1;11272:66:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;11386:9:245;:19;11407;;11368:17;;;;;;;;;:4;:17;;11348;;-1:-1:-1;11368:87:245;;11386:19;;;;;11407;;11386;;11368:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:87;11466:6;;:60;;;;;11348:107;;-1:-1:-1;11466:6:245;;;:38;;11512:7;;11466:60;;11348:107;;11466:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11536:70:245;;;;;13444:2:262;11536:70:245;;;13426:21:262;13483:2;13463:18;;;13456:30;13522:34;13502:18;;;13495:62;13593:14;13573:18;;;13566:42;11536:22:245;;-1:-1:-1;11536:22:245;;-1:-1:-1;13625:19:262;;;-1:-1:-1;11536:70:245;13242:408:262;5907:570:245;6023:9;;6008;:25;;6023:9;6008:25;;;;;-1:-1:-1;6008:25:245;;;;;;;;;6023:9;;;;6008:25;;;;;;;6043:44;;;;;;;;;;;;;;;;;6140:41;;;;;6008:25;6140:41;;;;;;;;;;;;;5990:7;;-1:-1:-1;6140:41:245;;;;6008:9;;6140:41;;;6008:9;6140:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6172:8;6140:20;:41::i;:::-;6097:84;;6199:51;927:4:173;6242:6:245;6231:18;;;;;;;;:::i;:::-;;;;;;;;;;;6199:8;;;;;;:4;:8;;6231:18;;;;;6199:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:51;6192:58;;:4;;;;:58;;:4;:58;:::i;:::-;-1:-1:-1;6192:58:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6298:9:245;;6280:17;;;;;;;;;:4;:17;;6260;;-1:-1:-1;6280:86:245;;6298:9;;;6260:17;;6298:9;;6280:17;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:86;6377:6;;:27;;;;;6260:106;;-1:-1:-1;6377:6:245;;;:21;;:27;;6260:106;;6377:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6414:56:245;;;;;15751:2:262;6414:56:245;;;15733:21:262;15790:2;15770:18;;;15763:30;15829:32;15809:18;;;15802:60;6414:22:245;;-1:-1:-1;6414:22:245;;-1:-1:-1;15879:18:262;;6414:56:245;15549:354:262;5316:585:245;5416:9;:44;;;;;;;;5379:16;5416:44;;;;;;;;;;;;;;;;5485:9;;5470:25;;;;;;;;;;;;;;;;5416:44;5485:9;;;;5470:25;;;;;;;5548:41;;;;;5416:44;5548:41;;;;;;;;;;;;;5398:7;;5548:41;;;;5416:9;;5548:41;;;5416:9;5548:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5580:8;5548:20;:41::i;:::-;5505:84;;5607:51;927:4:173;5650:6:245;5639:18;;;;;;;;:::i;:::-;;;;;;;;;;;5607:8;;;;;;:4;:8;;5639:18;;;;;5607:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:51;5600:58;;:4;;;;:58;;:4;:58;:::i;:::-;-1:-1:-1;5600:58:245;;;;;;;;;;;;;;;;:::i;:::-;;;;;5668:17;5688:86;1462:1:120;5736:9:245;;;;;;;;;;;885:1:172;5688:4:245;:17;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:86;5785:6;;:44;;;;;5668:106;;-1:-1:-1;5785:6:245;;;:21;;5814:8;;5785:44;;5668:106;;5785:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5839:55:245;;;;;16110:2:262;5839:55:245;;;16092:21:262;16149:2;16129:18;;;16122:30;16188:31;16168:18;;;16161:59;5839:22:245;;-1:-1:-1;5839:22:245;;-1:-1:-1;16237:18:262;;;-1:-1:-1;5839:55:245;15908:353:262;2907:134:12;2954:33;3018:16;2999:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:134;:::o;759:258:245:-;954:43;;;;;16468:2:262;954:43:245;;;16450:21:262;16507:2;16487:18;;;16480:30;16546:31;16526:18;;;16519:59;812:16:245;;;;;;954:10;;16595:18:262;;954:43:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;937:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;;927:72;;937:61;927:72;;;;812:198;;;;;;;;;;;18199:21:262;;;;18256:2;18236:18;;;18229:30;18295:34;18275:18;;;18268:62;18367:31;18346:19;;;18339:60;18451:20;;;18444:36;18416:19;;812:198:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2292:534;2409:9;;2394;:25;;2409:9;2394:25;;;;;2357:16;2394:25;;;;;;;;;;;;;2409:9;;;;2394:25;;;;2444:9;;2429:25;;;;;;;;;;;;;;;;2444:9;;;;2429:25;;;2507:41;;;;;2394:25;2507:41;;;;;;;;;;;;;2376:7;;2357:16;2507:41;;;;2394:9;;2507:41;;;2394:9;2507:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:8;2507:20;:41::i;:::-;2464:84;;2566:51;927:4:173;2609:6:245;2598:18;;;;;;;;:::i;:::-;;;;;;;;;;;2566:8;;;;;;:4;:8;;2598:18;;;;;2566:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:51;2559:58;;:4;;;;:58;;:4;:58;:::i;:::-;-1:-1:-1;2559:58:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2665:9:245;;2676;;2647:17;;;;;;;;;:4;:17;;2627;;-1:-1:-1;2647:67:245;;2665:9;;;;;2676;;2665;;2647:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:67;2725:6;;:27;;;;;2627:87;;-1:-1:-1;2725:6:245;;;:21;;:27;;2627:87;;2725:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2762:57:245;;;;;18693:2:262;2762:57:245;;;18675:21:262;18732:2;18712:18;;;18705:30;18771:33;18751:18;;;18744:61;2762:22:245;;-1:-1:-1;2762:22:245;;-1:-1:-1;18822:18:262;;2762:57:245;18491:355:262;1752:534:245;1869:9;;1854;:25;;1869:9;1854:25;;;;;1817:16;1854:25;;;;;;;;;;;;;1869:9;;;;1854:25;;;;1904:9;;1889:25;;;;;;;;;;;;;;;;1904:9;;;;1889:25;;;1967:41;;;;;1854:25;1967:41;;;;;;;;;;;;;1836:7;;1817:16;1967:41;;;;1854:9;;1967:41;;;1854:9;1967:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1999:8;1967:20;:41::i;:::-;1924:84;;2026:51;927:4:173;2069:6:245;2058:18;;;;;;;;:::i;:::-;;;;;;;;;;;2026:8;;;;;;:4;:8;;2058:18;;;;;2026:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:51;2019:58;;:4;;;;:58;;:4;:58;:::i;:::-;-1:-1:-1;2019:58:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2125:9:245;;2136;;2107:17;;;;;;;;;:4;:17;;2087;;-1:-1:-1;2107:67:245;;2125:9;;;;;2136;;2125;;2107:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:67;2185:6;;:27;;;;;2087:87;;-1:-1:-1;2185:6:245;;;:21;;:27;;2087:87;;2185:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2222:57:245;;;;;19053:2:262;2222:57:245;;;19035:21:262;19092:2;19072:18;;;19065:30;19131:33;19111:18;;;19104:61;2222:22:245;;-1:-1:-1;2222:22:245;;-1:-1:-1;19182:18:262;;2222:57:245;18851:355:262;3823:151:12;3872:42;3948:19;3926:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151;:::o;3684:133::-;3730:33;3794:16;3775:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3684:133;:::o;3385:141::-;3433:35;3501:18;3480:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3385:141;:::o;13444:660:245:-;13562:9;:44;;;;;;;;13524:17;13562:44;;;;;;;;;;;;;;;;13631:9;;13616:25;;;;;;;;;;;;;13562:44;13631:9;;;13616:25;;;13666:9;;13651:25;;;;;;;;;;;;;;;;13666:9;;;;13651:25;;;;;;;13730:43;;;;;13562:44;13730:43;;;;;;;;;;;;;13544:7;;13730:43;;;;13562:9;;13730:43;;;13562:9;13730:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13763:9;13730:21;:43::i;:::-;13686:87;;13791:52;1040:4:173;13835:6:245;13824:18;;;;;;;;:::i;:::-;;;;;;;;;;;13791:8;;;;;;:4;:8;;13824:18;;;;;13791:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;13784:59;;:4;;;;:59;;:4;:59;:::i;:::-;-1:-1:-1;13784:59:245;;;;;;;;;;;;;;;;:::i;:::-;;;;;13853:17;13873:86;1462:1:120;13921:9:245;;;;;;;;;;;885:1:172;13873:4:245;:17;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:86;13970:6;;:60;;;;;13853:106;;-1:-1:-1;13970:6:245;;;:38;;14016:7;;13970:60;;13853:106;;13970:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14040:57:245;;;;;19707:2:262;14040:57:245;;;19689:21:262;19746:2;19726:18;;;19719:30;19785:33;19765:18;;;19758:61;14040:22:245;;-1:-1:-1;14040:22:245;;-1:-1:-1;19836:18:262;;;-1:-1:-1;14040:57:245;19505:355:262;1213:533:245;1380:77;;;;;;;;1413:4;1380:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1301:7;1380:77;;;;;;1282:16;-1:-1:-1;1380:77:245;;;;;1447:9;;;;;;;;;;-1:-1:-1;1380:77:245;;;1514:18;;1475:58;;875:4:173;;1514:18:245;;1380:77;;1514:18;;:::i;:::-;;;;;;;;;;;1475:8;;;;;;:4;:8;;1514:18;;;;;1475:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:58;1468:65;;:4;;;;:65;;:4;:65;:::i;:::-;-1:-1:-1;1468:65:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1581:4:245;:14;1597;;1563:17;;;;;;;;;:4;:17;;1543;;-1:-1:-1;1563:77:245;;1581:14;;;;;1597;;1581;;1563:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:77;1651:6;;:27;;;;;1543:97;;-1:-1:-1;1651:6:245;;;:21;;:27;;1543:97;;1651:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:51:245;;;;;20067:2:262;1688:51:245;;;20049:21:262;20106:2;20086:18;;;20079:30;20145:27;20125:18;;;20118:55;1688:22:245;;-1:-1:-1;1688:22:245;;-1:-1:-1;20190:18:262;;1688:51:245;19865:349:262;2329:69:127;2371:27;2397:1;2042:49:103;2371:27:127;:::i;:::-;2329:69;:::o;6483:622:245:-;6584:9;:44;;;;;;;;6547:16;6584:44;;;;;;;;;;;;;;;;6653:9;;6638:25;;;;;;;;;;;;;6584:44;6653:9;;;6638:25;;;6688:9;;6673:25;;;;;;;;;;;;;;;;6688:9;;;;6673:25;;;;;;;6751:41;;;;;6584:44;6751:41;;;;;;;;;;;;;6566:7;;6751:41;;;;6584:9;;6751:41;;;6584:9;6751:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6783:8;6751:20;:41::i;:::-;6708:84;;6810:51;927:4:173;6853:6:245;6842:18;;;;;;;;:::i;:::-;;;;;;;;;;;6810:8;;;;;;:4;:8;;6842:18;;;;;6810:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:51;6803:58;;:4;;;;:58;;:4;:58;:::i;:::-;-1:-1:-1;6803:58:245;;;;;;;;;;;;;;;;:::i;:::-;;;;;6871:17;6891:86;1462:1:120;6939:9:245;;;;;;;;;;;885:1:172;6891:4:245;:17;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:86;6988:6;;:44;;;;;6871:106;;-1:-1:-1;6988:6:245;;;:21;;7017:8;;6988:44;;6871:106;;6988:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7042:56:245;;;;;20882:2:262;7042:56:245;;;20864:21:262;20921:2;20901:18;;;20894:30;20960:32;20940:18;;;20933:60;7042:22:245;;-1:-1:-1;7042:22:245;;-1:-1:-1;21010:18:262;;;-1:-1:-1;7042:56:245;20680:354:262;12861:577:245;12979:9;;12964;:25;;12979:9;12964:25;;;;;-1:-1:-1;12964:25:245;;;;;;;;;12979:9;;;;12964:25;;;;;;;12999:44;;;;;;;;;;;;;;;;;13097:43;;;;;12964:25;13097:43;;;;;;;;;;;;;12946:7;;-1:-1:-1;13097:43:245;;;;12964:9;;13097:43;;;12964:9;13097:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13130:9;13097:21;:43::i;:::-;13053:87;;13158:52;1040:4:173;13202:6:245;13191:18;;;;;;;;:::i;:::-;;;;;;;;;;;13158:8;;;;;;:4;:8;;13191:18;;;;;13158:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;13151:59;;:4;;;;:59;;:4;:59;:::i;:::-;-1:-1:-1;13151:59:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;13258:9:245;;13240:17;;;;;;;;;:4;:17;;13220;;-1:-1:-1;13240:86:245;;13258:9;;;13220:17;;13258:9;;13240:17;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:86;13337:6;;:27;;;;;13220:106;;-1:-1:-1;13337:6:245;;;:21;;:27;;13220:106;;13337:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13374:57:245;;;;;21241:2:262;13374:57:245;;;21223:21:262;21280:2;21260:18;;;21253:30;21319:33;21299:18;;;21292:61;13374:22:245;;-1:-1:-1;13374:22:245;;-1:-1:-1;21370:18:262;;13374:57:245;21039:355:262;630:123:245;726:6;;680:66;;;;;;;;;21611:21:262;;;;21668:2;21648:18;;;21641:30;21707:19;21687:18;;;21680:47;680:16:245;726:6;;;718:27;21779:20:262;;;21772:36;680:16:245;;;;21744:19:262;;680:66:245;21399:415:262;2832:549:245;2939:9;;2924;:25;;2939:9;2924:25;;;;;2887:16;2924:25;;;;;;;;;;;;;2939:9;;;;2924:25;;;;2974:9;;2959:25;;;;;;;;;;;;;2974:9;;;2959:25;;;;;;3009:9;;2994:25;;;;;;;;;;;;;;;;3009:9;;;;2994:25;;;3072:41;;;;;2924:25;3072:41;;;;;;;;;;;;;2906:7;;2887:16;3072:41;;;;2924:9;;3072:41;;;2924:9;3072:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3104:8;3072:20;:41::i;:::-;3029:84;;3131:51;927:4:173;3174:6:245;3163:18;;;;;;;;:::i;:::-;;;;;;;;;;;3131:8;;;;;;:4;:8;;3163:18;;;;;3131:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:51;3124:58;;:4;;;;:58;;:4;:58;:::i;:::-;-1:-1:-1;3124:58:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3230:9:245;;3241;;3212:17;;;;;;;;;:4;:17;;3192;;-1:-1:-1;3212:67:245;;3230:9;;;;;3241;;3230;;3212:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:67;3290:6;;:27;;;;;3192:87;;-1:-1:-1;3290:6:245;;;:21;;:27;;3192:87;;3290:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3327:47:245;;;;;22021:2:262;3327:47:245;;;22003:21:262;22060:2;22040:18;;;22033:30;22099:23;22079:18;;;22072:51;3327:22:245;;-1:-1:-1;3327:22:245;;-1:-1:-1;22140:18:262;;3327:47:245;21819:345:262;3193:186:12;3249:56;3346:26;3317:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9621:556:245;9730:9;;9715;:25;;9730:9;9715:25;;;;;9677:17;9715:25;;;;;;;;;;;;;9730:9;;;;9715:25;;;;9765:9;;9750:25;;;;;;;;;;;;;9765:9;;;9750:25;;;;;;9800:9;;9785:25;;;;;;;;;;;;;;;;9800:9;;;;9785:25;;;9864:43;;;;;9715:25;9864:43;;;;;;;;;;;;;9697:7;;9677:17;9864:43;;;;9715:9;;9864:43;;;9715:9;9864:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9897:9;9864:21;:43::i;:::-;9820:87;;9925:52;1040:4:173;9969:6:245;9958:18;;;;;;;;:::i;:::-;;;;;;;;;;;9925:8;;;;;;:4;:8;;9958:18;;;;;9925:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;9918:59;;:4;;;;:59;;:4;:59;:::i;:::-;-1:-1:-1;9918:59:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;10025:9:245;;10036;;10007:17;;;;;;;;;:4;:17;;9987;;-1:-1:-1;10007:67:245;;10025:9;;;;;10036;;10025;;10007:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:67;10085:6;;:27;;;;;9987:87;;-1:-1:-1;10085:6:245;;;:21;;:27;;9987:87;;10085:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10122:48:245;;;;;22371:2:262;10122:48:245;;;22353:21:262;22410:2;22390:18;;;22383:30;22449:24;22429:18;;;22422:52;10122:22:245;;-1:-1:-1;10122:22:245;;-1:-1:-1;22491:18:262;;10122:48:245;22169:346:262;3047:140:12;3095:34;3162:18;3141:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11619:598:245;11788:101;;;;;;;;11822:9;11788:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11688:17;11788:101;;;;;;;11708:7;11788:101;;;;;;;-1:-1:-1;11788:101:245;;;11879:9;;;;;;;;;;-1:-1:-1;11788:101:245;;;;;;11947:18;;11708:7;;11907:59;;987:4:173;;11947:18:245;;11788:101;;11947:18;;:::i;:::-;;;;;;;;;;;11907:8;;;;;;:4;:8;;11947:18;;;;;11907:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:59;11900:66;;:4;;;;:66;;:4;:66;:::i;:::-;-1:-1:-1;11900:66:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;12014:19:245;;:9;12035:19;11996:17;;;;;;;;;:4;:17;;11976;;-1:-1:-1;11996:87:245;;12014:19;;;;;12035;;12014;;11996:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:87;12094:6;;:44;;;;;11976:107;;-1:-1:-1;12094:6:245;;;:38;;:44;;11976:107;;12094:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12148:62:245;;;;;22722:2:262;12148:62:245;;;22704:21:262;22761:2;22741:18;;;22734:30;22800:34;22780:18;;;22773:62;22871:6;22851:18;;;22844:34;12148:22:245;;-1:-1:-1;12148:22:245;;-1:-1:-1;22895:19:262;;12148:62:245;22520:400:262;10183:591:245;10292:9;;10277;:25;;10292:9;10277:25;;;;;10239:17;10277:25;;;;;;;;;;;;;10292:9;;;;10277:25;;;;10327:9;;10312:25;;;;;;;;;;;;;10327:9;;;10312:25;;;;;;10362:9;;10347:25;;;;;;;;;;;;;10362:9;;;10347:25;;;;;;10397:9;;10382:25;;;;;;;;;;;;;;;;10397:9;;;;10382:25;;;10461:43;;;;;10277:25;10461:43;;;;;;;;;;;;;10259:7;;10239:17;10461:43;;;;10277:9;;10461:43;;;10277:9;10461:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10494:9;10461:21;:43::i;:::-;10417:87;;10522:52;1040:4:173;10566:6:245;10555:18;;;;;;;;:::i;:::-;;;;;;;;;;;10522:8;;;;;;:4;:8;;10555:18;;;;;10522:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;10515:59;;:4;;;;:59;;:4;:59;:::i;:::-;-1:-1:-1;10515:59:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;10622:9:245;;10633;;10604:17;;;;;;;;;:4;:17;;10584;;-1:-1:-1;10604:67:245;;10622:9;;;;;10633;;10622;;10604:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:67;10682:6;;:27;;;;;10584:87;;-1:-1:-1;10682:6:245;;;:21;;:27;;10584:87;;10682:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10719:48:245;;;;;23127:2:262;10719:48:245;;;23109:21:262;23166:2;23146:18;;;23139:30;23205:24;23185:18;;;23178:52;10719:22:245;;-1:-1:-1;10719:22:245;;-1:-1:-1;23247:18:262;;10719:48:245;22925:346:262;3532:146:12;3580:40;3653:18;3632:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12223:632:245;12340:9;:44;;;;;;;;12302:17;12340:44;;;;;;;;;;;;;;;;12409:9;;12394:25;;;;;;;;;;;;;;;;12340:44;12409:9;;;;12394:25;;;;;;;12473:43;;;;;12340:44;12473:43;;;;;;;;;;;;;12322:7;;12473:43;;;;12340:9;;12473:43;;;12340:9;12473:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12506:9;12473:21;:43::i;:::-;12429:87;;12534:52;1040:4:173;12578:6:245;12567:18;;;;;;;;:::i;:::-;;;;;;;;;;;12534:8;;;;;;:4;:8;;12567:18;;;;;12534:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;12527:59;;:4;;;;:59;;:4;:59;:::i;:::-;-1:-1:-1;12527:59:245;;;;;;;;;;;;;;;;:::i;:::-;;;;;12596:17;12616:86;1462:1:120;12664:9:245;;;;;;;;;;;885:1:172;12616:4:245;:17;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:86;12713:6;;:60;;;;;12596:106;;-1:-1:-1;12713:6:245;;;:38;;12759:7;;12713:60;;12596:106;;12713:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12783:65:245;;;;;23478:2:262;12783:65:245;;;23460:21:262;23517:2;23497:18;;;23490:30;23556:34;23536:18;;;23529:62;23627:9;23607:18;;;23600:37;12783:22:245;;-1:-1:-1;12783:22:245;;-1:-1:-1;23654:19:262;;;-1:-1:-1;12783:65:245;23276:403:262;4174:572:245;4339:82;;;;;;;;4372:9;4339:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4260:7;4339:82;;;;;;4241:16;-1:-1:-1;4339:82:245;;;;;4411:9;;;;;;;;;;-1:-1:-1;4339:82:245;;;4478:18;;4439:58;;875:4:173;;4478:18:245;;4339:82;;4478:18;;:::i;:::-;;;;;;;;;;;4439:8;;;;;;:4;:8;;4478:18;;;;;4439:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:58;4432:65;;:4;;;;:65;;:4;:65;:::i;:::-;-1:-1:-1;4432:65:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;4545:9:245;:19;4566;;4527:17;;;;;;;;;:4;:17;;4507;;-1:-1:-1;4527:87:245;;4545:19;;;;;4566;;4545;;4527:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:87;4625:6;;:44;;;;;4507:107;;-1:-1:-1;4625:6:245;;;:21;;4654:8;;4625:44;;4507:107;;4625:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4679:60:245;;;;;23886:2:262;4679:60:245;;;23868:21:262;23925:2;23905:18;;;23898:30;23964:34;23944:18;;;23937:62;24035:4;24015:18;;;24008:32;4679:22:245;;-1:-1:-1;4679:22:245;;-1:-1:-1;24057:19:262;;;-1:-1:-1;4679:60:245;23684:398:262;14811:650:245;14930:9;;14915;:25;;14930:9;14915:25;;;;;14877:17;14915:25;;;;;;;;;;;;;14930:9;;;;14915:25;;;;14965:9;;14950:25;;;;;;;;;;;;;14965:9;;;14950:25;;;;;;15000:9;;14985:25;;;;;;;;;;;;;15000:9;;;;14985:25;;;;15020:44;;;;;;;;;;;;;;;;;15119:43;;;;;14915:25;15119:43;;;;;;;;;;;;;14897:7;;14877:17;15119:43;;;;14915:9;;15119:43;;;14915:9;15119:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15152:9;15119:21;:43::i;:::-;15075:87;;15180:52;1040:4:173;15224:6:245;15213:18;;;;;;;;:::i;:::-;;;;;;;;;;;15180:8;;;;;;:4;:8;;15213:18;;;;;15180:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;15173:59;;:4;;;;:59;;:4;:59;:::i;:::-;-1:-1:-1;15173:59:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;15280:9:245;;15262:17;;;;;;;;;:4;:17;;15242;;-1:-1:-1;15262:86:245;;15280:9;;;15242:17;;15280:9;;15262:17;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:86;15359:6;;:27;;;;;15242:106;;-1:-1:-1;15359:6:245;;;:21;;:27;;15242:106;;15359:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15396:58:245;;;;;24289:2:262;15396:58:245;;;24271:21:262;;;24308:18;;;24301:30;24367:34;24347:18;;;24340:62;15396:22:245;;-1:-1:-1;15396:22:245;;-1:-1:-1;24419:18:262;;15396:58:245;24087:356:262;2754:147:12;2803:40;2876:18;2855:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1711:793:259;1782:20;:18;:20::i;:::-;1839:7;;1822:25;;1839:7;;;;;1822:25;;;:::i;:::-;3396:42:262;3384:55;;;3366:74;;3354:2;3339:18;1822:25:259;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1813:6:259;:34;;;;;;;;;;;1903:7;;1875:36;;1903:7;;;1875:36;;;:::i;:::-;3396:42:262;3384:55;;;3366:74;;3354:2;3339:18;1875:36:259;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1857:15:259;:54;;;;;;;;;;;;;;;-1:-1:-1;1950:29:259;1977:1;1950:26;:29::i;:::-;1922:57;;2024:6;2031:1;2024:9;;;;;;;;:::i;:::-;;;;;;;1990;;:45;;;;;;;;;;;;;;;;;;2079:6;2086:1;2079:9;;;;;;;;:::i;:::-;;;;;;;2045;;:45;;;;;;;;;;;;;;;;;;2134:6;2141:1;2134:9;;;;;;;;:::i;:::-;;;;;;;2100;;:45;;;;;;;;;;;;;;;;;;2189:6;2196:1;2189:9;;;;;;;;:::i;:::-;;;;;;;;;;;2155;:45;;;;;;;;;;;2253:9;;2223:52;;2253:9;-1:-1:-1;2223:29:259;:52::i;:::-;2211:64;;:9;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:9;;2327;;2292:57;;2316:9;;;;2327;-1:-1:-1;2292:23:259;:57::i;:::-;2285:64;;:4;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2390:9;;2401;;2366:57;;2390:9;;;;2401;-1:-1:-1;2366:23:259;:57::i;:::-;2359:64;;:4;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2464:9;;2475;;2440:57;;2464:9;;;;2475;-1:-1:-1;2440:23:259;:57::i;:::-;2433:64;;:4;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1711:793:259:o;2459:141:12:-;2508:34;2575:18;2554:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:8;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:8;;;;;1243:204::o;1298:143::-;1377:39;;;;;:7;:39;;;25064:74:262;;;1398:17:8;25154:18:262;;;25147:34;1428:1:8;;1377:7;;25037:18:262;;1377:39:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;14110:695:245:-;14228:9;:44;;;;;;;;14190:17;14228:44;;;;;;;;;;;;;;;;14297:9;;14282:25;;;;;;;;;;;;;14228:44;14297:9;;;14282:25;;;14332:9;;14317:25;;;;;;;;;;;;;14332:9;;;14317:25;;;;;;14367:9;;14352:25;;;;;;;;;;;;;;;;14367:9;;;;14352:25;;;;;;;14431:43;;;;;14228:44;14431:43;;;;;;;;;;;;;14210:7;;14431:43;;;;14228:9;;14431:43;;;14228:9;14431:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14464:9;14431:21;:43::i;:::-;14387:87;;14492:52;1040:4:173;14536:6:245;14525:18;;;;;;;;:::i;:::-;;;;;;;;;;;14492:8;;;;;;:4;:8;;14525:18;;;;;14492:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;14485:59;;:4;;;;:59;;:4;:59;:::i;:::-;-1:-1:-1;14485:59:245;;;;;;;;;;;;;;;;:::i;:::-;;;;;14554:17;14574:86;1462:1:120;14622:9:245;;;;;;;;;;;885:1:172;14574:4:245;:17;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:86;14671:6;;:60;;;;;14554:106;;-1:-1:-1;14671:6:245;;;:38;;14717:7;;14671:60;;14554:106;;14671:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14741:57:245;;;;;25583:2:262;14741:57:245;;;25565:21:262;25622:2;25602:18;;;25595:30;25661:33;25641:18;;;25634:61;14741:22:245;;-1:-1:-1;14741:22:245;;-1:-1:-1;25712:18:262;;;-1:-1:-1;14741:57:245;25381:355:262;9074:541:245;9193:9;;9178;:25;;9193:9;9178:25;;;;;9140:17;9178:25;;;;;;;;;;;;;9193:9;;;;9178:25;;;;9228:9;;9213:25;;;;;;;;;;;;;;;;9228:9;;;;9213:25;;;9292:43;;;;;9178:25;9292:43;;;;;;;;;;;;;9160:7;;9140:17;9292:43;;;;9178:9;;9292:43;;;9178:9;9292:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9325:9;9292:21;:43::i;:::-;9248:87;;9353:52;1040:4:173;9397:6:245;9386:18;;;;;;;;:::i;:::-;;;;;;;;;;;9353:8;;;;;;:4;:8;;9386:18;;;;;9353:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;9346:59;;:4;;;;:59;;:4;:59;:::i;:::-;-1:-1:-1;9346:59:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;9453:9:245;;9464;;9435:17;;;;;;;;;:4;:17;;9415;;-1:-1:-1;9435:67:245;;9453:9;;;;;9464;;9453;;9435:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:67;9513:6;;:27;;;;;9415:87;;-1:-1:-1;9513:6:245;;;:21;;:27;;9415:87;;9513:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9550:58:245;;;;;25943:2:262;9550:58:245;;;25925:21:262;;;25962:18;;;25955:30;26021:34;26001:18;;;25994:62;9550:22:245;;-1:-1:-1;9550:22:245;;-1:-1:-1;26073:18:262;;9550:58:245;25741:356:262;2254:69:127;2296:27;1862:10:103;2322:1:127;2296:27;:::i;8527:541:245:-;8646:9;;8631;:25;;8646:9;8631:25;;;;;8593:17;8631:25;;;;;;;;;;;;;8646:9;;;;8631:25;;;;8681:9;;8666:25;;;;;;;;;;;;;;;;8681:9;;;;8666:25;;;8745:43;;;;;8631:25;8745:43;;;;;;;;;;;;;8613:7;;8593:17;8745:43;;;;8631:9;;8745:43;;;8631:9;8745:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8778:9;8745:21;:43::i;:::-;8701:87;;8806:52;1040:4:173;8850:6:245;8839:18;;;;;;;;:::i;:::-;;;;;;;;;;;8806:8;;;;;;:4;:8;;8839:18;;;;;8806:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;8799:59;;:4;;;;:59;;:4;:59;:::i;:::-;-1:-1:-1;8799:59:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;8906:9:245;;8917;;8888:17;;;;;;;;;:4;:17;;8868;;-1:-1:-1;8888:67:245;;8906:9;;;;;8917;;8906;;8888:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:67;8966:6;;:27;;;;;8868:87;;-1:-1:-1;8966:6:245;;;:21;;:27;;8868:87;;8966:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9003:58:245;;;;;26573:2:262;9003:58:245;;;26555:21:262;;;26592:18;;;26585:30;26651:34;26631:18;;;26624:62;9003:22:245;;-1:-1:-1;9003:22:245;;-1:-1:-1;26703:18:262;;9003:58:245;26371:356:262;2606:142:12;2655:35;2723:18;2702:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:142;:::o;7965:556:245:-;8135:95;;;;;;;;8169:4;8135:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8055:7;8135:95;;;;;;;-1:-1:-1;8135:95:245;;;8220:9;;;;;;;8035:17;8220:9;;-1:-1:-1;8135:95:245;;;8288:18;;8248:59;;987:4:173;;8288:18:245;;8135:95;;8288:18;;:::i;:::-;;;;;;;;;;;8248:8;;;;;;:4;:8;;8288:18;;;;;8248:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:59;8241:66;;:4;;;;:66;;:4;:66;:::i;:::-;-1:-1:-1;8241:66:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;8355:4:245;:14;8371;;8337:17;;;;;;;;;:4;:17;;8317;;-1:-1:-1;8337:77:245;;8355:14;;;;;8371;;8355;;8337:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:77;8425:6;;:27;;;;;8317:97;;-1:-1:-1;8425:6:245;;;:21;;:27;;8317:97;;8425:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8462:52:245;;;;;26934:2:262;8462:52:245;;;26916:21:262;26973:2;26953:18;;;26946:30;27012:28;26992:18;;;26985:56;8462:22:245;;-1:-1:-1;8462:22:245;;-1:-1:-1;27058:18:262;;8462:52:245;26732:350:262;3387:584:245;3494:9;;3479;:25;;3494:9;3479:25;;;;;3442:16;3479:25;;;;;;;;;;;;;3494:9;;;;3479:25;;;;3529:9;;3514:25;;;;;;;;;;;;;3529:9;;;3514:25;;;;;;3564:9;;3549:25;;;;;;;;;;;;;3564:9;;;3549:25;;;;;;3599:9;;3584:25;;;;;;;;;;;;;;;;3599:9;;;;3584:25;;;3662:41;;;;;3479:25;3662:41;;;;;;;;;;;;;3461:7;;3442:16;3662:41;;;;3479:9;;3662:41;;;3479:9;3662:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3694:8;3662:20;:41::i;:::-;3619:84;;3721:51;927:4:173;3764:6:245;3753:18;;;;;;;;:::i;:::-;;;;;;;;;;;3721:8;;;;;;:4;:8;;3753:18;;;;;3721:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:51;3714:58;;:4;;;;:58;;:4;:58;:::i;:::-;-1:-1:-1;3714:58:245;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3820:9:245;;3831;;3802:17;;;;;;;;;:4;:17;;3782;;-1:-1:-1;3802:67:245;;3820:9;;;;;3831;;3820;;3802:17;;;;:4;;:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:67;3880:6;;:27;;;;;3782:87;;-1:-1:-1;3880:6:245;;;:21;;:27;;3782:87;;3880:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3917:47:245;;;;;27289:2:262;3917:47:245;;;27271:21:262;27328:2;27308:18;;;27301:30;27367:23;27347:18;;;27340:51;3917:22:245;;-1:-1:-1;3917:22:245;;-1:-1:-1;27408:18:262;;3917:47:245;27087:345:262;7111:657:245;7212:9;:44;;;;;;;;7175:16;7212:44;;;;;;;;;;;;;;;;7281:9;;7266:25;;;;;;;;;;;;;7212:44;7281:9;;;7266:25;;;7316:9;;7301:25;;;;;;;;;;;;;7316:9;;;7301:25;;;;;;7351:9;;7336:25;;;;;;;;;;;;;;;;7351:9;;;;7336:25;;;;;;;7414:41;;;;;7212:44;7414:41;;;;;;;;;;;;;7194:7;;7414:41;;;;7212:9;;7414:41;;;7212:9;7414:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7446:8;7414:20;:41::i;:::-;7371:84;;7473:51;927:4:173;7516:6:245;7505:18;;;;;;;;:::i;:::-;;;;;;;;;;;7473:8;;;;;;:4;:8;;7505:18;;;;;7473:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:51;7466:58;;:4;;;;:58;;:4;:58;:::i;:::-;-1:-1:-1;7466:58:245;;;;;;;;;;;;;;;;:::i;:::-;;;;;7534:17;7554:86;1462:1:120;7602:9:245;;;;;;;;;;;885:1:172;7554:4:245;:17;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:86;7651:6;;:44;;;;;7534:106;;-1:-1:-1;7651:6:245;;;:21;;7680:8;;7651:44;;7534:106;;7651:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7705:56:245;;;;;27639:2:262;7705:56:245;;;27621:21:262;27678:2;27658:18;;;27651:30;27717:32;27697:18;;;27690:60;7705:22:245;;-1:-1:-1;7705:22:245;;-1:-1:-1;27767:18:262;;;-1:-1:-1;7705:56:245;27437:354:262;574:611:256;-1:-1:-1;;;;;;;;;;;;;;;;;687:20:256;720:4;:11;;;:18;741:1;720:22;;;;:::i;:::-;710:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;710:33:256;;687:56;;753:21;789:4;:11;;;:18;810:1;789:22;;;;:::i;:::-;777:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;753:59;;828:9;823:168;859:1;843:6;:13;:17;;;;:::i;:::-;839:1;:21;823:168;;;924:4;:11;;;936:1;924:14;;;;;;;;:::i;:::-;;;;;;;912:6;919:1;912:9;;;;;;;;:::i;:::-;;;;;;:26;;;;965:4;:12;;;978:1;965:15;;;;;;;;:::i;:::-;;;;;;;;;952:7;960:1;952:10;;;;;;;;:::i;:::-;;;;:28;;;;;;;;;;-1:-1:-1;862:3:256;;823:168;;;;1028:5;1000:6;1023:1;1007:6;:13;:17;;;;:::i;:::-;1000:25;;;;;;;;:::i;:::-;;;;;;:33;;;;1085:6;1072:21;;1043:7;1067:1;1051:6;:13;:17;;;;:::i;:::-;1043:26;;;;;;;;:::i;:::-;;;;:50;;;;;;;;;;-1:-1:-1;1104:22:256;;;1136:11;;;:20;-1:-1:-1;1104:22:256;;574:611;-1:-1:-1;;574:611:256:o;2699:791::-;2858:12;2890:43;;;;;2886:568;;3083:44;;;25094:42:262;25082:55;;3083:44:256;;;25064:74:262;3109:17:256;25154:18:262;;;25147:34;;;;3054:74:256;;1321:4:173;;25037:18:262;;3083:44:256;;;;;;;;;;;;;;3054:4;;:74;:8;:74::i;:::-;3176:29;;;28631:42:262;28619:55;;3176:29:256;;;28601:74:262;3203:1:256;28691:18:262;;;28684:45;;;;3047:81:256;;-1:-1:-1;3149:57:256;;1475:4:173;;28574:18:262;;3176:29:256;28391:344:262;3149:57:256;3142:64;;2886:568;;;3269:59;;;28996:42:262;28984:55;;3269:59:256;;;28966:74:262;434:1:172;29056:18:262;;;29049:75;;;;3323:4:256;29140:18:262;;;29133:50;3244:85:256;;1272:4:173;;28939:18:262;;3269:59:256;28740:449:262;3244:85:256;3373:69;;;29456:42:262;29444:55;;;3373:69:256;;;29426:74:262;29536:55;;29516:18;;;29509:83;;;;434:1:172;29608:18:262;;;29601:75;3237:92:256;;-1:-1:-1;3350:93:256;;1428:4:173;;29399:18:262;;3373:69:256;29194:488:262;3350:93:256;3343:100;;2886:568;3470:13;:4;:11;:13::i;:::-;3463:20;2699:791;-1:-1:-1;;;;;2699:791:256:o;437:131::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;511:50:256;;526:9;;;;;-1:-1:-1;511:50:256;;;526:9;;;511:50;;545:14;;;;;;;;;;;-1:-1:-1;;511:50:256;;;;;;545:14;;;;;;;;;;;;;;;;;;;;-1:-1:-1;511:50:256;;504:57;437:131;-1:-1:-1;437:131:256:o;4073:565:259:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4254:21:259;4312:1;4292:10;:17;:21;;;;:::i;:::-;4278:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4278:36:259;;;;;;;;;;;;;;;4254:60;;4329:9;4324:154;4368:1;4348:10;:17;:21;;;;:::i;:::-;4344:1;:25;4324:154;;;4400:67;;;;;;;;4408:10;4419:1;4423;4419:5;;;;:::i;:::-;4408:17;;;;;;;;:::i;:::-;;;;;;;4400:67;;;;;;4427:4;4400:67;;;;;;4433:2;4400:67;;;;;;4452:1;4400:67;;;;;;4457:9;;;;;;;;;;;;4400:67;;;4390:4;4395:1;4390:7;;;;;;;;:::i;:::-;;;;;;;;;;:77;4371:3;;4324:154;;;;4508:10;4519:1;4508:13;;;;;;;;:::i;:::-;;;;;;;;;;;;4488:33;;;;4531:11;;:18;4559:35;;;;:15;;;:35;4488:17;4604:23;;;:27;4488:6;4073:565;-1:-1:-1;4073:565:259:o;4644:610::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4828:21:259;4886:1;4866:10;:17;:21;;;;:::i;:::-;4852:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4852:36:259;;;;;;;;;;;;;;;4828:60;;4903:9;4935:1;4915:10;:17;:21;;;;:::i;:::-;4903:33;;4898:158;4938:5;;4898:158;;4978:67;;;;;;;;4986:10;5001:1;4997;:5;;;;:::i;:::-;4986:17;;;;;;;;:::i;:::-;;;;;;;4978:67;;;;;;5005:4;4978:67;;;;;;5011:2;4978:67;;;;;;5030:1;4978:67;;;;;;5035:9;;;;;;;;;;;;4978:67;;;4964:4;4973:1;4969;:5;;;;:::i;:::-;4964:11;;;;;;;;:::i;:::-;;;;;;:81;;;;4945:3;;;;;:::i;:::-;;;;4898:158;;;;5087:10;5118:1;5098:10;:17;:21;;;;:::i;:::-;5087:33;;;;;;;;:::i;:::-;;;;;;;;;;;;5066:54;;;;5130:11;;:18;5158:37;;;;:16;;;:37;5205:22;;;:42;;;;5066:6;4644:610;-1:-1:-1;4644:610:259:o;3839:104:127:-;3930:4;3906:30;;;;;:::i;:::-;3396:42:262;3384:55;;;3366:74;;3354:2;3339:18;3906:30:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3896:7:127;:40;;;;;;;;;;;;;;;3839:104::o;2510:307:259:-;2577:18;2607:25;2635:29;2648:5;2655:8;2635:12;:29::i;:::-;2607:57;;2679:9;2674:114;2698:5;2694:9;;:1;:9;2674:114;;;2724:6;2731:1;2724:9;;;;;;;;:::i;:::-;;;;;;;;;;;2750:6;;2724:53;;;;;:17;2750:6;;;2724:53;;;25064:74:262;2759:17:259;25154:18:262;;;25147:34;2724:17:259;;;;;25037:18:262;;2724:53:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2705:3:259;;2674:114;;;-1:-1:-1;2804:6:259;2510:307;-1:-1:-1;;2510:307:259:o;3536:531::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3688:75:259;;;;;;;;-1:-1:-1;3688:75:259;;;;;;;;;;3736:4;3688:75;;;;3742:2;3688:75;;;;;;;;;;;3774:7;;:40;;;;;3688:75;;3774:7;;:18;;:40;;3688:75;;280:29:125;;3774:40:259;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3877:15:259;;;3824:89;;;;;:44;3877:15;;;3824:89;;;25064:74:262;3895:17:259;25154:18:262;;;25147:34;3824:44:259;;;;;;25037:18:262;3824:89:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3923:15:259;;3992:52;;;;;;;;4014:7;3992:52;;4023:6;3992:52;;;;3962:9;3992:52;;;;;;3923:15;3992:52;;;;3923:137;;;;;:15;;;;;:31;;3962:9;3923:137;;3986:4;;3992:52;3923:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2823:707::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3032:9:259;2987:55;;3003:9;2987:55;;;2983:108;;;3070:9;;3081;2983:108;-1:-1:-1;3108:57:259;;;;;;;;;;;;;;;;;;;;;3138:4;3108:57;;;;3144:2;3108:57;;;;;;;;;;;3176:7;;:40;;;;;3108:57;;3176:7;;:18;;:40;;3108:57;;280:29:125;;3176:40:259;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3280:15:259;;;3226:90;;;;;:45;3280:15;;;3226:90;;;25064:74:262;3298:17:259;25154:18:262;;;25147:34;3226:45:259;;;;;;25037:18:262;3226:90:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3380:15:259;;;3326:90;;;;;:45;3380:15;;;3326:90;;;25064:74:262;3398:17:259;25154:18:262;;;25147:34;3326:45:259;;;;;;25037:18:262;3326:90:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3426:15:259;;3464:52;;;;;;;;3486:7;3464:52;;3495:6;3464:52;;;;3503:9;3464:52;;;;3426:15;3464:52;;;;3426:97;;;;;:15;;;;;:31;;:97;;3458:4;;3464:52;3426:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2823:707;;;;;:::o;2561:132:256:-;2618:12;2660:4;:12;;;2674:4;:11;;;2649:37;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2642:44;;2561:132;;;:::o;6188:318:127:-;6262:25;6324:5;6308:22;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6308:22:127;;6299:31;;6345:7;6340:160;6362:5;6358:9;;:1;:9;;;6340:160;;;6430:2;6400:33;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6388:6;6395:1;6388:9;;;;;;;;;;:::i;:::-;;;;;;:45;;;;;;;;;;;6447:6;6454:1;6447:9;;;;;;;;;;:::i;:::-;;;;;;;;;;;:42;;;;;6470:4;6447:42;;;25064:74:262;25154:18;;;25147:34;;;6447:14:127;;;;;;;25037:18:262;;6447:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6369:3:127;;;;;-1:-1:-1;6340:160:127;;-1:-1:-1;6340:160:127;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;14:660:262;204:2;216:21;;;286:13;;189:18;;;308:22;;;156:4;;387:15;;;361:2;346:18;;;156:4;430:218;444:6;441:1;438:13;430:218;;;509:13;;524:42;505:62;493:75;;597:2;623:15;;;;588:12;;;;466:1;459:9;430:218;;;-1:-1:-1;665:3:262;;14:660;-1:-1:-1;;;;;14:660:262:o;679:348::-;721:3;759:5;753:12;786:6;781:3;774:19;842:6;835:4;828:5;824:16;817:4;812:3;808:14;802:47;894:1;887:4;878:6;873:3;869:16;865:27;858:38;1016:4;946:66;941:2;933:6;929:15;925:88;920:3;916:98;912:109;905:116;;;679:348;;;;:::o;1032:1767::-;1236:4;1284:2;1273:9;1269:18;1314:2;1303:9;1296:21;1337:6;1372;1366:13;1403:6;1395;1388:22;1441:2;1430:9;1426:18;1419:25;;1503:2;1493:6;1490:1;1486:14;1475:9;1471:30;1467:39;1453:53;;1541:2;1533:6;1529:15;1562:1;1572:1198;1586:6;1583:1;1580:13;1572:1198;;;1675:66;1651:22;;;1647:95;1635:108;;1766:13;;1853:9;;1864:42;1849:58;1834:74;;1955:2;1947:11;;;1941:18;1818:2;1979:15;;;1972:27;;;2060:19;;1806:15;;;2092:24;;;2247:21;;;2150:2;2200:1;2196:16;;;2184:29;;2180:38;;;2138:15;;;;-1:-1:-1;2306:355:262;2322:8;2317:3;2314:17;2306:355;;;2424:66;2415:6;2407;2403:19;2399:92;2392:5;2385:107;2519:42;2554:6;2543:8;2537:15;2519:42;:::i;:::-;2604:2;2590:17;;;;2509:52;;-1:-1:-1;2633:14:262;;;;;2350:1;2341:11;2306:355;;;-1:-1:-1;2684:6:262;;-1:-1:-1;;;2725:2:262;2748:12;;;;2713:15;;;;;-1:-1:-1;1608:1:262;1601:9;1572:1198;;;-1:-1:-1;2787:6:262;;1032:1767;-1:-1:-1;;;;;;1032:1767:262:o;3451:492::-;3503:3;3541:5;3535:12;3568:6;3563:3;3556:19;3600:4;3595:3;3591:14;3584:21;;3639:4;3632:5;3628:16;3662:1;3672:246;3686:6;3683:1;3680:13;3672:246;;;3751:13;;3766:66;3747:86;3735:99;;3863:4;3854:14;;;;3891:17;;;;3708:1;3701:9;3672:246;;;-1:-1:-1;3934:3:262;;3451:492;-1:-1:-1;;;;3451:492:262:o;3948:1202::-;4166:4;4214:2;4203:9;4199:18;4244:2;4233:9;4226:21;4267:6;4302;4296:13;4333:6;4325;4318:22;4371:2;4360:9;4356:18;4349:25;;4433:2;4423:6;4420:1;4416:14;4405:9;4401:30;4397:39;4383:53;;4471:2;4463:6;4459:15;4492:1;4502:619;4516:6;4513:1;4510:13;4502:619;;;4605:66;4593:9;4585:6;4581:22;4577:95;4572:3;4565:108;4702:6;4696:13;4748:2;4742:9;4779:2;4771:6;4764:18;4809:48;4853:2;4845:6;4841:15;4827:12;4809:48;:::i;:::-;4795:62;;4906:2;4902;4898:11;4892:18;4870:40;;4959:6;4951;4947:19;4942:2;4934:6;4930:15;4923:44;4990:51;5034:6;5018:14;4990:51;:::i;:::-;4980:61;-1:-1:-1;;;5076:2:262;5099:12;;;;5064:15;;;;;4538:1;4531:9;4502:619;;5155:841;5317:4;5365:2;5354:9;5350:18;5395:2;5384:9;5377:21;5418:6;5453;5447:13;5484:6;5476;5469:22;5522:2;5511:9;5507:18;5500:25;;5584:2;5574:6;5571:1;5567:14;5556:9;5552:30;5548:39;5534:53;;5622:2;5614:6;5610:15;5643:1;5653:314;5667:6;5664:1;5661:13;5653:314;;;5756:66;5744:9;5736:6;5732:22;5728:95;5723:3;5716:108;5847:40;5880:6;5871;5865:13;5847:40;:::i;:::-;5837:50;-1:-1:-1;5922:2:262;5945:12;;;;5910:15;;;;;5689:1;5682:9;5653:314;;6001:1113;6203:4;6251:2;6240:9;6236:18;6281:2;6270:9;6263:21;6304:6;6339;6333:13;6370:6;6362;6355:22;6408:2;6397:9;6393:18;6386:25;;6470:2;6460:6;6457:1;6453:14;6442:9;6438:30;6434:39;6420:53;;6508:2;6500:6;6496:15;6529:1;6539:546;6553:6;6550:1;6547:13;6539:546;;;6642:66;6630:9;6622:6;6618:22;6614:95;6609:3;6602:108;6739:6;6733:13;6789:42;6784:2;6778:9;6774:58;6766:6;6759:74;6880:2;6876;6872:11;6866:18;6846:38;;6921:2;6916;6908:6;6904:15;6897:27;6947:58;7001:2;6993:6;6989:15;6975:12;6947:58;:::i;:::-;6937:68;-1:-1:-1;;7040:2:262;7063:12;;;;7028:15;;;;;6575:1;6568:9;6539:546;;8314:557;8397:44;8437:3;8429:5;8423:12;7783:42;7775:5;7769:12;7765:61;7760:3;7753:74;7888:42;7880:4;7873:5;7869:16;7863:23;7859:72;7852:4;7847:3;7843:14;7836:96;7993:8;7985:4;7978:5;7974:16;7968:23;7964:38;7957:4;7952:3;7948:14;7941:62;8066:4;8059:5;8055:16;8049:23;8046:1;8035:38;8028:4;8023:3;8019:14;8012:62;8135:42;8127:4;8120:5;8116:16;8110:23;8106:72;8099:4;8094:3;8090:14;8083:96;;;7692:493;8397:44;8504:4;8497:5;8493:16;8487:23;8480:31;8473:39;8466:4;8461:3;8457:14;8450:63;8574:34;8566:4;8559:5;8555:16;8549:23;8545:64;8538:4;8533:3;8529:14;8522:88;8671:34;8663:4;8656:5;8652:16;8646:23;8642:64;8635:4;8630:3;8626:14;8619:88;8379:3;8753:4;8746:5;8742:16;8736:23;8793:6;8784;8779:3;8775:16;8768:32;8816:49;8857:6;8852:3;8848:16;8834:12;8816:49;:::i;:::-;8809:56;8314:557;-1:-1:-1;;;;8314:557:262:o;8876:305::-;9087:2;9076:9;9069:21;9050:4;9107:68;9171:2;9160:9;9156:18;9148:6;9107:68;:::i;:::-;9099:76;8876:305;-1:-1:-1;;;8876:305:262:o;9186:437::-;9265:1;9261:12;;;;9308;;;9329:61;;9383:4;9375:6;9371:17;9361:27;;9329:61;9436:2;9428:6;9425:14;9405:18;9402:38;9399:218;;9473:77;9470:1;9463:88;9574:4;9571:1;9564:15;9602:4;9599:1;9592:15;9399:218;;9186:437;;;:::o;9628:184::-;9680:77;9677:1;9670:88;9777:4;9774:1;9767:15;9801:4;9798:1;9791:15;9942:517;10043:2;10038:3;10035:11;10032:421;;;10079:5;10076:1;10069:16;10123:4;10120:1;10110:18;10193:2;10181:10;10177:19;10174:1;10170:27;10164:4;10160:38;10229:4;10217:10;10214:20;10211:47;;;-1:-1:-1;10252:4:262;10211:47;10307:2;10302:3;10298:12;10295:1;10291:20;10285:4;10281:31;10271:41;;10362:81;10380:2;10373:5;10370:13;10362:81;;;10439:1;10425:16;;10406:1;10395:13;10362:81;;;10366:3;;9942:517;;;:::o;10695:1414::-;10819:3;10813:10;10846:18;10838:6;10835:30;10832:56;;;10868:18;;:::i;:::-;10897:96;10986:6;10946:38;10978:4;10972:11;10946:38;:::i;:::-;10940:4;10897:96;:::i;:::-;11042:4;11073:2;11062:14;;11090:1;11085:767;;;;11896:1;11913:6;11910:89;;;-1:-1:-1;11965:19:262;;;11959:26;11910:89;10601:66;10592:1;10588:11;;;10584:84;10580:89;10570:100;10676:1;10672:11;;;10567:117;12012:81;;11055:1048;;11085:767;9889:1;9882:14;;;9926:4;9913:18;;11133:66;11121:79;;;11297:222;11311:7;11308:1;11305:14;11297:222;;;11393:19;;;11387:26;11372:42;;11500:4;11485:20;;;;11453:1;11441:14;;;;11327:12;11297:222;;;11301:3;11547:6;11538:7;11535:19;11532:261;;;11608:19;;;11602:26;11709:66;11691:1;11687:14;;;11703:3;11683:24;11679:97;11675:102;11660:118;11645:134;;11532:261;-1:-1:-1;;;;11839:1:262;11823:14;;;11819:22;11806:36;;-1:-1:-1;10695:1414:262:o;12114:218::-;12261:2;12250:9;12243:21;12224:4;12281:45;12322:2;12311:9;12307:18;12299:6;12281:45;:::i;12741:184::-;12811:6;12864:2;12852:9;12843:7;12839:23;12835:32;12832:52;;;12880:1;12877;12870:12;12832:52;-1:-1:-1;12903:16:262;;12741:184;-1:-1:-1;12741:184:262:o;13655:1597::-;13714:3;13753:4;13748:3;13744:14;13797:42;13789:5;13783:12;13779:61;13774:3;13767:74;13887:4;13880:5;13876:16;13870:23;13925:4;13918;13913:3;13909:14;13902:28;13952:4;13985:12;13979:19;14020:6;14014:4;14007:20;14054:3;14049;14045:13;14036:22;;14111:3;14101:6;14098:1;14094:14;14089:3;14085:24;14081:34;14067:48;;14156:4;14142:12;14138:23;14124:37;;14179:1;14189:809;14203:6;14200:1;14197:13;14189:809;;;14288:66;14282:3;14274:6;14270:16;14266:89;14259:5;14252:104;14385:6;14379:13;14435:42;14430:2;14424:9;14420:58;14412:6;14405:74;14544:8;14536:4;14532:2;14528:13;14522:20;14518:35;14511:4;14503:6;14499:17;14492:62;14621:4;14617:2;14613:13;14607:20;14604:1;14593:35;14586:4;14578:6;14574:17;14567:62;14694:42;14686:4;14682:2;14678:13;14672:20;14668:69;14661:4;14653:6;14649:17;14642:96;14787:4;14783:2;14779:13;14773:20;14751:42;;14832:3;14825:4;14817:6;14813:17;14806:30;14859:51;14905:3;14897:6;14893:16;14877:14;14859:51;:::i;:::-;14849:61;-1:-1:-1;;14945:4:262;14933:17;;;;14972:16;;;;;14225:1;14218:9;14189:809;;;14193:3;;;;15046:4;15039:5;15035:16;15029:23;15061:50;15105:4;15100:3;15096:14;15080;8267:34;8256:46;8244:59;;8190:119;15061:50;;15159:4;15152:5;15148:16;15142:23;15174:50;15218:4;15213:3;15209:14;15193;8267:34;8256:46;8244:59;;8190:119;15257:287;15456:2;15445:9;15438:21;15419:4;15476:62;15534:2;15523:9;15519:18;15511:6;15476:62;:::i;16624:1052::-;16703:6;16756:2;16744:9;16735:7;16731:23;16727:32;16724:52;;;16772:1;16769;16762:12;16724:52;16805:9;16799:16;16838:18;16830:6;16827:30;16824:50;;;16870:1;16867;16860:12;16824:50;16893:22;;16946:4;16938:13;;16934:27;-1:-1:-1;16924:55:262;;16975:1;16972;16965:12;16924:55;17008:2;17002:9;17034:18;17026:6;17023:30;17020:56;;;17056:18;;:::i;:::-;17105:2;17099:9;17252:66;17247:2;17178:66;17171:4;17163:6;17159:17;17155:90;17151:99;17147:172;17139:6;17135:185;17386:6;17374:10;17371:22;17350:18;17338:10;17335:34;17332:62;17329:88;;;17397:18;;:::i;:::-;17433:2;17426:22;17457;;;17498:15;;;17515:2;17494:24;17491:37;-1:-1:-1;17488:57:262;;;17541:1;17538;17531:12;17488:57;17590:6;17585:2;17581;17577:11;17572:2;17564:6;17560:15;17554:43;17643:1;17617:19;;;17638:2;17613:28;17606:39;;;;17621:6;16624:1052;-1:-1:-1;;;;16624:1052:262:o;17681:301::-;17810:3;17848:6;17842:13;17894:6;17887:4;17879:6;17875:17;17870:3;17864:37;17956:1;17920:16;;17945:13;;;-1:-1:-1;17920:16:262;17681:301;-1:-1:-1;17681:301:262:o;20219:184::-;20271:77;20268:1;20261:88;20368:4;20365:1;20358:15;20392:4;20389:1;20382:15;20408:267;20538:42;20531:50;;;20479;;;20475:107;;20594:52;;20591:78;;;20649:18;;:::i;:::-;20408:267;;;;:::o;24701:184::-;24753:77;24750:1;24743:88;24850:4;24847:1;24840:15;24874:4;24871:1;24864:15;26102:264;26230:42;26171:50;;;26223;;;26167:107;;26286:51;;26283:77;;;26340:18;;:::i;27796:125::-;27861:9;;;27882:10;;;27879:36;;;27895:18;;:::i;27926:128::-;27993:9;;;28014:11;;;28011:37;;;28028:18;;:::i;29687:196::-;29726:3;29754:5;29744:39;;29763:18;;:::i;:::-;-1:-1:-1;29810:66:262;29799:78;;29687:196::o;30421:277::-;30488:6;30541:2;30529:9;30520:7;30516:23;30512:32;30509:52;;;30557:1;30554;30547:12;30509:52;30589:9;30583:16;30642:5;30635:13;30628:21;30621:5;30618:32;30608:60;;30664:1;30661;30654:12;30703:370;30917:3;30902:19;;30930:44;30906:9;30956:6;7783:42;7775:5;7769:12;7765:61;7760:3;7753:74;7888:42;7880:4;7873:5;7869:16;7863:23;7859:72;7852:4;7847:3;7843:14;7836:96;7993:8;7985:4;7978:5;7974:16;7968:23;7964:38;7957:4;7952:3;7948:14;7941:62;8066:4;8059:5;8055:16;8049:23;8046:1;8035:38;8028:4;8023:3;8019:14;8012:62;8135:42;8127:4;8120:5;8116:16;8110:23;8106:72;8099:4;8094:3;8090:14;8083:96;;;7692:493;30930:44;31023:42;31015:6;31011:55;31005:3;30994:9;30990:19;30983:84;30703:370;;;;;:::o;31078:277::-;31146:6;31199:2;31187:9;31178:7;31174:23;31170:32;31167:52;;;31215:1;31212;31205:12;31167:52;31247:9;31241:16;31300:5;31297:1;31286:20;31279:5;31276:31;31266:59;;31321:1;31318;31311:12;31360:846;31731:44;31765:9;31757:6;7783:42;7775:5;7769:12;7765:61;7760:3;7753:74;7888:42;7880:4;7873:5;7869:16;7863:23;7859:72;7852:4;7847:3;7843:14;7836:96;7993:8;7985:4;7978:5;7974:16;7968:23;7964:38;7957:4;7952:3;7948:14;7941:62;8066:4;8059:5;8055:16;8049:23;8046:1;8035:38;8028:4;8023:3;8019:14;8012:62;8135:42;8127:4;8120:5;8116:16;8110:23;8106:72;8099:4;8094:3;8090:14;8083:96;;;7692:493;31731:44;31832:6;31826:13;31823:1;31812:28;31806:3;31795:9;31791:19;31784:57;31910:4;31902:6;31898:17;31892:24;31889:1;31878:39;31872:3;31861:9;31857:19;31850:68;31973:4;31965:6;31961:17;31955:24;31949:3;31938:9;31934:19;31927:53;32035:4;32027:6;32023:17;32017:24;32011:3;32000:9;31996:19;31989:53;32079:3;32073;32062:9;32058:19;32051:32;32120:1;32114:3;32103:9;32099:19;32092:30;32159:4;32153:3;32142:9;32138:19;32131:33;31712:4;32196:3;32185:9;32181:19;32173:27;;31360:846;;;;;:::o;32434:962::-;32677:2;32666:9;32659:21;32640:4;32703:45;32744:2;32733:9;32729:18;32721:6;32703:45;:::i;:::-;32796:9;32788:6;32784:22;32779:2;32768:9;32764:18;32757:50;32827:6;32862;32856:13;32893:6;32885;32878:22;32928:2;32920:6;32916:15;32909:22;;32987:2;32977:6;32974:1;32970:14;32962:6;32958:27;32954:36;33025:2;33017:6;33013:15;33046:1;33056:311;33070:6;33067:1;33064:13;33056:311;;;33156:66;33147:6;33139;33135:19;33131:92;33126:3;33119:105;33247:40;33280:6;33271;33265:13;33247:40;:::i;:::-;33322:2;33345:12;;;;33237:50;;-1:-1:-1;33310:15:262;;;;;33092:1;33085:9;33056:311;;;-1:-1:-1;33384:6:262;;32434:962;-1:-1:-1;;;;;;;;32434:962:262:o;33558:586::-;33896:2;33885:9;33878:21;33859:4;33922:49;33967:2;33956:9;33952:18;33478:1;33466:14;;33512:6;33505:4;33496:14;;33489:30;33544:2;33535:12;;33401:152;33922:49;34019:9;34011:6;34007:22;34002:2;33991:9;33987:18;33980:50;34047:37;34077:6;33478:1;33466:14;;33512:6;33505:4;33496:14;;33489:30;33544:2;33535:12;;33401:152;34047:37;34039:45;;;34132:4;34124:6;34120:17;34115:2;34104:9;34100:18;34093:45;33558:586;;;;:::o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","LIQUIDITY_PARAMS()":"93ad73ed","MAX_PRICE_LIMIT()":"542524dd","MIN_PRICE_LIMIT()":"c7b8e15d","REMOVE_LIQUIDITY_PARAMS()":"39cd2013","SWAP_PARAMS()":"b1a73b8a","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","setupRouterCurrenciesAndPoolsWithLiquidity()":"b0f3d802","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_gas_bytecodeSize()":"5a9fba9a","test_gas_nativeIn_swapExactIn_1Hop()":"1546ac12","test_gas_nativeIn_swapExactIn_2Hops()":"567dc4b8","test_gas_nativeIn_swapExactIn_3Hops()":"f0cd759a","test_gas_nativeIn_swapExactInputSingle()":"a0775dd8","test_gas_nativeIn_swapExactOut_1Hop_sweepExcessETH()":"9d06c51d","test_gas_nativeIn_swapExactOut_2Hops_sweepExcessETH()":"40d8983e","test_gas_nativeIn_swapExactOut_3Hops_sweepExcessETH()":"bd9ab727","test_gas_nativeIn_swapExactOutputSingle_sweepExcessETH()":"0bc1c41e","test_gas_nativeOut_swapExactIn_1Hop()":"0feca937","test_gas_nativeOut_swapExactInputSingle()":"0a7d9154","test_gas_nativeOut_swapExactOut_1Hop()":"5999bb35","test_gas_nativeOut_swapExactOut_3Hops()":"a3a4aec0","test_gas_nativeOut_swapExactOutputSingle()":"88e54107","test_gas_swapExactIn_1Hop_oneForZero()":"258ae5a1","test_gas_swapExactIn_1Hop_zeroForOne()":"29482330","test_gas_swapExactIn_2Hops()":"64724a2d","test_gas_swapExactIn_3Hops()":"ede3d78a","test_gas_swapExactInputSingle_zeroForOne()":"4e9c9495","test_gas_swapExactOut_1Hop_oneForZero()":"c148f4f8","test_gas_swapExactOut_1Hop_zeroForOne()":"c9bcb77a","test_gas_swapExactOut_2Hops()":"7ed16fa0","test_gas_swapExactOut_3Hops()":"8a1a4893","test_gas_swapExactOutputSingle_zeroForOne()":"e54add68","test_router_initcodeHash()":"20c27a5c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REMOVE_LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SWAP_PARAMS\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setupRouterCurrenciesAndPoolsWithLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_bytecodeSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeIn_swapExactIn_1Hop\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeIn_swapExactIn_2Hops\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeIn_swapExactIn_3Hops\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeIn_swapExactInputSingle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeIn_swapExactOut_1Hop_sweepExcessETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeIn_swapExactOut_2Hops_sweepExcessETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeIn_swapExactOut_3Hops_sweepExcessETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeIn_swapExactOutputSingle_sweepExcessETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeOut_swapExactIn_1Hop\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeOut_swapExactInputSingle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeOut_swapExactOut_1Hop\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeOut_swapExactOut_3Hops\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_nativeOut_swapExactOutputSingle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactIn_1Hop_oneForZero\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactIn_1Hop_zeroForOne\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactIn_2Hops\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactIn_3Hops\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactInputSingle_zeroForOne\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactOut_1Hop_oneForZero\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactOut_1Hop_zeroForOne\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactOut_2Hops\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactOut_3Hops\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swapExactOutputSingle_zeroForOne\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_router_initcodeHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/router/V4Router.gas.t.sol\":\"V4RouterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@uniswap/v4-core/=lib/v4-core/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/v4-core/lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/v4-core/lib/solmate/\",\":v4-core/=lib/v4-core/src/\"]},\"sources\":{\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"lib/v4-core/lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/v4-core/lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe\",\"dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b\"]},\"lib/v4-core/lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/v4-core/lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/v4-core/lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/v4-core/lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/v4-core/lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/v4-core/lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/v4-core/lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/v4-core/lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/v4-core/lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/v4-core/lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/v4-core/lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/v4-core/lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/v4-core/lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/v4-core/lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/v4-core/lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/v4-core/lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/v4-core/lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"lib/v4-core/lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC20.sol\":{\"keccak256\":\"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e\",\"dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu\"]},\"lib/v4-core/lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/v4-core/lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"lib/v4-core/src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"lib/v4-core/src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"lib/v4-core/src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"lib/v4-core/src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"lib/v4-core/src/NoDelegateCall.sol\":{\"keccak256\":\"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6\",\"dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18\"]},\"lib/v4-core/src/PoolManager.sol\":{\"keccak256\":\"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72\",\"dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu\"]},\"lib/v4-core/src/ProtocolFees.sol\":{\"keccak256\":\"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa\",\"dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"lib/v4-core/src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb\",\"dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn\"]},\"lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-core/src/libraries/Hooks.sol\":{\"keccak256\":\"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb\",\"dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx\"]},\"lib/v4-core/src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"lib/v4-core/src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"lib/v4-core/src/libraries/Pool.sol\":{\"keccak256\":\"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407\",\"dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey\"]},\"lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba\",\"dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"lib/v4-core/src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138\",\"dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF\"]},\"lib/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0\",\"dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY\"]},\"lib/v4-core/src/libraries/SwapMath.sol\":{\"keccak256\":\"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812\",\"dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD\"]},\"lib/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]},\"lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5\",\"dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV\"]},\"lib/v4-core/src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572\",\"dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn\"]},\"lib/v4-core/src/test/ActionsRouter.sol\":{\"keccak256\":\"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef\",\"dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR\"]},\"lib/v4-core/src/test/BaseTestHooks.sol\":{\"keccak256\":\"0x8bb1b533b9df117bc4c85ef9d4c2afa7758771581a752e0a2a69dcae1041e546\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://eebf2728b8bda26bfd0e8c9726950f9cad3f2b8ffa5951117f2c2a9534e37ba6\",\"dweb:/ipfs/QmPCbUDp3e3sF5EPfte4v3VEF9Lhz8db6jLhZQJxXDvBSE\"]},\"lib/v4-core/src/test/PoolClaimsTest.sol\":{\"keccak256\":\"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887\",\"dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW\"]},\"lib/v4-core/src/test/PoolDonateTest.sol\":{\"keccak256\":\"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb\",\"dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1\",\"dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTestNoChecks.sol\":{\"keccak256\":\"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58\",\"dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey\"]},\"lib/v4-core/src/test/PoolNestedActionsTest.sol\":{\"keccak256\":\"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765\",\"dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx\"]},\"lib/v4-core/src/test/PoolSwapTest.sol\":{\"keccak256\":\"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753\",\"dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j\"]},\"lib/v4-core/src/test/PoolTakeTest.sol\":{\"keccak256\":\"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193\",\"dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2\"]},\"lib/v4-core/src/test/PoolTestBase.sol\":{\"keccak256\":\"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a\",\"dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV\"]},\"lib/v4-core/src/test/SwapRouterNoChecks.sol\":{\"keccak256\":\"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e\",\"dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"lib/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"lib/v4-core/src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]},\"lib/v4-core/test/utils/Constants.sol\":{\"keccak256\":\"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3\",\"dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na\"]},\"lib/v4-core/test/utils/CurrencySettler.sol\":{\"keccak256\":\"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58\",\"dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP\"]},\"lib/v4-core/test/utils/Deployers.sol\":{\"keccak256\":\"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6\",\"dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J\"]},\"lib/v4-core/test/utils/LiquidityAmounts.sol\":{\"keccak256\":\"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a\",\"dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY\"]},\"lib/v4-core/test/utils/SortTokens.sol\":{\"keccak256\":\"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0\",\"dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD\"]},\"src/V4Router.sol\":{\"keccak256\":\"0x492c743b65a9fc0e54c2a20b13c7d0230e93d4d5b41fba6aaf52f911dfdacf83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abcf73253c19bd5539480cc10f4c15263059fe0ebdfda9c12fae76612e8006e8\",\"dweb:/ipfs/QmP81WPqTM4x1E9RVgoaGaa6zC1PgfEZyvRXfX43MS9yEH\"]},\"src/base/BaseActionsRouter.sol\":{\"keccak256\":\"0xc9ed11618c4d82c5b723841a7d8eaf61600118c593e01e9929a193ecdb1ad63a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b048aa814ef6bdeec79eba67aa765186d74b58f98f4b2be913cc291a15986169\",\"dweb:/ipfs/QmRoFpoCG7DYJtc3uewYwwj2Eb4bXLrefgV3t8vekY3XWg\"]},\"src/base/DeltaResolver.sol\":{\"keccak256\":\"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36\",\"dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw\"]},\"src/base/ImmutableState.sol\":{\"keccak256\":\"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337\",\"dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU\"]},\"src/base/ReentrancyLock.sol\":{\"keccak256\":\"0x66dd19f8eb40b7a86afea0e5b1dcada6268041027b0dfc493b80ca1f66af217d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6d34517e2dd2c9cd03e16c5333defd003c134a4bff52ad95b673a5e8804609\",\"dweb:/ipfs/QmPSRdswfajCZCchH9j8rC7U3GLJ4w24gK35gxRVY3Qxz4\"]},\"src/base/SafeCallback.sol\":{\"keccak256\":\"0xd78b583df1b9ee06d58e83b84fc9f08971389b34dd34bc13db072e0c13c710da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0a47f4bcd6060c4462153b9a7c52a60a460ace91acb6ddd5492eab28ec26173\",\"dweb:/ipfs/QmdRCTRS1dhFjWEy6z577j4xz9J5HPfHBwcNzAic8G59oT\"]},\"src/interfaces/IEIP712_v4.sol\":{\"keccak256\":\"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736\",\"dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR\"]},\"src/interfaces/IERC721Permit_v4.sol\":{\"keccak256\":\"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d\",\"dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk\"]},\"src/interfaces/IImmutableState.sol\":{\"keccak256\":\"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341\",\"dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq\"]},\"src/interfaces/IMsgSender.sol\":{\"keccak256\":\"0xcc7d4e3f2fde34cf1ad9f05a8e43977e04d19624f71eb8a8c295feaf64b362a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e02044b5e19cc9ca24d23f55667142fde6daefba66408b56c4f620b625fc189\",\"dweb:/ipfs/QmUqWdRBqWi2tZkNAPhzLZbknP26TZbD8iRQMd3fdZGFgi\"]},\"src/interfaces/IMulticall_v4.sol\":{\"keccak256\":\"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7\",\"dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ\"]},\"src/interfaces/INotifier.sol\":{\"keccak256\":\"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746\",\"dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV\"]},\"src/interfaces/IPermit2Forwarder.sol\":{\"keccak256\":\"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d\",\"dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9\"]},\"src/interfaces/IPoolInitializer_v4.sol\":{\"keccak256\":\"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92\",\"dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ\"]},\"src/interfaces/IPositionManager.sol\":{\"keccak256\":\"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834\",\"dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc\"]},\"src/interfaces/ISubscriber.sol\":{\"keccak256\":\"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051\",\"dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw\"]},\"src/interfaces/IUnorderedNonce.sol\":{\"keccak256\":\"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d\",\"dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i\"]},\"src/interfaces/IV4Router.sol\":{\"keccak256\":\"0xc4133fae25e61cc2447d7331729f6035322d7c1fe26b39b225422bf98cc63459\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c24ff8428504e973e947a059f96289a66c520cd7f8ef47a3224f9cb6abdaf25\",\"dweb:/ipfs/QmVqxYnngWXXcCiuTC143vTEJrjZK5NXWB92pjvVbuJBQ5\"]},\"src/libraries/ActionConstants.sol\":{\"keccak256\":\"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2\",\"dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7\"]},\"src/libraries/Actions.sol\":{\"keccak256\":\"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98\",\"dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5\"]},\"src/libraries/BipsLibrary.sol\":{\"keccak256\":\"0x37ebf99f5d086d9d9f6e7cecbf4d62167f47c63c30248cfcb921e828f0d7a359\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4f8e68a66bb6c166d72cdba6ed6fb83a93f713b79c2c572e8058084eb90ab6c\",\"dweb:/ipfs/QmY32FxtSBRf9PJzNUVzXqFY4i2ApTPHTUMpCBGovd2zo3\"]},\"src/libraries/CalldataDecoder.sol\":{\"keccak256\":\"0x26df49e13fb5410fd4db253cca877dfdfb3a1ba03e394d054c0e0514a88a56e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72a0c98c52171708f332f83d517deeb97fdd50ecf28f2510e1866e54593a6ff8\",\"dweb:/ipfs/QmY4LiDUfSKGj86nML7B6a8euiPciUqwYehasAyAVnMCHq\"]},\"src/libraries/Locker.sol\":{\"keccak256\":\"0x5c0859290a277fbfba8579b506426d3fc4b2ff7d8b691c03dd23aa85797fdae1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18ad9effea8da74b9988373dddddd6669f11701fc954f77d2cb58beb9a9cc3ad\",\"dweb:/ipfs/QmQdBMoXdVACo6k6rumWj15UPDCqGpWNSPvQbejxKuV9RJ\"]},\"src/libraries/PathKey.sol\":{\"keccak256\":\"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89\",\"dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg\"]},\"src/libraries/PositionInfoLibrary.sol\":{\"keccak256\":\"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6\",\"dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx\"]},\"test/mocks/MockV4Router.sol\":{\"keccak256\":\"0x62fcb424645af503ff11d47d4f872f5358671bbfd95a87b184637764a861f1ab\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f289cb40776aa4533f621cbf1fbced441ee1420ecc3cc97484d66e16e24e3f45\",\"dweb:/ipfs/QmXoYhsSKm8PBoFqysYcZ11FRNfzvLEJ2z3Yw7ag3xoAKs\"]},\"test/router/V4Router.gas.t.sol\":{\"keccak256\":\"0x65d084e38f911c8ae7f4909504331786c33c98cdd92521baa1d98138c59ce4b4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://58e67b5a46c18cc1817482f189cefd2cbbd1ec7df5a86167497d2fb8be9bf45b\",\"dweb:/ipfs/QmfU3R4LJ2Sf9miKDcmLUth2MERBgLKgtjPKbkDAwpKVaS\"]},\"test/shared/HookSavesDelta.sol\":{\"keccak256\":\"0x3a2c5629e37b0d999ffb27c8f528b1f5877bc4f7fbcc148a5cfa663d1a509eda\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://84d35648d09735095eb62b90f5eefc59f99f4246903d947f97dac68ca991d985\",\"dweb:/ipfs/QmPmnJ2j1Rn9BYKrFSvuBB4y45CJyEYwqzJdYKxancm89Z\"]},\"test/shared/LiquidityOperations.sol\":{\"keccak256\":\"0x096251cfe2acb56b25893366ae766eede53b69aba83f85f982d1ca72cdc42753\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60d12773ef8f7b0befdb8d0348bd562ef839c6e3681e8f357bfe8d24e5923f46\",\"dweb:/ipfs/QmXaT4qoG23TRDJVpdcXiJUWwwSgV5EddyfnL22oA8PbzN\"]},\"test/shared/Planner.sol\":{\"keccak256\":\"0xc2a26375605104a06d9f0b7a0d5e83edd8730a9eab047f6e86f6ed2569adf174\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8a2dddae573fe2f88e742e66192c2e580db2edc23761b5c16bfbb04556430a17\",\"dweb:/ipfs/QmZPLofzBrot14HMnve7LX17KhNNskh7q5FLP2uMRGqbZk\"]},\"test/shared/PositionConfig.sol\":{\"keccak256\":\"0x08990d795c0862c45fc34458310e0f3aaa7629715ca2bcc4df82f3530c08beaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://803f7bff618b759d05103418d52d6363e8f25312effb06eace7168ff24a010f2\",\"dweb:/ipfs/QmcWWnjBvHGZaj9XaAKDwqRot5xzYc1jrwqvRGghe8jMjd\"]},\"test/shared/RoutingTestHelpers.sol\":{\"keccak256\":\"0x8d7611e792004e0db663b7cbe48a842f313014a81acf44f56aa62349a41f9b00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a90c4f095b9d20cdc8d7a1f82de22ef32260f0dc33a5b4e74a4088ba0992aae\",\"dweb:/ipfs/QmeVu7BuncejQtfm3PGPcU6RopMNL8Ts4jgb3TA3EsKK47\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"REMOVE_LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SWAP_PARAMS","outputs":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setupRouterCurrenciesAndPoolsWithLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_bytecodeSize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeIn_swapExactIn_1Hop"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeIn_swapExactIn_2Hops"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeIn_swapExactIn_3Hops"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeIn_swapExactInputSingle"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeIn_swapExactOut_1Hop_sweepExcessETH"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeIn_swapExactOut_2Hops_sweepExcessETH"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeIn_swapExactOut_3Hops_sweepExcessETH"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeIn_swapExactOutputSingle_sweepExcessETH"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeOut_swapExactIn_1Hop"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeOut_swapExactInputSingle"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeOut_swapExactOut_1Hop"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeOut_swapExactOut_3Hops"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_nativeOut_swapExactOutputSingle"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactIn_1Hop_oneForZero"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactIn_1Hop_zeroForOne"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactIn_2Hops"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactIn_3Hops"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactInputSingle_zeroForOne"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactOut_1Hop_oneForZero"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactOut_1Hop_zeroForOne"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactOut_2Hops"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactOut_3Hops"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swapExactOutputSingle_zeroForOne"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_router_initcodeHash"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@uniswap/v4-core/=lib/v4-core/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/v4-core/lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","permit2/=lib/permit2/","solmate/=lib/v4-core/lib/solmate/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/router/V4Router.gas.t.sol":"V4RouterTest"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29","urls":["bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0","dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138","urls":["bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72","dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270","urls":["bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe","dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/v4-core/lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"lib/v4-core/lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC20.sol":{"keccak256":"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466","urls":["bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e","dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b","urls":["bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060","dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv"],"license":"AGPL-3.0-only"},"lib/v4-core/src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"lib/v4-core/src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"lib/v4-core/src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"lib/v4-core/src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"lib/v4-core/src/NoDelegateCall.sol":{"keccak256":"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51","urls":["bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6","dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18"],"license":"MIT"},"lib/v4-core/src/PoolManager.sol":{"keccak256":"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07","urls":["bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72","dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu"],"license":"BUSL-1.1"},"lib/v4-core/src/ProtocolFees.sol":{"keccak256":"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755","urls":["bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa","dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq"],"license":"MIT"},"lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"lib/v4-core/src/libraries/CurrencyDelta.sol":{"keccak256":"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c","urls":["bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb","dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-core/src/libraries/Hooks.sol":{"keccak256":"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa","urls":["bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb","dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx"],"license":"MIT"},"lib/v4-core/src/libraries/LPFeeLibrary.sol":{"keccak256":"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b","urls":["bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475","dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J"],"license":"MIT"},"lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ParseBytes.sol":{"keccak256":"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15","urls":["bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17","dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa"],"license":"MIT"},"lib/v4-core/src/libraries/Pool.sol":{"keccak256":"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0","urls":["bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407","dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec","urls":["bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba","dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787"],"license":"MIT"},"lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"lib/v4-core/src/libraries/SqrtPriceMath.sol":{"keccak256":"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982","urls":["bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138","dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF"],"license":"MIT"},"lib/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952","urls":["bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0","dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY"],"license":"MIT"},"lib/v4-core/src/libraries/SwapMath.sol":{"keccak256":"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9","urls":["bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812","dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD"],"license":"MIT"},"lib/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"},"lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a","urls":["bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5","dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV"],"license":"MIT"},"lib/v4-core/src/libraries/UnsafeMath.sol":{"keccak256":"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4","urls":["bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572","dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn"],"license":"MIT"},"lib/v4-core/src/test/ActionsRouter.sol":{"keccak256":"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52","urls":["bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef","dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR"],"license":"UNLICENSED"},"lib/v4-core/src/test/BaseTestHooks.sol":{"keccak256":"0x8bb1b533b9df117bc4c85ef9d4c2afa7758771581a752e0a2a69dcae1041e546","urls":["bzz-raw://eebf2728b8bda26bfd0e8c9726950f9cad3f2b8ffa5951117f2c2a9534e37ba6","dweb:/ipfs/QmPCbUDp3e3sF5EPfte4v3VEF9Lhz8db6jLhZQJxXDvBSE"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolClaimsTest.sol":{"keccak256":"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986","urls":["bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887","dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolDonateTest.sol":{"keccak256":"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105","urls":["bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb","dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3","urls":["bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1","dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolModifyLiquidityTestNoChecks.sol":{"keccak256":"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093","urls":["bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58","dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolNestedActionsTest.sol":{"keccak256":"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e","urls":["bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765","dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolSwapTest.sol":{"keccak256":"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0","urls":["bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753","dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTakeTest.sol":{"keccak256":"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368","urls":["bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193","dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTestBase.sol":{"keccak256":"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962","urls":["bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a","dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV"],"license":"UNLICENSED"},"lib/v4-core/src/test/SwapRouterNoChecks.sol":{"keccak256":"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575","urls":["bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e","dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5"],"license":"UNLICENSED"},"lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"lib/v4-core/src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"lib/v4-core/src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"},"lib/v4-core/test/utils/Constants.sol":{"keccak256":"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43","urls":["bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3","dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na"],"license":"UNLICENSED"},"lib/v4-core/test/utils/CurrencySettler.sol":{"keccak256":"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6","urls":["bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58","dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP"],"license":"MIT"},"lib/v4-core/test/utils/Deployers.sol":{"keccak256":"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7","urls":["bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6","dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J"],"license":"UNLICENSED"},"lib/v4-core/test/utils/LiquidityAmounts.sol":{"keccak256":"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2","urls":["bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a","dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY"],"license":"UNLICENSED"},"lib/v4-core/test/utils/SortTokens.sol":{"keccak256":"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844","urls":["bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0","dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD"],"license":"UNLICENSED"},"src/V4Router.sol":{"keccak256":"0x492c743b65a9fc0e54c2a20b13c7d0230e93d4d5b41fba6aaf52f911dfdacf83","urls":["bzz-raw://abcf73253c19bd5539480cc10f4c15263059fe0ebdfda9c12fae76612e8006e8","dweb:/ipfs/QmP81WPqTM4x1E9RVgoaGaa6zC1PgfEZyvRXfX43MS9yEH"],"license":"MIT"},"src/base/BaseActionsRouter.sol":{"keccak256":"0xc9ed11618c4d82c5b723841a7d8eaf61600118c593e01e9929a193ecdb1ad63a","urls":["bzz-raw://b048aa814ef6bdeec79eba67aa765186d74b58f98f4b2be913cc291a15986169","dweb:/ipfs/QmRoFpoCG7DYJtc3uewYwwj2Eb4bXLrefgV3t8vekY3XWg"],"license":"MIT"},"src/base/DeltaResolver.sol":{"keccak256":"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c","urls":["bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36","dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw"],"license":"MIT"},"src/base/ImmutableState.sol":{"keccak256":"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a","urls":["bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337","dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU"],"license":"MIT"},"src/base/ReentrancyLock.sol":{"keccak256":"0x66dd19f8eb40b7a86afea0e5b1dcada6268041027b0dfc493b80ca1f66af217d","urls":["bzz-raw://ac6d34517e2dd2c9cd03e16c5333defd003c134a4bff52ad95b673a5e8804609","dweb:/ipfs/QmPSRdswfajCZCchH9j8rC7U3GLJ4w24gK35gxRVY3Qxz4"],"license":"MIT"},"src/base/SafeCallback.sol":{"keccak256":"0xd78b583df1b9ee06d58e83b84fc9f08971389b34dd34bc13db072e0c13c710da","urls":["bzz-raw://c0a47f4bcd6060c4462153b9a7c52a60a460ace91acb6ddd5492eab28ec26173","dweb:/ipfs/QmdRCTRS1dhFjWEy6z577j4xz9J5HPfHBwcNzAic8G59oT"],"license":"MIT"},"src/interfaces/IEIP712_v4.sol":{"keccak256":"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408","urls":["bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736","dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR"],"license":"MIT"},"src/interfaces/IERC721Permit_v4.sol":{"keccak256":"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017","urls":["bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d","dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk"],"license":"MIT"},"src/interfaces/IImmutableState.sol":{"keccak256":"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b","urls":["bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341","dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq"],"license":"MIT"},"src/interfaces/IMsgSender.sol":{"keccak256":"0xcc7d4e3f2fde34cf1ad9f05a8e43977e04d19624f71eb8a8c295feaf64b362a3","urls":["bzz-raw://1e02044b5e19cc9ca24d23f55667142fde6daefba66408b56c4f620b625fc189","dweb:/ipfs/QmUqWdRBqWi2tZkNAPhzLZbknP26TZbD8iRQMd3fdZGFgi"],"license":"MIT"},"src/interfaces/IMulticall_v4.sol":{"keccak256":"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08","urls":["bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7","dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ"],"license":"MIT"},"src/interfaces/INotifier.sol":{"keccak256":"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e","urls":["bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746","dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV"],"license":"MIT"},"src/interfaces/IPermit2Forwarder.sol":{"keccak256":"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5","urls":["bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d","dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9"],"license":"MIT"},"src/interfaces/IPoolInitializer_v4.sol":{"keccak256":"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98","urls":["bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92","dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ"],"license":"MIT"},"src/interfaces/IPositionManager.sol":{"keccak256":"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e","urls":["bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834","dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc"],"license":"MIT"},"src/interfaces/ISubscriber.sol":{"keccak256":"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7","urls":["bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051","dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw"],"license":"MIT"},"src/interfaces/IUnorderedNonce.sol":{"keccak256":"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3","urls":["bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d","dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i"],"license":"MIT"},"src/interfaces/IV4Router.sol":{"keccak256":"0xc4133fae25e61cc2447d7331729f6035322d7c1fe26b39b225422bf98cc63459","urls":["bzz-raw://3c24ff8428504e973e947a059f96289a66c520cd7f8ef47a3224f9cb6abdaf25","dweb:/ipfs/QmVqxYnngWXXcCiuTC143vTEJrjZK5NXWB92pjvVbuJBQ5"],"license":"MIT"},"src/libraries/ActionConstants.sol":{"keccak256":"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3","urls":["bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2","dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7"],"license":"MIT"},"src/libraries/Actions.sol":{"keccak256":"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830","urls":["bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98","dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5"],"license":"MIT"},"src/libraries/BipsLibrary.sol":{"keccak256":"0x37ebf99f5d086d9d9f6e7cecbf4d62167f47c63c30248cfcb921e828f0d7a359","urls":["bzz-raw://c4f8e68a66bb6c166d72cdba6ed6fb83a93f713b79c2c572e8058084eb90ab6c","dweb:/ipfs/QmY32FxtSBRf9PJzNUVzXqFY4i2ApTPHTUMpCBGovd2zo3"],"license":"MIT"},"src/libraries/CalldataDecoder.sol":{"keccak256":"0x26df49e13fb5410fd4db253cca877dfdfb3a1ba03e394d054c0e0514a88a56e5","urls":["bzz-raw://72a0c98c52171708f332f83d517deeb97fdd50ecf28f2510e1866e54593a6ff8","dweb:/ipfs/QmY4LiDUfSKGj86nML7B6a8euiPciUqwYehasAyAVnMCHq"],"license":"MIT"},"src/libraries/Locker.sol":{"keccak256":"0x5c0859290a277fbfba8579b506426d3fc4b2ff7d8b691c03dd23aa85797fdae1","urls":["bzz-raw://18ad9effea8da74b9988373dddddd6669f11701fc954f77d2cb58beb9a9cc3ad","dweb:/ipfs/QmQdBMoXdVACo6k6rumWj15UPDCqGpWNSPvQbejxKuV9RJ"],"license":"MIT"},"src/libraries/PathKey.sol":{"keccak256":"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc","urls":["bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89","dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg"],"license":"MIT"},"src/libraries/PositionInfoLibrary.sol":{"keccak256":"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078","urls":["bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6","dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx"],"license":"MIT"},"test/mocks/MockV4Router.sol":{"keccak256":"0x62fcb424645af503ff11d47d4f872f5358671bbfd95a87b184637764a861f1ab","urls":["bzz-raw://f289cb40776aa4533f621cbf1fbced441ee1420ecc3cc97484d66e16e24e3f45","dweb:/ipfs/QmXoYhsSKm8PBoFqysYcZ11FRNfzvLEJ2z3Yw7ag3xoAKs"],"license":"UNLICENSED"},"test/router/V4Router.gas.t.sol":{"keccak256":"0x65d084e38f911c8ae7f4909504331786c33c98cdd92521baa1d98138c59ce4b4","urls":["bzz-raw://58e67b5a46c18cc1817482f189cefd2cbbd1ec7df5a86167497d2fb8be9bf45b","dweb:/ipfs/QmfU3R4LJ2Sf9miKDcmLUth2MERBgLKgtjPKbkDAwpKVaS"],"license":"UNLICENSED"},"test/shared/HookSavesDelta.sol":{"keccak256":"0x3a2c5629e37b0d999ffb27c8f528b1f5877bc4f7fbcc148a5cfa663d1a509eda","urls":["bzz-raw://84d35648d09735095eb62b90f5eefc59f99f4246903d947f97dac68ca991d985","dweb:/ipfs/QmPmnJ2j1Rn9BYKrFSvuBB4y45CJyEYwqzJdYKxancm89Z"],"license":"UNLICENSED"},"test/shared/LiquidityOperations.sol":{"keccak256":"0x096251cfe2acb56b25893366ae766eede53b69aba83f85f982d1ca72cdc42753","urls":["bzz-raw://60d12773ef8f7b0befdb8d0348bd562ef839c6e3681e8f357bfe8d24e5923f46","dweb:/ipfs/QmXaT4qoG23TRDJVpdcXiJUWwwSgV5EddyfnL22oA8PbzN"],"license":"MIT"},"test/shared/Planner.sol":{"keccak256":"0xc2a26375605104a06d9f0b7a0d5e83edd8730a9eab047f6e86f6ed2569adf174","urls":["bzz-raw://8a2dddae573fe2f88e742e66192c2e580db2edc23761b5c16bfbb04556430a17","dweb:/ipfs/QmZPLofzBrot14HMnve7LX17KhNNskh7q5FLP2uMRGqbZk"],"license":"UNLICENSED"},"test/shared/PositionConfig.sol":{"keccak256":"0x08990d795c0862c45fc34458310e0f3aaa7629715ca2bcc4df82f3530c08beaa","urls":["bzz-raw://803f7bff618b759d05103418d52d6363e8f25312effb06eace7168ff24a010f2","dweb:/ipfs/QmcWWnjBvHGZaj9XaAKDwqRot5xzYc1jrwqvRGghe8jMjd"],"license":"MIT"},"test/shared/RoutingTestHelpers.sol":{"keccak256":"0x8d7611e792004e0db663b7cbe48a842f313014a81acf44f56aa62349a41f9b00","urls":["bzz-raw://7a90c4f095b9d20cdc8d7a1f82de22ef32260f0dc33a5b4e74a4088ba0992aae","dweb:/ipfs/QmeVu7BuncejQtfm3PGPcU6RopMNL8Ts4jgb3TA3EsKK47"],"license":"MIT"}},"version":1},"id":245}