@uniswap/v4-core
Version:
🦄 Core smart contracts of Uniswap v4
1 lines • 621 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_emitsSwapFee","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_ProtocolAndLPFee","inputs":[{"name":"lpFee","type":"uint24","internalType":"uint24"},{"name":"protocolFee0","type":"uint16","internalType":"uint16"},{"name":"protocolFee1","type":"uint16","internalType":"uint16"},{"name":"amountSpecified","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_initialize_initializesFeeTo0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_100PercentFee_AmountIn_WithProtocol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_100PercentLPFee_AmountIn_NoProtocol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_50PercentLPFee_AmountIn_NoProtocol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_50PercentLPFee_AmountOut_NoProtocol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_99PercentFee_AmountOut_WithProtocol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_revertsWith_InvalidFeeForExactOut_whenFeeIsMax","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_withDynamicFee_gas","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateDynamicLPFee_afterInitialize_failsWithTooLargeFee","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateDynamicLPFee_afterInitialize_initializesFee","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateDynamicLPFee_beforeSwap_failsWithTooLargeFee","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateDynamicLPFee_beforeSwap_succeeds_gas","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateDynamicLPFee_revertsIfCallerIsntHook","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateDynamicLPFee_revertsIfPoolHasStaticFee","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Swap","inputs":[{"name":"poolId","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"int128","indexed":false,"internalType":"int128"},{"name":"amount1","type":"int128","indexed":false,"internalType":"int128"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"liquidity","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"fee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"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":"0x60806040523461018257600160ff19600c541617600c55600160ff19601f541617601f555f606061002e610186565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196020541617602055670de0b6b3a76400006021555f6022555f606061007a610186565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196023541617602355670de0b6b3a763ffff196024555f6025556040516060810181811060018060401b0382111761016e5760409081526001808352606319602084018190526bb504f333f9de6484597d89b39383018490526026805460ff1916909217909155602755602880546001600160a01b03199081169093179055604280548316600e179055604380548316614000600160a01b03908117909155604480548416612f80600160a01b031790556045805490931617909155516201dd1a9081620001a68239f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b0381118382101761016e5760405256fe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c8063062d99c514614cb45780630a9254e414613f625780631ed7831c14613eb9578063251216be146138f15780632ade3880146136c557806339cd2013146136645780633e5e3c23146135bb5780633f7286f414613512578063516571ff14613292578063542524dd1461324557806354e0583c14612f7b57806366d9a9a014612e2057806385226c8114612d78578063916a17c614612ca357806393ad73ed14612c3e578063979acc2f14612af357806398e8385f146129115780639b3c512814612861578063ab89e60e14612669578063b0464fdc14612594578063b1a73b8a1461252c578063b5508aa914612484578063ba414fa614612441578063beb5106f1461206b578063c41facb814611c14578063c7b8e15d14611bd6578063cd8dcbb014611856578063cfa066151461123f578063d82478f01461108b578063e20c9f7114610fd2578063ea9b6b4a14610c78578063fa7626d414610c37578063fd02f0581461057a5763fd3699c21461019b575061000e565b3461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576101e16101dc6101d7615223565b615a52565b615b16565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557610565575b505060405161025581615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761054c575b505061045b9060a061032b615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c81528860208201526c010000000000000000000000006040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6080820152620f424060a0820152a36020918291604051916103fa84846151e2565b8683527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084013685850137866040518097819582947f2229d0b4000000000000000000000000000000000000000000000000000000008452600484016152b3565b03925af1801561054157610513575b5050806104786101d7615223565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152620f424060248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610505576104f15750f35b816104fb916151e2565b6105025780f35b80fd5b6040513d84823e3d90fd5b50fd5b81813d831161053a575b61052781836151e2565b8101031261053657515f61046a565b5f80fd5b503d61051d565b6040513d85823e3d90fd5b81610556916151e2565b61056157815f61031b565b5080fd5b8161056f916151e2565b61050257805f610247565b50346105025760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760043562ffffff81168091036105615760243561ffff8116809103610c33576044359061ffff8216809203610c2f576105f8620f424085606435956105f36101dc6101d7615223565b616579565b906106c561ffff6040938780865161061088826151e2565b600c81527f426f756e6420726573756c740000000000000000000000000000000000000000602082015287516106ad8161067b60208201947fb60e72cc0000000000000000000000000000000000000000000000000000000086528c60248401526064830190614fa8565b876044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826151e2565b51906a636f6e736f6c652e6c6f675afa501691615fa9565b926106d461ffff851691615fa9565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610c01578684517f4c63e56200000000000000000000000000000000000000000000000000000000815287151560048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610bcd57610c1a575b5050600c1b8673ffffffffffffffffffffffffffffffffffffffff60445416803b156105615781809160248851809481937feabb56220000000000000000000000000000000000000000000000000000000083528a60048401525af18015610bcd57610c05575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561578551907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610bcd57610bec575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105615781809160c48851809481937f7e87ce7d0000000000000000000000000000000000000000000000000000000083526108fc6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b8962fff0008a161760a48401525af18015610bcd57610bd7575b506109e295855197610927896151aa565b6001895260208901526bb504f333f9de6484597d89b386890152855161094c81615161565b82815282602082015273ffffffffffffffffffffffffffffffffffffffff602f5416986020998a92858a519361098286866151e2565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0860136878701378b519c8d95869485937f2229d0b4000000000000000000000000000000000000000000000000000000008552600485016153ea565b03925af1968715610bcd578297610b98575b50610fff169116179360801d90620f4240610a29826fffffffffffffffffffffffffffffffff610a23866159ec565b16615494565b04948315610af2575b5050505073ffffffffffffffffffffffffffffffffffffffff602b5416928073ffffffffffffffffffffffffffffffffffffffff6029541660248451809781937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa918215610ae957508491610ab9575b50610ab69250615c86565b80f35b905082813d8311610ae2575b610acf81836151e2565b8101031261053657610ab691515f610aab565b503d610ac5565b513d86823e3d90fd5b610a23610b2b93610b2662ffffff8488620f4240809a6fffffffffffffffffffffffffffffffff9802049101031685615c86565b6159ec565b06610b3a575b5f808080610a32565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b6b5760010190610b31565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b88809298508193503d8311610bc6575b610bb281836151e2565b810103126105365751948790610fff6109f4565b503d610ba8565b86513d84823e3d90fd5b610be28280926151e2565b610502575f610916565b81610bf6916151e2565b610c0157865f610833565b8680fd5b81610c0f916151e2565b610c0157865f6107ab565b81610c24916151e2565b610c0157865f610744565b8380fd5b8280fd5b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257602060ff601f54166040519015158152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257610cb56101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb56220000000000000000000000000000000000000000000000000000000083526207a12060048401525af1801561050557610fbd575b5050604051610d29816151aa565b60018152606460208201526bb504f333f9de6484597d89b3604082015260405190610d5382615161565b8282528260208301528273ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557610fa8575b5050610f5b9160a0610e29615223565b209173ffffffffffffffffffffffffffffffffffffffff602f541680937f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff368152606460208201526bfffffffffffff8cb535a09dd6040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808201526207a12060a0820152a360209283928660405193610efa86866151e2565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086013687870137604051978895869485937f2229d0b4000000000000000000000000000000000000000000000000000000008552600485016153ea565b03925af1801561054157610f7e575b82610ab6610f796101d7615223565b615c0d565b81813d8311610fa1575b610f9281836151e2565b8101031261053657515f610f6a565b503d610f88565b81610fb2916151e2565b610c3357825f610e19565b81610fc7916151e2565b61050257805f610d1b565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b81811061105f5761105b8561104f818703826151e2565b60405191829182614f59565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611038565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561050257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f30d21641000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761122a575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f527596510000000000000000000000000000000000000000000000000000000083526112146004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b607b60a48401525af18015610505576104f15750f35b81611234916151e2565b61050257805f61114a565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025761142573ffffffffffffffffffffffffffffffffffffffff60806112a0826029541683602a5416846045541691615d26565b506112e98382511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655565b6113348360208301511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006037541617603755565b61138a62ffffff6040830151167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006037549260a01b16911617603755565b6113e1606082015160020b7fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff6037549160b81b79ffffff000000000000000000000000000000000000000000000016911617603755565b01511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855565b6114336101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60455416803b156105105781809160c4604051809481937f2abcd1b10000000000000000000000000000000000000000000000000000000083526114fd6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b607b60a48401525af1801561050557611841575b50506115266115216101d7615223565b615b96565b60405161153281615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761182c575b505061174160a0611607615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f604051806116ca8190607b60a060c08401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8152606260208201526bfffffffffffff8ddc5b7dbb06040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808201520152565b0390a36020928391604051916116e084846151e2565b8683527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084013685850137866040518096819582947f2229d0b4000000000000000000000000000000000000000000000000000000008452600484016152b3565b03925af1801561054157611802575b506040517fdd9fca12000000000000000000000000000000000000000000000000000000008152816004820152601560248201527f7377617020776974682064796e616d69632066656500000000000000000000006044820152818160648186737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610541576117d5578280f35b816117f492903d106117fb575b6117ec81836151e2565b8101906152a4565b505f808280f35b503d6117e2565b8181813d8311611825575b61181781836151e2565b810103126105365751611750565b503d61180d565b81611836916151e2565b61056157815f6115f8565b8161184b916151e2565b61050257805f611511565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257750bb800000000000000000000000000000000000000007fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff60375416176037558073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af1801561050557611bc1575b5073ffffffffffffffffffffffffffffffffffffffff60445416611a1b604051917f30d216410000000000000000000000000000000000000000000000000000000060208401526004835261197f6024846151e2565b6119ef6040517fa9e35b2f000000000000000000000000000000000000000000000000000000006020820152600481526119ba6024826151e2565b6040519485937f90bfb865000000000000000000000000000000000000000000000000000000006020860152602485016155ef565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826151e2565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156105105781611a7691604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190614fa8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557611bac575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352611b5d6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6c0100000000000000000000000060a48401525af1801561050557611b80575080f35b611ba19060203d602011611ba5575b611b9981836151e2565b8101906158fa565b5080f35b503d611b8f565b81611bb6916151e2565b61050257805f611a9b565b81611bcb916151e2565b61050257805f611929565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760206040516401000276a48152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257611c516101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af1801561050557612056575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557612041575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f7e87ce7d000000000000000000000000000000000000000000000000000000008352611e086004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6103e860a48401525af180156105055761202c575b5050604051611e2b81615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557612017575b5050611fcf9060a0611f01615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8152606260208201526bfffffffffffff8ddc5b7dbb06040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608082015261046360a0820152a36020918291604051916103fa84846151e2565b03925af1801561054157611fed575b82610ab66115216101d7615223565b81813d8311612010575b61200181836151e2565b8101031261053657515f611fde565b503d611ff7565b81612021916151e2565b61056157815f611ef1565b81612036916151e2565b61050257805f611e1d565b8161204b916151e2565b61050257805f611d3e565b81612060916151e2565b61050257805f611cb5565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576120a86101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f423f60048401525af180156105055761242c575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557612417575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f7e87ce7d0000000000000000000000000000000000000000000000000000000083526122616004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6103e860a48401525af1801561050557612402575b5050604051612284816151aa565b60018152606460208201526bb504f333f9de6484597d89b360408201526040516122ad81615161565b828152826020820152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610c3357826040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f96206246000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610505576123ed575b50506123db9073ffffffffffffffffffffffffffffffffffffffff602f5416926020938492866040519361237a86866151e2565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086013687870137604051968795869485937f2229d0b4000000000000000000000000000000000000000000000000000000008552600485016153ea565b03925af18015610541576117d5578280f35b816123f7916151e2565b610c3357825f612346565b8161240c916151e2565b61050257805f612276565b81612421916151e2565b61050257805f612197565b81612436916151e2565b61050257805f61210e565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257602061247a615913565b6040519015158152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576019546124bf816154d4565b916124cd60405193846151e2565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061250f576040518061105b8782615040565b60016020819261251e856154ec565b8152019201920191906124fa565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601c546125cf816154d4565b916125dd60405193846151e2565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061261f576040518061105b87826150bd565b6002602060019260405161263281615161565b73ffffffffffffffffffffffffffffffffffffffff8654168152612657858701615656565b8382015281520192019201919061260a565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257771e00000000000000000000000000000000000000000000007fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff60375416176037558073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af180156105055761284c575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe0000000000000000000000000000000000000000000000000000000083526128006004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6c0100000000000000000000000060a48401525af180156105055761282f575b50610ab66115216101d7615223565b6128479060203d602011611ba557611b9981836151e2565b612820565b81612856916151e2565b61050257805f61273e565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025761289e6101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557612402575050604051612284816151aa565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502578073ffffffffffffffffffffffffffffffffffffffff60455416807fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557612ade575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352612a926004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6c0100000000000000000000000060a48401525af1801561050557612ac1575b50610ab66101dc6101d7615223565b612ad99060203d602011611ba557611b9981836151e2565b612ab2565b81612ae8916151e2565b61050257805f6129d0565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257771e00000000000000000000000000000000000000000000007fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff60375416176037558073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424160048401525af1801561050557612c29575b5073ffffffffffffffffffffffffffffffffffffffff60445416611a1b604051917f14002113000000000000000000000000000000000000000000000000000000006020840152620f424160248401526024835261197f6044846151e2565b81612c33916151e2565b61050257805f612bca565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601d54612cde816154d4565b91612cec60405193846151e2565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310612d2e576040518061105b87826150bd565b60026020600192604051612d4181615161565b73ffffffffffffffffffffffffffffffffffffffff8654168152612d66858701615656565b83820152815201920192019190612d19565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601a54612db3816154d4565b91612dc160405193846151e2565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310612e03576040518061105b8782615040565b600160208192612e12856154ec565b815201920192019190612dee565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601b54612e5b816154d4565b612e6860405191826151e2565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310612f4057868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210612ed557505050500390f35b91936020612f30827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083612f208351604084526040840190614fa8565b9201519084818403910152614feb565b9601920192018594939192612ec6565b60026020600192604051612f5381615161565b612f5c866154ec565b8152612f69858701615656565b83820152815201920192019190612e98565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257612fb86101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424160048401525af1801561050557613230575b505060405161302c81615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff6044541661316a604051917f14002113000000000000000000000000000000000000000000000000000000006020840152620f42416024840152602483526130946044846151e2565b6119ef6040517fa9e35b2f000000000000000000000000000000000000000000000000000000006020820152600481526130cf6024826151e2565b61313a6040519586947f90bfb86500000000000000000000000000000000000000000000000000000000602087015260248601527f575e24b40000000000000000000000000000000000000000000000000000000060448601526080606486015260a4850190614fa8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc848303016084850152614fa8565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561056157816131c591604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190614fa8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761321b575b50506123db73ffffffffffffffffffffffffffffffffffffffff602f54166020928391604051916116e084846151e2565b81613225916151e2565b61056157815f6131ea565b8161323a916151e2565b61050257805f61301e565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257602060405173fffd8963efd1fc6a506488495d951d5263988d258152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576132cf6101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb56220000000000000000000000000000000000000000000000000000000083526207a12060048401525af18015610505576134fd575b505060405161334381615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610505576134e8575b5050610f5b9060a0613419615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8152603160208201526bfffffffffffffc65a9ad04ef6040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808201526207a12060a0820152a36020918291604051916103fa84846151e2565b816134f2916151e2565b61056157815f613409565b81613507916151e2565b61050257805f613335565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b81811061358f5761105b8561104f818703826151e2565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613578565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106136385761105b8561104f818703826151e2565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613621565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760235460245460255460408051600285810b825260189590951c90940b60208501528301919091526060820152608090f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601e54613700816154d4565b61370d60405191826151e2565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b83831061385b5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106137795786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106138125750505050506020806001929701930193019092869594929361376c565b909192939460208061384e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951614fa8565b97019501939291016137ee565b60405161386781615161565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054613890816154d4565b9161389e60405193846151e2565b8183528a526020808b20908b9084015b8382106138d457505050506001928260209283600295015281520192019201919061373d565b6001602081926138e3866154ec565b8152019301910190916138ae565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025761392e6101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557613ea4575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557613e8f575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f7e87ce7d000000000000000000000000000000000000000000000000000000008352613ae76004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6103e860a48401525af1801561050557613e7a575b5050604051613b0a816151aa565b60018152602081017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1881526bb504f333f9de6484597d89b36040830152604051613b5381615161565b8381528360208201528373ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557613e65575b5050613cfa9060a0613c29615223565b209373ffffffffffffffffffffffffffffffffffffffff602f541680957f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1881528a60208201526c010000000000000000000000006040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6080820152620f424060a0820152a36020948592876040519361237a86866151e2565b03925af18015613e0357613e3b575b50517f80000000000000000000000000000000000000000000000000000000000000008114613e0e57808303906103e882029182046103e81490151715613e0e5773ffffffffffffffffffffffffffffffffffffffff602b54168273ffffffffffffffffffffffffffffffffffffffff602954166024604051809481937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa928315613e03578493613dce575b84610ab6620f4240850486615c86565b90809350813d8311613dfc575b613de581836151e2565b8101031261053657620f4240610ab6925192613dbe565b503d613ddb565b6040513d86823e3d90fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b8281813d8311613e5e575b613e5081836151e2565b810103126105365751613d09565b503d613e46565b81613e6f916151e2565b610c2f57835f613c19565b81613e84916151e2565b61050257805f613afc565b81613e99916151e2565b61050257805f613a1d565b81613eae916151e2565b61050257805f613994565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110613f365761105b8561104f818703826151e2565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613f1f565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405190610b52918281019281841067ffffffffffffffff851117614c8757829382916201014a8339039082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff8060445416911690613fea82615368565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15614c825761404091849160405193849283927fb4d6c782000000000000000000000000000000000000000000000000000000008452600484016153bd565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610541578391614c6d575b505061408c73ffffffffffffffffffffffffffffffffffffffff6045541691615368565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15614c69576140e291839160405193849283927fb4d6c782000000000000000000000000000000000000000000000000000000008452600484016153bd565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557614c54575b5050604051615e828082019082821067ffffffffffffffff831117614c2757602091839162007a7d833930815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffff0000000000000000000000000000000000000000602b541617602b5560405190611bb9908183019183831067ffffffffffffffff841117614bfa579183916020936201a4c48439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602f541617602f5573ffffffffffffffffffffffffffffffffffffffff602b541660405190610d6f908183019183831067ffffffffffffffff841117614bfa579183916020936201cf9f8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602e541617602e5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611835908183019183831067ffffffffffffffff841117614bfa5791839160209362012ba68439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602c541617602c5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611315908183019183831067ffffffffffffffff841117614bfa57918391602093620143db8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602d541617602d5573ffffffffffffffffffffffffffffffffffffffff602b5416604051906112d2908183019183831067ffffffffffffffff841117614bfa57918391602093620118d48439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603054161760305573ffffffffffffffffffffffffffffffffffffffff602b541660405190610f22908183019183831067ffffffffffffffff841117614bfa579183916020936201c07d8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603154161760315573ffffffffffffffffffffffffffffffffffffffff602b541660405190610c38908183019183831067ffffffffffffffff841117614bfa5791839160209362010c9c8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603354161760335573ffffffffffffffffffffffffffffffffffffffff602b541660405190614dd4908183019183831067ffffffffffffffff841117614bfa57918391602093620156f08439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455604080516145f482826151e2565b600d815282602082017f666565436f6e74726f6c6c65720000000000000000000000000000000000000081528351600d6020820192835e82602d820152600d8152614640602d826151e2565b5190208351907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115614b94578291614b9e575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561578173ffffffffffffffffffffffffffffffffffffffff61471192865193849283927fc657c71800000000000000000000000000000000000000000000000000000000845216968760048401528860248401526044830190614fa8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015614b9457614b7f575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000603554161760355573ffffffffffffffffffffffffffffffffffffffff602b541681519061284b908183019183831067ffffffffffffffff841117614b52579183916020936200d8ff8439815203019083f08015614b475773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff000000000000000000000000000000000000000060325416176032558173ffffffffffffffffffffffffffffffffffffffff602b541673ffffffffffffffffffffffffffffffffffffffff60355416813b15610c3357829160248392865194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af18015614b1057614b32575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff602b5416813b15610c3357829160248392865194859384927fd0ebdbe700000000000000000000000000000000000000000000000000000000845260048401525af18015614b1057614b1d575b5073ffffffffffffffffffffffffffffffffffffffff6045541673ffffffffffffffffffffffffffffffffffffffff602b5416813b15610c3357829160248392865194859384927fd0ebdbe700000000000000000000000000000000000000000000000000000000845260048401525af18015614b1057614afb575b505073ffffffffffffffffffffffffffffffffffffffff6080610ab69261138a62ffffff614a106149936160ba565b868061499d6160ba565b9216911680821015614af2578780915b1691827fffffffffffffffffffffffff0000000000000000000000000000000000000000602a541617602a551690817fffffffffffffffffffffffff00000000000000000000000000000000000000006029541617602955876044541691615d26565b5092614a5a8685511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655565b614aa58660208601511