@uniswap/v4-core
Version:
🦄 Core smart contracts of Uniswap v4
1 lines • 533 kB
JSON
{"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":"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_nestedAddLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nestedDonate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nestedInitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nestedRemoveLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nestedSwap","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":"0x60806040523461016457600160ff19600c541617600c55600160ff19601f541617601f555f606061002e610168565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196020541617602055670de0b6b3a76400006021555f6022555f606061007a610168565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196023541617602355670de0b6b3a763ffff196024555f6025556040516060810181811060018060401b038211176101505760409081526001808352606319602084018190526bb504f333f9de6484597d89b39383018490526026805460ff1916909217909155602755602880546001600160a01b03199081169093179055604280548316600e17905560438054909216614000600160a01b0317909155516201a6889081620001888239f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b038111838210176101505760405256fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081630a9254e414611243575080630e1eb934146111655780631ed7831c146110bc5780632ade388014610e9057806339cd201314610e2f5780633e5e3c2314610d865780633f7286f414610cdd578063542524dd14610c9057806358e47b7d14610bb25780635d5f0a1314610a52578063615138821461097457806366d9a9a01461081957806385226c8114610771578063916a17c61461069c57806393ad73ed14610637578063b0464fdc14610562578063b1a73b8a146104fa578063b5508aa914610452578063ba414fa61461040f578063bfaeea121461025b578063c7b8e15d1461021d578063e20c9f71146101645763fa7626d40361000f573461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157602060ff601f54166040519015158152f35b80fd5b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101f1576101ed856101e181870382612984565b60405191829182612728565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016101ca565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760206040516401000276a48152f35b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760405161029681612930565b600681526102a26129c5565b604482528190825b600181106103ad5750507f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea558073ffffffffffffffffffffffffffffffffffffffff60345416604051906103308261030460208201612a80565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612984565b803b156103a95761037c83929183926040519485809481937f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190612777565b03925af1801561039e5761038d5750f35b8161039791612984565b6101615780f35b6040513d84823e3d90fd5b5050fd5b909182519060078210156103e2576103d9600192846020939060ff809160031b9316831b921b19161790565b930191016102aa565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760206104486135a0565b6040519015158152f35b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760195461048d816131e1565b9161049b6040519384612984565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106104dd57604051806101ed878261280f565b6001602081926104ec856131f9565b8152019201920191906104c8565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157601c5461059d816131e1565b916105ab6040519384612984565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106105ed57604051806101ed878261288c565b600260206001926040516106008161294c565b73ffffffffffffffffffffffffffffffffffffffff86541681526106258587016132fc565b838201528152019201920191906105d8565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610161576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157601d546106d7816131e1565b916106e56040519384612984565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b83831061072757604051806101ed878261288c565b6002602060019260405161073a8161294c565b73ffffffffffffffffffffffffffffffffffffffff865416815261075f8587016132fc565b83820152815201920192019190610712565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157601a546107ac816131e1565b916107ba6040519384612984565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106107fc57604051806101ed878261280f565b60016020819261080b856131f9565b8152019201920191906107e7565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157601b54610854816131e1565b6108616040519182612984565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b83831061093957868587604051928392602084019060208552518091526040840160408260051b8601019392905b8282106108ce57505050500390f35b91936020610929827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06001959799849503018652885190836109198351604084526040840190612777565b92015190848184039101526127ba565b96019201920185949391926108bf565b6002602060019260405161094c8161294c565b610955866131f9565b81526109628587016132fc565b83820152815201920192019190610891565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610161576040516109af81612930565b600381526109bb6129c5565b604482528190825b60018110610a1d5750507f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea558073ffffffffffffffffffffffffffffffffffffffff60345416604051906103308261030460208201612a80565b909182519060078210156103e257610a49600192846020939060ff809160031b9316831b921b19161790565b930191016109c3565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157604051610a8d8161294c565b6004815260056020820152604454600260445580600210610b41575b50604482528190825b60028110610b0c5750507f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea558073ffffffffffffffffffffffffffffffffffffffff60345416604051906103308261030460208201612a80565b909182519060078210156103e257610b38600192846020939060ff809160031b9316831b921b19161790565b93019101610ab2565b604483527f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea805461ffff168155601f9190910160051c017f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135eb5b818110610ba75750610aa9565b838155600101610b9a565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157604051610bed81612930565b60028152610bf96129c5565b604482528190825b60018110610c5b5750507f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea558073ffffffffffffffffffffffffffffffffffffffff60345416604051906103308261030460208201612a80565b909182519060078210156103e257610c87600192846020939060ff809160031b9316831b921b19161790565b93019101610c01565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157602060405173fffd8963efd1fc6a506488495d951d5263988d258152f35b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110610d5a576101ed856101e181870382612984565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610d43565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110610e03576101ed856101e181870382612984565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610dec565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760235460245460255460408051600285810b825260189590951c90940b60208501528301919091526060820152608090f35b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157601e54610ecb816131e1565b610ed86040519182612984565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b8383106110265786858760405192839260208401906020855251809152604084019160408260051b8601019392815b838310610f445786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110610fdd57505050505060208060019297019301930190928695949293610f37565b9091929394602080611019837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951612777565b9701950193929101610fb9565b6040516110328161294c565b73ffffffffffffffffffffffffffffffffffffffff835416815260018301805461105b816131e1565b916110696040519384612984565b8183528a526020808b20908b9084015b83821061109f575050505060019282602092836002950152815201920192019190610f08565b6001602081926110ae866131f9565b815201930191019091611079565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110611139576101ed856101e181870382612984565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611122565b503461016157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610161576040516111a081612930565b600481526111ac6129c5565b604482528190825b6001811061120e5750507f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea558073ffffffffffffffffffffffffffffffffffffffff60345416604051906103308261030460208201612a80565b909182519060078210156103e25761123a600192846020939060ff809160031b9316831b921b19161790565b930191016111b4565b90503461269d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261269d57615e828082019082821067ffffffffffffffff8311176126fb57602091839162004f3d83393081520301905ff080156126f05773ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffff0000000000000000000000000000000000000000602b541617602b5560405190611bb980830183811067ffffffffffffffff8211176126fb57602092849262016e32843981520301905ff080156126f05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602f541617602f5573ffffffffffffffffffffffffffffffffffffffff602b541660405190610d6f80830183811067ffffffffffffffff8211176126fb5760209284926201990d843981520301905ff080156126f05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602e541617602e5573ffffffffffffffffffffffffffffffffffffffff602b54166040519061183580830183811067ffffffffffffffff8211176126fb5760209284926200f514843981520301905ff080156126f05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602c541617602c5573ffffffffffffffffffffffffffffffffffffffff602b54166040519061131580830183811067ffffffffffffffff8211176126fb57602092849262010d49843981520301905ff080156126f05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602d541617602d5573ffffffffffffffffffffffffffffffffffffffff602b5416604051906112d280830183811067ffffffffffffffff8211176126fb5760209284926200e242843981520301905ff080156126f05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603054161760305573ffffffffffffffffffffffffffffffffffffffff602b541660405190610f2280830183811067ffffffffffffffff8211176126fb576020928492620189eb843981520301905ff080156126f05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603154161760315573ffffffffffffffffffffffffffffffffffffffff602b541660405190610c3880830183811067ffffffffffffffff8211176126fb5760209284926200d60a843981520301905ff080156126f05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603354161760335573ffffffffffffffffffffffffffffffffffffffff602b541660405190614dd480830183811067ffffffffffffffff8211176126fb5760209284926201205e843981520301905ff080156126f05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455604080516117438282612984565b600d8152602081017f666565436f6e74726f6c6c65720000000000000000000000000000000000000081528251600d6020820192835e5f602d820152600d815261178e602d82612984565b5190208251907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115612693575f916126a1575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561269d575f73ffffffffffffffffffffffffffffffffffffffff61185f92855193849283927fc657c71800000000000000000000000000000000000000000000000000000000845216958660048401528760248401526044830190612777565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126935761267e575b507fffffffffffffffffffffffff0000000000000000000000000000000000000000603554161760355573ffffffffffffffffffffffffffffffffffffffff602b541681519061284b908183019183831067ffffffffffffffff841117612651579183916020936200adbf8439815203019083f080156126465773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff000000000000000000000000000000000000000060325416176032558173ffffffffffffffffffffffffffffffffffffffff602b541673ffffffffffffffffffffffffffffffffffffffff60355416813b1561264257829160248392865194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1801561263557612620575b50506119c36137b4565b73ffffffffffffffffffffffffffffffffffffffff806119e16137b4565b92169116808210156126035773ffffffffffffffffffffffffffffffffffffffff80915b1691827fffffffffffffffffffffffff0000000000000000000000000000000000000000602a541617602a551690817fffffffffffffffffffffffff00000000000000000000000000000000000000006029541617602955611a656136a5565b50611a6e6136a5565b508251603c92611a7d82612968565b81526020808201928352610bb88583019081526060830185815260808401888152602b5488517f6276cbbe000000000000000000000000000000000000000000000000000000008152865173ffffffffffffffffffffffffffffffffffffffff9081166004830152885181166024830152604088015162ffffff166044830152845160020b60648301528351811660848301529496959294909291839160c49183918e91166c0100000000000000000000000060a48401525af180156125f9576125b8575b5073ffffffffffffffffffffffffffffffffffffffff602c5416938860209687611bd48b5198611b72838b612984565b848a527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301998a36858301378d519586809481937f5a6bcfda0000000000000000000000000000000000000000000000000000000083528d600484016136de565b03925af1801561253d5773ffffffffffffffffffffffffffffffffffffffff968793849261259b575b5051167fffffffffffffffffffffffff0000000000000000000000000000000000000000603654161760365551167fffffffffffffffffffffffff00000000000000000000000000000000000000006037541617603755517fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000806037549360a01b1616911617603755517fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff6037549160b81b60190b79ffffff00000000000000000000000000000000000000000000001691161760375551167fffffffffffffffffffffffff000000000000000000000000000000000000000060385416176038558460048373ffffffffffffffffffffffffffffffffffffffff603454168751928380927fc34c08e50000000000000000000000000000000000000000000000000000000082525afa80156125605773ffffffffffffffffffffffffffffffffffffffff91839161256e575b5016803b1561256a5781809160a48851809481937f1b9ec89e00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff60365416600484015260375473ffffffffffffffffffffffffffffffffffffffff8116602485015262ffffff8160a01c16604485015260b81c60020b606484015273ffffffffffffffffffffffffffffffffffffffff6038541660848401525af1801561256057612547575b505073ffffffffffffffffffffffffffffffffffffffff602a5416611e5d6136a5565b50611e666136a5565b50845191611e7383612968565b86835283830191825285830190610bb882526060840192868452608085019489865260a0812050898773ffffffffffffffffffffffffffffffffffffffff602b541660c48c51809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352611f37600484018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6c0100000000000000000000000060a48401525af190811561253d578891612500575b50611fcc670de0b6b3a7640000948c73ffffffffffffffffffffffffffffffffffffffff602c5416918d5191611f908684612984565b825236858301378c519687809481937f5a6bcfda00000000000000000000000000000000000000000000000000000000835288600484016136de565b03925af19081156124f65773ffffffffffffffffffffffffffffffffffffffff97889485936124c8575b505051167fffffffffffffffffffffffff0000000000000000000000000000000000000000603954161760395551167fffffffffffffffffffffffff0000000000000000000000000000000000000000603a541617603a55517fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff000000000000000000000000000000000000000080603a549360a01b1616911617603a55517fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff603a549160b81b60190b79ffffff000000000000000000000000000000000000000000000016911617603a5551167fffffffffffffffffffffffff0000000000000000000000000000000000000000603b541617603b5573ffffffffffffffffffffffffffffffffffffffff603654167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905573ffffffffffffffffffffffffffffffffffffffff603754167fffffffffffffffffffffffff0000000000000000000000000000000000000000603d541617603d556037547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000807fffffffffffffffffffffffff0000000000000000000000000000000000000000603d5494161616911617603d556037547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff0000000000000000000000000000000000000000000000603d54921660190b79ffffff000000000000000000000000000000000000000000000016911617603d5573ffffffffffffffffffffffffffffffffffffffff603854167fffffffffffffffffffffffff0000000000000000000000000000000000000000603e541617603e5573ffffffffffffffffffffffffffffffffffffffff603954167fffffffffffffffffffffffff0000000000000000000000000000000000000000603f541617603f5573ffffffffffffffffffffffffffffffffffffffff603a54167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416178155603a547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000807fffffffffffffffffffffffff00000000000000000000000000000000000000008554941616169116178155603a547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff00000000000000000000000000000000000000000000008354921660190b79ffffff000000000000000000000000000000000000000000000016911617815573ffffffffffffffffffffffffffffffffffffffff603b54167fffffffffffffffffffffffff00000000000000000000000000000000000000006041541617604155746400000000000000000000000000000000000000007fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff603d541617603d55746400000000000000000000000000000000000000007fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff82541617905580f35b816124e792903d106124ef575b6124df8183612984565b8101906136cf565b505f80611ff6565b503d6124d5565b89513d8c823e3d90fd5b9081813d8311612536575b6125158183612984565b8101031261253257518060020b0361252e57865f611f5a565b8980fd5b8a80fd5b503d61250b565b8a513d8d823e3d90fd5b8161255191612984565b61255c57845f611e3a565b8480fd5b86513d84823e3d90fd5b5080fd5b61258e9150853d8711612594575b6125868183612984565b810190613679565b5f611d82565b503d61257c565b6125b1908b3d8d116124ef576124df8183612984565b505f611bfd565b6020813d6020116125f1575b816125d160209383612984565b810103126125ed57518060020b036125e9575f611b42565b8780fd5b8880fd5b3d91506125c4565b88513d8b823e3d90fd5b9073ffffffffffffffffffffffffffffffffffffffff8091611a05565b8161262a91612984565b61256a57815f6119b9565b50505051903d90823e3d90fd5b8280fd5b5051903d90823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b61268b9193505f90612984565b5f915f611884565b83513d5f823e3d90fd5b5f80fd5b90506020813d6020116126e8575b816126bc60209383612984565b8101031261269d575173ffffffffffffffffffffffffffffffffffffffff8116810361269d575f6117e7565b3d91506126af565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206040818301928281528451809452019201905f5b81811061274b5750505090565b825173ffffffffffffffffffffffffffffffffffffffff1684526020938401939092019160010161273e565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b8181106127d75750505090565b82517fffffffff00000000000000000000000000000000000000000000000000000000168452602093840193909201916001016127ca565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061284157505050505090565b909192939460208061287d837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951612777565b97019301930191939290612832565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106128be57505050505090565b9091929394602080612921837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff8151168452015191818582015201906127ba565b970193019301919392906128af565b6020810190811067ffffffffffffffff8211176126fb57604052565b6040810190811067ffffffffffffffff8211176126fb57604052565b60a0810190811067ffffffffffffffff8211176126fb57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176126fb57604052565b6044546001604455806001106129d85750565b60445f527f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea805460ff168155601f9190910160051c017f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135eb5b818110612a3b575050565b5f8155600101612a30565b906007821015612a535752565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6040602082019160208152604454809352019060445f5260205f20905f915b81601f840110612f5e575491818110612f43575b818110612f25575b818110612f07575b818110612ee9575b818110612ecc575b818110612eae575b818110612e90575b818110612e72575b818110612e54575b818110612e36575b818110612e18575b818110612dfa575b818110612ddc575b818110612dbe575b818110612da0575b818110612d82575b818110612d64575b818110612d46575b818110612d28575b818110612d0a575b818110612cec575b818110612cce575b818110612cb0575b818110612c92575b818110612c74575b818110612c56575b818110612c38575b818110612c1a575b818110612bfc575b818110612bde575b818110612bc0575b10612bac575090565b90612bbc8160209360f81c612a46565b0190565b92602081612bd660019360ff8760f01c16612a46565b019301612ba3565b92602081612bf460019360ff8760e81c16612a46565b019301612b9b565b92602081612c1260019360ff8760e01c16612a46565b019301612b93565b92602081612c3060019360ff8760d81c16612a46565b019301612b8b565b92602081612c4e60019360ff8760d01c16612a46565b019301612b83565b92602081612c6c60019360ff8760c81c16612a46565b019301612b7b565b92602081612c8a60019360ff8760c01c16612a46565b019301612b73565b92602081612ca860019360ff8760b81c16612a46565b019301612b6b565b92602081612cc660019360ff8760b01c16612a46565b019301612b63565b92602081612ce460019360ff8760a81c16612a46565b019301612b5b565b92602081612d0260019360ff8760a01c16612a46565b019301612b53565b92602081612d2060019360ff8760981c16612a46565b019301612b4b565b92602081612d3e60019360ff8760901c16612a46565b019301612b43565b92602081612d5c60019360ff8760881c16612a46565b019301612b3b565b92602081612d7a60019360ff8760801c16612a46565b019301612b33565b92602081612d9860019360ff8760781c16612a46565b019301612b2b565b92602081612db660019360ff8760701c16612a46565b019301612b23565b92602081612dd460019360ff8760681c16612a46565b019301612b1b565b92602081612df260019360ff8760601c16612a46565b019301612b13565b92602081612e1060019360ff8760581c16612a46565b019301612b0b565b92602081612e2e60019360ff8760501c16612a46565b019301612b03565b92602081612e4c60019360ff8760481c16612a46565b019301612afb565b92602081612e6a60019360ff8760401c16612a46565b019301612af3565b92602081612e8860019360ff8760381c16612a46565b019301612aeb565b92602081612ea660019360ff8760301c16612a46565b019301612ae3565b92602081612ec460019360ff8760281c16612a46565b019301612adb565b92602081612ee160019360ff87851c16612a46565b019301612ad3565b92602081612eff60019360ff8760181c16612a46565b019301612acb565b92602081612f1d60019360ff8760101c16612a46565b019301612ac3565b92602081612f3b60019360ff8760081c16612a46565b019301612abb565b92602081612f5660019360ff8716612a46565b019301612ab3565b9260016104006020926131d68754612f798360ff8316612a46565b612f8b86840160ff8360081c16612a46565b612f9e6040840160ff8360101c16612a46565b612fb16060840160ff8360181c16612a46565b612fc36080840160ff83891c16612a46565b612fd660a0840160ff8360281c16612a46565b612fe960c0840160ff8360301c16612a46565b612ffc60e0840160ff8360381c16612a46565b613010610100840160ff8360401c16612a46565b613024610120840160ff8360481c16612a46565b613038610140840160ff8360501c16612a46565b61304c610160840160ff8360581c16612a46565b613060610180840160ff8360601c16612a46565b6130746101a0840160ff8360681c16612a46565b6130886101c0840160ff8360701c16612a46565b61309c6101e0840160ff8360781c16612a46565b6130b0610200840160ff8360801c16612a46565b6130c4610220840160ff8360881c16612a46565b6130d8610240840160ff8360901c16612a46565b6130ec610260840160ff8360981c16612a46565b613100610280840160ff8360a01c16612a46565b6131146102a0840160ff8360a81c16612a46565b6131286102c0840160ff8360b01c16612a46565b61313c6102e0840160ff8360b81c16612a46565b613150610300840160ff8360c01c16612a46565b613164610320840160ff8360c81c16612a46565b613178610340840160ff8360d01c16612a46565b61318c610360840160ff8360d81c16612a46565b6131a0610380840160ff8360e01c16612a46565b6131b46103a0840160ff8360e81c16612a46565b6131c86103c0840160ff8360f01c16612a46565b6103e083019060f81c612a46565b019401920191612a9f565b67ffffffffffffffff81116126fb5760051b60200190565b90604051915f8154908160011c92600183169283156132f2575b6020851084146132c55784875286939081156132855750600114613241575b5061323f92500383612984565b565b90505f9291925260205f20905f915b81831061326957505090602061323f928201015f613232565b6020919350806001915483858901015201910190918492613250565b6020935061323f9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f613232565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693613213565b90604051918281549182825260208201905f5260205f20925f905b8060078301106135135761323f9454918181106134dd575b8181106134a7575b818110613471575b81811061343b575b818110613405575b8181106133cf575b81811061339a575b1061336d575b500383612984565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f613365565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b16815201930161335f565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301613357565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b16815201930161334f565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301613347565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b16815201930161333f565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301613337565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b16815201930161332f565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391613317565b60085460ff1680156135af5790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126f0575f91613647575b50151590565b90506020813d602011613671575b8161366260209383612984565b8101031261269d57515f613641565b3d9150613655565b9081602091031261269d575173ffffffffffffffffffffffffffffffffffffffff8116810361269d5790565b604051906136b282612968565b5f6080838281528260208201528260408201528260608201520152565b9081602091031261269d575190565b8061373a61014092613770959473ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6020548060020b60a083015260181c60020b60c082015260215460e0820152602254610100820152816101208201520190612777565b90565b80518210156137875760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604080516137c28282612984565b6001815260208101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0830136833761132562003c185f5b60ff8116600181101561396e57865184810181811067ffffffffffffffff8211176126fb5781908686833960608082526004908201527f5445535400000000000000000000000000000000000000000000000000000000608082015260128a61389960a084018481036020860152604090600481527f544553540000000000000000000000000000000000000000000000000000000060208201520190565b92015203905ff0801561396457816138d59173ffffffffffffffffffffffffffffffffffffffff6138cb81958a613773565b9116905286613773565b5116803b1561269d575f809160448951809481937f40c10f190000000000000000000000000000000000000000000000000000000083523060048401527f800000000000000000000000000000000000000000000000000000000000000060248401525af18015613964579160019160ff93613954575b5001166137fa565b5f61395e91612984565b5f61394c565b87513d5f823e3d90fd5b505050505115613787578073ffffffffffffffffffffffffffffffffffffffff915051168151610120810181811067ffffffffffffffff8211176126fb57835273ffffffffffffffffffffffffffffffffffffffff602f5416815273ffffffffffffffffffffffffffffffffffffffff602e5416602082015273ffffffffffffffffffffffffffffffffffffffff602c54168382015273ffffffffffffffffffffffffffffffffffffffff602d5416606082015273ffffffffffffffffffffffffffffffffffffffff60305416608082015273ffffffffffffffffffffffffffffffffffffffff6031541660a082015273ffffffffffffffffffffffffffffffffffffffff6033541660c08201526004602073ffffffffffffffffffffffffffffffffffffffff603454168551928380927fc34c08e50000000000000000000000000000000000000000000000000000000082525afa908115613c0d579073ffffffffffffffffffffffffffffffffffffffff915f91613bee575b501660e082015273ffffffffffffffffffffffffffffffffffffffff603254166101008201525f5b6009811015613be75773ffffffffffffffffffffffffffffffffffffffff8160051b830151168451907f095ea7b300000000000000000000000000000000000000000000000000000000825260048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201526020816044815f885af18015613bdd57613ba6575b50600101613b11565b6020813d8211613bd5575b81613bbe60209383612984565b8101031261269d57518015150361269d575f613b9d565b3d9150613bb1565b85513d5f823e3d90fd5b5050905090565b613c07915060203d602011612594576125868183612984565b5f613ae9565b84513d5f823e3d90fdfe60e0806040523461040657611325803803809161001c828561040a565b83398101906060818303126104065780516001600160401b038111610406578261004791830161042d565b60208201519092906001600160401b0381116104065760409161006b91840161042d565b91015160ff811681036104065782516001600160401b038111610337576100925f54610482565b601f81116103b7575b506020601f821160011461035657819293945f9261034b575b50508160011b915f199060031b1c1916175f555b81516001600160401b038111610337576100e3600154610482565b601f81116102d4575b50602092601f821160011461027357928192935f92610268575b50508160011b915f199060031b1c1916176001555b6080524660a0526040515f905f54918161013484610482565b9182825260208201946001811690815f1461024c5750600114610202575b61015e9250038261040a565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526101d260c08261040a565b51902060c052604051610e4a90816104bb823960805181610865015260a05181610ca8015260c05181610cce0152f35b505f80805290915f805160206113058339815191525b81831061023057505090602061015e92820101610152565b6020919350806001915483858801015201910190918392610218565b60ff191686525061015e92151560051b82016020019050610152565b015190505f80610106565b601f1982169360015f52805f20915f5b8681106102bc57508360019596106102a4575b505050811b0160015561011b565b01515f1960f88460031b161c191690555f8080610296565b91926020600181928685015181550194019201610283565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c8101916020841061032d575b601f0160051c01905b81811061032257506100ec565b5f8155600101610315565b909150819061030c565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b4565b601f198216905f8052805f20915f5b81811061039f57509583600195969710610387575b505050811b015f556100c8565b01515f1960f88460031b161c191690555f808061037a565b9192602060018192868b015181550194019201610365565b5f80525f80516020611305833981519152601f830160051c810191602084106103fc575b601f0160051c01905b8181106103f1575061009b565b5f81556001016103e4565b90915081906103db565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761033757604052565b81601f82011215610406578051906001600160401b0382116103375760405192610461601f8401601f19166020018561040a565b8284526020838301011161040657815f9260208093018386015e8301015290565b90600182811c921680156104b0575b602083101461049c57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161049156fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610a8b578063095ea7b3146109e857806318160ddd146109ad57806323b872dd14610889578063313ce5671461082e5780633644e515146107ee57806340c10f191461071f57806370a08231146106bc5780637ecebe001461065957806395d89b41146105435780639dc29fac146104a4578063a9059cbb146103f0578063d505accf146101435763dd62ed3e146100b3575f80fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576100ea610c52565b73ffffffffffffffffffffffffffffffffffffffff610107610c75565b91165f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461013f5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5761017a610c52565b610182610c75565b6044356064359260843560ff811680910361013f574285106103925760805f9160209373ffffffffffffffffffffffffffffffffffffffff6101c2610ca5565b91169687855260058652604085209889549960018b0190556040519073ffffffffffffffffffffffffffffffffffffffff888301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b6040850152169a8b6060840152898784015260a083015260c082015260c0815261024660e082610b9c565b51902060405190868201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261028d606282610b9c565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156103875773ffffffffffffffffffffffffffffffffffffffff5f51168015158061037e575b15610320577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526004825260405f20855f5282528060405f2055604051908152a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b508281146102d8565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610427610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600360205260405f20610457848254610c98565b90551690815f52600360205260405f208181540190556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f575f6104dc610c52565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff6024359316928385526003825260408520610530828254610c98565b90558060025403600255604051908152a3005b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f60015461058181610b4b565b808452906001811690811561061757506001146105b9575b6105b5836105a981850382610b9c565b60405191829182610c0a565b0390f35b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106105fd575090915081016020016105a9610599565b9192600181602092548385880101520191019092916105e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506105a99050610599565b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff6106a5610c52565b165f526005602052602060405f2054604051908152f35b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff610708610c52565b165f526003602052602060405f2054604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610756610c52565b602435906002548281018091116107c157602073ffffffffffffffffffffffffffffffffffffffff5f937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9360025516938484526003825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020610826610ca5565b604051908152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576108c0610c52565b6108c8610c75565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff80604435951693845f526004835260405f208233165f52835260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610986575b5050845f526003835260405f2061095f878254610c98565b90551693845f526003825260405f20818154019055604051908152a3602060405160018152f35b61098f91610c98565b855f526004845260405f208333165f52845260405f20558686610947565b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020600254604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610a1f610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600460205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f8054610ac881610b4b565b80845290600181169081156106175750600114610aef576105b5836105a981850382610b9c565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610b31575090915081016020016105a9610599565b919260018160209254838588010152019101909291610b19565b90600182811c92168015610b92575b6020831014610b6557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610b5a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bdd57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b919082039182116107c157565b467f000000000000000000000000000000000000000000000000000000000000000003610cf0577f000000000000000000000000000000000000000000000000000000000000000090565b6040515f905f549181610d0284610b4b565b9182825260208201946001811690815f14610e035750600114610da6575b610d2c92500382610b9c565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610da060c082610b9c565b51902090565b505f80805290917f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610de7575050906020610d2c92820101610d20565b6020919350806001915483858801015201910190918392610dcf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016865250610d2c92151560051b82016020019050610d2056fea164736f6c634300081a000a290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360a03460a057601f615e82388190039