{"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":"0x60806040523461018257600160ff19600c541617600c55600160ff19601f541617601f555f606061002e610186565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196020541617602055670de0b6b3a76400006021555f6022555f606061007a610186565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196023541617602355670de0b6b3a763ffff196024555f6025556040516060810181811060018060401b0382111761016e5760409081526001808352606319602084018190526bb504f333f9de6484597d89b39383018490526026805460ff1916909217909155602755602880546001600160a01b03199081169093179055604280548316600e179055604380548316614000600160a01b03908117909155604480548416612f80600160a01b031790556045805490931617909155516201dd1a9081620001a68239f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b0381118382101761016e5760405256fe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c8063062d99c514614cb45780630a9254e414613f625780631ed7831c14613eb9578063251216be146138f15780632ade3880146136c557806339cd2013146136645780633e5e3c23146135bb5780633f7286f414613512578063516571ff14613292578063542524dd1461324557806354e0583c14612f7b57806366d9a9a014612e2057806385226c8114612d78578063916a17c614612ca357806393ad73ed14612c3e578063979acc2f14612af357806398e8385f146129115780639b3c512814612861578063ab89e60e14612669578063b0464fdc14612594578063b1a73b8a1461252c578063b5508aa914612484578063ba414fa614612441578063beb5106f1461206b578063c41facb814611c14578063c7b8e15d14611bd6578063cd8dcbb014611856578063cfa066151461123f578063d82478f01461108b578063e20c9f7114610fd2578063ea9b6b4a14610c78578063fa7626d414610c37578063fd02f0581461057a5763fd3699c21461019b575061000e565b3461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576101e16101dc6101d7615223565b615a52565b615b16565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557610565575b505060405161025581615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761054c575b505061045b9060a061032b615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c81528860208201526c010000000000000000000000006040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6080820152620f424060a0820152a36020918291604051916103fa84846151e2565b8683527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084013685850137866040518097819582947f2229d0b4000000000000000000000000000000000000000000000000000000008452600484016152b3565b03925af1801561054157610513575b5050806104786101d7615223565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152620f424060248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610505576104f15750f35b816104fb916151e2565b6105025780f35b80fd5b6040513d84823e3d90fd5b50fd5b81813d831161053a575b61052781836151e2565b8101031261053657515f61046a565b5f80fd5b503d61051d565b6040513d85823e3d90fd5b81610556916151e2565b61056157815f61031b565b5080fd5b8161056f916151e2565b61050257805f610247565b50346105025760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760043562ffffff81168091036105615760243561ffff8116809103610c33576044359061ffff8216809203610c2f576105f8620f424085606435956105f36101dc6101d7615223565b616579565b906106c561ffff6040938780865161061088826151e2565b600c81527f426f756e6420726573756c740000000000000000000000000000000000000000602082015287516106ad8161067b60208201947fb60e72cc0000000000000000000000000000000000000000000000000000000086528c60248401526064830190614fa8565b876044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826151e2565b51906a636f6e736f6c652e6c6f675afa501691615fa9565b926106d461ffff851691615fa9565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610c01578684517f4c63e56200000000000000000000000000000000000000000000000000000000815287151560048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610bcd57610c1a575b5050600c1b8673ffffffffffffffffffffffffffffffffffffffff60445416803b156105615781809160248851809481937feabb56220000000000000000000000000000000000000000000000000000000083528a60048401525af18015610bcd57610c05575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561578551907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610bcd57610bec575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105615781809160c48851809481937f7e87ce7d0000000000000000000000000000000000000000000000000000000083526108fc6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b8962fff0008a161760a48401525af18015610bcd57610bd7575b506109e295855197610927896151aa565b6001895260208901526bb504f333f9de6484597d89b386890152855161094c81615161565b82815282602082015273ffffffffffffffffffffffffffffffffffffffff602f5416986020998a92858a519361098286866151e2565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0860136878701378b519c8d95869485937f2229d0b4000000000000000000000000000000000000000000000000000000008552600485016153ea565b03925af1968715610bcd578297610b98575b50610fff169116179360801d90620f4240610a29826fffffffffffffffffffffffffffffffff610a23866159ec565b16615494565b04948315610af2575b5050505073ffffffffffffffffffffffffffffffffffffffff602b5416928073ffffffffffffffffffffffffffffffffffffffff6029541660248451809781937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa918215610ae957508491610ab9575b50610ab69250615c86565b80f35b905082813d8311610ae2575b610acf81836151e2565b8101031261053657610ab691515f610aab565b503d610ac5565b513d86823e3d90fd5b610a23610b2b93610b2662ffffff8488620f4240809a6fffffffffffffffffffffffffffffffff9802049101031685615c86565b6159ec565b06610b3a575b5f808080610a32565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b6b5760010190610b31565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b88809298508193503d8311610bc6575b610bb281836151e2565b810103126105365751948790610fff6109f4565b503d610ba8565b86513d84823e3d90fd5b610be28280926151e2565b610502575f610916565b81610bf6916151e2565b610c0157865f610833565b8680fd5b81610c0f916151e2565b610c0157865f6107ab565b81610c24916151e2565b610c0157865f610744565b8380fd5b8280fd5b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257602060ff601f54166040519015158152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257610cb56101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb56220000000000000000000000000000000000000000000000000000000083526207a12060048401525af1801561050557610fbd575b5050604051610d29816151aa565b60018152606460208201526bb504f333f9de6484597d89b3604082015260405190610d5382615161565b8282528260208301528273ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557610fa8575b5050610f5b9160a0610e29615223565b209173ffffffffffffffffffffffffffffffffffffffff602f541680937f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff368152606460208201526bfffffffffffff8cb535a09dd6040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808201526207a12060a0820152a360209283928660405193610efa86866151e2565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086013687870137604051978895869485937f2229d0b4000000000000000000000000000000000000000000000000000000008552600485016153ea565b03925af1801561054157610f7e575b82610ab6610f796101d7615223565b615c0d565b81813d8311610fa1575b610f9281836151e2565b8101031261053657515f610f6a565b503d610f88565b81610fb2916151e2565b610c3357825f610e19565b81610fc7916151e2565b61050257805f610d1b565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b81811061105f5761105b8561104f818703826151e2565b60405191829182614f59565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611038565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561050257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f30d21641000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761122a575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f527596510000000000000000000000000000000000000000000000000000000083526112146004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b607b60a48401525af18015610505576104f15750f35b81611234916151e2565b61050257805f61114a565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025761142573ffffffffffffffffffffffffffffffffffffffff60806112a0826029541683602a5416846045541691615d26565b506112e98382511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655565b6113348360208301511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006037541617603755565b61138a62ffffff6040830151167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006037549260a01b16911617603755565b6113e1606082015160020b7fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff6037549160b81b79ffffff000000000000000000000000000000000000000000000016911617603755565b01511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855565b6114336101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60455416803b156105105781809160c4604051809481937f2abcd1b10000000000000000000000000000000000000000000000000000000083526114fd6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b607b60a48401525af1801561050557611841575b50506115266115216101d7615223565b615b96565b60405161153281615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761182c575b505061174160a0611607615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f604051806116ca8190607b60a060c08401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8152606260208201526bfffffffffffff8ddc5b7dbb06040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808201520152565b0390a36020928391604051916116e084846151e2565b8683527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084013685850137866040518096819582947f2229d0b4000000000000000000000000000000000000000000000000000000008452600484016152b3565b03925af1801561054157611802575b506040517fdd9fca12000000000000000000000000000000000000000000000000000000008152816004820152601560248201527f7377617020776974682064796e616d69632066656500000000000000000000006044820152818160648186737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610541576117d5578280f35b816117f492903d106117fb575b6117ec81836151e2565b8101906152a4565b505f808280f35b503d6117e2565b8181813d8311611825575b61181781836151e2565b810103126105365751611750565b503d61180d565b81611836916151e2565b61056157815f6115f8565b8161184b916151e2565b61050257805f611511565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257750bb800000000000000000000000000000000000000007fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff60375416176037558073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af1801561050557611bc1575b5073ffffffffffffffffffffffffffffffffffffffff60445416611a1b604051917f30d216410000000000000000000000000000000000000000000000000000000060208401526004835261197f6024846151e2565b6119ef6040517fa9e35b2f000000000000000000000000000000000000000000000000000000006020820152600481526119ba6024826151e2565b6040519485937f90bfb865000000000000000000000000000000000000000000000000000000006020860152602485016155ef565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826151e2565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156105105781611a7691604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190614fa8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557611bac575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352611b5d6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6c0100000000000000000000000060a48401525af1801561050557611b80575080f35b611ba19060203d602011611ba5575b611b9981836151e2565b8101906158fa565b5080f35b503d611b8f565b81611bb6916151e2565b61050257805f611a9b565b81611bcb916151e2565b61050257805f611929565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760206040516401000276a48152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257611c516101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af1801561050557612056575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557612041575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f7e87ce7d000000000000000000000000000000000000000000000000000000008352611e086004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6103e860a48401525af180156105055761202c575b5050604051611e2b81615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557612017575b5050611fcf9060a0611f01615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8152606260208201526bfffffffffffff8ddc5b7dbb06040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608082015261046360a0820152a36020918291604051916103fa84846151e2565b03925af1801561054157611fed575b82610ab66115216101d7615223565b81813d8311612010575b61200181836151e2565b8101031261053657515f611fde565b503d611ff7565b81612021916151e2565b61056157815f611ef1565b81612036916151e2565b61050257805f611e1d565b8161204b916151e2565b61050257805f611d3e565b81612060916151e2565b61050257805f611cb5565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576120a86101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f423f60048401525af180156105055761242c575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557612417575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f7e87ce7d0000000000000000000000000000000000000000000000000000000083526122616004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6103e860a48401525af1801561050557612402575b5050604051612284816151aa565b60018152606460208201526bb504f333f9de6484597d89b360408201526040516122ad81615161565b828152826020820152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610c3357826040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f96206246000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610505576123ed575b50506123db9073ffffffffffffffffffffffffffffffffffffffff602f5416926020938492866040519361237a86866151e2565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086013687870137604051968795869485937f2229d0b4000000000000000000000000000000000000000000000000000000008552600485016153ea565b03925af18015610541576117d5578280f35b816123f7916151e2565b610c3357825f612346565b8161240c916151e2565b61050257805f612276565b81612421916151e2565b61050257805f612197565b81612436916151e2565b61050257805f61210e565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257602061247a615913565b6040519015158152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576019546124bf816154d4565b916124cd60405193846151e2565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061250f576040518061105b8782615040565b60016020819261251e856154ec565b8152019201920191906124fa565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601c546125cf816154d4565b916125dd60405193846151e2565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061261f576040518061105b87826150bd565b6002602060019260405161263281615161565b73ffffffffffffffffffffffffffffffffffffffff8654168152612657858701615656565b8382015281520192019201919061260a565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257771e00000000000000000000000000000000000000000000007fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff60375416176037558073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af180156105055761284c575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe0000000000000000000000000000000000000000000000000000000083526128006004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6c0100000000000000000000000060a48401525af180156105055761282f575b50610ab66115216101d7615223565b6128479060203d602011611ba557611b9981836151e2565b612820565b81612856916151e2565b61050257805f61273e565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025761289e6101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557612402575050604051612284816151aa565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502578073ffffffffffffffffffffffffffffffffffffffff60455416807fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557612ade575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352612a926004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6c0100000000000000000000000060a48401525af1801561050557612ac1575b50610ab66101dc6101d7615223565b612ad99060203d602011611ba557611b9981836151e2565b612ab2565b81612ae8916151e2565b61050257805f6129d0565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257771e00000000000000000000000000000000000000000000007fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff60375416176037558073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424160048401525af1801561050557612c29575b5073ffffffffffffffffffffffffffffffffffffffff60445416611a1b604051917f14002113000000000000000000000000000000000000000000000000000000006020840152620f424160248401526024835261197f6044846151e2565b81612c33916151e2565b61050257805f612bca565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601d54612cde816154d4565b91612cec60405193846151e2565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310612d2e576040518061105b87826150bd565b60026020600192604051612d4181615161565b73ffffffffffffffffffffffffffffffffffffffff8654168152612d66858701615656565b83820152815201920192019190612d19565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601a54612db3816154d4565b91612dc160405193846151e2565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310612e03576040518061105b8782615040565b600160208192612e12856154ec565b815201920192019190612dee565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601b54612e5b816154d4565b612e6860405191826151e2565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310612f4057868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210612ed557505050500390f35b91936020612f30827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083612f208351604084526040840190614fa8565b9201519084818403910152614feb565b9601920192018594939192612ec6565b60026020600192604051612f5381615161565b612f5c866154ec565b8152612f69858701615656565b83820152815201920192019190612e98565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257612fb86101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424160048401525af1801561050557613230575b505060405161302c81615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff6044541661316a604051917f14002113000000000000000000000000000000000000000000000000000000006020840152620f42416024840152602483526130946044846151e2565b6119ef6040517fa9e35b2f000000000000000000000000000000000000000000000000000000006020820152600481526130cf6024826151e2565b61313a6040519586947f90bfb86500000000000000000000000000000000000000000000000000000000602087015260248601527f575e24b40000000000000000000000000000000000000000000000000000000060448601526080606486015260a4850190614fa8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc848303016084850152614fa8565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561056157816131c591604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190614fa8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761321b575b50506123db73ffffffffffffffffffffffffffffffffffffffff602f54166020928391604051916116e084846151e2565b81613225916151e2565b61056157815f6131ea565b8161323a916151e2565b61050257805f61301e565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257602060405173fffd8963efd1fc6a506488495d951d5263988d258152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576132cf6101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb56220000000000000000000000000000000000000000000000000000000083526207a12060048401525af18015610505576134fd575b505060405161334381615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610505576134e8575b5050610f5b9060a0613419615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8152603160208201526bfffffffffffffc65a9ad04ef6040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808201526207a12060a0820152a36020918291604051916103fa84846151e2565b816134f2916151e2565b61056157815f613409565b81613507916151e2565b61050257805f613335565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b81811061358f5761105b8561104f818703826151e2565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613578565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106136385761105b8561104f818703826151e2565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613621565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760235460245460255460408051600285810b825260189590951c90940b60208501528301919091526060820152608090f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601e54613700816154d4565b61370d60405191826151e2565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b83831061385b5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106137795786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106138125750505050506020806001929701930193019092869594929361376c565b909192939460208061384e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951614fa8565b97019501939291016137ee565b60405161386781615161565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054613890816154d4565b9161389e60405193846151e2565b8183528a526020808b20908b9084015b8382106138d457505050506001928260209283600295015281520192019201919061373d565b6001602081926138e3866154ec565b8152019301910190916138ae565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025761392e6101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557613ea4575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557613e8f575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f7e87ce7d000000000000000000000000000000000000000000000000000000008352613ae76004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6103e860a48401525af1801561050557613e7a575b5050604051613b0a816151aa565b60018152602081017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1881526bb504f333f9de6484597d89b36040830152604051613b5381615161565b8381528360208201528373ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557613e65575b5050613cfa9060a0613c29615223565b209373ffffffffffffffffffffffffffffffffffffffff602f541680957f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1881528a60208201526c010000000000000000000000006040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6080820152620f424060a0820152a36020948592876040519361237a86866151e2565b03925af18015613e0357613e3b575b50517f80000000000000000000000000000000000000000000000000000000000000008114613e0e57808303906103e882029182046103e81490151715613e0e5773ffffffffffffffffffffffffffffffffffffffff602b54168273ffffffffffffffffffffffffffffffffffffffff602954166024604051809481937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa928315613e03578493613dce575b84610ab6620f4240850486615c86565b90809350813d8311613dfc575b613de581836151e2565b8101031261053657620f4240610ab6925192613dbe565b503d613ddb565b6040513d86823e3d90fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b8281813d8311613e5e575b613e5081836151e2565b810103126105365751613d09565b503d613e46565b81613e6f916151e2565b610c2f57835f613c19565b81613e84916151e2565b61050257805f613afc565b81613e99916151e2565b61050257805f613a1d565b81613eae916151e2565b61050257805f613994565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110613f365761105b8561104f818703826151e2565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613f1f565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405190610b52918281019281841067ffffffffffffffff851117614c8757829382916201014a8339039082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff8060445416911690613fea82615368565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15614c825761404091849160405193849283927fb4d6c782000000000000000000000000000000000000000000000000000000008452600484016153bd565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610541578391614c6d575b505061408c73ffffffffffffffffffffffffffffffffffffffff6045541691615368565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15614c69576140e291839160405193849283927fb4d6c782000000000000000000000000000000000000000000000000000000008452600484016153bd565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557614c54575b5050604051615e828082019082821067ffffffffffffffff831117614c2757602091839162007a7d833930815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffff0000000000000000000000000000000000000000602b541617602b5560405190611bb9908183019183831067ffffffffffffffff841117614bfa579183916020936201a4c48439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602f541617602f5573ffffffffffffffffffffffffffffffffffffffff602b541660405190610d6f908183019183831067ffffffffffffffff841117614bfa579183916020936201cf9f8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602e541617602e5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611835908183019183831067ffffffffffffffff841117614bfa5791839160209362012ba68439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602c541617602c5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611315908183019183831067ffffffffffffffff841117614bfa57918391602093620143db8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602d541617602d5573ffffffffffffffffffffffffffffffffffffffff602b5416604051906112d2908183019183831067ffffffffffffffff841117614bfa57918391602093620118d48439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603054161760305573ffffffffffffffffffffffffffffffffffffffff602b541660405190610f22908183019183831067ffffffffffffffff841117614bfa579183916020936201c07d8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603154161760315573ffffffffffffffffffffffffffffffffffffffff602b541660405190610c38908183019183831067ffffffffffffffff841117614bfa5791839160209362010c9c8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603354161760335573ffffffffffffffffffffffffffffffffffffffff602b541660405190614dd4908183019183831067ffffffffffffffff841117614bfa57918391602093620156f08439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455604080516145f482826151e2565b600d815282602082017f666565436f6e74726f6c6c65720000000000000000000000000000000000000081528351600d6020820192835e82602d820152600d8152614640602d826151e2565b5190208351907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115614b94578291614b9e575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561578173ffffffffffffffffffffffffffffffffffffffff61471192865193849283927fc657c71800000000000000000000000000000000000000000000000000000000845216968760048401528860248401526044830190614fa8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015614b9457614b7f575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000603554161760355573ffffffffffffffffffffffffffffffffffffffff602b541681519061284b908183019183831067ffffffffffffffff841117614b52579183916020936200d8ff8439815203019083f08015614b475773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff000000000000000000000000000000000000000060325416176032558173ffffffffffffffffffffffffffffffffffffffff602b541673ffffffffffffffffffffffffffffffffffffffff60355416813b15610c3357829160248392865194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af18015614b1057614b32575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff602b5416813b15610c3357829160248392865194859384927fd0ebdbe700000000000000000000000000000000000000000000000000000000845260048401525af18015614b1057614b1d575b5073ffffffffffffffffffffffffffffffffffffffff6045541673ffffffffffffffffffffffffffffffffffffffff602b5416813b15610c3357829160248392865194859384927fd0ebdbe700000000000000000000000000000000000000000000000000000000845260048401525af18015614b1057614afb575b505073ffffffffffffffffffffffffffffffffffffffff6080610ab69261138a62ffffff614a106149936160ba565b868061499d6160ba565b9216911680821015614af2578780915b1691827fffffffffffffffffffffffff0000000000000000000000000000000000000000602a541617602a551690817fffffffffffffffffffffffff00000000000000000000000000000000000000006029541617602955876044541691615d26565b5092614a5a8685511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655565b614aa58660208601511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006037541617603755565b830151167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006037549260a01b16911617603755565b908780916149ad565b81614b05916151e2565b61056157815f614964565b50505051903d90823e3d90fd5b81614b27916151e2565b61056157815f6148e8565b81614b3c916151e2565b61056157815f61486c565b5051903d90823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b81614b89916151e2565b610c3357825f614736565b84513d84823e3d90fd5b90506020813d602011614be5575b81614bb9602093836151e2565b81010312610561575173ffffffffffffffffffffffffffffffffffffffff81168103610561575f614699565b3d9150614bac565b50604051903d90823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b81614c5e916151e2565b61050257805f614107565b5050fd5b81614c77916151e2565b61051057815f614068565b505050fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b5034610536575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261053657614cf16101dc6101d7615223565b73ffffffffffffffffffffffffffffffffffffffff60445416803b15610536575f80916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af18015614f4e57614f3b575b50604051614d6181615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557614f26575b5050614e3660a0611607615223565b03925af1801561054157614efc575b50604051907fdd9fca12000000000000000000000000000000000000000000000000000000008252806004830152602160248301527f7570646174652064796e616d69632066656520696e206265666f72652073776160448301527f70000000000000000000000000000000000000000000000000000000000000006064830152808260848186737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561054157611fed5782610ab66115216101d7615223565b8181813d8311614f1f575b614f1181836151e2565b810103126105365751614e45565b503d614f07565b81614f30916151e2565b61056157815f614e27565b614f4791505f906151e2565b5f80614d54565b6040513d5f823e3d90fd5b60206040818301928281528451809452019201905f5b818110614f7c5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101614f6f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b8181106150085750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101614ffb565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061507257505050505090565b90919293946020806150ae837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951614fa8565b97019301930191939290615063565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106150ef57505050505090565b9091929394602080615152837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190614feb565b970193019301919392906150e0565b6040810190811067ffffffffffffffff82111761517d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761517d57604052565b60a0810190811067ffffffffffffffff82111761517d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761517d57604052565b60405190615230826151c6565b8173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b90816020910312610536575190565b60365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015260a081901c62ffffff16604084015260b81c60020b6060830152603854166080820152615365929161016091906153579060265460ff16151560a084015260275460c084015260285473ffffffffffffffffffffffffffffffffffffffff1660e084015280511515610100840152602001511515610120830152565b816101408201520190614fa8565b90565b90813b67ffffffffffffffff811161517d575f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601936153b260405195866151e2565b82855260208501903c565b60409073ffffffffffffffffffffffffffffffffffffffff61536594931681528160208201520190614fa8565b615357615365949373ffffffffffffffffffffffffffffffffffffffff60406101609561546086603673ffffffffffffffffffffffffffffffffffffffff60026080928281541685526001810154838116602087015262ffffff8160a01c16604087015260b81c820b6060860152015416910152565b8051151560a0870152602081015160c087015201511660e08401526101008301906020809180511515845201511515910152565b818102929181159184041417156154a757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b67ffffffffffffffff811161517d5760051b60200190565b90604051915f8154908160011c92600183169283156155e5575b6020851084146155b85784875286939081156155785750600114615534575b50615532925003836151e2565b565b90505f9291925260205f20905f915b81831061555c575050906020615532928201015f615525565b6020919350806001915483858901015201910190918492615543565b602093506155329592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f615525565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693615506565b916156489073ffffffffffffffffffffffffffffffffffffffff61536595931684527f6fe7e6eb000000000000000000000000000000000000000000000000000000006020850152608060408501526080840190614fa8565b916060818403910152614fa8565b90604051918281549182825260208201905f5260205f20925f905b80600783011061586d57615532945491818110615837575b818110615801575b8181106157cb575b818110615795575b81811061575f575b818110615729575b8181106156f4575b106156c7575b5003836151e2565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f6156bf565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b1681520193016156b9565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b1681520193016156b1565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b1681520193016156a9565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016156a1565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301615699565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301615691565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301615689565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391615671565b9081602091031261053657518060020b81036105365790565b60085460ff1680156159225790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115614f4e575f916159ba575b50151590565b90506020813d6020116159e4575b816159d5602093836151e2565b8101031261053657515f6159b4565b3d91506159c8565b600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081146154a7575f0390565b8115615a25570690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b60a09020602073ffffffffffffffffffffffffffffffffffffffff602b5416916040518281019182526006604082015260408152615a916060826151e2565b5190206024604051809481937f1e2eaeaf00000000000000000000000000000000000000000000000000000000835260048301525afa8015614f4e575f90615ae1575b62ffffff915060d01c1690565b506020813d602011615b0e575b81615afb602093836151e2565b810103126105365762ffffff9051615ad4565b3d9150615aee565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561053657604051907f98296c5400000000000000000000000000000000000000000000000000000000825260048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015614f4e57615b8c5750565b5f615532916151e2565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561053657604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152607b60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015614f4e57615b8c5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561053657604051907f98296c5400000000000000000000000000000000000000000000000000000000825260048201526207a12060248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015614f4e57615b8c5750565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561053657604051917f98296c54000000000000000000000000000000000000000000000000000000008352600483015260248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015614f4e57615b8c5750565b60405190615d09826151c6565b5f6080838281528260208201528260408201528260608201520152565b929173ffffffffffffffffffffffffffffffffffffffff8092615d47615cfc565b50615d50615cfc565b508160405196615d5f886151c6565b168652166020850152628000006040850152603c606085015216608083015260a082205f602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352615e21600484018b73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6c0100000000000000000000000060a48401525af18015614f4e57615f8a575b509082615f5d73ffffffffffffffffffffffffffffffffffffffff602c54166020928391615f2260405192615e7685856151e2565b5f84527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085013686860137604051958694859384937f5a6bcfda000000000000000000000000000000000000000000000000000000008552600485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b86548060020b60a485015260181c60020b60c484015260215460e4840152602254610104840152610140610124840152610144830190614fa8565b039134905af18015614f4e57615f71575050565b81615f8792903d106117fb576117ec81836151e2565b50565b615fa29060203d602011611ba557611b9981836151e2565b505f615e41565b6103e85f615fb692616579565b905f80604051615fc76040826151e2565b600c81527f426f756e6420726573756c74000000000000000000000000000000000000000060208201526040516160668161603460208201947fb60e72cc000000000000000000000000000000000000000000000000000000008652604060248401526064830190614fa8565b886044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826151e2565b51906a636f6e736f6c652e6c6f675afa50565b805182101561608d5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604080516160c882826151e2565b6001815260208101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301368337611325620067585f5b60ff8116600181101561627457865184810181811067ffffffffffffffff82111761517d5781908686833960608082526004908201527f5445535400000000000000000000000000000000000000000000000000000000608082015260128a61619f60a084018481036020860152604090600481527f544553540000000000000000000000000000000000000000000000000000000060208201520190565b92015203905ff0801561626a57816161db9173ffffffffffffffffffffffffffffffffffffffff6161d181958a616079565b9116905286616079565b5116803b15610536575f809160448951809481937f40c10f190000000000000000000000000000000000000000000000000000000083523060048401527f800000000000000000000000000000000000000000000000000000000000000060248401525af1801561626a579160019160ff9361625a575b500116616100565b5f616264916151e2565b5f616252565b87513d5f823e3d90fd5b50505050511561608d578073ffffffffffffffffffffffffffffffffffffffff915051168151610120810181811067ffffffffffffffff82111761517d57835273ffffffffffffffffffffffffffffffffffffffff602f5416815273ffffffffffffffffffffffffffffffffffffffff602e5416602082015273ffffffffffffffffffffffffffffffffffffffff602c54168382015273ffffffffffffffffffffffffffffffffffffffff602d5416606082015273ffffffffffffffffffffffffffffffffffffffff60305416608082015273ffffffffffffffffffffffffffffffffffffffff6031541660a082015273ffffffffffffffffffffffffffffffffffffffff6033541660c08201526004602073ffffffffffffffffffffffffffffffffffffffff603454168551928380927fc34c08e50000000000000000000000000000000000000000000000000000000082525afa8015616555575f906164f2575b73ffffffffffffffffffffffffffffffffffffffff91501660e082015273ffffffffffffffffffffffffffffffffffffffff603254166101008201525f5b60098110156164eb5773ffffffffffffffffffffffffffffffffffffffff8160051b830151168451907f095ea7b300000000000000000000000000000000000000000000000000000000825260048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201526020816044815f885af180156164e1576164aa575b50600101616415565b6020813d82116164d9575b816164c2602093836151e2565b81010312610536575180151503610536575f6164a1565b3d91506164b5565b85513d5f823e3d90fd5b5050905090565b506020813d60201161654d575b8161650c602093836151e2565b81010312610536575173ffffffffffffffffffffffffffffffffffffffff811681036105365773ffffffffffffffffffffffffffffffffffffffff906163d7565b3d91506164ff565b84513d5f823e3d90fd5b919082039182116154a757565b919082018092116154a757565b5f908383116166d357828110918215806166c9575b6166c15761659c848661655f565b92600184018094116154a7576003831115806166b8575b6166a9577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8310158061669f575b61668e5785831115616645575050906165fd846166029361655f565b615a1b565b90811561664057616613925061656c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116154a75790565b505090565b959492919095616656575b50505050565b839495506165fd90616668939461655f565b90811561664057616679925061655f565b600181018091116154a757905f808080616650565b50509050615365929150199061655f565b50821984116165e1565b5050919050615365925061656c565b508284116165b3565b509250505090565b508482111561658e565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e00006064820152fdfe60e0806040523461040657611325803803809161001c828561040a565b83398101906060818303126104065780516001600160401b038111610406578261004791830161042d565b60208201519092906001600160401b0381116104065760409161006b91840161042d565b91015160ff811681036104065782516001600160401b038111610337576100925f54610482565b601f81116103b7575b506020601f821160011461035657819293945f9261034b575b50508160011b915f199060031b1c1916175f555b81516001600160401b038111610337576100e3600154610482565b601f81116102d4575b50602092601f821160011461027357928192935f92610268575b50508160011b915f199060031b1c1916176001555b6080524660a0526040515f905f54918161013484610482565b9182825260208201946001811690815f1461024c5750600114610202575b61015e9250038261040a565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526101d260c08261040a565b51902060c052604051610e4a90816104bb823960805181610865015260a05181610ca8015260c05181610cce0152f35b505f80805290915f805160206113058339815191525b81831061023057505090602061015e92820101610152565b6020919350806001915483858801015201910190918392610218565b60ff191686525061015e92151560051b82016020019050610152565b015190505f80610106565b601f1982169360015f52805f20915f5b8681106102bc57508360019596106102a4575b505050811b0160015561011b565b01515f1960f88460031b161c191690555f8080610296565b91926020600181928685015181550194019201610283565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c8101916020841061032d575b601f0160051c01905b81811061032257506100ec565b5f8155600101610315565b909150819061030c565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b4565b601f198216905f8052805f20915f5b81811061039f57509583600195969710610387575b505050811b015f556100c8565b01515f1960f88460031b161c191690555f808061037a565b9192602060018192868b015181550194019201610365565b5f80525f80516020611305833981519152601f830160051c810191602084106103fc575b601f0160051c01905b8181106103f1575061009b565b5f81556001016103e4565b90915081906103db565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761033757604052565b81601f82011215610406578051906001600160401b0382116103375760405192610461601f8401601f19166020018561040a565b8284526020838301011161040657815f9260208093018386015e8301015290565b90600182811c921680156104b0575b602083101461049c57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161049156fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610a8b578063095ea7b3146109e857806318160ddd146109ad57806323b872dd14610889578063313ce5671461082e5780633644e515146107ee57806340c10f191461071f57806370a08231146106bc5780637ecebe001461065957806395d89b41146105435780639dc29fac146104a4578063a9059cbb146103f0578063d505accf146101435763dd62ed3e146100b3575f80fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576100ea610c52565b73ffffffffffffffffffffffffffffffffffffffff610107610c75565b91165f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461013f5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5761017a610c52565b610182610c75565b6044356064359260843560ff811680910361013f574285106103925760805f9160209373ffffffffffffffffffffffffffffffffffffffff6101c2610ca5565b91169687855260058652604085209889549960018b0190556040519073ffffffffffffffffffffffffffffffffffffffff888301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b6040850152169a8b6060840152898784015260a083015260c082015260c0815261024660e082610b9c565b51902060405190868201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261028d606282610b9c565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156103875773ffffffffffffffffffffffffffffffffffffffff5f51168015158061037e575b15610320577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526004825260405f20855f5282528060405f2055604051908152a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b508281146102d8565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610427610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600360205260405f20610457848254610c98565b90551690815f52600360205260405f208181540190556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f575f6104dc610c52565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff6024359316928385526003825260408520610530828254610c98565b90558060025403600255604051908152a3005b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f60015461058181610b4b565b808452906001811690811561061757506001146105b9575b6105b5836105a981850382610b9c565b60405191829182610c0a565b0390f35b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106105fd575090915081016020016105a9610599565b9192600181602092548385880101520191019092916105e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506105a99050610599565b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff6106a5610c52565b165f526005602052602060405f2054604051908152f35b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff610708610c52565b165f526003602052602060405f2054604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610756610c52565b602435906002548281018091116107c157602073ffffffffffffffffffffffffffffffffffffffff5f937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9360025516938484526003825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020610826610ca5565b604051908152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576108c0610c52565b6108c8610c75565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff80604435951693845f526004835260405f208233165f52835260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610986575b5050845f526003835260405f2061095f878254610c98565b90551693845f526003825260405f20818154019055604051908152a3602060405160018152f35b61098f91610c98565b855f526004845260405f208333165f52845260405f20558686610947565b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020600254604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610a1f610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600460205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f8054610ac881610b4b565b80845290600181169081156106175750600114610aef576105b5836105a981850382610b9c565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610b31575090915081016020016105a9610599565b919260018160209254838588010152019101909291610b19565b90600182811c92168015610b92575b6020831014610b6557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610b5a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bdd57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b919082039182116107c157565b467f000000000000000000000000000000000000000000000000000000000000000003610cf0577f000000000000000000000000000000000000000000000000000000000000000090565b6040515f905f549181610d0284610b4b565b9182825260208201946001811690815f14610e035750600114610da6575b610d2c92500382610b9c565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610da060c082610b9c565b51902090565b505f80805290917f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610de7575050906020610d2c92820101610d20565b6020919350806001915483858801015201910190918392610dcf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016865250610d2c92151560051b82016020019050610d2056fea164736f6c634300081a000a290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360a03460a057601f615e8238819003918201601f19168301916001600160401b0383118484101760a45780849260209460405283398101031260a057516001600160a01b0381169081900360a0575f80546001600160a01b0319168217815560405191907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a330608052615dc990816100b98239608051816135260152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612cd55750806301ffc9a714612c16578063095bcdb614612b6c5780630b0d9c0914612ae057806311da60b414612a85578063156e29f6146129d55780631e2eaeaf1461299b578063234266d7146126fc5780632d7713891461265157806335fd631a146125dd5780633dd45adb14612579578063426a8493146124f557806348c894911461226a5780635275965114612152578063558a72971461207b578063598af9e714611fe35780635a6bcfda1461144f5780636276cbbe14610f965780637e87ce7d14610e5957806380f0b44c14610d875780638161b87414610c315780638da5cb5b14610be157806397e8cd4e14610b7e5780639bf6645f14610b31578063a584119414610a66578063b6363cf2146109d5578063dbd035ff1461097f578063f02de3b21461092e578063f135baaa146108f4578063f2fde38b14610848578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612d3f565b6101c5612d62565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254612fed565b90551693845f52600460205260405f20865f5260205260405f2061025f828254612ffa565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391612fed565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612d85565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b3866130aa565b3390896130f0565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254612fed565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291612fed565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612e81565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061056f82612df6565b60a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105d0903690600401612f4d565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761060261350f565b51156108205760a0822092835f52600660205260405f209061062382613576565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361064e94613b44565b90949195606088015160020b908b511515905173ffffffffffffffffffffffffffffffffffffffff1691604051986106858a612e12565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107a2986106db61078f9860209d6108005773ffffffffffffffffffffffffffffffffffffffff8b511695614959565b9492968291926107d3575b505073ffffffffffffffffffffffffffffffffffffffff845116938e6fffffffffffffffffffffffffffffffff60408301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613d81565b809491946107aa575b5050823391613652565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107cc9251169083613652565b8480610798565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106e6565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614959565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108a0612d3f565b73ffffffffffffffffffffffffffffffffffffffff5f54916108c58284163314613007565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346103305761098d36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355481520191019084838210156109cc5750602080916109b0565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a0c612d3f565b73ffffffffffffffffffffffffffffffffffffffff610a29612d62565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a9d612d3f565b73ffffffffffffffffffffffffffffffffffffffff81169081610ae15750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b610aea90613a92565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b3461033057610b3f36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c81520191019084838210156109cc575060208091610b62565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610bca612d3f565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c68612d3f565b610c70612d62565b60443573ffffffffffffffffffffffffffffffffffffffff600254163303610d5f5773ffffffffffffffffffffffffffffffffffffffff821680151580610d1f575b610cf7576020936107a29280610cef5750815f526001855260405f20549384925b5f526001865260405f20610ce8848254612fed565b90556131f8565b938492610cd3565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c1614610cb2565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610dbe612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610e146024356130aa565b9081600f0b03610e3157610e2f9133915f03600f0b906130f0565b005b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e9136612e81565b610e99612e6f565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610d5f57623e900062fff0008316106103e9610fff8416101615610f6557602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610f0f81613576565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610fce36612e81565b60a4359073ffffffffffffffffffffffffffffffffffffffff821680830361033057610ff861350f565b6060820191825160020b617fff81136114245750825160020b600181126113f9575073ffffffffffffffffffffffffffffffffffffffff815116602082019073ffffffffffffffffffffffffffffffffffffffff825116808210156113c2575050608082019073ffffffffffffffffffffffffffffffffffffffff82511690604084019161108c62ffffff845116826139b7565b1561139757506110a162ffffff835116613a75565b96835173ffffffffffffffffffffffffffffffffffffffff8116908133036112e0575b505060a0852090815f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112b8576020997fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438927cffffff000000000000000000000000000000000000000000000000000061114260a0946145fc565b9260d01b168a76ffffff000000000000000000000000000000000000000084861b161717905562ffffff73ffffffffffffffffffffffffffffffffffffffff808a5116965116965116995160020b73ffffffffffffffffffffffffffffffffffffffff885116906040519b8c528c8c015260408b01528860608b015260020b98896080820152a45173ffffffffffffffffffffffffffffffffffffffff8116908133036111f4575b8585604051908152f35b61100016611203575b806111ea565b6112af9261128d604051937f6fe7e6eb0000000000000000000000000000000000000000000000000000000088860152336024860152604485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e48301528361010483015261010482526112aa61012483612e2e565b613f25565b508280806111fd565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b612000166112ef575b806110c4565b61139090604051907fdc98354e00000000000000000000000000000000000000000000000000000000602083015233602483015261137a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8860e483015260e482526112aa61010483612e2e565b50886112e9565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f6e6c983000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761148836612e81565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906114bf82612dda565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff811161033057611512903690600401612f4d565b90927fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761154361350f565b60a0832093845f52600660205260405f20608052611562608051613576565b608084015173ffffffffffffffffffffffffffffffffffffffff811690813303611ede575b5050815160020b92602083015160020b916115a56040850151613785565b93606087015160020b9760608201516040519960c08b018b811067ffffffffffffffff821117611eb157604052338b528860208c01528660408c015287600f0b60608c015260808b015260a08a01525f9185881215611e7a577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611e4e57620d89e88613611e22576040519261163c84612dda565b5f84525f60208501525f60408501525f606085015287600f0b611b25575b600460805101978960020b5f528860205260405f20988860020b5f5260205260405f206080515460a01c60020b8b81125f14611acf575060028060018c0154600184015490039b015491015490039b5b60a073ffffffffffffffffffffffffffffffffffffffff825116910151906040519160268301528960068301528b600383015281525f603a600c83012091816040820152816020820152525f5260066080510160205260405f20976fffffffffffffffffffffffffffffffff8954169982600f0b155f14611a72578a15611a4a5761176f61176960409f9b61184e9c6118609e5b60018301956117616002611755848a548503615703565b95019283548503615703565b9655556130aa565b916130aa565b6fffffffffffffffffffffffffffffffff169060801b179a8b965f84600f0b126119dc575b5082600f0b611898575b5050506117c46117b58560801d8360801d01613785565b9185600f0b90600f0b01613785565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8c8401516060850151918e5194855260208501528d84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38873ffffffffffffffffffffffffffffffffffffffff60808201511661385b565b8094919461186c575b50833391613652565b82519182526020820152f35b6118929073ffffffffffffffffffffffffffffffffffffffff6080840151169083613652565b85611857565b60805154929350909173ffffffffffffffffffffffffffffffffffffffff81169060a01c60020b828112156118fe575050906118f2926118e76118dd6118ed94614158565b91600f0b92614158565b90614527565b613785565b60801b5b8b808061179e565b92809193125f146119a95761193d9161192a6118ed6118ed9361192488600f0b91614158565b87614527565b9361193886600f0b92614158565b6144ca565b6fffffffffffffffffffffffffffffffff169060801b17906fffffffffffffffffffffffffffffffff61197c60036080510192600f0b8284541661456e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556118f6565b906118ed9250926119bf6118dd6119c595614158565b906144ca565b6fffffffffffffffffffffffffffffffff166118f6565b808f9151611a1e575b01516119f2575b8e611794565b611a198260805160049160020b5f52016020525f6002604082208281558260018201550155565b6119ec565b611a458360805160049160020b5f52016020525f6002604082208281558260018201550155565b6119e5565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b61176f61176960409f9b61184e9c6118609e6fffffffffffffffffffffffffffffffff611aa289600f0b8361456e565b167fffffffffffffffffffffffffffffffff0000000000000000000000000000000084541617835561173e565b9099908913611af55760028060018c0154600184015490039b015491015490039b6116aa565b9860026001608051015460018c01549003600183015490039a81806080510154910154900391015490039b6116aa565b6004608051018960020b5f5280602052898960405f20611b7e81546fffffffffffffffffffffffffffffffff611b6181831695600f0b8661456e565b16931594858515141595611dee575b508d600f0b9060801d613d3a565b60801b82179055602087015285528760020b5f5260205260405f208054906fffffffffffffffffffffffffffffffff8216611bbc8b600f0b8261456e565b901592836fffffffffffffffffffffffffffffffff831615141593611dc1575b8b600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217611d9457826fffffffffffffffffffffffffffffffff935060801b83831617905516606086015260408501525f88600f0b1215611ca1575b8351611c85575b60408401511561165a57611c8060808c015160020b8860056080510161410c565b61165a565b611c9c60808c015160020b8a60056080510161410c565b611c5f565b60808b015160020b6fffffffffffffffffffffffffffffffff600181602088015116925f817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276180712817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618050390620d89e8050301810416809111611d68576fffffffffffffffffffffffffffffffff6060860151161115611c5857867fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6080515460a01c60020b8b13611bdc57600160805101546001840155600260805101546002840155611bdc565b6080515460a01c60020b1215611e05575b8e611b70565b600160805101546001840155600260805101546002840155611dff565b857f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60448887604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f604085015113808091611fd6575b15611f6b5750506040517f259982e5000000000000000000000000000000000000000000000000000000006020820152611f62916112aa82611f368887898c33602487016136cb565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612e2e565b505b8580611587565b159081611fc8575b50611f7f575b50611f64565b6040517f21d0ee70000000000000000000000000000000000000000000000000000000006020820152611fc1916112aa82611f368887898c33602487016136cb565b5085611f79565b610200915016151587611f73565b5061080082161515611eed565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761201a612d3f565b73ffffffffffffffffffffffffffffffffffffffff612037612d62565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120b2612d3f565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761218a36612e81565b612192612e6f565b906280000062ffffff60408301511614801590612246575b61221e5760a0906121ba8361368e565b205f52600660205260405f20906121d082613576565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff6080820151163314156121aa565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043567ffffffffffffffff8111610330576122b9903690600401612f4d565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c6124cd57612345915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd734600000000000000000000000000000000000000000000000000000000845260206004850152602484019161306c565b038183335af19081156124c2575f9161241a575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6123f25760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e61242b8183612e2e565b8101906020818303126103305780519067ffffffffffffffff8211610330570181601f820112156103305780519067ffffffffffffffff8211611eb1576040519261249e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612e2e565b8284526020838301011161033057815f9260208093018386015e8301015281612359565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305773ffffffffffffffffffffffffffffffffffffffff61251836612d85565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576125ab612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576107a260209161342d565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b835481520191019084838210156109cc57506020600191612635565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff61269d612d3f565b6126ab825f54163314613007565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b34610330576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761273536612e81565b60c4359060a43560e43567ffffffffffffffff81116103305761275c903690600401612f4d565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761278e61350f565b60a0842094855f52600660205260405f20946127a986613576565b60808101805173ffffffffffffffffffffffffffffffffffffffff811690813303612943575b50506fffffffffffffffffffffffffffffffff60038801541697881561291b576020986127fb876130aa565b5f03612806876130aa565b5f036fffffffffffffffffffffffffffffffff169060801b179887612907575b866128f2575b5050612839338985613652565b60405190868252858a8301527f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb60403393a3519273ffffffffffffffffffffffffffffffffffffffff841693843303612897575b8888604051908152f35b6010166128a5575b8061288d565b6128e6956112aa93611f36926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d88015233602488016135bc565b5082808080808061289f565b600201908660801b048154019055898061282c565b60018101828960801b048154019055612826565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b602016612951575b806127cf565b6040517fb6a8b0fa000000000000000000000000000000000000000000000000000000006020820152612994916112aa82611f368b898b8d8b33602488016135bc565b508861294b565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057600435545f5260205ff35b34610330576129e336612d85565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f941695612a62612a55876130aa565b8603600f0b3390896130f0565b16938484526004602052604084208685526020526040842061025f828254612ffa565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75760206107a23361342d565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612b17612d3f565b612b1f612d62565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757610e2f92612b67612b5a846130aa565b5f03600f0b3390836130f0565b6131f8565b346103305773ffffffffffffffffffffffffffffffffffffffff612b8f36612d85565b91929092335f52600460205260405f20845f5260205260405f20612bb4848254612fed565b90551690815f52600460205260405f20835f5260205260405f20612bd9828254612ffa565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599181908101610279565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361033057807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115612cab575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612ca0565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760209073ffffffffffffffffffffffffffffffffffffffff612d24612d3f565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103305760043573ffffffffffffffffffffffffffffffffffffffff8116810361033057906024359060443590565b6080810190811067ffffffffffffffff821117611eb157604052565b6060810190811067ffffffffffffffff821117611eb157604052565b60a0810190811067ffffffffffffffff821117611eb157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611eb157604052565b60a4359062ffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126103305760405190612eb882612e12565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361033057815260243573ffffffffffffffffffffffffffffffffffffffff8116810361033057602082015260443562ffffff811681036103305760408201526064358060020b81036103305760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103305760800152565b9181601f840112156103305782359167ffffffffffffffff8311610330576020838186019501011161033057565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103305760043567ffffffffffffffff811161033057826023820112156103305780600401359267ffffffffffffffff84116103305760248460051b83010111610330576024019190565b91908203918211611d9457565b91908201809211611d9457565b1561300e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6f800000000000000000000000000000008110156130c857600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b9182156131f357613126919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b613132815c9283613b29565b80915d6131a357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b156131aa57565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff811690816132ea5750505f80808093855af11561322a5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156133635750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff8316613482576131a19034935b61347c856130aa565b906130f0565b346134e7576131a1906134be7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c6134b986613a92565b612fed565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d613473565b7fb0ec849e000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361354e57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561359457565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926136376101209473ffffffffffffffffffffffffffffffffffffffff61364f999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e082015281610100820152019161306c565b90565b9073ffffffffffffffffffffffffffffffffffffffff60206131a1949361368185848351168660801d906130f0565b01511690600f0b906130f0565b62ffffff16620f424081116136a05750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061364f95936137486101609473ffffffffffffffffffffffffffffffffffffffff61377794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b81610140820152019161306c565b9081600f0b9182036130c857565b926138419061381261364f99979473ffffffffffffffffffffffffffffffffffffffff6101a09895168752602087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08701526020820151900b60e0860152604081015161010086015260600151610120850152565b61014083015261016082015281610180820152019161306c565b939590919296945f9673ffffffffffffffffffffffffffffffffffffffff861633146139ac57885f6040870151135f1461393b5761040087166138a2575b50505050505050565b61392e9799985092613927969594926138ef9261391b956040519788967f9f063efc0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612e2e565b6002821615159161459f565b80926145bf565b915f808080808080613899565b95949392919061010086166139535750505050505050565b61392e979950869850916138ef916139a09493613927986040519788967f6c2bbe7e0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b6001821615159161459f565b505f96505050505050565b608081161580613a69575b613a3f57604081161580613a5d575b613a3f5761040081161580613a51575b613a3f5761010081161580613a45575b613a3f5773ffffffffffffffffffffffffffffffffffffffff8116613a1f575062ffffff1662800000141590565b613fff161590811591613a30575090565b62800000915062ffffff161490565b50505f90565b506001811615156139f1565b506002811615156139e1565b506004811615156139d1565b506008811615156139c2565b6280000062ffffff821614613a8d5761364f8161368e565b505f90565b73ffffffffffffffffffffffffffffffffffffffff1680613ab257504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156124c2575f91613afa575090565b90506020813d602011613b21575b81613b1560209383612e2e565b81010312610330575190565b3d9150613b08565b9190915f8382019384129112908015821691151617611d9457565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff851614613d2d5760808416613b7e575b5050505050565b613c66926138ef613c6092613c4c946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613c16604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b61014061014485015261016484019161306c565b82613f25565b916060835103613d05576040015162ffffff166280000014613cf9575b600816613c94575b80808080613b77565b604001519250608083901d600f0b8015613c8b57613cb5905f861295613b29565b9315613cf1575f84135b613cc9575f613c8b565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f8412613cbf565b60608201519350613c83565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317611d9457565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613f18578460801d94600f0b938860408516613e40575b50505050505f9481600f0b15801590613e34575b613dd8575b5050509190565b613e0f9395505f60208201511290511515145f14613e17576fffffffffffffffffffffffffffffffff169060801b175b80936145bf565b5f8080613dd1565b906fffffffffffffffffffffffffffffffff169060801b17613e08565b5082600f0b1515613dcc565b613efc613f08946138ef6118ed95613f0e999895613ee1613c16966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c61014485015261016061016485015261018484019161306c565b6004821615159161459f565b90613d3a565b5f80808088613db8565b5050505050909150905f90565b9190918251925f8060208301958682865af115613fc3575050604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e6020845110918215613f8f575b5050613d0557565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80613f87565b5183517fffffffff00000000000000000000000000000000000000000000000000000000811691600481106140d7575b50507fffffffff000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01169173ffffffffffffffffffffffffffffffffffffffff604051947f90bfb865000000000000000000000000000000000000000000000000000000008652166004850152166024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fa9e35b2f0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffff000000000000000000000000000000000000000000000000000000009250829060040360031b1b16168280613ff3565b919060020b9060020b9081810761413a5705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161449e5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189160028116614482575b60048116614466575b6008811661444a575b6010811661442e575b60208116614412575b604081166143f6575b608081166143da575b61010081166143be575b61020081166143a2575b6104008116614386575b610800811661436a575b611000811661434e575b6120008116614332575b6140008116614316575b61800081166142fa575b6201000081166142de575b6202000081166142c3575b6204000081166142a8575b620800001661428f575b5f12614268575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04614261565b6b048a170391f7dc42444e8fa290910260801c9061425a565b6d2216e584f5fa1ea926041bedfe9890920260801c91614250565b916e5d6af8dedb81196699c329225ee6040260801c91614245565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161423a565b916f31be135f97d08fd981231505542fcfa60260801c9161422f565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614225565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161421b565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614211565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614207565b916ff3392b0822b70005940c7a398e4b70f30260801c916141fd565b916ff987a7253ac413176f2b074cf7815e540260801c916141f3565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916141e9565b916ffe5dee046a99a2a811c461f1969c30530260801c916141df565b916fff2ea16466c96a3843ec78b326b528610260801c916141d6565b916fff973b41fa98c081472e6896dfb254c00260801c916141cd565b916fffcb9843d60f6159c9db58835c9266440260801c916141c4565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916141bb565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916141b2565b916ffff97272373d413259a46990580e213a0260801c916141a9565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f146144ff576144f5925f036fffffffffffffffffffffffffffffffff1691615a3d565b5f81126130c85790565b61451b926fffffffffffffffffffffffffffffffff16916159e2565b5f81126130c8575f0390565b905f83600f0b125f14614552576144f5925f036fffffffffffffffffffffffffffffffff1691615b34565b61451b926fffffffffffffffffffffffffffffffff1691615a7d565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61459257565b6393dafdf15f526004601cfd5b906145a991613f25565b9015613a8d576040815103613d05576040015190565b6145e2906145d48360801d8260801d03613785565b92600f0b90600f0b03613785565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830116116148e05777ffffffffffffffffffffffffffffffffffffffff000000008160201b168060ff61467983615bdb565b1691608083106148d457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f146148915750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff6148c584614158565b16116148cf575090565b905090565b905081607f031b6146a9565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b811561492c570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6040519290915f61496985612df6565b5f855260208501925f845260408601955f875280968654956040860151159586155f146156f557610fff8860b81c16945b8151925f948a73ffffffffffffffffffffffffffffffffffffffff16918288528b60a01c60020b90526fffffffffffffffffffffffffffffffff60038d0154169052608083015162400000811615155f146156e65762bfffff166149fd8161368e565b61ffff88166156cb575b8096620f424062ffffff8316101561569a575b8451156156845750508861562457606083019073ffffffffffffffffffffffffffffffffffffffff825116818110156155ed5750505173ffffffffffffffffffffffffffffffffffffffff166401000276a38111156155c257505b604051986101008a018a811067ffffffffffffffff821117611eb1576040525f8a525f60208b01525f60408b01525f60608b01525f60808b01525f60a08b01525f60c08b015288155f146155b45760018b0154949390945b60e08b01525b8015801561557a575b6154205788868d8c8e73ffffffffffffffffffffffffffffffffffffffff8351168252602083015160020b602089015160020b90815f8183071291050386155f14615275576fffffffffffffffffffffffffffffffff937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860409460019484600560ff60609716938260020b60081d890b5f5201602052875f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460ff031c9054169283151593845f146152635790614bb760ff92615bdb565b90031660020b900360020b0260020b5b905b15158684015260020b8060208401521315615238575b620d89e8602082015160020b121561522a575b73ffffffffffffffffffffffffffffffffffffffff614c17602083015160020b614158565b16918291015273ffffffffffffffffffffffffffffffffffffffff8551169673ffffffffffffffffffffffffffffffffffffffff60608c0151169283911516818310189118021892015116928d73ffffffffffffffffffffffffffffffffffffffff8316821015915f87125f1461507f5762ffffff8516620f424003614c9f81895f03615785565b94841561506e57614cb1888483615a7d565b955b868110614fb257509660a093929173ffffffffffffffffffffffffffffffffffffffff98978891620f424062ffffff8316145f14614f9e575050865b955b15614f905791614d0092615a3d565b925b60c0820152015260808d0152168c525f8351135f14614f605760a08a0151905f82126130c8570392614d3d60808b015160c08c015190612ffa565b5f81126130c8578103908113600116611d9457935b61ffff8716614f18575b6fffffffffffffffffffffffffffffffff60408d01511680614efe575b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608c01511681145f14614ec2575060408a0151614e10575b88614e03577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208b015160020b0160020b5b60020b60208d01525b9392614ad3565b60208a015160020b614df3565b88614e96576fffffffffffffffffffffffffffffffff614e7d8d8d8d600460e08201519260206002820154935b015160020b60020b5f520160205260405f2091600183019081549003905560028201908154900390555460801d908c15614e88575b60400151831661456e565b1660408d0152614dc0565b5f91909103600f0b90614e72565b6fffffffffffffffffffffffffffffffff614e7d8d8d8d6004600183015492602060e084015193614e3d565b73ffffffffffffffffffffffffffffffffffffffff8b51168103614ee7575b50614dfc565b614ef0906145fc565b60020b60208d01525f614ee1565b60c08b015160801b0460e08b01510160e08b01525f614d79565b9662ffffff861661ffff881603614f435760c08a0151905b8160c08c01510360c08c01520196614d5c565b620f424060808b015161ffff89169060c08d015101020490614f30565b60808a015160c08b015101905f82126130c857019260a08a01515f81126130c857614f8a91613b29565b93614d52565b614f9992615b34565b614d00565b62ffffff614fad921689615c68565b614cef565b9650505092505082918415811517615061578e60a09173ffffffffffffffffffffffffffffffffffffffff96845f14614ffc57614ff0878284615d07565b80978a015f0395614cf1565b87871161503a576150356150306150286fffffffffffffffffffffffffffffffff84168a60601b614922565b8a8516612ffa565b615d9b565b614ff0565b61503561503061505c6fffffffffffffffffffffffffffffffff84168a61588a565b615028565b634f2461b85f526004601cfd5b6150798882856159e2565b95614cb3565b9193509190831561521957615095858284615a3d565b915b8287106150f7579073ffffffffffffffffffffffffffffffffffffffff9560a09280965b156150e857916150ca92615a7d565b925b6150e362ffffff8d16620f42408190039086615c68565b614d02565b6150f1926159e2565b926150cc565b50915050838315821517615061578d83156151ef575073ffffffffffffffffffffffffffffffffffffffff851161519c578460601b6fffffffffffffffffffffffffffffffff851680820615159104015b73ffffffffffffffffffffffffffffffffffffffff8316928184111561518f578f939573ffffffffffffffffffffffffffffffffffffffff60a093819803165b80966150bb565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff84166151c7816c0100000000000000000000000088615943565b90801561492c576c010000000000000000000000008709156151485760010180615148575f80fd5b9180856152148873ffffffffffffffffffffffffffffffffffffffff9860a095615c91565b615188565b615224858383615b34565b91615097565b620d89e86020820152614bf2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186020820152614bdf565b5060020b900360020b0260020b614bc7565b60019194939650600592955001938460020b60081d60010b5f520160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff86161b0119905416908d8b831592831597885f146153c15750505050610330578f9160018f8f96907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186060928f989560409660ff896fffffffffffffffffffffffffffffffff9a5f03166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f85851693831c63d76453e004161a17031660020b9060020b0160020b0260020b5b90614bc9565b90956fffffffffffffffffffffffffffffffff955060409450600193987ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618918960ff6060969b811681031660020b9060020b0160020b0260020b6153bb565b949891955099969298919598602088015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8a51169216171782556fffffffffffffffffffffffffffffffff6003830154166fffffffffffffffffffffffffffffffff604089015116809103615535575b5082156155265760e060029101519101555b825190155f82121461551057506154ee6154f69293613785565b925103613785565b6fffffffffffffffffffffffffffffffff169060801b1793565b6154f69250906155209103613785565b91613785565b60e060019101519101556154d4565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003840154161760038301555f6154c2565b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608501511614614adc565b60028b015494939094614acd565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606083019073ffffffffffffffffffffffffffffffffffffffff825116818111156155ed5750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d268110156155c25750614a75565b9a509a50509950505050505050505f925f929190565b5f85511315614a1a577f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff610fff89169116620f424081830204910103614a07565b508960d01c62ffffff166149fd565b610fff8860c41c169461499a565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393847001000000000000000000000000000000001115610330571461577c57700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f424011156103305714615804577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156103305714615881576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c01000000000000000000000000840992828085109403938085039485841115610330571461593c576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185099383808610950394808603958685111561033057146159da579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d90810118931692615a348185615810565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff8061364f9594169116038060ff1d908101189116615810565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff831611615b2e575b73ffffffffffffffffffffffffffffffffffffffff8216928315615b22577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615b16948185169403169160601b16615c68565b90808206151591040190565b62bfc9215f526004601cfd5b90615ab2565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615bd5575b73ffffffffffffffffffffffffffffffffffffffff8116918215615b225761364f937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615bd0948185169403169160601b16615943565b614922565b90615b68565b8015610330577f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c60ff1060031b1792831c1c601f161a1790565b929190615c76828286615943565b93821561492c5709615c8457565b9060010190811561033057565b91908115615d02577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615cf55761364f9261503092820391615c68565b63f5c787f15f526004601cfd5b505090565b90918015615d955773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b16921680820281615d578483614922565b14615d7d575b5090615d6c615d719284614922565b612ffa565b80820615159104011690565b8301838110615d5d579150615d9192615c68565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff82169182036130c85756fea164736f6c634300081a000a608034608f57601f61284b38819003918201601f19168301916001600160401b03831184841017609357808492602094604052833981010312608f57516001600160a01b0381168103608f57600c805460ff19166001908117909155601f80546001600160a81b03191660089390931b610100600160a81b0316929092171790556040516127a390816100a88239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081631ed7831c14611bf3575080632ade3880146119c55780633e5e3c231461191d5780633f7286f4146118755780635ef243141461153857806366d9a9a0146113db57806385226c8114611332578063916a17c61461125c57806391dd734614610373578063b0464fdc1461029d578063b5508aa9146101f4578063ba414fa6146101b2578063e20c9f71146100fa5763fa7626d4146100b6575f80fd5b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060ff601f54166040519015158152f35b5f80fd5b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760405180602060155491828152019060155f527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475905f5b818110610186576101828561017681870382611d72565b60405191829182611c97565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161015f565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760206101ea6123a8565b6040519015158152f35b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760195461022e81611db3565b9061023c6040519283611d72565b80825260195f9081527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061028057604051806101828782611e5a565b60016020819261028f85611f7b565b81520192019201919061026b565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601c546102d781611db3565b906102e56040519283611d72565b80825260208201601c5f527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2115f915b83831061032957604051806101828782611ed7565b6002602060019260405161033c81611d29565b73ffffffffffffffffffffffffffffffffffffffff86541681526103618587016120b4565b83820152815201920192019190610314565b346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760043567ffffffffffffffff81116100f657366023820112156100f657806004013567ffffffffffffffff81116100f65781019060248201913683116100f657604090829003126100f657602481013567ffffffffffffffff81116100f6576024908201019082601f830112156100f657813561041e81611db3565b9261042c6040519485611d72565b81845260208085019260051b820101908582116100f657602001915b81831061124357505050604481013567ffffffffffffffff81116100f65760249101019180601f840112156100f65782359261048384611db3565b936104916040519586611d72565b80855260208086019160051b830101918383116100f65760208101915b8383106111dc578686805182518114908115916111d3575b506111ab575f5b8151811015611183576104e08183612358565b5190600e821015611156576104f58185612358565b51918061059c57505f9150602073ffffffffffffffffffffffffffffffffffffffff601f5460081c166004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af191821561059157600192610563575b505b016104cd565b6105839060203d811161058a575b61057b8183611d72565b810190612399565b508461055b565b503d610571565b6040513d5f823e3d90fd5b6001810361063c575090602081519181808201938492010103126100f6575190602073ffffffffffffffffffffffffffffffffffffffff601f5460081c166004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19182156105915760019261061e575b505b61055d565b6106359060203d811161058a5761057b8183611d72565b5084610617565b600281036106db57506020828051810103126100f657602073ffffffffffffffffffffffffffffffffffffffff610675825f9501612481565b16602473ffffffffffffffffffffffffffffffffffffffff601f5460081c169160405195869384927f3dd45adb00000000000000000000000000000000000000000000000000000000845260048401525af19182156105915760019261061e575061055d565b600381036107cc57506060828051810103126100f6576106fd60208301612481565b606061070b60408501612481565b93015180600f0b81036100f65773ffffffffffffffffffffffffffffffffffffffff601f5460081c16803b156100f6575f92836064926fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff95866040519a8b9889977f0b0d9c090000000000000000000000000000000000000000000000000000000089521660048801521660248601521660448401525af1918215610591576001926107bc575061055d565b5f6107c691611d72565b84610617565b60048103610915575090806020806107e9935183010191016124cb565b90939291737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156100f65773ffffffffffffffffffffffffffffffffffffffff604051917fca669fa70000000000000000000000000000000000000000000000000000000083521660048201525f8160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561059157610905575b5073ffffffffffffffffffffffffffffffffffffffff601f5460081c16803b156100f6575f928360649273ffffffffffffffffffffffffffffffffffffffff9485604051998a9788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1918215610591576001926107bc575061055d565b5f61090f91611d72565b86610872565b600581036109bf5750906020818051810103126100f65761094d602073ffffffffffffffffffffffffffffffffffffffff9201612481565b169073ffffffffffffffffffffffffffffffffffffffff601f5460081c1691823b156100f6575f926024849260405195869384927fa584119400000000000000000000000000000000000000000000000000000000845260048401525af1918215610591576001926107bc575061055d565b60068103610a72575090806020806109dc935183010191016124a2565b73ffffffffffffffffffffffffffffffffffffffff601f949392945460081c16803b156100f6575f928360649273ffffffffffffffffffffffffffffffffffffffff9485604051998a9788967f156e29f600000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1918215610591576001926107bc575061055d565b60078103610c1057508151820191608081602085019403126100f657610a9a60208201612481565b92604082015190610aad606084016124fc565b9260808101519067ffffffffffffffff82116100f657019080603f830112156100f6576020820151610ae19260400161207e565b9373ffffffffffffffffffffffffffffffffffffffff601f5460081c1690813b156100f657604473ffffffffffffffffffffffffffffffffffffffff915f809460405196879586947f80f0b44c00000000000000000000000000000000000000000000000000000000865216600485015260248401525af1801561059157610c00575b50610b73575b6001915061055d565b6020610bb392604051809481927fdd9fca120000000000000000000000000000000000000000000000000000000083528460048401526024830190611ce6565b03815f737109709ecfa91a80626ff3989d68f67f5b1dd12d5af191821561059157600192610be2575b50610b6a565b610bf99060203d811161058a5761057b8183611d72565b5084610bdc565b5f610c0a91611d72565b85610b64565b60088103610ca857506060828051810103126100f65761061982610c69610c3b602060019601612481565b73ffffffffffffffffffffffffffffffffffffffff6060610c5e60408601612481565b940151931690612717565b90604091610c7983519384611d72565b601983527f75736572746f6b656e2076616c756520696e636f7272656374000000000000006020840152612509565b60098103610d2f5750602082519281808201948592010103126100f65761061960019251610cf073ffffffffffffffffffffffffffffffffffffffff601f5460081c166125a0565b90604091610d0083519384611d72565b601883527f72657365727665732076616c756520696e636f727265637400000000000000006020840152612509565b91939291600a8103610ee057506060848051810103126100f657610d5560208501612481565b73ffffffffffffffffffffffffffffffffffffffff6060610d7860408801612481565b960151918180601f5460081c1697165f5216602052602060405f206024604051809881937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa948515610591575f95610ead575b50604094855191610de58784611d72565b601583527f64656c74612076616c756520696e636f727265637400000000000000000000006020840152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156100f6575f91610e74885194859384937f714a2f1300000000000000000000000000000000000000000000000000000000855260048501526024840152606060448401526064830190611ce6565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610ea3576001939495506107bc575061055d565b85513d5f823e3d90fd5b9094506020813d8211610ed8575b81610ec860209383611d72565b810103126100f657519385610dd4565b3d9150610ebb565b92939192600b8103610ffc575090602081519181808201938492010103126100f65751906024602073ffffffffffffffffffffffffffffffffffffffff601f5460081c16604051928380927ff135baaa0000000000000000000000000000000000000000000000000000000082527f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b60048301525afa908115610591575f91610fca575b5061061990600193604091610f9b83519384611d72565b601d83527f6e6f6e7a65726f2064656c746120636f756e7420696e636f72726563740000006020840152612509565b90506020813d8211610ff4575b81610fe460209383611d72565b810103126100f657516001610f84565b3d9150610fd7565b600c81036110bc5750602073ffffffffffffffffffffffffffffffffffffffff6064816110328685805f995183010191016124cb565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152969092166004870152831660248601526044850152929586938492165af1801561059157611089576001915061055d565b6020823d82116110b4575b816110a160209383611d72565b810103126100f657610bdc6001926124fc565b3d9150611094565b600d146110cc576001915061055d565b602073ffffffffffffffffffffffffffffffffffffffff60646110f88584805f985183010191016124a2565b601f546040517f8161b87400000000000000000000000000000000000000000000000000000000815293861660048501529185166024840152604483015290958693849260081c165af191821561059157600192610be25750610b6a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b610182604051611194602082611d72565b5f8152604051918291602083526020830190611ce6565b7fac8429db000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015836104c6565b823567ffffffffffffffff81116100f657820185603f820112156100f65760208101359161120983611dcb565b6112166040519182611d72565b83815260408385010188106100f6575f6020858196604083970183860137830101528152019201916104ae565b8235600e8110156100f657815260209283019201610448565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601d5461129681611db3565b906112a46040519283611d72565b80825260208201601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b8383106112e857604051806101828782611ed7565b600260206001926040516112fb81611d29565b73ffffffffffffffffffffffffffffffffffffffff86541681526113208587016120b4565b838201528152019201920191906112d3565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601a5461136c81611db3565b9061137a6040519283611d72565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106113be57604051806101828782611e5a565b6001602081926113cd85611f7b565b8152019201920191906113a9565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601b5461141581611db3565b906114236040519283611d72565b808252602082019081601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc15f915b8383106114fd57848660405191829160208301906020845251809152604083019060408160051b85010192915f905b82821061149257505050500390f35b919360206114ed827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06001959799849503018652885190836114dd8351604084526040840190611ce6565b9201519084818403910152611e05565b9601920192018594939192611483565b6002602060019260405161151081611d29565b61151986611f7b565b81526115268587016120b4565b83820152815201920192019190611454565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760043567ffffffffffffffff81116100f657366023820112156100f65780600401359061158e82611db3565b9061159c6040519283611d72565b82825260208201906024829460051b820101903682116100f657602401915b81831061185c575050506024359167ffffffffffffffff83116100f657366023840112156100f6578260040135906115f282611db3565b936116006040519586611d72565b82855260208501906024829460051b820101903682116100f65760248101925b8284106117f5575050505073ffffffffffffffffffffffffffffffffffffffff601f5460081c169360405193606085019060406020870152518091526080850192905f905b8082106117d2575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301604085015251808252602082019160208260051b82010193925f915b838310611787575f8061172c8a8a6116ef818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611d72565b6040519485809481937f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190611ce6565b03925af180156105915761173c57005b3d805f833e61174b8183611d72565b8101906020818303126100f65780519067ffffffffffffffff82116100f657019080601f830112156100f65781516117859260200161207e565b005b90919293946020806117c3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951611ce6565b970193019301919392906116b0565b909193845190600e82101561115657602081600193829352019501920190611665565b833567ffffffffffffffff81116100f6578201366043820112156100f65760248101359161182283611dcb565b61182f6040519182611d72565b83815236604484860101116100f6575f602085819660448397018386013783010152815201930192611620565b8235600e8110156100f6578152602092830192016115bb565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b8181106118f1576101828561017681870382611d72565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016118da565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110611999576101828561017681870382611d72565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611982565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601e546119ff81611db3565b90611a0d6040519283611d72565b808252602082019081601e5f527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3505f915b838310611b5b57848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210611a7c57505050500390f35b91939092947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09082030182528451906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110611b125750505050506020806001929601920192018594939192611a6d565b9091929394602080611b4e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951611ce6565b9701950193929101611af0565b604051611b6781611d29565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054611b9081611db3565b91611b9e6040519384611d72565b81835260208301905f5260205f20905f905b838210611bd6575050505060019282602092836002950152815201920192019190611a3e565b600160208192611be586611f7b565b815201930191019091611bb0565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601654808252602082019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110611c6b576101828561017681870382611d72565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611c54565b60206040818301928281528451809452019201905f5b818110611cba5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611cad565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff821117611d4557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611d4557604052565b67ffffffffffffffff8111611d455760051b60200190565b67ffffffffffffffff8111611d4557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b90602080835192838152019201905f5b818110611e225750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101611e15565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611e8c57505050505090565b9091929394602080611ec8837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951611ce6565b97019301930191939290611e7d565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611f0957505050505090565b9091929394602080611f6c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190611e05565b97019301930191939290611efa565b90604051915f8154908160011c9260018316928315612074575b6020851084146120475784875286939081156120075750600114611fc3575b50611fc192500383611d72565b565b90505f9291925260205f20905f915b818310611feb575050906020611fc1928201015f611fb4565b6020919350806001915483858901015201910190918492611fd2565b60209350611fc19592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f611fb4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693611f95565b92919261208a82611dcb565b916120986040519384611d72565b8294818452818301116100f6578281602093845f96015e010152565b90604051918281549182825260208201905f5260205f20925f905b8060078301106122cb57611fc1945491818110612295575b81811061225f575b818110612229575b8181106121f3575b8181106121bd575b818110612187575b818110612152575b10612125575b500383611d72565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f61211d565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301612117565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b16815201930161210f565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301612107565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016120ff565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016120f7565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b1681520193016120ef565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681520193016120e7565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e08201520194019201859293916120cf565b805182101561236c5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b908160209103126100f6575190565b60085460ff1680156123b75790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610591575f9161244f575b50151590565b90506020813d602011612479575b8161246a60209383611d72565b810103126100f657515f612449565b3d915061245d565b519073ffffffffffffffffffffffffffffffffffffffff821682036100f657565b908160609103126100f6576124b681612481565b9160406124c560208401612481565b92015190565b91908260809103126100f6576124e082612481565b916124ed60208201612481565b9160606124c560408401612481565b519081151582036100f657565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156100f6575f9161257060405194859384937f88b44c8500000000000000000000000000000000000000000000000000000000855260048501526024840152606060448401526064830190611ce6565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610591576125965750565b5f611fc191611d72565b73ffffffffffffffffffffffffffffffffffffffff166040517ff135baaa0000000000000000000000000000000000000000000000000000000081527f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b96004820152602081602481855afa8015610591575f906126d1575b73ffffffffffffffffffffffffffffffffffffffff915016156126cc576020602491604051928380927ff135baaa0000000000000000000000000000000000000000000000000000000082527f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd9560048301525afa908115610591575f9161269d575090565b90506020813d6020116126c4575b816126b860209383611d72565b810103126100f6575190565b3d91506126ab565b505f90565b506020813d60201161270f575b816126eb60209383611d72565b810103126100f65773ffffffffffffffffffffffffffffffffffffffff9051612618565b3d91506126de565b73ffffffffffffffffffffffffffffffffffffffff168061273757503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610591575f9161269d57509056fea164736f6c634300081a000a60808060405234601557610b38908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f803560e01c806321d0ee7014610734578063259982e5146107345780632abcd1b1146105cc578063575e24b41461045b5780636c2bbe7e146103225780636fe7e6eb146103275780639f063efc14610322578063b47b2fb11461024a578063b6a8b0fa14610119578063d0ebdbe7146101b2578063dc98354e1461011e578063e1b4af69146101195763eabb5622146100a9575f80fd5b346101165760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101165760043562ffffff8116809103610112577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082541617815580f35b5080fd5b80fd5b610974565b50346101165760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011657610156610739565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101165760049061018c610941565b507f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b50346101165760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101165760043573ffffffffffffffffffffffffffffffffffffffff81168103610112577fffffffffffffffffff0000000000000000000000000000000000000000ffffff76ffffffffffffffffffffffffffffffffffffffff00000083549260181b16911617815580f35b5034610116576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011657610283610739565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101165760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610116576101443567ffffffffffffffff811161011257906102fb6004923690840161075c565b50507f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b61087b565b5034610116576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011657610360610739565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261011657610393610941565b5061039c610964565b5080548173ffffffffffffffffffffffffffffffffffffffff8260181c1691823b15610112576104029262ffffff91836040518096819582947f527596510000000000000000000000000000000000000000000000000000000084521660048301610a7e565b03925af180156104505761043b575b60206040517f6fe7e6eb000000000000000000000000000000000000000000000000000000008152f35b610446828092610a10565b6101165780610411565b6040513d84823e3d90fd5b5034610116576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011657610494610739565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101165760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610116576101243567ffffffffffffffff81116101125761050a90369060040161075c565b505080548173ffffffffffffffffffffffffffffffffffffffff8260181c1691823b15610112576105719262ffffff91836040518096819582947f527596510000000000000000000000000000000000000000000000000000000084521660048301610a7e565b03925af18015610450576105b7575b606082604051907f575e24b40000000000000000000000000000000000000000000000000000000082528060208301526040820152f35b6105c2828092610a10565b610116575f610580565b5034610730577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160c081126107305760a0136107305760a43562ffffff81168091036107305773ffffffffffffffffffffffffffffffffffffffff5f5460181c1690813b1561073057604051917f5275965100000000000000000000000000000000000000000000000000000000835260043573ffffffffffffffffffffffffffffffffffffffff811680910361073057600484015260243573ffffffffffffffffffffffffffffffffffffffff811680910361073057602484015260443562ffffff81168091036107305760448401526064358060020b8091036107305760648401526084359073ffffffffffffffffffffffffffffffffffffffff821680920361073057835f60c49281958395608485015260a48401525af1801561072557610717575080f35b61072391505f90610a10565b005b6040513d5f823e3d90fd5b5f80fd5b61078a565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361073057565b9181601f840112156107305782359167ffffffffffffffff8311610730576020838186019501011161073057565b34610730576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107305760043573ffffffffffffffffffffffffffffffffffffffff81168103610730575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126107305760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610730576101443567ffffffffffffffff81116107305761085090369060040161075c565b9050507f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610730576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107305760043573ffffffffffffffffffffffffffffffffffffffff81168103610730575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126107305760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610730576101843567ffffffffffffffff81116107305761085090369060040161075c565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361073057565b60e435908160020b820361073057565b34610730576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107305760043573ffffffffffffffffffffffffffffffffffffffff81168103610730575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360112610730576101043567ffffffffffffffff81116107305761085090369060040161075c565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a5157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b91909160c081019260243573ffffffffffffffffffffffffffffffffffffffff811680910361073057825260443573ffffffffffffffffffffffffffffffffffffffff811680910361073057602083015260643562ffffff81168091036107305760408301526084358060020b80910361073057606083015260a43573ffffffffffffffffffffffffffffffffffffffff81168091036107305760a09162ffffff9160808501521691015256fea164736f6c634300081a000a60a034607b57601f610c3838819003918201601f19168301916001600160401b03831184841017607f57808492602094604052833981010312607b57516001600160a01b0381168103607b57608052604051610ba49081610094823960805181818161019901528181610278015281816108cb01526109560152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163481c6a751461090e575080638340f549146107da57806391dd7346146101f35763d9caed121461004a575f80fd5b61017f8161012061014c73ffffffffffffffffffffffffffffffffffffffff6100723661099b565b91836040949294519461008486610a55565b33865216602085015216604083015260608201528360808201526040519283916020830191909160808060a083019473ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015273ffffffffffffffffffffffffffffffffffffffff60408201511660408501526060810151606085015201511515910152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610a9e565b604051809381927f48c8949100000000000000000000000000000000000000000000000000000000835260048301610a0d565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156101e8576101c9575080f35b6101e4903d8084833e6101dc8183610a9e565b810190610adf565b5080f35b6040513d84823e3d90fd5b50346107d65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d6576004359067ffffffffffffffff82116107d657366023830112156107d657816004013567ffffffffffffffff81116107d65782013660248201116107d65773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908133036107d65760a090849003126107d6576040516102b781610a55565b6102c36024850161097a565b81526102d16044850161097a565b9060208101918083526102e66064870161097a565b90604083019282845260848801359060a46060820199838b520135801515918282036107d65760800152156106955750505073ffffffffffffffffffffffffffffffffffffffff81511673ffffffffffffffffffffffffffffffffffffffff83511690865191853b15610691576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91909116600482015260248101919091526044810191909152848160648183885af180156106865790859161066d575b505073ffffffffffffffffffffffffffffffffffffffff8091511691511693519381155f146104905750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19182156104835761045092610454575b505b60405190602082015260208152610444604082610a9e565b60405191829182610a0d565b0390f35b6104759060203d60201161047c575b61046d8183610a9e565b810190610b88565b505f61042a565b503d610463565b50604051903d90823e3d90fd5b9383948392933b1561065e576040517fa5841194000000000000000000000000000000000000000000000000000000008152846004820152858160248183885af1908115610662578691610649575b503082146105d7576020929160649160405196879485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015287602485015260448401525af19182156105cc5760209261059f575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19182156104835761045092610580575b5061042c565b6105989060203d60201161047c5761046d8183610a9e565b505f61057a565b6105be90833d85116105c5575b6105b68183610a9e565b810190610b70565b505f61053a565b503d6105ac565b6040513d85823e3d90fd5b939050604460209260405195869384927fa9059cbb00000000000000000000000000000000000000000000000000000000845287600485015260248401525af19182156105cc5760209261062c575b5061053c565b61064290833d85116105c5576105b68183610a9e565b505f610626565b8161065391610a9e565b61065e57845f6104df565b8480fd5b6040513d88823e3d90fd5b8161067791610a9e565b61068257835f6103be565b8380fd5b6040513d87823e3d90fd5b8680fd5b85939794953b156107d6576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015292909116602483015260448201525f8160648183865af180156107cb5761079d575b5073ffffffffffffffffffffffffffffffffffffffff8085969594955116945116915193813b15610682578360649260405196879586947f0b0d9c090000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af180156101e857610785575b506104509061042c565b610790828092610a9e565b61079a575f61077b565b80fd5b73ffffffffffffffffffffffffffffffffffffffff959394505f6107c091610a9e565b845f94939550610705565b6040513d5f823e3d90fd5b5f80fd5b6108b15f61012061014c73ffffffffffffffffffffffffffffffffffffffff6108023661099b565b91836040949294519461081486610a55565b3386521660208501521660408301526060820152600160808201526040519283916020830191909160808060a083019473ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015273ffffffffffffffffffffffffffffffffffffffff60408201511660408501526060810151606085015201511515910152565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156107cb576108f957005b61090c903d805f833e6101dc8183610a9e565b005b346107d6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d65760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b359073ffffffffffffffffffffffffffffffffffffffff821682036107d657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126107d65760043573ffffffffffffffffffffffffffffffffffffffff811681036107d6579060243573ffffffffffffffffffffffffffffffffffffffff811681036107d6579060443590565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b60a0810190811067ffffffffffffffff821117610a7157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a7157604052565b6020818303126107d65780519067ffffffffffffffff82116107d6570181601f820112156107d65780519067ffffffffffffffff8211610a715760405192610b4f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185610a9e565b828452602083830101116107d657815f9260208093018386015e8301015290565b908160209103126107d6575180151581036107d65790565b908160209103126107d657519056fea164736f6c634300081a000a60a034607a57601f6112d238819003918201601f19168301916001600160401b03831184841017607e57808492602094604052833981010312607a57516001600160a01b0381168103607a5760805260405161123f9081610093823960805181818160ab015281816107c101528181610a360152610dc10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063234266d7146107e5578063481c6a7514610777576391dd73461461003a575f80fd5b346106a45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106a45760043567ffffffffffffffff81116106a457366023820112156106a457806004013567ffffffffffffffff81116106a45781019060248201913683116106a4577f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8216928333036106a4576020818303126106a45760248101359067ffffffffffffffff82116106a4570190610120828203126106a45760a060247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc846040519461014986610bc6565b610154848301610c50565b8652030101126106a4576040519261016b84610bc6565b61017760448401610c50565b845261018560648401610c50565b6020850152608483013562ffffff811681036106a457604085015260a48301358060020b81036106a457606085015260c483013573ffffffffffffffffffffffffffffffffffffffff811681036106a457608085015260208201938452604082019260e48101358452606083019661010482013588526101248201359167ffffffffffffffff83116106a45761021e9201602401610cab565b946080830195865261026173ffffffffffffffffffffffffffffffffffffffff8651511673ffffffffffffffffffffffffffffffffffffffff8551163091610d9c565b9150506102a373ffffffffffffffffffffffffffffffffffffffff60208851015116309073ffffffffffffffffffffffffffffffffffffffff87511690610d9c565b92915050610719576106bb576020908551906103445f8751936103618c519b516040519c8d97889687957f234266d7000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a485015260c484015261010060e4840152610104830190610cf1565b03925af19485156106b0575f95610678575b506103b073ffffffffffffffffffffffffffffffffffffffff85515116309073ffffffffffffffffffffffffffffffffffffffff85511690610d9c565b979150506104006103f673ffffffffffffffffffffffffffffffffffffffff60208851015116309073ffffffffffffffffffffffffffffffffffffffff87511690610d9c565b9691505051610d43565b87036105f4576104109051610d43565b830361057057855f610469971261052d575b5f84126104e1575b5f811361049f575b505f831361046d575b858560405190602082015260208152610455604082610c0f565b604051918291602083526020830190610cf1565b0390f35b73ffffffffffffffffffffffffffffffffffffffff80602061049696510151169251169161111f565b5f80808061043b565b6104db9073ffffffffffffffffffffffffffffffffffffffff865151168373ffffffffffffffffffffffffffffffffffffffff8651169161111f565b5f610432565b61052873ffffffffffffffffffffffffffffffffffffffff6020875101511673ffffffffffffffffffffffffffffffffffffffff8551168461052288610d43565b92610e86565b61042a565b61056b73ffffffffffffffffffffffffffffffffffffffff8651511673ffffffffffffffffffffffffffffffffffffffff8551168461052285610d43565b610422565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f64656c7461416674657231206973206e6f7420657175616c20746f202d696e7460448201527f32353628646174612e616d6f756e7431290000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f64656c7461416674657230206973206e6f7420657175616c20746f202d696e7460448201527f32353628646174612e616d6f756e7430290000000000000000000000000000006064820152fd5b9094506020813d6020116106a8575b8161069460209383610c0f565b810103126106a45751935f610373565b5f80fd5b3d9150610687565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64656c74614265666f726531206973206e6f74203000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64656c74614265666f726530206973206e6f74203000000000000000000000006044820152fd5b346106a4575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106a457602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360161010081126106a45760a0136106a45760405161082481610bc6565b60043573ffffffffffffffffffffffffffffffffffffffff811681036106a457815260243573ffffffffffffffffffffffffffffffffffffffff811681036106a457602082015260443562ffffff811681036106a45760408201526064358060020b81036106a457606082015260843573ffffffffffffffffffffffffffffffffffffffff811681036106a457608082015260e43567ffffffffffffffff81116106a45773ffffffffffffffffffffffffffffffffffffffff6109e1610a1c936109b56108f65f953690600401610cab565b6040519261090384610bc6565b338452602084019081526040840160a4358152610992606086019260c4358452608087019485526040519889976020808a01525116604088015251606087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b516101008501525161012084015251610120610140840152610160830190610cf1565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610c0f565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610cf1565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156106b0575f91610b4c575b50602081519181808201938492010103126106a457514780610a8e575b602082604051908152f35b5f80808093335af115610aa15781610a83565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051907f90bfb8650000000000000000000000000000000000000000000000000000000082523360048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b90503d805f833e610b5d8183610c0f565b8101906020818303126106a45780519067ffffffffffffffff82116106a4570181601f820112156106a457805190610b9482610c71565b92610ba26040519485610c0f565b828452602083830101116106a457815f9260208093018386015e8301015281610a66565b60a0810190811067ffffffffffffffff821117610be257604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610be257604052565b359073ffffffffffffffffffffffffffffffffffffffff821682036106a457565b67ffffffffffffffff8111610be257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156106a457803590610cc282610c71565b92610cd06040519485610c0f565b828452602083830101116106a457815f926020809301838601378301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b908160209103126106a4575190565b7f80000000000000000000000000000000000000000000000000000000000000008114610d6f575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9290610da890846111b3565b9273ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169181610ded84836111b3565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa9081156106b0575f91610e3f575090565b90506020813d602011610e66575b81610e5a60209383610c0f565b810103126106a4575190565b3d9150610e4d565b908160209103126106a4575180151581036106a45790565b90919073ffffffffffffffffffffffffffffffffffffffff1680610f2657505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af180156106b057610efb5750565b610f1c9060203d602011610f1f575b610f148183610c0f565b810190610d34565b50565b503d610f0a565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b156106a457604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf180156106b0576110f6575b5073ffffffffffffffffffffffffffffffffffffffff1684308214611082576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156110775791602091849361104a575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561103e5750610efb5750565b604051903d90823e3d90fd5b61106990833d8511611070575b6110618183610c0f565b810190610e6e565b505f610fff565b503d611057565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af18015611077579160209184936110d9575b50611001565b6110ef90833d8511611070576110618183610c0f565b505f6110d3565b6111039195505f90610c0f565b5f9373ffffffffffffffffffffffffffffffffffffffff610f8b565b91929073ffffffffffffffffffffffffffffffffffffffff16803b156106a4575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156106b0576111a75750565b5f6111b191610c0f565b565b73ffffffffffffffffffffffffffffffffffffffff16806111d357503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156106b0575f91610e3f57509056fea164736f6c634300081a000a60a034607a57601f61183538819003918201601f19168301916001600160401b03831184841017607e57808492602094604052833981010312607a57516001600160a01b0381168103607a576080526040516117a29081610093823960805181818160b50152818161099001528181610ac101526111390152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80630a5b11e414610ae5578063481c6a7514610a775780635a6bcfda14610790576391dd734614610045575f80fd5b346107795760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107795760043567ffffffffffffffff8111610779573660238201121561077957806004013567ffffffffffffffff81116107795781016024810190368211610779577f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff841690813303610779576020818403126107795760248101359067ffffffffffffffff82116107795701906101a082840312610779576040519161012d83610c27565b61013960248201610ce9565b835260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610779576040519361017485610c70565b61018060448301610ce9565b855261018e60648301610ce9565b6020860152608482013562ffffff811681036107795760408601526101b560a48301610d0a565b606086015260c482013573ffffffffffffffffffffffffffffffffffffffff81168103610779577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c83608093602493858a01526020880198895203010112610779576040519561022487610c8c565b61023060e48301610d0a565b875261023f6101048301610d0a565b6020880152610124820135604088015261014482013560608801526040840196875261016482013567ffffffffffffffff81116107795761039f96602461028892850101610e8a565b916060850192835260406102b36101a46102a56101848501610ed0565b936080890194855201610ed0565b9360a087019485526102e060a08951208b51805160020b6060602083015160020b92015192309089610f80565b5050956103715f8c6103b38c519151955187519e8f97889687957f5a6bcfda000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a48701526020820151900b60c4860152604081015160e486015260600151610104850152565b610140610124840152610144830190610edd565b03925af1968715610785575f9761074d575b506103eb60a08751208951805160020b6060602083015160020b92015192309087610f80565b50509061042a73ffffffffffffffffffffffffffffffffffffffff88515116309073ffffffffffffffffffffffffffffffffffffffff89511690611114565b939150506fffffffffffffffffffffffffffffffff61047e73ffffffffffffffffffffffffffffffffffffffff60208b51015116309073ffffffffffffffffffffffffffffffffffffffff8b511690611114565b9891505016600f0b9060408b510151915f8382019384129112908015821691151617610720576fffffffffffffffffffffffffffffffff16600f0b036106c2576040610548995101515f81125f1461067d57505f82138015610674575b6104e490610f20565b5f8212801561066b575b6104f89015610f20565b5f821261061d575b5f85126105ca575b505f8113610583575b505f831361054c575b868660405190602082015260208152610534604082610ca8565b604051918291602083526020830190610edd565b0390f35b73ffffffffffffffffffffffffffffffffffffffff80602061057997510151169451169151151593611545565b5f8080808061051a565b6105c49073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff875116848651151593611545565b5f610511565b6106179073ffffffffffffffffffffffffffffffffffffffff602089510151169073ffffffffffffffffffffffffffffffffffffffff8851168561060d89610f54565b925115159361120d565b5f610508565b61066673ffffffffffffffffffffffffffffffffffffffff8851511673ffffffffffffffffffffffffffffffffffffffff88511661065a85610f54565b9086855115159361120d565b610500565b505f85126104ee565b505f85136104db565b5f12156104f8575f821280156106b9575b61069790610f20565b5f821380156106b0575b6106ab9015610f20565b6104f8565b505f85136106a1565b505f851261068e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f72726563740000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9096506040813d60401161077d575b8161076960409383610ca8565b810103126107795751955f6103c5565b5f80fd5b3d915061075c565b6040513d5f823e3d90fd5b6101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610779576107c436610d18565b6107cd36610de4565b90610124359167ffffffffffffffff83116107795761093b5f9273ffffffffffffffffffffffffffffffffffffffff9261080e610976963690600401610e8a565b916108fc6040519361081f85610c27565b3385526020850192835260408501938452606085019081526108e760808601948986526108b560a08801958b87526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b6101008901526020820151900b610120880152604081015161014088015260600151610160870152565b516101a06101808601526101e0850190610edd565b915115156101a08401525115156101c0830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610ca8565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610edd565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610785575f916109fd575b50602081805181010312610779576020015147806109e4575b602082604051908152f35b5f80808093335af1156109f757816109d9565b33611656565b90503d805f833e610a0e8183610ca8565b8101906020818303126107795780519067ffffffffffffffff8211610779570181601f8201121561077957805190610a4582610e50565b92610a536040519485610ca8565b8284526020838301011161077957815f9260208093018386015e83010152816109c0565b34610779575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077957610b1936610d18565b610b2236610de4565b906101243567ffffffffffffffff811161077957610b44903690600401610e8a565b91610144359283151580940361077957610164359283151580940361077957610976945f946108fc61093b946108e773ffffffffffffffffffffffffffffffffffffffff976108b560405197610b9989610c27565b3389526020890190815260408901928352606089019485526080890197885260a089019687526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c0810190811067ffffffffffffffff821117610c4357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610c4357604052565b6080810190811067ffffffffffffffff821117610c4357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c4357604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361077957565b35908160020b820361077957565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126107795760405190610d4f82610c70565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361077957815260243573ffffffffffffffffffffffffffffffffffffffff8116810361077957602082015260443562ffffff811681036107795760408201526064358060020b81036107795760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036107795760800152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c60809101126107795760405190610e1b82610c8c565b8160a4358060020b810361077957815260c4358060020b810361077957602082015260e4356040820152606061010435910152565b67ffffffffffffffff8111610c4357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561077957803590610ea182610e50565b92610eaf6040519485610ca8565b8284526020838301011161077957815f926020809301838601378301015290565b3590811515820361077957565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b15610f2757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f80000000000000000000000000000000000000000000000000000000000000008114610720575f0390565b94939290926040519460268601526006850152600384015282525f603a600c8401209281604082015281602082015252604051602081019182526006604082015260408152610fd0606082610ca8565b51902091600683018093116107205760445f9273ffffffffffffffffffffffffffffffffffffffff946040519060208201928352604082015260408152611018606082610ca8565b51902060405194859384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260036024840152165afa908115610785575f91611078575b50602081015160408201516060909201519092565b90503d805f833e6110898183610ca8565b8101906020818303126107795780519067ffffffffffffffff821161077957019080601f830112156107795781519167ffffffffffffffff8311610c43578260051b90604051936110dd6020840186610ca8565b845260208085019282010192831161077957602001905b828210611104575050505f611063565b81518152602091820191016110f4565b92906111209084611716565b9273ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691816111658483611716565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa908115610785575f916111b7575090565b90506020813d6020116111de575b816111d260209383610ca8565b81010312610779575190565b3d91506111c5565b90816020910312610779575180151581036107795790565b90816020910312610779575190565b9293156112af5773ffffffffffffffffffffffffffffffffffffffff16803b15610779576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af18015610785576112a35750565b5f6112ad91610ca8565b565b9173ffffffffffffffffffffffffffffffffffffffff168061134d57505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610785576113225750565b6113439060203d602011611346575b61133b8183610ca8565b8101906111fe565b50565b503d611331565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561077957604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af180156107855761151c575b5073ffffffffffffffffffffffffffffffffffffffff16843082146114a8576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561149d57916020918493611470575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561146457506113225750565b604051903d90823e3d90fd5b61148f90833d8511611496575b6114878183610ca8565b8101906111e6565b505f611425565b503d61147d565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561149d579160209184936114ff575b50611427565b61151590833d8511611496576114878183610ca8565b505f6114f9565b6115299195505f90610ca8565b5f9373ffffffffffffffffffffffffffffffffffffffff6113b1565b9293156115ce5773ffffffffffffffffffffffffffffffffffffffff16803b15610779576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f90829081838160648101611292565b90929073ffffffffffffffffffffffffffffffffffffffff16803b15610779575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610785576112a35750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b73ffffffffffffffffffffffffffffffffffffffff168061173657503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610785575f916111b757509056fea164736f6c634300081a000a60a034607357601f61131538819003918201601f19168301916001600160401b03831184841017607757808492602094604052833981010312607357516001600160a01b0381168103607357608052604051611289908161008c823960805181818160b50152818161076301526108940152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80630a5b11e4146108b8578063481c6a751461084a5780635a6bcfda14610563576391dd734614610045575f80fd5b3461054c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054c5760043567ffffffffffffffff811161054c573660238201121561054c57806004013567ffffffffffffffff811161054c578101602481019036821161054c577f00000000000000000000000000000000000000000000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff83169384330361054c5760208184031261054c5760248101359067ffffffffffffffff821161054c57016101a08184031261054c576040519161012c836109fa565b61013860248301610abc565b835260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838603011261054c576040519361017385610a43565b61017f60448401610abc565b855261018d60648401610abc565b6020860152608483013562ffffff8116810361054c5760408601526101b460a48401610add565b606086015260c483013573ffffffffffffffffffffffffffffffffffffffff8116810361054c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c84608093602493858a0152602088019889520301011261054c576040519061022382610a5f565b61022f60e48401610add565b825261023e6101048401610add565b602083015261012483013560408301526101448301356060830152604084019182526101648301359667ffffffffffffffff881161054c5761028a60409260246103749a870101610c5d565b908160608701526103465f6102b66101a46102a86101848a01610ca3565b9860808b01998a5201610ca3565b9560a089019687526103888a5191519587519d8e97889687957f5a6bcfda000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a48701526020820151900b60c4860152604081015160e486015260600151610104850152565b610140610124840152610144830190610cb0565b03925af1948515610558575f9561051e575b6103fb96508560801d600f0b86600f0b935f82126104d0575b5f851261047d575b505f8113610436575b505f83136103ff575b8686604051906020820152602081526103e7604082610a7b565b604051918291602083526020830190610cb0565b0390f35b73ffffffffffffffffffffffffffffffffffffffff80602061042c975101511694511691511515936110ab565b5f808080806103cd565b6104779073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff8751168486511515936110ab565b5f6103c4565b6104ca9073ffffffffffffffffffffffffffffffffffffffff602089510151169073ffffffffffffffffffffffffffffffffffffffff885116856104c089610cf3565b9251151593610d73565b5f6103bb565b61051973ffffffffffffffffffffffffffffffffffffffff8851511673ffffffffffffffffffffffffffffffffffffffff88511661050d85610cf3565b90868551151593610d73565b6103b3565b94506040863d604011610550575b8161053960409383610a7b565b8101031261054c576103fb95519461039a565b5f80fd5b3d915061052c565b6040513d5f823e3d90fd5b6101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054c5761059736610aeb565b6105a036610bb7565b90610124359167ffffffffffffffff831161054c5761070e5f9273ffffffffffffffffffffffffffffffffffffffff926105e1610749963690600401610c5d565b916106cf604051936105f2856109fa565b3385526020850192835260408501938452606085019081526106ba608086019489865261068860a08801958b87526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b6101008901526020820151900b610120880152604081015161014088015260600151610160870152565b516101a06101808601526101e0850190610cb0565b915115156101a08401525115156101c0830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610a7b565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610cb0565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610558575f916107d0575b5060208180518101031261054c576020015147806107b7575b602082604051908152f35b5f80808093335af1156107ca57816107ac565b336111bc565b90503d805f833e6107e18183610a7b565b81019060208183031261054c5780519067ffffffffffffffff821161054c570181601f8201121561054c5780519061081882610c23565b926108266040519485610a7b565b8284526020838301011161054c57815f9260208093018386015e8301015281610793565b3461054c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054c576108ec36610aeb565b6108f536610bb7565b906101243567ffffffffffffffff811161054c57610917903690600401610c5d565b91610144359283151580940361054c57610164359283151580940361054c57610749945f946106cf61070e946106ba73ffffffffffffffffffffffffffffffffffffffff976106886040519761096c896109fa565b3389526020890190815260408901928352606089019485526080890197885260a089019687526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c0810190811067ffffffffffffffff821117610a1657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610a1657604052565b6080810190811067ffffffffffffffff821117610a1657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a1657604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361054c57565b35908160020b820361054c57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a091011261054c5760405190610b2282610a43565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361054c57815260243573ffffffffffffffffffffffffffffffffffffffff8116810361054c57602082015260443562ffffff8116810361054c5760408201526064358060020b810361054c5760608201526084359073ffffffffffffffffffffffffffffffffffffffff8216820361054c5760800152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c608091011261054c5760405190610bee82610a5f565b8160a4358060020b810361054c57815260c4358060020b810361054c57602082015260e4356040820152606061010435910152565b67ffffffffffffffff8111610a1657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561054c57803590610c7482610c23565b92610c826040519485610a7b565b8284526020838301011161054c57815f926020809301838601378301015290565b3590811515820361054c57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b7f80000000000000000000000000000000000000000000000000000000000000008114610d1f575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9081602091031261054c5751801515810361054c5790565b9081602091031261054c575190565b929315610e155773ffffffffffffffffffffffffffffffffffffffff16803b1561054c576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af1801561055857610e095750565b5f610e1391610a7b565b565b9173ffffffffffffffffffffffffffffffffffffffff1680610eb357505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af1801561055857610e885750565b610ea99060203d602011610eac575b610ea18183610a7b565b810190610d64565b50565b503d610e97565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561054c57604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af1801561055857611082575b5073ffffffffffffffffffffffffffffffffffffffff168430821461100e576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561100357916020918493610fd6575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115610fca5750610e885750565b604051903d90823e3d90fd5b610ff590833d8511610ffc575b610fed8183610a7b565b810190610d4c565b505f610f8b565b503d610fe3565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561100357916020918493611065575b50610f8d565b61107b90833d8511610ffc57610fed8183610a7b565b505f61105f565b61108f9195505f90610a7b565b5f9373ffffffffffffffffffffffffffffffffffffffff610f17565b9293156111345773ffffffffffffffffffffffffffffffffffffffff16803b1561054c576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f90829081838160648101610df8565b90929073ffffffffffffffffffffffffffffffffffffffff16803b1561054c575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1801561055857610e095750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fdfea164736f6c634300081a000a60803461012b57601f614dd438819003918201601f19168301916001600160401b038311848410176101175780849260209460405283398101031261012b57516001600160a01b038116810361012b57600c805460ff19166001908117909155601f80546001600160a81b03191660089390931b610100600160a81b0316929092171790819055602180546001600160a01b03191633179055604051906133fa8083016001600160401b038111848210176101175760409284926119da843960081c6001600160a01b031681523360208201520301905ff0801561010c57602080546001600160a01b0319166001600160a01b03929092169190911790556040516118aa90816101308239f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081631ed7831c14610ecc575080632ade388014610c9e5780633e5e3c2314610bf65780633f7286f414610b4e57806348c8949114610a8c57806366d9a9a01461092f57806385226c8114610886578063916a17c6146107b057806391dd7346146103d0578063b0464fdc146102fb578063b5508aa914610253578063ba414fa614610210578063c34c08e5146101bf578063e20c9f71146101065763fa7626d4146100c3575f80fd5b3461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357602060ff601f54166040519015158152f35b80fd5b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101935761018f8561018381870382611230565b60405191829182610f70565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161016c565b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357602073ffffffffffffffffffffffffffffffffffffffff815416604051908152f35b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760206102496116c1565b6040519015158152f35b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760195461028e81611271565b9161029c6040519384611230565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106102de576040518061018f87826110c6565b6001602081926102ed85611289565b8152019201920191906102c9565b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357601c5461033681611271565b916103446040519384611230565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610386576040518061018f8782611143565b60026020600192604051610399816111e7565b73ffffffffffffffffffffffffffffffffffffffff86541681526103be85870161141d565b83820152815201920192019190610371565b503461074d576103df36611002565b8101919060208184031261074d5780359067ffffffffffffffff821161074d570182601f8201121561074d5780359061041782611271565b936104256040519586611230565b82855260208501916020839460051b82010191821161074d57602001915b818310610797575050508251600181149081610751575b501561064e5750905061048f61048a73ffffffffffffffffffffffffffffffffffffffff601f5460081c1661179a565b61181a565b806040517f5090d6c6000000000000000000000000000000000000000000000000000000006020820152600481526104c8602482611230565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561064b578161052391604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190610fbf565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156106405761062b575b508073ffffffffffffffffffffffffffffffffffffffff601f5460081c166044604051809581937f48c89491000000000000000000000000000000000000000000000000000000008352602060048401528160248401525af191821561061e5761018f926105fe575b506105d961048a73ffffffffffffffffffffffffffffffffffffffff601f5460081c1661179a565b604051906105e8602083611230565b8152604051918291602083526020830190610fbf565b610619903d8084833e6106118183611230565b81019061138c565b6105b1565b50604051903d90823e3d90fd5b8161063591611230565b61010357805f610548565b6040513d84823e3d90fd5b50fd5b73ffffffffffffffffffffffffffffffffffffffff6020541690813b1561074d576040517f7938323a00000000000000000000000000000000000000000000000000000000815260206004820152935160248501819052849160448301915f905b8082106106f75750505091815f81819503925af180156106ec576106d8575b61018f91506105d9565b505f6106e391611230565b61018f5f6106ce565b6040513d5f823e3d90fd5b9180945092909251906007821015610720576020816001938293520194019201869392916106af565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b90501561076a578051600781101561072057155f61045a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8235600781101561074d57815260209283019201610443565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601d546107ea81611271565b906107f86040519283611230565b80825260208201601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b83831061083c576040518061018f8782611143565b6002602060019260405161084f816111e7565b73ffffffffffffffffffffffffffffffffffffffff865416815261087485870161141d565b83820152815201920192019190610827565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601a546108c081611271565b906108ce6040519283611230565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310610912576040518061018f87826110c6565b60016020819261092185611289565b8152019201920191906108fd565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601b5461096981611271565b906109776040519283611230565b808252602082019081601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc15f915b838310610a5157848660405191829160208301906020845251809152604083019060408160051b85010192915f905b8282106109e657505050500390f35b91936020610a41827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083610a318351604084526040840190610fbf565b9201519084818403910152611071565b96019201920185949391926109d7565b60026020600192604051610a64816111e7565b610a6d86611289565b8152610a7a85870161141d565b838201528152019201920191906109a8565b3461074d57601f5f610a9d36611002565b908183604473ffffffffffffffffffffffffffffffffffffffff875460081c16937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f48c89491000000000000000000000000000000000000000000000000000000008652602060048701528160248701528686013785858286010152011681010301925af180156106ec57610b3957005b610b4c903d805f833e6106118183611230565b005b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d5760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b818110610bca5761018f8561018381870382611230565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610bb3565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d5760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110610c725761018f8561018381870382611230565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610c5b565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601e54610cd881611271565b90610ce66040519283611230565b808252602082019081601e5f527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3505f915b838310610e3457848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210610d5557505050500390f35b91939092947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09082030182528451906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110610deb5750505050506020806001929601920192018594939192610d46565b9091929394602080610e27837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951610fbf565b9701950193929101610dc9565b604051610e40816111e7565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054610e6981611271565b91610e776040519384611230565b81835260208301905f5260205f20905f905b838210610eaf575050505060019282602092836002950152815201920192019190610d17565b600160208192610ebe86611289565b815201930191019091610e89565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601654808252602082019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110610f445761018f8561018381870382611230565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610f2d565b60206040818301928281528451809452019201905f5b818110610f935750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610f86565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261074d5760043567ffffffffffffffff811161074d578260238201121561074d5780600401359267ffffffffffffffff841161074d576024848301011161074d576024019190565b90602080835192838152019201905f5b81811061108e5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101611081565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106110f857505050505090565b9091929394602080611134837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951610fbf565b970193019301919392906110e9565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061117557505050505090565b90919293946020806111d8837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190611071565b97019301930191939290611166565b6040810190811067ffffffffffffffff82111761120357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761120357604052565b67ffffffffffffffff81116112035760051b60200190565b90604051915f8154908160011c9260018316928315611382575b60208510841461135557848752869390811561131557506001146112d1575b506112cf92500383611230565b565b90505f9291925260205f20905f915b8183106112f95750509060206112cf928201015f6112c2565b60209193508060019154838589010152019101909184926112e0565b602093506112cf9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f6112c2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f16936112a3565b60208183031261074d5780519067ffffffffffffffff821161074d570181601f8201121561074d5780519067ffffffffffffffff821161120357604051926113fc601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185611230565b8284526020838301011161074d57815f9260208093018386015e8301015290565b90604051918281549182825260208201905f5260205f20925f905b806007830110611634576112cf9454918181106115fe575b8181106115c8575b818110611592575b81811061155c575b818110611526575b8181106114f0575b8181106114bb575b1061148e575b500383611230565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f611486565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301611480565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611478565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301611470565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301611468565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301611460565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301611458565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301611450565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391611438565b60085460ff1680156116d05790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156106ec575f91611768575b50151590565b90506020813d602011611792575b8161178360209383611230565b8101031261074d57515f611762565b3d9150611776565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156106ec575f916117685750151590565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561074d57604051907ff7fe347700000000000000000000000000000000000000000000000000000000825215156004820152600160248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156106ec576118935750565b5f6112cf9161123056fea164736f6c634300081a000a60a06040523461020b57604051601f6133fa38819003918201601f19168301916001600160401b038311848410176101f757808492604094855283398101031261020b578051906001600160a01b038216820361020b57602001516001600160a01b038116919082900361020b57600160ff19600c541617600c55600160ff19601f541617601f556080525f606061009561020f565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196024541617602455670de0b6b3a76400006025555f6026555f60606100e161020f565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196027541617602755670de0b6b3a763ffff196028555f6029556040516060810181811060018060401b038211176101f7576bb504f333f9de6484597d89b39160409182526001815260631960208201520152600160ff19602a541617602a55606319602b556bb504f333f9de6484597d89b360018060a01b0319602c541617602c556402dfd1c040602d55633ade57d0602e5560018060a01b031960235416176023556040516131cb908161022f823960805181818161066f015281816108d101528181610cc901528181610ff7015281816112e60152818161165001528181611bd60152612ccc0152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b038111838210176101f75760405256fe6080806040526004361015610012575f80fd5b5f3560e01c9081631b9ec89e14612020575080631ed7831c14611f785780632ade388014611d4a5780633e5e3c2314611ca25780633f7286f414611bfa578063481c6a7514611b8c57806366d9a9a014611a2f5780637938323a1461059b57806385226c81146104f2578063916a17c61461041c57806391dd734614610389578063b0464fdc146102b3578063b5508aa91461020a578063ba414fa6146101c8578063e20c9f71146101105763fa7626d4146100cc575f80fd5b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57602060ff601f54166040519015158152f35b5f80fd5b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060155491828152019060155f527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475905f5b81811061019c576101988561018c8187038261223e565b6040519182918261227f565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610175565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c576020610200612855565b6040519015158152f35b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760195461024481612366565b90610252604051928361223e565b80825260195f9081527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106102965760405180610198878261237e565b6001602081926102a58561249f565b815201920192019190610281565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601c546102ed81612366565b906102fb604051928361223e565b80825260208201601c5f527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2115f915b83831061033f576040518061019887826123fb565b6002602060019260405161035281612222565b73ffffffffffffffffffffffffffffffffffffffff86541681526103778587016125a2565b8382015281520192019201919061032a565b3461010c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760043567ffffffffffffffff811161010c573660238201121561010c57806004013567ffffffffffffffff811161010c573691016024011161010c5761019860405161040560208261223e565b5f81526040519182916020835260208301906122ce565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601d5461045681612366565b90610464604051928361223e565b80825260208201601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b8383106104a8576040518061019887826123fb565b600260206001926040516104bb81612222565b73ffffffffffffffffffffffffffffffffffffffff86541681526104e08587016125a2565b83820152815201920192019190610493565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601a5461052c81612366565b9061053a604051928361223e565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061057e5760405180610198878261237e565b60016020819261058d8561249f565b815201920192019190610569565b3461010c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760043567ffffffffffffffff811161010c573660238201121561010c5780600401356105f581612366565b91610603604051938461223e565b8183526024602084019260051b8201019036821161010c57602401915b818310611a16578373ffffffffffffffffffffffffffffffffffffffff60205416156119ee575f5b81518110156119ec5760208160051b8301015160078110156119bf57600181036108c657507f0000000000000000000000000000000000000000000000000000000000000000906106a061069b83612abe565b612b3e565b6040517f5090d6c6000000000000000000000000000000000000000000000000000000006020820152600481526106d860248261223e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c575f61073391604051809381927ff28dceb30000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ce565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156108ab576108b6575b506040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f60248201525f816044818373ffffffffffffffffffffffffffffffffffffffff88165af180156108ab576107cb575b506107c561069b600193612abe565b01610648565b913d805f853e6107db818561223e565b83019260208185031261010c5780519067ffffffffffffffff821161010c570183601f8201121561010c5780519167ffffffffffffffff831161087e576040519461084e601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020018761223e565b8386526020848401011161010c576001945f6020856107c5968261069b97018386015e83010152509350506107b6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b5f6108c09161223e565b83610758565b60028103610cbe57507f0000000000000000000000000000000000000000000000000000000000000000906108fd61069b83612abe565b73ffffffffffffffffffffffffffffffffffffffff6020541673ffffffffffffffffffffffffffffffffffffffff602354169061093b338383612ca7565b9591505061098073ffffffffffffffffffffffffffffffffffffffff60215416610975610969338784612ca7565b96915050863091612ca7565b969150503091612ca7565b96915050604051937ff3cd914c000000000000000000000000000000000000000000000000000000008552610a256004860173ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60225416910152565b60ff602a5416151560a4860152602b5460c486015273ffffffffffffffffffffffffffffffffffffffff602c541660e48601526101206101048601525f610124860152602085610144815f73ffffffffffffffffffffffffffffffffffffffff88165af19485156108ab575f95610c8b575b5073ffffffffffffffffffffffffffffffffffffffff6020541690610b56610b4d73ffffffffffffffffffffffffffffffffffffffff6023541692610b44610ae0338688612ca7565b9a91505073ffffffffffffffffffffffffffffffffffffffff6021541697610b3c610b0c33898c612ca7565b93915050610b2a610b1e308b8d612ca7565b9d9150508a3091612ca7565b9e915050610b3661292e565b91612d79565b610b36612969565b602b5490612aa3565b84610b366129bc565b60628801975f60628a129112908015821691151617610c5e5783610c1a610c2094610c15610c5999610b8d60019d8b610b366129f7565b89604091610bd78351610ba0858261223e565b600c81527f537761702064656c7461203000000000000000000000000000000000000000006020820152868360801d600f0b612d79565b610be38351938461223e565b600c83527f537761702064656c7461203100000000000000000000000000000000000000006020840152600f0b612d79565b612a61565b92612e1e565b73ffffffffffffffffffffffffffffffffffffffff602154169073ffffffffffffffffffffffffffffffffffffffff60235416916130b7565b6107c5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9094506020813d8211610cb6575b81610ca66020938361223e565b8101031261010c57519388610a97565b3d9150610c99565b60048103610fec57507f0000000000000000000000000000000000000000000000000000000000000000610cf461069b82612abe565b73ffffffffffffffffffffffffffffffffffffffff602054169073ffffffffffffffffffffffffffffffffffffffff60235416610d32338285612ca7565b915050610d7673ffffffffffffffffffffffffffffffffffffffff60215416610d6b610d5f338684612ca7565b98915050853091612ca7565b959150503091612ca7565b93915050604051917f5a6bcfda000000000000000000000000000000000000000000000000000000008352610df760048401602073ffffffffffffffffffffffffffffffffffffffff60026080928281541685526001810154838116602087015262ffffff8160a01c16604087015260b81c820b6060860152015416910152565b6024548060020b60a485015260181c60020b60c484015260255460e48401526026546101048401526101406101248401525f61014484015260408361016481800301815f73ffffffffffffffffffffffffffffffffffffffff8a165af19384156108ab5785935f95610fbb575b5060205473ffffffffffffffffffffffffffffffffffffffff169460235473ffffffffffffffffffffffffffffffffffffffff169333610ea5908689612ca7565b9a91505060215473ffffffffffffffffffffffffffffffffffffffff169433610ecf908888612ca7565b9291505030610edf90898c612ca7565b98915050883090610eef92612ca7565b9d915050610efb61292e565b90610f0592612d79565b610f0d612969565b90610f1792612d79565b8160801d600f0b610f2791612aa3565b83610f306129bc565b90610f3a92612d79565b600f0b610f4691612aa3565b86610f4f6129f7565b90610f5992612d79565b610f6290612a61565b91610f6c93612e1e565b60215473ffffffffffffffffffffffffffffffffffffffff169160235473ffffffffffffffffffffffffffffffffffffffff1690610fa990612a61565b91610fb393612e1e565b6001906107c5565b610fdd91955060403d8111610fe5575b610fd5818361223e565b810190612a8d565b509389610e64565b503d610fcb565b600581036112db57507f000000000000000000000000000000000000000000000000000000000000000061102261069b82612abe565b73ffffffffffffffffffffffffffffffffffffffff6020541673ffffffffffffffffffffffffffffffffffffffff6023541661105f338284612ca7565b91505061109873ffffffffffffffffffffffffffffffffffffffff60215416610d6b61108c338684612ca7565b97915050853091612ca7565b6040517f5a6bcfda00000000000000000000000000000000000000000000000000000000815260205473ffffffffffffffffffffffffffffffffffffffff9081166004830152602154808216602484015260a081901c62ffffff16604484015260b81c60020b60648301526022541660848201529094925090506027548060020b60a483015260181c60020b60c482015260285460e48201526029546101048201526101406101248201525f61014482015260408161016481800301815f73ffffffffffffffffffffffffffffffffffffffff8b165af19384156108ab5786915f956112ba575b5060205473ffffffffffffffffffffffffffffffffffffffff169460235473ffffffffffffffffffffffffffffffffffffffff1693336111c0908689612ca7565b9991505060215473ffffffffffffffffffffffffffffffffffffffff1696336111ea90888a612ca7565b92915050306111fa90898c612ca7565b9a91505088309061120a92612ca7565b9c91505061121661292e565b9061122092612d79565b611228612969565b9061123292612d79565b8160801d600f0b61124291612aa3565b8561124b6129bc565b9061125592612d79565b600f0b61126191612aa3565b8561126a6129f7565b9061127492612d79565b61127d936130b7565b60215473ffffffffffffffffffffffffffffffffffffffff169160235473ffffffffffffffffffffffffffffffffffffffff1690610fb3936130b7565b6112d391955060403d8111610fe557610fd5818361223e565b50938961117f565b6003810361163f57507f000000000000000000000000000000000000000000000000000000000000000061131161069b82612abe565b73ffffffffffffffffffffffffffffffffffffffff602054169073ffffffffffffffffffffffffffffffffffffffff6023541661134f338285612ca7565b91505061137c73ffffffffffffffffffffffffffffffffffffffff60215416610d6b610d5f338684612ca7565b915050602d5491602e54604051937f234266d70000000000000000000000000000000000000000000000000000000085526114276004860173ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60225416910152565b60a485015260c484015261010060e48401525f610104840152602083610124815f73ffffffffffffffffffffffffffffffffffffffff8a165af19182156108ab5785935f93611609575b5060205473ffffffffffffffffffffffffffffffffffffffff169460235473ffffffffffffffffffffffffffffffffffffffff1693336114b2908689612ca7565b9a91505060215473ffffffffffffffffffffffffffffffffffffffff1694336114dc908888612ca7565b92915050306114ec90898c612ca7565b989150508830906114fc92612ca7565b9d91505061150861292e565b9061151292612d79565b61151a612969565b9061152492612d79565b602d549182611532916129a4565b8461153b6129bc565b9061154592612d79565b602e549283611553916129a4565b8961155c6129f7565b9061156692612d79565b8060801d61157390612a32565b600f0b604092835190611586858361223e565b600e82527f446f6e6174652064656c7461203000000000000000000000000000000000000060208301526115b992612d79565b600f0b6115c590612a32565b600f0b918151916115d6908361223e565b600e82527f446f6e6174652064656c746120310000000000000000000000000000000000006020830152610f5992612d79565b935091506020833d8211611637575b816116256020938361223e565b8101031261010c578492519189611471565b3d9150611618565b60061461164e576001906107c5565b7f000000000000000000000000000000000000000000000000000000000000000061167b61069b82612abe565b773200000000000000000000000000000000000000000000007fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff602154161760215560a06040516116cb81612206565b73ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff81841c16604083015260b81c60020b606082015273ffffffffffffffffffffffffffffffffffffffff602254166080820152206117468183612bc1565b505050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c5773ffffffffffffffffffffffffffffffffffffffff604051917f98296c540000000000000000000000000000000000000000000000000000000083521660048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156108ab576119af575b506040517f6276cbbe0000000000000000000000000000000000000000000000000000000081526118746004820173ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60225416910152565b6bb504f333f9de6484597d89b360a482015260208160c4815f73ffffffffffffffffffffffffffffffffffffffff88165af180156108ab57611971575b506118bb91612bc1565b50505090737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c5773ffffffffffffffffffffffffffffffffffffffff604051927f98296c540000000000000000000000000000000000000000000000000000000084521660048301526bb504f333f9de6484597d89b360248301525f82604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108ab57600192611961575b509050610fb3565b5f61196b9161223e565b83611959565b6020813d82116119a7575b816119896020938361223e565b8101031261010c5751918260020b830361010c5791506118bb6118b1565b3d915061197c565b5f6119b99161223e565b846117d3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b005b7f9096cccb000000000000000000000000000000000000000000000000000000005f5260045ffd5b8235600781101561010c57815260209283019201610620565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601b54611a6981612366565b90611a77604051928361223e565b808252602082019081601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc15f915b838310611b5157848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210611ae657505050500390f35b91936020611b41827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083611b3183516040845260408401906122ce565b9201519084818403910152612311565b9601920192018594939192611ad7565b60026020600192604051611b6481612222565b611b6d8661249f565b8152611b7a8587016125a2565b83820152815201920192019190611aa8565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b818110611c76576101988561018c8187038261223e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611c5f565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110611d1e576101988561018c8187038261223e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611d07565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601e54611d8481612366565b90611d92604051928361223e565b808252602082019081601e5f527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3505f915b838310611ee057848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210611e0157505050500390f35b91939092947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09082030182528451906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110611e975750505050506020806001929601920192018594939192611df2565b9091929394602080611ed3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0876001960301895289516122ce565b9701950193929101611e75565b604051611eec81612222565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054611f1581612366565b91611f23604051938461223e565b81835260208301905f5260205f20905f905b838210611f5b575050505060019282602092836002950152815201920192019190611dc3565b600160208192611f6a8661249f565b815201930191019091611f35565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060165491828152019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110611ff4576101988561018c8187038261223e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611fdd565b3461010c5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5761205881612206565b60043573ffffffffffffffffffffffffffffffffffffffff81169081810361010c57825260243573ffffffffffffffffffffffffffffffffffffffff81169081810361010c5760208401526044359062ffffff8216820361010c57816040850152606435928360020b840361010c5783606086015260843573ffffffffffffffffffffffffffffffffffffffff81169586820361010c57608001527fffffffffffffffffffffffff000000000000000000000000000000000000000060205416176020557fffffffffffffffffffffffff000000000000000000000000000000000000000060215416176021557fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006021549260a01b169116176021557fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff6021549160b81b60190b79ffffff0000000000000000000000000000000000000000000000169116176021557fffffffffffffffffffffffff000000000000000000000000000000000000000060225416176022555f80f35b60a0810190811067ffffffffffffffff82111761087e57604052565b6040810190811067ffffffffffffffff82111761087e57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761087e57604052565b60206040818301928281528451809452019201905f5b8181106122a25750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612295565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b81811061232e5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101612321565b67ffffffffffffffff811161087e5760051b60200190565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106123b057505050505090565b90919293946020806123ec837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516122ce565b970193019301919392906123a1565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061242d57505050505090565b9091929394602080612490837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190612311565b9701930193019193929061241e565b90604051915f8154908160011c9260018316928315612598575b60208510841461256b57848752869390811561252b57506001146124e7575b506124e59250038361223e565b565b90505f9291925260205f20905f915b81831061250f5750509060206124e5928201015f6124d8565b60209193508060019154838589010152019101909184926124f6565b602093506124e59592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f6124d8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f16936124b9565b90604051918281549182825260208201905f5260205f20925f905b8060078301106127b9576124e5945491818110612783575b81811061274d575b818110612717575b8181106126e1575b8181106126ab575b818110612675575b818110612640575b10612613575b50038361223e565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f61260b565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301612605565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b1681520193016125fd565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b1681520193016125f5565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016125ed565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016125e5565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b1681520193016125dd565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681520193016125d5565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e08201520194019201859293916125bd565b9081602091031261010c575190565b60085460ff1680156128645790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156108ab575f916128fc575b50151590565b90506020813d602011612926575b816129176020938361223e565b8101031261010c57515f6128f6565b3d915061290a565b6040519061293d60408361223e565b600e82527f43616c6c65722064656c746120300000000000000000000000000000000000006020830152565b6040519061297860408361223e565b600e82527f43616c6c65722064656c746120310000000000000000000000000000000000006020830152565b81810392915f138015828513169184121617610c5e57565b604051906129cb60408361223e565b601082527f4578656375746f722064656c74612030000000000000000000000000000000006020830152565b60405190612a0660408361223e565b601082527f4578656375746f722064656c74612031000000000000000000000000000000006020830152565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610c5e575f0390565b7f80000000000000000000000000000000000000000000000000000000000000008114610c5e575f0390565b919082604091031261010c576020825192015190565b9190915f8382019384129112908015821691151617610c5e57565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156108ab575f916128fc5750151590565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c57604051907ff7fe347700000000000000000000000000000000000000000000000000000000825215156004820152600160248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156108ab57612bb75750565b5f6124e59161223e565b602090602473ffffffffffffffffffffffffffffffffffffffff94936040518481019182526006604082015260408152612bfc60608261223e565b51902060405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156108ab575f92612c73575b5073ffffffffffffffffffffffffffffffffffffffff8216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d602011612c9f575b81612c8f6020938361223e565b8101031261010c5751905f612c40565b3d9150612c82565b9290612cb3908461313f565b9273ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169181612cf8848361313f565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa9081156108ab575f91612d4a575090565b90506020813d602011612d71575b81612d656020938361223e565b8101031261010c575190565b3d9150612d58565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c575f91612de060405194859384937f714a2f13000000000000000000000000000000000000000000000000000000008552600485015260248401526060604484015260648301906122ce565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156108ab57612bb75750565b9081602091031261010c5751801515810361010c5790565b90919073ffffffffffffffffffffffffffffffffffffffff1680612ebe57505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af180156108ab57612e935750565b612eb49060203d602011612eb7575b612eac818361223e565b810190612846565b50565b503d612ea2565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561010c57604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf180156108ab5761308e575b5073ffffffffffffffffffffffffffffffffffffffff168430821461301a576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561300f57916020918493612fe2575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115612fd65750612e935750565b604051903d90823e3d90fd5b61300190833d8511613008575b612ff9818361223e565b810190612e06565b505f612f97565b503d612fef565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561300f57916020918493613071575b50612f99565b61308790833d851161300857612ff9818361223e565b505f61306b565b61309b9195505f9061223e565b5f9373ffffffffffffffffffffffffffffffffffffffff612f23565b91929073ffffffffffffffffffffffffffffffffffffffff16803b1561010c575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156108ab57612bb75750565b73ffffffffffffffffffffffffffffffffffffffff168061315f57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156108ab575f91612d4a57509056fea164736f6c634300081a000a60a034607a57601f611bb938819003918201601f19168301916001600160401b03831184841017607e57808492602094604052833981010312607a57516001600160a01b0381168103607a57608052604051611b269081610093823960805181818160ab01528181610d29015281816110a6015261158c0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80632229d0b414610d4d578063481c6a7514610cdf576391dd73461461003a575f80fd5b34610c0c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c0c5760043567ffffffffffffffff8111610c0c5736602382011215610c0c57806004013567ffffffffffffffff8111610c0c578101906024820191368311610c0c577f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff841692833303610c0c57602081840312610c0c5760248101359067ffffffffffffffff8211610c0c57019061018082840312610c0c576040519161012383611236565b61012f602482016112f8565b835260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610c0c576040519061016a8261129b565b61017660448201611319565b825261018460648201611319565b60208301526020840191825260a060247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c838803010112610c0c57604051946101cc86611236565b6101d8608483016112f8565b86526101e660a483016112f8565b602087015260c482013562ffffff81168103610c0c57604087015260e48201358060020b8103610c0c57606087015261010482013573ffffffffffffffffffffffffffffffffffffffff81168103610c0c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedc8360609360249360808b015260408901998a5203010112610c0c57604051926102818461127f565b61028e6101248301611319565b8452610144820135602085015261016482013573ffffffffffffffffffffffffffffffffffffffff81168103610c0c576040850152606085019384526101848201359167ffffffffffffffff8311610c0c576102ed9201602401611360565b946080840195865261033073ffffffffffffffffffffffffffffffffffffffff8651511673ffffffffffffffffffffffffffffffffffffffff8651163091611567565b91505061037273ffffffffffffffffffffffffffffffffffffffff60208851015116309073ffffffffffffffffffffffffffffffffffffffff88511690611567565b92915050610c8157610c2357610447956020916104135f885161045b885195516040519c8d97889687957ff3cd914c000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560a4860152602081015160c48601526040015173ffffffffffffffffffffffffffffffffffffffff1660e4850152565b6101206101048401526101248301906113a6565b03925af1948515610c18575f95610be0575b506104aa73ffffffffffffffffffffffffffffffffffffffff85515116309073ffffffffffffffffffffffffffffffffffffffff86511690611567565b979150506104ed73ffffffffffffffffffffffffffffffffffffffff60208751015116309073ffffffffffffffffffffffffffffffffffffffff87511690611567565b855180519196935091501561092357505f602082510151125f146107cb575160200151871261072157610527878760801d600f0b146113f8565b5f831261069d57610582965b5f811261065b575b5f8412610606575b5f81136105be575b505f8313610586575b86866040519060208201526020815261056e6040826112b7565b6040519182916020835260208301906113a6565b0390f35b73ffffffffffffffffffffffffffffffffffffffff8060206105b49751015116945116915151151593611989565b5f80808080610554565b6106009073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff87511684865151151593611989565b5f61054b565b61065673ffffffffffffffffffffffffffffffffffffffff6020885101511673ffffffffffffffffffffffffffffffffffffffff8751166106468761150e565b9085602088510151151593611651565b610543565b61069873ffffffffffffffffffffffffffffffffffffffff8751511673ffffffffffffffffffffffffffffffffffffffff8751166106468461150e565b61053b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f65636966696564000000000000000000000000000000000000000000000000006084820152fd5b5f881361089f576020906107e38589600f0b14611483565b51015183136107f55761058296610533565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604460248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f66696564000000000000000000000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f207a65726f000000000000000000000000000000000000006064820152fd5b602001515f1315610a8557516020015183126109db576109478387600f0b14611483565b5f87126109575761058296610533565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f65636966696564000000000000000000000000000000000000000000000000006084820152fd5b5f8413610b5c57602090610aa0898960801d600f0b146113f8565b5101518713610ab25761058296610533565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604460248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f66696564000000000000000000000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f2030000000000000000000000000000000000000000000006064820152fd5b9094506020813d602011610c10575b81610bfc602093836112b7565b81010312610c0c5751935f61046d565b5f80fd5b3d9150610bef565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656c74614265666f726531206973206e6f7420657175616c20746f203000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656c74614265666f726530206973206e6f7420657175616c20746f203000006044820152fd5b34610c0c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c0c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36016101608112610c0c5760a013610c0c57604051610d8c81611236565b60043573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57815260243573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57602082015260443562ffffff81168103610c0c5760408201526064358060020b8103610c0c57606082015260843573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57608082015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610c0c57604051610e548161127f565b60a4358015158103610c0c57815260c435602082015260e43573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57604082015260407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc360112610c0c5760405191610ec68361129b565b610104358015158103610c0c578352610124358015158103610c0c5760208401526101443567ffffffffffffffff8111610c0c5761108c9361102573ffffffffffffffffffffffffffffffffffffffff936110105f96610fd8610f30611051973690600401611360565b93602060405197610f4089611236565b3389528189019081526040890192835260608901948552608089019687526040519a8b9983808c0152511660408a0152518051151560608a01520151151560808801525160a087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051151561014086015260208101516101608601526040015173ffffffffffffffffffffffffffffffffffffffff16610180850152565b516101806101a08401526101c08301906113a6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826112b7565b604051809381927f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906113a6565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610c18575f916111bc575b5060208151918180820193849201010312610c0c575147806110fe575b602082604051908152f35b5f80808093335af11561111157816110f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051907f90bfb8650000000000000000000000000000000000000000000000000000000082523360048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b90503d805f833e6111cd81836112b7565b810190602081830312610c0c5780519067ffffffffffffffff8211610c0c570181601f82011215610c0c5780519061120482611326565b9261121260405194856112b7565b82845260208383010111610c0c57815f9260208093018386015e83010152816110d6565b60a0810190811067ffffffffffffffff82111761125257604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761125257604052565b6040810190811067ffffffffffffffff82111761125257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761125257604052565b359073ffffffffffffffffffffffffffffffffffffffff82168203610c0c57565b35908115158203610c0c57565b67ffffffffffffffff811161125257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f82011215610c0c5780359061137782611326565b9261138560405194856112b7565b82845260208383010111610c0c57815f926020809301838601378301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90816020910312610c0c575190565b156113ff57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572300000000000000000000000000000000000000000006064820152fd5b1561148a57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572310000000000000000000000000000000000000000006064820152fd5b7f8000000000000000000000000000000000000000000000000000000000000000811461153a575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92906115739084611a9a565b9273ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691816115b88483611a9a565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa908115610c18575f9161160a575090565b90506020813d602011611631575b81611625602093836112b7565b81010312610c0c575190565b3d9150611618565b90816020910312610c0c57518015158103610c0c5790565b9293156116f35773ffffffffffffffffffffffffffffffffffffffff16803b15610c0c576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af18015610c18576116e75750565b5f6116f1916112b7565b565b9173ffffffffffffffffffffffffffffffffffffffff168061179157505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610c18576117665750565b6117879060203d60201161178a575b61177f81836112b7565b8101906113e9565b50565b503d611775565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b15610c0c57604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af18015610c1857611960575b5073ffffffffffffffffffffffffffffffffffffffff16843082146118ec576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156118e1579160209184936118b4575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156118a857506117665750565b604051903d90823e3d90fd5b6118d390833d85116118da575b6118cb81836112b7565b810190611639565b505f611869565b503d6118c1565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af180156118e157916020918493611943575b5061186b565b61195990833d85116118da576118cb81836112b7565b505f61193d565b61196d9195505f906112b7565b5f9373ffffffffffffffffffffffffffffffffffffffff6117f5565b929315611a125773ffffffffffffffffffffffffffffffffffffffff16803b15610c0c576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481016116d6565b90929073ffffffffffffffffffffffffffffffffffffffff16803b15610c0c575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610c18576116e75750565b73ffffffffffffffffffffffffffffffffffffffff1680611aba57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610c18575f9161160a57509056fea164736f6c634300081a000a60a034608157601f610f2238819003918201601f19168301916001600160401b03831184841017608557808492602094604052833981010312608157516001600160a01b0381168103608157608052604051610e88908161009a823960805181818160bd015281816102cc015281816104b4015281816107030152610d280152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063055419b6146102f0578063481c6a7514610282576391dd73461461003a575f80fd5b3461027e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027e5760043567ffffffffffffffff811161027e573660238201121561027e57806004013567ffffffffffffffff811161027e57810136602482011161027e5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361027e576101008282031261027e5760a060247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc8460405194610121866105ba565b61012c848301610633565b86520301011261027e5760405191610143836105d6565b61014f60448201610633565b835261015d60648201610633565b6020840152608481013562ffffff8116810361027e57604084015260a48101358060020b810361027e57606084015260c481013573ffffffffffffffffffffffffffffffffffffffff8116810361027e576080840152602082019280845260e48201358060408501526101046060850193013583528061023e575b505051908161020d575b6102096040515f6020820152602081526101fd6040826105f2565b60405191829182610654565b0390f35b73ffffffffffffffffffffffffffffffffffffffff8060206102369551015116915116906106d6565b5f80806101e2565b73ffffffffffffffffffffffffffffffffffffffff61027792511673ffffffffffffffffffffffffffffffffffffffff855116906106d6565b5f806101d8565b5f80fd5b3461027e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160e0811261027e5760a01361027e5760405161032e816105d6565b60043573ffffffffffffffffffffffffffffffffffffffff8116810361027e57815260243573ffffffffffffffffffffffffffffffffffffffff8116810361027e57602082015260443562ffffff8116810361027e5760408201526064358060020b810361027e57606082015260843573ffffffffffffffffffffffffffffffffffffffff8116810361027e57815f91608061049a9401526040516103d2816105ba565b338152602081019182526060604082019160a4358352019060c435825273ffffffffffffffffffffffffffffffffffffffff6080604051943360208701525182815116604087015282602082015116606087015262ffffff60408201511682870152606081015160020b60a087015201511660c08401525160e0830152516101008201526101008152610467610120826105f2565b604051809381927f48c8949100000000000000000000000000000000000000000000000000000000835260048301610654565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156105af576104e257005b3d805f833e6104f181836105f2565b81019060208183031261027e5780519067ffffffffffffffff821161027e570181601f8201121561027e57805167ffffffffffffffff8111610582576040519261056360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601856105f2565b8184526020828401011161027e575f928160208094018483015e010152005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b6080810190811067ffffffffffffffff82111761058257604052565b60a0810190811067ffffffffffffffff82111761058257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761058257604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361027e57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b919082039182116106a957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6106e1308383610d03565b93915f93919394610ca55773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001693843b1561027e57604051927f0b0d9c0900000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff81169485600486015273ffffffffffffffffffffffffffffffffffffffff8116948560248201528960448201525f81606481838c5af180156105af57610c8b575b50906107b5913091610d03565b6f800000000000000000000000000000008a959392951015610c635789600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610c36578903600f0b03610bb25788916108119161069c565b03610b085786916108219161069c565b03610a5e57816108a45750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115610898575061086d5750565b61088e9060203d602011610891575b61088681836105f2565b810190610ded565b50565b503d61087c565b604051903d90823e3d90fd5b82939491923b15610a4f576040517fa5841194000000000000000000000000000000000000000000000000000000008152836004820152858160248183895af18015610a5357908691610a3a575b503082146109c6576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156109bb5791602091849361098e575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115610898575061086d5750565b6109ad90833d85116109b4575b6109a581836105f2565b810190610dd5565b505f61094f565b503d61099b565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af180156109bb57916020918493610a1d575b50610951565b610a3390833d85116109b4576109a581836105f2565b505f610a17565b81610a44916105f2565b610a4f57845f6108f2565b8480fd5b6040513d88823e3d90fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f74686520646966666572656e6365206265747765656e20706d42616c4265666f60448201527f726520616e6420706d42616c4166746572206973206e6f7420657175616c207460648201527f6f20616d6f756e740000000000000000000000000000000000000000000000006084820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f74686520646966666572656e6365206265747765656e207573657242616c416660448201527f74657220616e64207573657242616c4265666f7265206973206e6f742065717560648201527f616c20746f20616d6f756e7400000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c74614166746572206973206e6f7420657175616c20746f202d616d6f7560448201527f6e742e746f496e743132382829000000000000000000000000000000000000006064820152fd5b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6004897f93dafdf1000000000000000000000000000000000000000000000000000000008152fd5b6107b5929198505f610c9c916105f2565b5f9790916107a8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f64656c74614265666f7265206973206e6f7420657175616c20746f20300000006044820152fd5b9290610d0f9084610dfc565b9273ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169181610d548483610dfc565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa9081156105af575f91610da6575090565b90506020813d602011610dcd575b81610dc1602093836105f2565b8101031261027e575190565b3d9150610db4565b9081602091031261027e5751801515810361027e5790565b9081602091031261027e575190565b73ffffffffffffffffffffffffffffffffffffffff1680610e1c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156105af575f91610da657509056fea164736f6c634300081a000a60a034607357601f610d6f38819003918201601f19168301916001600160401b03831184841017607757808492602094604052833981010312607357516001600160a01b0381168103607357608052604051610ce3908161008c823960805181818160a8015281816104c4015261074e0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80631e2817de146104e8578063481c6a751461047a576391dd73461461003a575f80fd5b346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104645760043567ffffffffffffffff8111610464573660238201121561046457806004013567ffffffffffffffff8111610464578101366024820111610464577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff811692833303610464576101208184031261046457604051916100fe83610849565b61010a602483016108c2565b835260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08386030112610464576040519361014585610865565b610151604484016108c2565b855261015f606484016108c2565b6020860152608483013562ffffff8116810361046457604086015260a48301358060020b810361046457606086015260c483013573ffffffffffffffffffffffffffffffffffffffff81168103610464577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c8460609360249360808a0152602088019889520301011261046457604051916101f983610849565b60e4810135908115158203610464576101249184526101048101356020850152013573ffffffffffffffffffffffffffffffffffffffff81168103610464575f9561034691604085015260408501938085528651916103126020998a9461035a6040516102668882610881565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe088013689830137604051988997889687957ff3cd914c000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560a4860152602081015160c48601526040015173ffffffffffffffffffffffffffffffffffffffff1660e4850152565b6101206101048401526101248301906108e3565b03925af192831561046f5786915f9461043a575b505151156103ed5773ffffffffffffffffffffffffffffffffffffffff8091866103b3836103c49951511684895116876103aa8a60801d610926565b600f0b926109a9565b5101511693511691600f0b92610c42565b604051906103d28183610881565b5f82526103e96040519282849384528301906108e3565b0390f35b73ffffffffffffffffffffffffffffffffffffffff85610422828094610435995101511683885116866103aa89600f0b610926565b5151169351169160801d600f0b92610c42565b6103c4565b8281939295503d8311610468575b6104528183610881565b8101031261046457859051925f61036e565b5f80fd5b503d610448565b6040513d5f823e3d90fd5b34610464575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360161010081126104645760a0136104645760405161052781610865565b60043573ffffffffffffffffffffffffffffffffffffffff8116810361046457815260243573ffffffffffffffffffffffffffffffffffffffff8116810361046457602082015260443562ffffff811681036104645760408201526064358060020b810361046457606082015260843573ffffffffffffffffffffffffffffffffffffffff8116810361046457608082015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610464576040516105ef81610849565b60a435801515810361046457815260c435602082015260e4359173ffffffffffffffffffffffffffffffffffffffff83168303610464576106e8826107349460405f9501526040805161064181610849565b33815260208101948552019081526106b16040519333602086015251604085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051151560e084015260208101516101008401526040015173ffffffffffffffffffffffffffffffffffffffff16610120830152565b61012081526106f961014082610881565b604051809381927f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906108e3565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561046f5761077c57005b3d805f833e61078b8183610881565b8101906020818303126104645780519067ffffffffffffffff8211610464570181601f8201121561046457805167ffffffffffffffff811161081c57604051926107fd601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185610881565b81845260208284010111610464575f928160208094018483015e010152005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761081c57604052565b60a0810190811067ffffffffffffffff82111761081c57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761081c57604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361046457565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610955575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90816020910312610464575180151581036104645790565b90816020910312610464575190565b90919073ffffffffffffffffffffffffffffffffffffffff1680610a4957505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af1801561046f57610a1e5750565b610a3f9060203d602011610a42575b610a378183610881565b81019061099a565b50565b503d610a2d565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561046457604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf1801561046f57610c19575b5073ffffffffffffffffffffffffffffffffffffffff1684308214610ba5576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af18015610b9a57916020918493610b6d575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115610b615750610a1e5750565b604051903d90823e3d90fd5b610b8c90833d8511610b93575b610b848183610881565b810190610982565b505f610b22565b503d610b7a565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af18015610b9a57916020918493610bfc575b50610b24565b610c1290833d8511610b9357610b848183610881565b505f610bf6565b610c269195505f90610881565b5f9373ffffffffffffffffffffffffffffffffffffffff610aae565b91929073ffffffffffffffffffffffffffffffffffffffff16803b15610464575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1801561046f57610cca5750565b5f610cd491610881565b56fea164736f6c634300081a000aa164736f6c634300081a000a","sourceMap":"1288:11985:114:-:0;;;;;;3166:4:2;2031:24:152;;3166:4:2;2031:24:152;;;3166:4:2;2031:24:152;3166:4:2;2031:24:152;;1038:4:12;2031:24:152;;;1038:4:12;2031:24:152;;2461:87;1288:11985:114;;:::i;:::-;2495:4:152;;1288:11985:114;;2512:3:152;2461:87;;;1288:11985:114;2533:4:152;1288:11985:114;2461:87:152;;1288:11985:114;2461:87:152;1288:11985:114;;;;2461:87:152;1288:11985:114;;;2461:87:152;1288:11985:114;2533:4:152;1288:11985:114;;2031:24:152;1288:11985:114;;2031:24:152;2461:87;1288:11985:114;;:::i;:::-;2495:4:152;;1288:11985:114;;2512:3:152;2461:87;2617:88;;1288:11985:114;2689:5:152;;1288:11985:114;2617:88:152;;1288:11985:114;2617:88:152;1288:11985:114;;;;2617:88:152;1288:11985:114;;;2617:88:152;1288:11985:114;2689:5:152;;1288:11985:114;;2031:24:152;1288:11985:114;;;;2461:87:152;1288:11985:114;;;;;;;;;;;;;;;;;;;3166:4:2;2031:24:152;;;-1:-1:-1;;2461:87:152;2751:88;;1288:11985:114;;;356:29:150;2751:88:152;;;2031:24;;;2751:88;2031:24;;-1:-1:-1;;2031:24:152;;;;;;;;1288:11985:114;2031:24:152;1460:7:50;;-1:-1:-1;;;;;;1460:7:50;;;;;;;;3541:2:152;2031:24;;1460:7:50;;3541:2:152;1460:7:50;2031:24:152;;3587:36;1460:7:50;;;;-1:-1:-1;;;;;1460:7:50;;;;;;:236:114;:7:50;;;;-1:-1:-1;;;;;1460:7:50;;;1752:95:114;1460:7:50;;;;;;;;;1288:11985:114;;;;;;;;;;;;2031:24:152;1288:11985:114;;;;;2031:24:152;1288:11985:114;;;;;;;;;;;;-1:-1:-1;;;;;1288:11985:114;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c8063062d99c514614cb45780630a9254e414613f625780631ed7831c14613eb9578063251216be146138f15780632ade3880146136c557806339cd2013146136645780633e5e3c23146135bb5780633f7286f414613512578063516571ff14613292578063542524dd1461324557806354e0583c14612f7b57806366d9a9a014612e2057806385226c8114612d78578063916a17c614612ca357806393ad73ed14612c3e578063979acc2f14612af357806398e8385f146129115780639b3c512814612861578063ab89e60e14612669578063b0464fdc14612594578063b1a73b8a1461252c578063b5508aa914612484578063ba414fa614612441578063beb5106f1461206b578063c41facb814611c14578063c7b8e15d14611bd6578063cd8dcbb014611856578063cfa066151461123f578063d82478f01461108b578063e20c9f7114610fd2578063ea9b6b4a14610c78578063fa7626d414610c37578063fd02f0581461057a5763fd3699c21461019b575061000e565b3461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576101e16101dc6101d7615223565b615a52565b615b16565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557610565575b505060405161025581615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761054c575b505061045b9060a061032b615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c81528860208201526c010000000000000000000000006040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6080820152620f424060a0820152a36020918291604051916103fa84846151e2565b8683527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084013685850137866040518097819582947f2229d0b4000000000000000000000000000000000000000000000000000000008452600484016152b3565b03925af1801561054157610513575b5050806104786101d7615223565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152620f424060248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610505576104f15750f35b816104fb916151e2565b6105025780f35b80fd5b6040513d84823e3d90fd5b50fd5b81813d831161053a575b61052781836151e2565b8101031261053657515f61046a565b5f80fd5b503d61051d565b6040513d85823e3d90fd5b81610556916151e2565b61056157815f61031b565b5080fd5b8161056f916151e2565b61050257805f610247565b50346105025760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760043562ffffff81168091036105615760243561ffff8116809103610c33576044359061ffff8216809203610c2f576105f8620f424085606435956105f36101dc6101d7615223565b616579565b906106c561ffff6040938780865161061088826151e2565b600c81527f426f756e6420726573756c740000000000000000000000000000000000000000602082015287516106ad8161067b60208201947fb60e72cc0000000000000000000000000000000000000000000000000000000086528c60248401526064830190614fa8565b876044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826151e2565b51906a636f6e736f6c652e6c6f675afa501691615fa9565b926106d461ffff851691615fa9565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610c01578684517f4c63e56200000000000000000000000000000000000000000000000000000000815287151560048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610bcd57610c1a575b5050600c1b8673ffffffffffffffffffffffffffffffffffffffff60445416803b156105615781809160248851809481937feabb56220000000000000000000000000000000000000000000000000000000083528a60048401525af18015610bcd57610c05575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561578551907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610bcd57610bec575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105615781809160c48851809481937f7e87ce7d0000000000000000000000000000000000000000000000000000000083526108fc6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b8962fff0008a161760a48401525af18015610bcd57610bd7575b506109e295855197610927896151aa565b6001895260208901526bb504f333f9de6484597d89b386890152855161094c81615161565b82815282602082015273ffffffffffffffffffffffffffffffffffffffff602f5416986020998a92858a519361098286866151e2565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0860136878701378b519c8d95869485937f2229d0b4000000000000000000000000000000000000000000000000000000008552600485016153ea565b03925af1968715610bcd578297610b98575b50610fff169116179360801d90620f4240610a29826fffffffffffffffffffffffffffffffff610a23866159ec565b16615494565b04948315610af2575b5050505073ffffffffffffffffffffffffffffffffffffffff602b5416928073ffffffffffffffffffffffffffffffffffffffff6029541660248451809781937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa918215610ae957508491610ab9575b50610ab69250615c86565b80f35b905082813d8311610ae2575b610acf81836151e2565b8101031261053657610ab691515f610aab565b503d610ac5565b513d86823e3d90fd5b610a23610b2b93610b2662ffffff8488620f4240809a6fffffffffffffffffffffffffffffffff9802049101031685615c86565b6159ec565b06610b3a575b5f808080610a32565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b6b5760010190610b31565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b88809298508193503d8311610bc6575b610bb281836151e2565b810103126105365751948790610fff6109f4565b503d610ba8565b86513d84823e3d90fd5b610be28280926151e2565b610502575f610916565b81610bf6916151e2565b610c0157865f610833565b8680fd5b81610c0f916151e2565b610c0157865f6107ab565b81610c24916151e2565b610c0157865f610744565b8380fd5b8280fd5b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257602060ff601f54166040519015158152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257610cb56101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb56220000000000000000000000000000000000000000000000000000000083526207a12060048401525af1801561050557610fbd575b5050604051610d29816151aa565b60018152606460208201526bb504f333f9de6484597d89b3604082015260405190610d5382615161565b8282528260208301528273ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557610fa8575b5050610f5b9160a0610e29615223565b209173ffffffffffffffffffffffffffffffffffffffff602f541680937f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff368152606460208201526bfffffffffffff8cb535a09dd6040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808201526207a12060a0820152a360209283928660405193610efa86866151e2565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086013687870137604051978895869485937f2229d0b4000000000000000000000000000000000000000000000000000000008552600485016153ea565b03925af1801561054157610f7e575b82610ab6610f796101d7615223565b615c0d565b81813d8311610fa1575b610f9281836151e2565b8101031261053657515f610f6a565b503d610f88565b81610fb2916151e2565b610c3357825f610e19565b81610fc7916151e2565b61050257805f610d1b565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b81811061105f5761105b8561104f818703826151e2565b60405191829182614f59565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611038565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561050257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f30d21641000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761122a575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f527596510000000000000000000000000000000000000000000000000000000083526112146004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b607b60a48401525af18015610505576104f15750f35b81611234916151e2565b61050257805f61114a565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025761142573ffffffffffffffffffffffffffffffffffffffff60806112a0826029541683602a5416846045541691615d26565b506112e98382511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655565b6113348360208301511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006037541617603755565b61138a62ffffff6040830151167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006037549260a01b16911617603755565b6113e1606082015160020b7fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff6037549160b81b79ffffff000000000000000000000000000000000000000000000016911617603755565b01511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855565b6114336101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60455416803b156105105781809160c4604051809481937f2abcd1b10000000000000000000000000000000000000000000000000000000083526114fd6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b607b60a48401525af1801561050557611841575b50506115266115216101d7615223565b615b96565b60405161153281615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761182c575b505061174160a0611607615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f604051806116ca8190607b60a060c08401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8152606260208201526bfffffffffffff8ddc5b7dbb06040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808201520152565b0390a36020928391604051916116e084846151e2565b8683527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084013685850137866040518096819582947f2229d0b4000000000000000000000000000000000000000000000000000000008452600484016152b3565b03925af1801561054157611802575b506040517fdd9fca12000000000000000000000000000000000000000000000000000000008152816004820152601560248201527f7377617020776974682064796e616d69632066656500000000000000000000006044820152818160648186737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610541576117d5578280f35b816117f492903d106117fb575b6117ec81836151e2565b8101906152a4565b505f808280f35b503d6117e2565b8181813d8311611825575b61181781836151e2565b810103126105365751611750565b503d61180d565b81611836916151e2565b61056157815f6115f8565b8161184b916151e2565b61050257805f611511565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257750bb800000000000000000000000000000000000000007fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff60375416176037558073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af1801561050557611bc1575b5073ffffffffffffffffffffffffffffffffffffffff60445416611a1b604051917f30d216410000000000000000000000000000000000000000000000000000000060208401526004835261197f6024846151e2565b6119ef6040517fa9e35b2f000000000000000000000000000000000000000000000000000000006020820152600481526119ba6024826151e2565b6040519485937f90bfb865000000000000000000000000000000000000000000000000000000006020860152602485016155ef565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826151e2565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156105105781611a7691604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190614fa8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557611bac575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352611b5d6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6c0100000000000000000000000060a48401525af1801561050557611b80575080f35b611ba19060203d602011611ba5575b611b9981836151e2565b8101906158fa565b5080f35b503d611b8f565b81611bb6916151e2565b61050257805f611a9b565b81611bcb916151e2565b61050257805f611929565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760206040516401000276a48152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257611c516101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af1801561050557612056575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557612041575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f7e87ce7d000000000000000000000000000000000000000000000000000000008352611e086004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6103e860a48401525af180156105055761202c575b5050604051611e2b81615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557612017575b5050611fcf9060a0611f01615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8152606260208201526bfffffffffffff8ddc5b7dbb06040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608082015261046360a0820152a36020918291604051916103fa84846151e2565b03925af1801561054157611fed575b82610ab66115216101d7615223565b81813d8311612010575b61200181836151e2565b8101031261053657515f611fde565b503d611ff7565b81612021916151e2565b61056157815f611ef1565b81612036916151e2565b61050257805f611e1d565b8161204b916151e2565b61050257805f611d3e565b81612060916151e2565b61050257805f611cb5565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576120a86101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f423f60048401525af180156105055761242c575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557612417575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f7e87ce7d0000000000000000000000000000000000000000000000000000000083526122616004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6103e860a48401525af1801561050557612402575b5050604051612284816151aa565b60018152606460208201526bb504f333f9de6484597d89b360408201526040516122ad81615161565b828152826020820152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610c3357826040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f96206246000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610505576123ed575b50506123db9073ffffffffffffffffffffffffffffffffffffffff602f5416926020938492866040519361237a86866151e2565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086013687870137604051968795869485937f2229d0b4000000000000000000000000000000000000000000000000000000008552600485016153ea565b03925af18015610541576117d5578280f35b816123f7916151e2565b610c3357825f612346565b8161240c916151e2565b61050257805f612276565b81612421916151e2565b61050257805f612197565b81612436916151e2565b61050257805f61210e565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257602061247a615913565b6040519015158152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576019546124bf816154d4565b916124cd60405193846151e2565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061250f576040518061105b8782615040565b60016020819261251e856154ec565b8152019201920191906124fa565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601c546125cf816154d4565b916125dd60405193846151e2565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061261f576040518061105b87826150bd565b6002602060019260405161263281615161565b73ffffffffffffffffffffffffffffffffffffffff8654168152612657858701615656565b8382015281520192019201919061260a565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257771e00000000000000000000000000000000000000000000007fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff60375416176037558073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af180156105055761284c575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe0000000000000000000000000000000000000000000000000000000083526128006004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6c0100000000000000000000000060a48401525af180156105055761282f575b50610ab66115216101d7615223565b6128479060203d602011611ba557611b9981836151e2565b612820565b81612856916151e2565b61050257805f61273e565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025761289e6101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557612402575050604051612284816151aa565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502578073ffffffffffffffffffffffffffffffffffffffff60455416807fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557612ade575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352612a926004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6c0100000000000000000000000060a48401525af1801561050557612ac1575b50610ab66101dc6101d7615223565b612ad99060203d602011611ba557611b9981836151e2565b612ab2565b81612ae8916151e2565b61050257805f6129d0565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257771e00000000000000000000000000000000000000000000007fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff60375416176037558073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424160048401525af1801561050557612c29575b5073ffffffffffffffffffffffffffffffffffffffff60445416611a1b604051917f14002113000000000000000000000000000000000000000000000000000000006020840152620f424160248401526024835261197f6044846151e2565b81612c33916151e2565b61050257805f612bca565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601d54612cde816154d4565b91612cec60405193846151e2565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310612d2e576040518061105b87826150bd565b60026020600192604051612d4181615161565b73ffffffffffffffffffffffffffffffffffffffff8654168152612d66858701615656565b83820152815201920192019190612d19565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601a54612db3816154d4565b91612dc160405193846151e2565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310612e03576040518061105b8782615040565b600160208192612e12856154ec565b815201920192019190612dee565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601b54612e5b816154d4565b612e6860405191826151e2565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310612f4057868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210612ed557505050500390f35b91936020612f30827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083612f208351604084526040840190614fa8565b9201519084818403910152614feb565b9601920192018594939192612ec6565b60026020600192604051612f5381615161565b612f5c866154ec565b8152612f69858701615656565b83820152815201920192019190612e98565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257612fb86101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424160048401525af1801561050557613230575b505060405161302c81615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff6044541661316a604051917f14002113000000000000000000000000000000000000000000000000000000006020840152620f42416024840152602483526130946044846151e2565b6119ef6040517fa9e35b2f000000000000000000000000000000000000000000000000000000006020820152600481526130cf6024826151e2565b61313a6040519586947f90bfb86500000000000000000000000000000000000000000000000000000000602087015260248601527f575e24b40000000000000000000000000000000000000000000000000000000060448601526080606486015260a4850190614fa8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc848303016084850152614fa8565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561056157816131c591604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190614fa8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156105055761321b575b50506123db73ffffffffffffffffffffffffffffffffffffffff602f54166020928391604051916116e084846151e2565b81613225916151e2565b61056157815f6131ea565b8161323a916151e2565b61050257805f61301e565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257602060405173fffd8963efd1fc6a506488495d951d5263988d258152f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610502576132cf6101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb56220000000000000000000000000000000000000000000000000000000083526207a12060048401525af18015610505576134fd575b505060405161334381615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610505576134e8575b5050610f5b9060a0613419615223565b2073ffffffffffffffffffffffffffffffffffffffff602f541680917f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8152603160208201526bfffffffffffffc65a9ad04ef6040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808201526207a12060a0820152a36020918291604051916103fa84846151e2565b816134f2916151e2565b61056157815f613409565b81613507916151e2565b61050257805f613335565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b81811061358f5761105b8561104f818703826151e2565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613578565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106136385761105b8561104f818703826151e2565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613621565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760235460245460255460408051600285810b825260189590951c90940b60208501528301919091526060820152608090f35b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050257601e54613700816154d4565b61370d60405191826151e2565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b83831061385b5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106137795786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106138125750505050506020806001929701930193019092869594929361376c565b909192939460208061384e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951614fa8565b97019501939291016137ee565b60405161386781615161565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054613890816154d4565b9161389e60405193846151e2565b8183528a526020808b20908b9084015b8382106138d457505050506001928260209283600295015281520192019201919061373d565b6001602081926138e3866154ec565b8152019301910190916138ae565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025761392e6101dc6101d7615223565b8073ffffffffffffffffffffffffffffffffffffffff60445416803b15610510578180916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352620f424060048401525af1801561050557613ea4575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561051057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557613e8f575b5073ffffffffffffffffffffffffffffffffffffffff602b5416803b156105105781809160c4604051809481937f7e87ce7d000000000000000000000000000000000000000000000000000000008352613ae76004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b6103e860a48401525af1801561050557613e7a575b5050604051613b0a816151aa565b60018152602081017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1881526bb504f333f9de6484597d89b36040830152604051613b5381615161565b8381528360208201528373ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557613e65575b5050613cfa9060a0613c29615223565b209373ffffffffffffffffffffffffffffffffffffffff602f541680957f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c06040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1881528a60208201526c010000000000000000000000006040820152670de0b6b3a764000060608201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6080820152620f424060a0820152a36020948592876040519361237a86866151e2565b03925af18015613e0357613e3b575b50517f80000000000000000000000000000000000000000000000000000000000000008114613e0e57808303906103e882029182046103e81490151715613e0e5773ffffffffffffffffffffffffffffffffffffffff602b54168273ffffffffffffffffffffffffffffffffffffffff602954166024604051809481937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa928315613e03578493613dce575b84610ab6620f4240850486615c86565b90809350813d8311613dfc575b613de581836151e2565b8101031261053657620f4240610ab6925192613dbe565b503d613ddb565b6040513d86823e3d90fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b8281813d8311613e5e575b613e5081836151e2565b810103126105365751613d09565b503d613e46565b81613e6f916151e2565b610c2f57835f613c19565b81613e84916151e2565b61050257805f613afc565b81613e99916151e2565b61050257805f613a1d565b81613eae916151e2565b61050257805f613994565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110613f365761105b8561104f818703826151e2565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613f1f565b503461050257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105025760405190610b52918281019281841067ffffffffffffffff851117614c8757829382916201014a8339039082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff8060445416911690613fea82615368565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15614c825761404091849160405193849283927fb4d6c782000000000000000000000000000000000000000000000000000000008452600484016153bd565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610541578391614c6d575b505061408c73ffffffffffffffffffffffffffffffffffffffff6045541691615368565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15614c69576140e291839160405193849283927fb4d6c782000000000000000000000000000000000000000000000000000000008452600484016153bd565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557614c54575b5050604051615e828082019082821067ffffffffffffffff831117614c2757602091839162007a7d833930815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffff0000000000000000000000000000000000000000602b541617602b5560405190611bb9908183019183831067ffffffffffffffff841117614bfa579183916020936201a4c48439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602f541617602f5573ffffffffffffffffffffffffffffffffffffffff602b541660405190610d6f908183019183831067ffffffffffffffff841117614bfa579183916020936201cf9f8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602e541617602e5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611835908183019183831067ffffffffffffffff841117614bfa5791839160209362012ba68439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602c541617602c5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611315908183019183831067ffffffffffffffff841117614bfa57918391602093620143db8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602d541617602d5573ffffffffffffffffffffffffffffffffffffffff602b5416604051906112d2908183019183831067ffffffffffffffff841117614bfa57918391602093620118d48439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603054161760305573ffffffffffffffffffffffffffffffffffffffff602b541660405190610f22908183019183831067ffffffffffffffff841117614bfa579183916020936201c07d8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603154161760315573ffffffffffffffffffffffffffffffffffffffff602b541660405190610c38908183019183831067ffffffffffffffff841117614bfa5791839160209362010c9c8439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603354161760335573ffffffffffffffffffffffffffffffffffffffff602b541660405190614dd4908183019183831067ffffffffffffffff841117614bfa57918391602093620156f08439815203019082f08015614bed5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455604080516145f482826151e2565b600d815282602082017f666565436f6e74726f6c6c65720000000000000000000000000000000000000081528351600d6020820192835e82602d820152600d8152614640602d826151e2565b5190208351907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115614b94578291614b9e575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561578173ffffffffffffffffffffffffffffffffffffffff61471192865193849283927fc657c71800000000000000000000000000000000000000000000000000000000845216968760048401528860248401526044830190614fa8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015614b9457614b7f575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000603554161760355573ffffffffffffffffffffffffffffffffffffffff602b541681519061284b908183019183831067ffffffffffffffff841117614b52579183916020936200d8ff8439815203019083f08015614b475773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff000000000000000000000000000000000000000060325416176032558173ffffffffffffffffffffffffffffffffffffffff602b541673ffffffffffffffffffffffffffffffffffffffff60355416813b15610c3357829160248392865194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af18015614b1057614b32575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff602b5416813b15610c3357829160248392865194859384927fd0ebdbe700000000000000000000000000000000000000000000000000000000845260048401525af18015614b1057614b1d575b5073ffffffffffffffffffffffffffffffffffffffff6045541673ffffffffffffffffffffffffffffffffffffffff602b5416813b15610c3357829160248392865194859384927fd0ebdbe700000000000000000000000000000000000000000000000000000000845260048401525af18015614b1057614afb575b505073ffffffffffffffffffffffffffffffffffffffff6080610ab69261138a62ffffff614a106149936160ba565b868061499d6160ba565b9216911680821015614af2578780915b1691827fffffffffffffffffffffffff0000000000000000000000000000000000000000602a541617602a551690817fffffffffffffffffffffffff00000000000000000000000000000000000000006029541617602955876044541691615d26565b5092614a5a8685511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655565b614aa58660208601511673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006037541617603755565b830151167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006037549260a01b16911617603755565b908780916149ad565b81614b05916151e2565b61056157815f614964565b50505051903d90823e3d90fd5b81614b27916151e2565b61056157815f6148e8565b81614b3c916151e2565b61056157815f61486c565b5051903d90823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b81614b89916151e2565b610c3357825f614736565b84513d84823e3d90fd5b90506020813d602011614be5575b81614bb9602093836151e2565b81010312610561575173ffffffffffffffffffffffffffffffffffffffff81168103610561575f614699565b3d9150614bac565b50604051903d90823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b81614c5e916151e2565b61050257805f614107565b5050fd5b81614c77916151e2565b61051057815f614068565b505050fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b5034610536575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261053657614cf16101dc6101d7615223565b73ffffffffffffffffffffffffffffffffffffffff60445416803b15610536575f80916024604051809481937feabb5622000000000000000000000000000000000000000000000000000000008352607b60048401525af18015614f4e57614f3b575b50604051614d6181615161565b8181528160208201528173ffffffffffffffffffffffffffffffffffffffff602b5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610561576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561050557614f26575b5050614e3660a0611607615223565b03925af1801561054157614efc575b50604051907fdd9fca12000000000000000000000000000000000000000000000000000000008252806004830152602160248301527f7570646174652064796e616d69632066656520696e206265666f72652073776160448301527f70000000000000000000000000000000000000000000000000000000000000006064830152808260848186737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561054157611fed5782610ab66115216101d7615223565b8181813d8311614f1f575b614f1181836151e2565b810103126105365751614e45565b503d614f07565b81614f30916151e2565b61056157815f614e27565b614f4791505f906151e2565b5f80614d54565b6040513d5f823e3d90fd5b60206040818301928281528451809452019201905f5b818110614f7c5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101614f6f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b8181106150085750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101614ffb565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061507257505050505090565b90919293946020806150ae837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951614fa8565b97019301930191939290615063565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106150ef57505050505090565b9091929394602080615152837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190614feb565b970193019301919392906150e0565b6040810190811067ffffffffffffffff82111761517d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761517d57604052565b60a0810190811067ffffffffffffffff82111761517d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761517d57604052565b60405190615230826151c6565b8173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b90816020910312610536575190565b60365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015260a081901c62ffffff16604084015260b81c60020b6060830152603854166080820152615365929161016091906153579060265460ff16151560a084015260275460c084015260285473ffffffffffffffffffffffffffffffffffffffff1660e084015280511515610100840152602001511515610120830152565b816101408201520190614fa8565b90565b90813b67ffffffffffffffff811161517d575f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601936153b260405195866151e2565b82855260208501903c565b60409073ffffffffffffffffffffffffffffffffffffffff61536594931681528160208201520190614fa8565b615357615365949373ffffffffffffffffffffffffffffffffffffffff60406101609561546086603673ffffffffffffffffffffffffffffffffffffffff60026080928281541685526001810154838116602087015262ffffff8160a01c16604087015260b81c820b6060860152015416910152565b8051151560a0870152602081015160c087015201511660e08401526101008301906020809180511515845201511515910152565b818102929181159184041417156154a757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b67ffffffffffffffff811161517d5760051b60200190565b90604051915f8154908160011c92600183169283156155e5575b6020851084146155b85784875286939081156155785750600114615534575b50615532925003836151e2565b565b90505f9291925260205f20905f915b81831061555c575050906020615532928201015f615525565b6020919350806001915483858901015201910190918492615543565b602093506155329592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f615525565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693615506565b916156489073ffffffffffffffffffffffffffffffffffffffff61536595931684527f6fe7e6eb000000000000000000000000000000000000000000000000000000006020850152608060408501526080840190614fa8565b916060818403910152614fa8565b90604051918281549182825260208201905f5260205f20925f905b80600783011061586d57615532945491818110615837575b818110615801575b8181106157cb575b818110615795575b81811061575f575b818110615729575b8181106156f4575b106156c7575b5003836151e2565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f6156bf565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b1681520193016156b9565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b1681520193016156b1565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b1681520193016156a9565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016156a1565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301615699565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301615691565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301615689565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391615671565b9081602091031261053657518060020b81036105365790565b60085460ff1680156159225790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115614f4e575f916159ba575b50151590565b90506020813d6020116159e4575b816159d5602093836151e2565b8101031261053657515f6159b4565b3d91506159c8565b600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081146154a7575f0390565b8115615a25570690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b60a09020602073ffffffffffffffffffffffffffffffffffffffff602b5416916040518281019182526006604082015260408152615a916060826151e2565b5190206024604051809481937f1e2eaeaf00000000000000000000000000000000000000000000000000000000835260048301525afa8015614f4e575f90615ae1575b62ffffff915060d01c1690565b506020813d602011615b0e575b81615afb602093836151e2565b810103126105365762ffffff9051615ad4565b3d9150615aee565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561053657604051907f98296c5400000000000000000000000000000000000000000000000000000000825260048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015614f4e57615b8c5750565b5f615532916151e2565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561053657604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152607b60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015614f4e57615b8c5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561053657604051907f98296c5400000000000000000000000000000000000000000000000000000000825260048201526207a12060248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015614f4e57615b8c5750565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561053657604051917f98296c54000000000000000000000000000000000000000000000000000000008352600483015260248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015614f4e57615b8c5750565b60405190615d09826151c6565b5f6080838281528260208201528260408201528260608201520152565b929173ffffffffffffffffffffffffffffffffffffffff8092615d47615cfc565b50615d50615cfc565b508160405196615d5f886151c6565b168652166020850152628000006040850152603c606085015216608083015260a082205f602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352615e21600484018b73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6c0100000000000000000000000060a48401525af18015614f4e57615f8a575b509082615f5d73ffffffffffffffffffffffffffffffffffffffff602c54166020928391615f2260405192615e7685856151e2565b5f84527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085013686860137604051958694859384937f5a6bcfda000000000000000000000000000000000000000000000000000000008552600485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b86548060020b60a485015260181c60020b60c484015260215460e4840152602254610104840152610140610124840152610144830190614fa8565b039134905af18015614f4e57615f71575050565b81615f8792903d106117fb576117ec81836151e2565b50565b615fa29060203d602011611ba557611b9981836151e2565b505f615e41565b6103e85f615fb692616579565b905f80604051615fc76040826151e2565b600c81527f426f756e6420726573756c74000000000000000000000000000000000000000060208201526040516160668161603460208201947fb60e72cc000000000000000000000000000000000000000000000000000000008652604060248401526064830190614fa8565b886044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826151e2565b51906a636f6e736f6c652e6c6f675afa50565b805182101561608d5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604080516160c882826151e2565b6001815260208101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301368337611325620067585f5b60ff8116600181101561627457865184810181811067ffffffffffffffff82111761517d5781908686833960608082526004908201527f5445535400000000000000000000000000000000000000000000000000000000608082015260128a61619f60a084018481036020860152604090600481527f544553540000000000000000000000000000000000000000000000000000000060208201520190565b92015203905ff0801561626a57816161db9173ffffffffffffffffffffffffffffffffffffffff6161d181958a616079565b9116905286616079565b5116803b15610536575f809160448951809481937f40c10f190000000000000000000000000000000000000000000000000000000083523060048401527f800000000000000000000000000000000000000000000000000000000000000060248401525af1801561626a579160019160ff9361625a575b500116616100565b5f616264916151e2565b5f616252565b87513d5f823e3d90fd5b50505050511561608d578073ffffffffffffffffffffffffffffffffffffffff915051168151610120810181811067ffffffffffffffff82111761517d57835273ffffffffffffffffffffffffffffffffffffffff602f5416815273ffffffffffffffffffffffffffffffffffffffff602e5416602082015273ffffffffffffffffffffffffffffffffffffffff602c54168382015273ffffffffffffffffffffffffffffffffffffffff602d5416606082015273ffffffffffffffffffffffffffffffffffffffff60305416608082015273ffffffffffffffffffffffffffffffffffffffff6031541660a082015273ffffffffffffffffffffffffffffffffffffffff6033541660c08201526004602073ffffffffffffffffffffffffffffffffffffffff603454168551928380927fc34c08e50000000000000000000000000000000000000000000000000000000082525afa8015616555575f906164f2575b73ffffffffffffffffffffffffffffffffffffffff91501660e082015273ffffffffffffffffffffffffffffffffffffffff603254166101008201525f5b60098110156164eb5773ffffffffffffffffffffffffffffffffffffffff8160051b830151168451907f095ea7b300000000000000000000000000000000000000000000000000000000825260048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201526020816044815f885af180156164e1576164aa575b50600101616415565b6020813d82116164d9575b816164c2602093836151e2565b81010312610536575180151503610536575f6164a1565b3d91506164b5565b85513d5f823e3d90fd5b5050905090565b506020813d60201161654d575b8161650c602093836151e2565b81010312610536575173ffffffffffffffffffffffffffffffffffffffff811681036105365773ffffffffffffffffffffffffffffffffffffffff906163d7565b3d91506164ff565b84513d5f823e3d90fd5b919082039182116154a757565b919082018092116154a757565b5f908383116166d357828110918215806166c9575b6166c15761659c848661655f565b92600184018094116154a7576003831115806166b8575b6166a9577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8310158061669f575b61668e5785831115616645575050906165fd846166029361655f565b615a1b565b90811561664057616613925061656c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116154a75790565b505090565b959492919095616656575b50505050565b839495506165fd90616668939461655f565b90811561664057616679925061655f565b600181018091116154a757905f808080616650565b50509050615365929150199061655f565b50821984116165e1565b5050919050615365925061656c565b508284116165b3565b509250505090565b508482111561658e565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e00006064820152fdfe60e0806040523461040657611325803803809161001c828561040a565b83398101906060818303126104065780516001600160401b038111610406578261004791830161042d565b60208201519092906001600160401b0381116104065760409161006b91840161042d565b91015160ff811681036104065782516001600160401b038111610337576100925f54610482565b601f81116103b7575b506020601f821160011461035657819293945f9261034b575b50508160011b915f199060031b1c1916175f555b81516001600160401b038111610337576100e3600154610482565b601f81116102d4575b50602092601f821160011461027357928192935f92610268575b50508160011b915f199060031b1c1916176001555b6080524660a0526040515f905f54918161013484610482565b9182825260208201946001811690815f1461024c5750600114610202575b61015e9250038261040a565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526101d260c08261040a565b51902060c052604051610e4a90816104bb823960805181610865015260a05181610ca8015260c05181610cce0152f35b505f80805290915f805160206113058339815191525b81831061023057505090602061015e92820101610152565b6020919350806001915483858801015201910190918392610218565b60ff191686525061015e92151560051b82016020019050610152565b015190505f80610106565b601f1982169360015f52805f20915f5b8681106102bc57508360019596106102a4575b505050811b0160015561011b565b01515f1960f88460031b161c191690555f8080610296565b91926020600181928685015181550194019201610283565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c8101916020841061032d575b601f0160051c01905b81811061032257506100ec565b5f8155600101610315565b909150819061030c565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b4565b601f198216905f8052805f20915f5b81811061039f57509583600195969710610387575b505050811b015f556100c8565b01515f1960f88460031b161c191690555f808061037a565b9192602060018192868b015181550194019201610365565b5f80525f80516020611305833981519152601f830160051c810191602084106103fc575b601f0160051c01905b8181106103f1575061009b565b5f81556001016103e4565b90915081906103db565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761033757604052565b81601f82011215610406578051906001600160401b0382116103375760405192610461601f8401601f19166020018561040a565b8284526020838301011161040657815f9260208093018386015e8301015290565b90600182811c921680156104b0575b602083101461049c57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161049156fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610a8b578063095ea7b3146109e857806318160ddd146109ad57806323b872dd14610889578063313ce5671461082e5780633644e515146107ee57806340c10f191461071f57806370a08231146106bc5780637ecebe001461065957806395d89b41146105435780639dc29fac146104a4578063a9059cbb146103f0578063d505accf146101435763dd62ed3e146100b3575f80fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576100ea610c52565b73ffffffffffffffffffffffffffffffffffffffff610107610c75565b91165f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461013f5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5761017a610c52565b610182610c75565b6044356064359260843560ff811680910361013f574285106103925760805f9160209373ffffffffffffffffffffffffffffffffffffffff6101c2610ca5565b91169687855260058652604085209889549960018b0190556040519073ffffffffffffffffffffffffffffffffffffffff888301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b6040850152169a8b6060840152898784015260a083015260c082015260c0815261024660e082610b9c565b51902060405190868201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261028d606282610b9c565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156103875773ffffffffffffffffffffffffffffffffffffffff5f51168015158061037e575b15610320577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526004825260405f20855f5282528060405f2055604051908152a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b508281146102d8565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610427610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600360205260405f20610457848254610c98565b90551690815f52600360205260405f208181540190556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f575f6104dc610c52565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff6024359316928385526003825260408520610530828254610c98565b90558060025403600255604051908152a3005b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f60015461058181610b4b565b808452906001811690811561061757506001146105b9575b6105b5836105a981850382610b9c565b60405191829182610c0a565b0390f35b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106105fd575090915081016020016105a9610599565b9192600181602092548385880101520191019092916105e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506105a99050610599565b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff6106a5610c52565b165f526005602052602060405f2054604051908152f35b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff610708610c52565b165f526003602052602060405f2054604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610756610c52565b602435906002548281018091116107c157602073ffffffffffffffffffffffffffffffffffffffff5f937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9360025516938484526003825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020610826610ca5565b604051908152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576108c0610c52565b6108c8610c75565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff80604435951693845f526004835260405f208233165f52835260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610986575b5050845f526003835260405f2061095f878254610c98565b90551693845f526003825260405f20818154019055604051908152a3602060405160018152f35b61098f91610c98565b855f526004845260405f208333165f52845260405f20558686610947565b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020600254604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610a1f610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600460205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f8054610ac881610b4b565b80845290600181169081156106175750600114610aef576105b5836105a981850382610b9c565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610b31575090915081016020016105a9610599565b919260018160209254838588010152019101909291610b19565b90600182811c92168015610b92575b6020831014610b6557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610b5a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bdd57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b919082039182116107c157565b467f000000000000000000000000000000000000000000000000000000000000000003610cf0577f000000000000000000000000000000000000000000000000000000000000000090565b6040515f905f549181610d0284610b4b565b9182825260208201946001811690815f14610e035750600114610da6575b610d2c92500382610b9c565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610da060c082610b9c565b51902090565b505f80805290917f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610de7575050906020610d2c92820101610d20565b6020919350806001915483858801015201910190918392610dcf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016865250610d2c92151560051b82016020019050610d2056fea164736f6c634300081a000a290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360a03460a057601f615e8238819003918201601f19168301916001600160401b0383118484101760a45780849260209460405283398101031260a057516001600160a01b0381169081900360a0575f80546001600160a01b0319168217815560405191907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a330608052615dc990816100b98239608051816135260152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612cd55750806301ffc9a714612c16578063095bcdb614612b6c5780630b0d9c0914612ae057806311da60b414612a85578063156e29f6146129d55780631e2eaeaf1461299b578063234266d7146126fc5780632d7713891461265157806335fd631a146125dd5780633dd45adb14612579578063426a8493146124f557806348c894911461226a5780635275965114612152578063558a72971461207b578063598af9e714611fe35780635a6bcfda1461144f5780636276cbbe14610f965780637e87ce7d14610e5957806380f0b44c14610d875780638161b87414610c315780638da5cb5b14610be157806397e8cd4e14610b7e5780639bf6645f14610b31578063a584119414610a66578063b6363cf2146109d5578063dbd035ff1461097f578063f02de3b21461092e578063f135baaa146108f4578063f2fde38b14610848578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612d3f565b6101c5612d62565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254612fed565b90551693845f52600460205260405f20865f5260205260405f2061025f828254612ffa565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391612fed565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612d85565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b3866130aa565b3390896130f0565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254612fed565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291612fed565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612e81565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061056f82612df6565b60a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105d0903690600401612f4d565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761060261350f565b51156108205760a0822092835f52600660205260405f209061062382613576565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361064e94613b44565b90949195606088015160020b908b511515905173ffffffffffffffffffffffffffffffffffffffff1691604051986106858a612e12565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107a2986106db61078f9860209d6108005773ffffffffffffffffffffffffffffffffffffffff8b511695614959565b9492968291926107d3575b505073ffffffffffffffffffffffffffffffffffffffff845116938e6fffffffffffffffffffffffffffffffff60408301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613d81565b809491946107aa575b5050823391613652565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107cc9251169083613652565b8480610798565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106e6565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614959565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108a0612d3f565b73ffffffffffffffffffffffffffffffffffffffff5f54916108c58284163314613007565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346103305761098d36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355481520191019084838210156109cc5750602080916109b0565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a0c612d3f565b73ffffffffffffffffffffffffffffffffffffffff610a29612d62565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a9d612d3f565b73ffffffffffffffffffffffffffffffffffffffff81169081610ae15750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b610aea90613a92565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b3461033057610b3f36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c81520191019084838210156109cc575060208091610b62565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610bca612d3f565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c68612d3f565b610c70612d62565b60443573ffffffffffffffffffffffffffffffffffffffff600254163303610d5f5773ffffffffffffffffffffffffffffffffffffffff821680151580610d1f575b610cf7576020936107a29280610cef5750815f526001855260405f20549384925b5f526001865260405f20610ce8848254612fed565b90556131f8565b938492610cd3565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c1614610cb2565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610dbe612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610e146024356130aa565b9081600f0b03610e3157610e2f9133915f03600f0b906130f0565b005b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e9136612e81565b610e99612e6f565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610d5f57623e900062fff0008316106103e9610fff8416101615610f6557602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610f0f81613576565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610fce36612e81565b60a4359073ffffffffffffffffffffffffffffffffffffffff821680830361033057610ff861350f565b6060820191825160020b617fff81136114245750825160020b600181126113f9575073ffffffffffffffffffffffffffffffffffffffff815116602082019073ffffffffffffffffffffffffffffffffffffffff825116808210156113c2575050608082019073ffffffffffffffffffffffffffffffffffffffff82511690604084019161108c62ffffff845116826139b7565b1561139757506110a162ffffff835116613a75565b96835173ffffffffffffffffffffffffffffffffffffffff8116908133036112e0575b505060a0852090815f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112b8576020997fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438927cffffff000000000000000000000000000000000000000000000000000061114260a0946145fc565b9260d01b168a76ffffff000000000000000000000000000000000000000084861b161717905562ffffff73ffffffffffffffffffffffffffffffffffffffff808a5116965116965116995160020b73ffffffffffffffffffffffffffffffffffffffff885116906040519b8c528c8c015260408b01528860608b015260020b98896080820152a45173ffffffffffffffffffffffffffffffffffffffff8116908133036111f4575b8585604051908152f35b61100016611203575b806111ea565b6112af9261128d604051937f6fe7e6eb0000000000000000000000000000000000000000000000000000000088860152336024860152604485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e48301528361010483015261010482526112aa61012483612e2e565b613f25565b508280806111fd565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b612000166112ef575b806110c4565b61139090604051907fdc98354e00000000000000000000000000000000000000000000000000000000602083015233602483015261137a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8860e483015260e482526112aa61010483612e2e565b50886112e9565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f6e6c983000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761148836612e81565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906114bf82612dda565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff811161033057611512903690600401612f4d565b90927fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761154361350f565b60a0832093845f52600660205260405f20608052611562608051613576565b608084015173ffffffffffffffffffffffffffffffffffffffff811690813303611ede575b5050815160020b92602083015160020b916115a56040850151613785565b93606087015160020b9760608201516040519960c08b018b811067ffffffffffffffff821117611eb157604052338b528860208c01528660408c015287600f0b60608c015260808b015260a08a01525f9185881215611e7a577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611e4e57620d89e88613611e22576040519261163c84612dda565b5f84525f60208501525f60408501525f606085015287600f0b611b25575b600460805101978960020b5f528860205260405f20988860020b5f5260205260405f206080515460a01c60020b8b81125f14611acf575060028060018c0154600184015490039b015491015490039b5b60a073ffffffffffffffffffffffffffffffffffffffff825116910151906040519160268301528960068301528b600383015281525f603a600c83012091816040820152816020820152525f5260066080510160205260405f20976fffffffffffffffffffffffffffffffff8954169982600f0b155f14611a72578a15611a4a5761176f61176960409f9b61184e9c6118609e5b60018301956117616002611755848a548503615703565b95019283548503615703565b9655556130aa565b916130aa565b6fffffffffffffffffffffffffffffffff169060801b179a8b965f84600f0b126119dc575b5082600f0b611898575b5050506117c46117b58560801d8360801d01613785565b9185600f0b90600f0b01613785565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8c8401516060850151918e5194855260208501528d84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38873ffffffffffffffffffffffffffffffffffffffff60808201511661385b565b8094919461186c575b50833391613652565b82519182526020820152f35b6118929073ffffffffffffffffffffffffffffffffffffffff6080840151169083613652565b85611857565b60805154929350909173ffffffffffffffffffffffffffffffffffffffff81169060a01c60020b828112156118fe575050906118f2926118e76118dd6118ed94614158565b91600f0b92614158565b90614527565b613785565b60801b5b8b808061179e565b92809193125f146119a95761193d9161192a6118ed6118ed9361192488600f0b91614158565b87614527565b9361193886600f0b92614158565b6144ca565b6fffffffffffffffffffffffffffffffff169060801b17906fffffffffffffffffffffffffffffffff61197c60036080510192600f0b8284541661456e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556118f6565b906118ed9250926119bf6118dd6119c595614158565b906144ca565b6fffffffffffffffffffffffffffffffff166118f6565b808f9151611a1e575b01516119f2575b8e611794565b611a198260805160049160020b5f52016020525f6002604082208281558260018201550155565b6119ec565b611a458360805160049160020b5f52016020525f6002604082208281558260018201550155565b6119e5565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b61176f61176960409f9b61184e9c6118609e6fffffffffffffffffffffffffffffffff611aa289600f0b8361456e565b167fffffffffffffffffffffffffffffffff0000000000000000000000000000000084541617835561173e565b9099908913611af55760028060018c0154600184015490039b015491015490039b6116aa565b9860026001608051015460018c01549003600183015490039a81806080510154910154900391015490039b6116aa565b6004608051018960020b5f5280602052898960405f20611b7e81546fffffffffffffffffffffffffffffffff611b6181831695600f0b8661456e565b16931594858515141595611dee575b508d600f0b9060801d613d3a565b60801b82179055602087015285528760020b5f5260205260405f208054906fffffffffffffffffffffffffffffffff8216611bbc8b600f0b8261456e565b901592836fffffffffffffffffffffffffffffffff831615141593611dc1575b8b600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217611d9457826fffffffffffffffffffffffffffffffff935060801b83831617905516606086015260408501525f88600f0b1215611ca1575b8351611c85575b60408401511561165a57611c8060808c015160020b8860056080510161410c565b61165a565b611c9c60808c015160020b8a60056080510161410c565b611c5f565b60808b015160020b6fffffffffffffffffffffffffffffffff600181602088015116925f817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276180712817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618050390620d89e8050301810416809111611d68576fffffffffffffffffffffffffffffffff6060860151161115611c5857867fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6080515460a01c60020b8b13611bdc57600160805101546001840155600260805101546002840155611bdc565b6080515460a01c60020b1215611e05575b8e611b70565b600160805101546001840155600260805101546002840155611dff565b857f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60448887604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f604085015113808091611fd6575b15611f6b5750506040517f259982e5000000000000000000000000000000000000000000000000000000006020820152611f62916112aa82611f368887898c33602487016136cb565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612e2e565b505b8580611587565b159081611fc8575b50611f7f575b50611f64565b6040517f21d0ee70000000000000000000000000000000000000000000000000000000006020820152611fc1916112aa82611f368887898c33602487016136cb565b5085611f79565b610200915016151587611f73565b5061080082161515611eed565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761201a612d3f565b73ffffffffffffffffffffffffffffffffffffffff612037612d62565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120b2612d3f565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761218a36612e81565b612192612e6f565b906280000062ffffff60408301511614801590612246575b61221e5760a0906121ba8361368e565b205f52600660205260405f20906121d082613576565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff6080820151163314156121aa565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043567ffffffffffffffff8111610330576122b9903690600401612f4d565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c6124cd57612345915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd734600000000000000000000000000000000000000000000000000000000845260206004850152602484019161306c565b038183335af19081156124c2575f9161241a575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6123f25760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e61242b8183612e2e565b8101906020818303126103305780519067ffffffffffffffff8211610330570181601f820112156103305780519067ffffffffffffffff8211611eb1576040519261249e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612e2e565b8284526020838301011161033057815f9260208093018386015e8301015281612359565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305773ffffffffffffffffffffffffffffffffffffffff61251836612d85565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576125ab612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576107a260209161342d565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b835481520191019084838210156109cc57506020600191612635565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff61269d612d3f565b6126ab825f54163314613007565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b34610330576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761273536612e81565b60c4359060a43560e43567ffffffffffffffff81116103305761275c903690600401612f4d565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761278e61350f565b60a0842094855f52600660205260405f20946127a986613576565b60808101805173ffffffffffffffffffffffffffffffffffffffff811690813303612943575b50506fffffffffffffffffffffffffffffffff60038801541697881561291b576020986127fb876130aa565b5f03612806876130aa565b5f036fffffffffffffffffffffffffffffffff169060801b179887612907575b866128f2575b5050612839338985613652565b60405190868252858a8301527f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb60403393a3519273ffffffffffffffffffffffffffffffffffffffff841693843303612897575b8888604051908152f35b6010166128a5575b8061288d565b6128e6956112aa93611f36926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d88015233602488016135bc565b5082808080808061289f565b600201908660801b048154019055898061282c565b60018101828960801b048154019055612826565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b602016612951575b806127cf565b6040517fb6a8b0fa000000000000000000000000000000000000000000000000000000006020820152612994916112aa82611f368b898b8d8b33602488016135bc565b508861294b565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057600435545f5260205ff35b34610330576129e336612d85565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f941695612a62612a55876130aa565b8603600f0b3390896130f0565b16938484526004602052604084208685526020526040842061025f828254612ffa565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75760206107a23361342d565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612b17612d3f565b612b1f612d62565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757610e2f92612b67612b5a846130aa565b5f03600f0b3390836130f0565b6131f8565b346103305773ffffffffffffffffffffffffffffffffffffffff612b8f36612d85565b91929092335f52600460205260405f20845f5260205260405f20612bb4848254612fed565b90551690815f52600460205260405f20835f5260205260405f20612bd9828254612ffa565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599181908101610279565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361033057807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115612cab575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612ca0565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760209073ffffffffffffffffffffffffffffffffffffffff612d24612d3f565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103305760043573ffffffffffffffffffffffffffffffffffffffff8116810361033057906024359060443590565b6080810190811067ffffffffffffffff821117611eb157604052565b6060810190811067ffffffffffffffff821117611eb157604052565b60a0810190811067ffffffffffffffff821117611eb157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611eb157604052565b60a4359062ffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126103305760405190612eb882612e12565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361033057815260243573ffffffffffffffffffffffffffffffffffffffff8116810361033057602082015260443562ffffff811681036103305760408201526064358060020b81036103305760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103305760800152565b9181601f840112156103305782359167ffffffffffffffff8311610330576020838186019501011161033057565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103305760043567ffffffffffffffff811161033057826023820112156103305780600401359267ffffffffffffffff84116103305760248460051b83010111610330576024019190565b91908203918211611d9457565b91908201809211611d9457565b1561300e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6f800000000000000000000000000000008110156130c857600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b9182156131f357613126919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b613132815c9283613b29565b80915d6131a357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b156131aa57565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff811690816132ea5750505f80808093855af11561322a5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156133635750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff8316613482576131a19034935b61347c856130aa565b906130f0565b346134e7576131a1906134be7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c6134b986613a92565b612fed565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d613473565b7fb0ec849e000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361354e57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561359457565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926136376101209473ffffffffffffffffffffffffffffffffffffffff61364f999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e082015281610100820152019161306c565b90565b9073ffffffffffffffffffffffffffffffffffffffff60206131a1949361368185848351168660801d906130f0565b01511690600f0b906130f0565b62ffffff16620f424081116136a05750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061364f95936137486101609473ffffffffffffffffffffffffffffffffffffffff61377794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b81610140820152019161306c565b9081600f0b9182036130c857565b926138419061381261364f99979473ffffffffffffffffffffffffffffffffffffffff6101a09895168752602087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08701526020820151900b60e0860152604081015161010086015260600151610120850152565b61014083015261016082015281610180820152019161306c565b939590919296945f9673ffffffffffffffffffffffffffffffffffffffff861633146139ac57885f6040870151135f1461393b5761040087166138a2575b50505050505050565b61392e9799985092613927969594926138ef9261391b956040519788967f9f063efc0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612e2e565b6002821615159161459f565b80926145bf565b915f808080808080613899565b95949392919061010086166139535750505050505050565b61392e979950869850916138ef916139a09493613927986040519788967f6c2bbe7e0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b6001821615159161459f565b505f96505050505050565b608081161580613a69575b613a3f57604081161580613a5d575b613a3f5761040081161580613a51575b613a3f5761010081161580613a45575b613a3f5773ffffffffffffffffffffffffffffffffffffffff8116613a1f575062ffffff1662800000141590565b613fff161590811591613a30575090565b62800000915062ffffff161490565b50505f90565b506001811615156139f1565b506002811615156139e1565b506004811615156139d1565b506008811615156139c2565b6280000062ffffff821614613a8d5761364f8161368e565b505f90565b73ffffffffffffffffffffffffffffffffffffffff1680613ab257504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156124c2575f91613afa575090565b90506020813d602011613b21575b81613b1560209383612e2e565b81010312610330575190565b3d9150613b08565b9190915f8382019384129112908015821691151617611d9457565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff851614613d2d5760808416613b7e575b5050505050565b613c66926138ef613c6092613c4c946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613c16604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b61014061014485015261016484019161306c565b82613f25565b916060835103613d05576040015162ffffff166280000014613cf9575b600816613c94575b80808080613b77565b604001519250608083901d600f0b8015613c8b57613cb5905f861295613b29565b9315613cf1575f84135b613cc9575f613c8b565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f8412613cbf565b60608201519350613c83565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317611d9457565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613f18578460801d94600f0b938860408516613e40575b50505050505f9481600f0b15801590613e34575b613dd8575b5050509190565b613e0f9395505f60208201511290511515145f14613e17576fffffffffffffffffffffffffffffffff169060801b175b80936145bf565b5f8080613dd1565b906fffffffffffffffffffffffffffffffff169060801b17613e08565b5082600f0b1515613dcc565b613efc613f08946138ef6118ed95613f0e999895613ee1613c16966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c61014485015261016061016485015261018484019161306c565b6004821615159161459f565b90613d3a565b5f80808088613db8565b5050505050909150905f90565b9190918251925f8060208301958682865af115613fc3575050604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e6020845110918215613f8f575b5050613d0557565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80613f87565b5183517fffffffff00000000000000000000000000000000000000000000000000000000811691600481106140d7575b50507fffffffff000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01169173ffffffffffffffffffffffffffffffffffffffff604051947f90bfb865000000000000000000000000000000000000000000000000000000008652166004850152166024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fa9e35b2f0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffff000000000000000000000000000000000000000000000000000000009250829060040360031b1b16168280613ff3565b919060020b9060020b9081810761413a5705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161449e5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189160028116614482575b60048116614466575b6008811661444a575b6010811661442e575b60208116614412575b604081166143f6575b608081166143da575b61010081166143be575b61020081166143a2575b6104008116614386575b610800811661436a575b611000811661434e575b6120008116614332575b6140008116614316575b61800081166142fa575b6201000081166142de575b6202000081166142c3575b6204000081166142a8575b620800001661428f575b5f12614268575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04614261565b6b048a170391f7dc42444e8fa290910260801c9061425a565b6d2216e584f5fa1ea926041bedfe9890920260801c91614250565b916e5d6af8dedb81196699c329225ee6040260801c91614245565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161423a565b916f31be135f97d08fd981231505542fcfa60260801c9161422f565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614225565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161421b565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614211565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614207565b916ff3392b0822b70005940c7a398e4b70f30260801c916141fd565b916ff987a7253ac413176f2b074cf7815e540260801c916141f3565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916141e9565b916ffe5dee046a99a2a811c461f1969c30530260801c916141df565b916fff2ea16466c96a3843ec78b326b528610260801c916141d6565b916fff973b41fa98c081472e6896dfb254c00260801c916141cd565b916fffcb9843d60f6159c9db58835c9266440260801c916141c4565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916141bb565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916141b2565b916ffff97272373d413259a46990580e213a0260801c916141a9565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f146144ff576144f5925f036fffffffffffffffffffffffffffffffff1691615a3d565b5f81126130c85790565b61451b926fffffffffffffffffffffffffffffffff16916159e2565b5f81126130c8575f0390565b905f83600f0b125f14614552576144f5925f036fffffffffffffffffffffffffffffffff1691615b34565b61451b926fffffffffffffffffffffffffffffffff1691615a7d565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61459257565b6393dafdf15f526004601cfd5b906145a991613f25565b9015613a8d576040815103613d05576040015190565b6145e2906145d48360801d8260801d03613785565b92600f0b90600f0b03613785565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830116116148e05777ffffffffffffffffffffffffffffffffffffffff000000008160201b168060ff61467983615bdb565b1691608083106148d457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f146148915750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff6148c584614158565b16116148cf575090565b905090565b905081607f031b6146a9565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b811561492c570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6040519290915f61496985612df6565b5f855260208501925f845260408601955f875280968654956040860151159586155f146156f557610fff8860b81c16945b8151925f948a73ffffffffffffffffffffffffffffffffffffffff16918288528b60a01c60020b90526fffffffffffffffffffffffffffffffff60038d0154169052608083015162400000811615155f146156e65762bfffff166149fd8161368e565b61ffff88166156cb575b8096620f424062ffffff8316101561569a575b8451156156845750508861562457606083019073ffffffffffffffffffffffffffffffffffffffff825116818110156155ed5750505173ffffffffffffffffffffffffffffffffffffffff166401000276a38111156155c257505b604051986101008a018a811067ffffffffffffffff821117611eb1576040525f8a525f60208b01525f60408b01525f60608b01525f60808b01525f60a08b01525f60c08b015288155f146155b45760018b0154949390945b60e08b01525b8015801561557a575b6154205788868d8c8e73ffffffffffffffffffffffffffffffffffffffff8351168252602083015160020b602089015160020b90815f8183071291050386155f14615275576fffffffffffffffffffffffffffffffff937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860409460019484600560ff60609716938260020b60081d890b5f5201602052875f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460ff031c9054169283151593845f146152635790614bb760ff92615bdb565b90031660020b900360020b0260020b5b905b15158684015260020b8060208401521315615238575b620d89e8602082015160020b121561522a575b73ffffffffffffffffffffffffffffffffffffffff614c17602083015160020b614158565b16918291015273ffffffffffffffffffffffffffffffffffffffff8551169673ffffffffffffffffffffffffffffffffffffffff60608c0151169283911516818310189118021892015116928d73ffffffffffffffffffffffffffffffffffffffff8316821015915f87125f1461507f5762ffffff8516620f424003614c9f81895f03615785565b94841561506e57614cb1888483615a7d565b955b868110614fb257509660a093929173ffffffffffffffffffffffffffffffffffffffff98978891620f424062ffffff8316145f14614f9e575050865b955b15614f905791614d0092615a3d565b925b60c0820152015260808d0152168c525f8351135f14614f605760a08a0151905f82126130c8570392614d3d60808b015160c08c015190612ffa565b5f81126130c8578103908113600116611d9457935b61ffff8716614f18575b6fffffffffffffffffffffffffffffffff60408d01511680614efe575b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608c01511681145f14614ec2575060408a0151614e10575b88614e03577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208b015160020b0160020b5b60020b60208d01525b9392614ad3565b60208a015160020b614df3565b88614e96576fffffffffffffffffffffffffffffffff614e7d8d8d8d600460e08201519260206002820154935b015160020b60020b5f520160205260405f2091600183019081549003905560028201908154900390555460801d908c15614e88575b60400151831661456e565b1660408d0152614dc0565b5f91909103600f0b90614e72565b6fffffffffffffffffffffffffffffffff614e7d8d8d8d6004600183015492602060e084015193614e3d565b73ffffffffffffffffffffffffffffffffffffffff8b51168103614ee7575b50614dfc565b614ef0906145fc565b60020b60208d01525f614ee1565b60c08b015160801b0460e08b01510160e08b01525f614d79565b9662ffffff861661ffff881603614f435760c08a0151905b8160c08c01510360c08c01520196614d5c565b620f424060808b015161ffff89169060c08d015101020490614f30565b60808a015160c08b015101905f82126130c857019260a08a01515f81126130c857614f8a91613b29565b93614d52565b614f9992615b34565b614d00565b62ffffff614fad921689615c68565b614cef565b9650505092505082918415811517615061578e60a09173ffffffffffffffffffffffffffffffffffffffff96845f14614ffc57614ff0878284615d07565b80978a015f0395614cf1565b87871161503a576150356150306150286fffffffffffffffffffffffffffffffff84168a60601b614922565b8a8516612ffa565b615d9b565b614ff0565b61503561503061505c6fffffffffffffffffffffffffffffffff84168a61588a565b615028565b634f2461b85f526004601cfd5b6150798882856159e2565b95614cb3565b9193509190831561521957615095858284615a3d565b915b8287106150f7579073ffffffffffffffffffffffffffffffffffffffff9560a09280965b156150e857916150ca92615a7d565b925b6150e362ffffff8d16620f42408190039086615c68565b614d02565b6150f1926159e2565b926150cc565b50915050838315821517615061578d83156151ef575073ffffffffffffffffffffffffffffffffffffffff851161519c578460601b6fffffffffffffffffffffffffffffffff851680820615159104015b73ffffffffffffffffffffffffffffffffffffffff8316928184111561518f578f939573ffffffffffffffffffffffffffffffffffffffff60a093819803165b80966150bb565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff84166151c7816c0100000000000000000000000088615943565b90801561492c576c010000000000000000000000008709156151485760010180615148575f80fd5b9180856152148873ffffffffffffffffffffffffffffffffffffffff9860a095615c91565b615188565b615224858383615b34565b91615097565b620d89e86020820152614bf2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186020820152614bdf565b5060020b900360020b0260020b614bc7565b60019194939650600592955001938460020b60081d60010b5f520160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff86161b0119905416908d8b831592831597885f146153c15750505050610330578f9160018f8f96907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186060928f989560409660ff896fffffffffffffffffffffffffffffffff9a5f03166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f85851693831c63d76453e004161a17031660020b9060020b0160020b0260020b5b90614bc9565b90956fffffffffffffffffffffffffffffffff955060409450600193987ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618918960ff6060969b811681031660020b9060020b0160020b0260020b6153bb565b949891955099969298919598602088015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8a51169216171782556fffffffffffffffffffffffffffffffff6003830154166fffffffffffffffffffffffffffffffff604089015116809103615535575b5082156155265760e060029101519101555b825190155f82121461551057506154ee6154f69293613785565b925103613785565b6fffffffffffffffffffffffffffffffff169060801b1793565b6154f69250906155209103613785565b91613785565b60e060019101519101556154d4565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003840154161760038301555f6154c2565b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608501511614614adc565b60028b015494939094614acd565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606083019073ffffffffffffffffffffffffffffffffffffffff825116818111156155ed5750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d268110156155c25750614a75565b9a509a50509950505050505050505f925f929190565b5f85511315614a1a577f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff610fff89169116620f424081830204910103614a07565b508960d01c62ffffff166149fd565b610fff8860c41c169461499a565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393847001000000000000000000000000000000001115610330571461577c57700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f424011156103305714615804577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156103305714615881576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c01000000000000000000000000840992828085109403938085039485841115610330571461593c576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185099383808610950394808603958685111561033057146159da579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d90810118931692615a348185615810565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff8061364f9594169116038060ff1d908101189116615810565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff831611615b2e575b73ffffffffffffffffffffffffffffffffffffffff8216928315615b22577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615b16948185169403169160601b16615c68565b90808206151591040190565b62bfc9215f526004601cfd5b90615ab2565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615bd5575b73ffffffffffffffffffffffffffffffffffffffff8116918215615b225761364f937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615bd0948185169403169160601b16615943565b614922565b90615b68565b8015610330577f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c60ff1060031b1792831c1c601f161a1790565b929190615c76828286615943565b93821561492c5709615c8457565b9060010190811561033057565b91908115615d02577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615cf55761364f9261503092820391615c68565b63f5c787f15f526004601cfd5b505090565b90918015615d955773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b16921680820281615d578483614922565b14615d7d575b5090615d6c615d719284614922565b612ffa565b80820615159104011690565b8301838110615d5d579150615d9192615c68565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff82169182036130c85756fea164736f6c634300081a000a608034608f57601f61284b38819003918201601f19168301916001600160401b03831184841017609357808492602094604052833981010312608f57516001600160a01b0381168103608f57600c805460ff19166001908117909155601f80546001600160a81b03191660089390931b610100600160a81b0316929092171790556040516127a390816100a88239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081631ed7831c14611bf3575080632ade3880146119c55780633e5e3c231461191d5780633f7286f4146118755780635ef243141461153857806366d9a9a0146113db57806385226c8114611332578063916a17c61461125c57806391dd734614610373578063b0464fdc1461029d578063b5508aa9146101f4578063ba414fa6146101b2578063e20c9f71146100fa5763fa7626d4146100b6575f80fd5b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060ff601f54166040519015158152f35b5f80fd5b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760405180602060155491828152019060155f527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475905f5b818110610186576101828561017681870382611d72565b60405191829182611c97565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161015f565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760206101ea6123a8565b6040519015158152f35b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760195461022e81611db3565b9061023c6040519283611d72565b80825260195f9081527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061028057604051806101828782611e5a565b60016020819261028f85611f7b565b81520192019201919061026b565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601c546102d781611db3565b906102e56040519283611d72565b80825260208201601c5f527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2115f915b83831061032957604051806101828782611ed7565b6002602060019260405161033c81611d29565b73ffffffffffffffffffffffffffffffffffffffff86541681526103618587016120b4565b83820152815201920192019190610314565b346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760043567ffffffffffffffff81116100f657366023820112156100f657806004013567ffffffffffffffff81116100f65781019060248201913683116100f657604090829003126100f657602481013567ffffffffffffffff81116100f6576024908201019082601f830112156100f657813561041e81611db3565b9261042c6040519485611d72565b81845260208085019260051b820101908582116100f657602001915b81831061124357505050604481013567ffffffffffffffff81116100f65760249101019180601f840112156100f65782359261048384611db3565b936104916040519586611d72565b80855260208086019160051b830101918383116100f65760208101915b8383106111dc578686805182518114908115916111d3575b506111ab575f5b8151811015611183576104e08183612358565b5190600e821015611156576104f58185612358565b51918061059c57505f9150602073ffffffffffffffffffffffffffffffffffffffff601f5460081c166004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af191821561059157600192610563575b505b016104cd565b6105839060203d811161058a575b61057b8183611d72565b810190612399565b508461055b565b503d610571565b6040513d5f823e3d90fd5b6001810361063c575090602081519181808201938492010103126100f6575190602073ffffffffffffffffffffffffffffffffffffffff601f5460081c166004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19182156105915760019261061e575b505b61055d565b6106359060203d811161058a5761057b8183611d72565b5084610617565b600281036106db57506020828051810103126100f657602073ffffffffffffffffffffffffffffffffffffffff610675825f9501612481565b16602473ffffffffffffffffffffffffffffffffffffffff601f5460081c169160405195869384927f3dd45adb00000000000000000000000000000000000000000000000000000000845260048401525af19182156105915760019261061e575061055d565b600381036107cc57506060828051810103126100f6576106fd60208301612481565b606061070b60408501612481565b93015180600f0b81036100f65773ffffffffffffffffffffffffffffffffffffffff601f5460081c16803b156100f6575f92836064926fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff95866040519a8b9889977f0b0d9c090000000000000000000000000000000000000000000000000000000089521660048801521660248601521660448401525af1918215610591576001926107bc575061055d565b5f6107c691611d72565b84610617565b60048103610915575090806020806107e9935183010191016124cb565b90939291737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156100f65773ffffffffffffffffffffffffffffffffffffffff604051917fca669fa70000000000000000000000000000000000000000000000000000000083521660048201525f8160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561059157610905575b5073ffffffffffffffffffffffffffffffffffffffff601f5460081c16803b156100f6575f928360649273ffffffffffffffffffffffffffffffffffffffff9485604051998a9788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1918215610591576001926107bc575061055d565b5f61090f91611d72565b86610872565b600581036109bf5750906020818051810103126100f65761094d602073ffffffffffffffffffffffffffffffffffffffff9201612481565b169073ffffffffffffffffffffffffffffffffffffffff601f5460081c1691823b156100f6575f926024849260405195869384927fa584119400000000000000000000000000000000000000000000000000000000845260048401525af1918215610591576001926107bc575061055d565b60068103610a72575090806020806109dc935183010191016124a2565b73ffffffffffffffffffffffffffffffffffffffff601f949392945460081c16803b156100f6575f928360649273ffffffffffffffffffffffffffffffffffffffff9485604051998a9788967f156e29f600000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1918215610591576001926107bc575061055d565b60078103610c1057508151820191608081602085019403126100f657610a9a60208201612481565b92604082015190610aad606084016124fc565b9260808101519067ffffffffffffffff82116100f657019080603f830112156100f6576020820151610ae19260400161207e565b9373ffffffffffffffffffffffffffffffffffffffff601f5460081c1690813b156100f657604473ffffffffffffffffffffffffffffffffffffffff915f809460405196879586947f80f0b44c00000000000000000000000000000000000000000000000000000000865216600485015260248401525af1801561059157610c00575b50610b73575b6001915061055d565b6020610bb392604051809481927fdd9fca120000000000000000000000000000000000000000000000000000000083528460048401526024830190611ce6565b03815f737109709ecfa91a80626ff3989d68f67f5b1dd12d5af191821561059157600192610be2575b50610b6a565b610bf99060203d811161058a5761057b8183611d72565b5084610bdc565b5f610c0a91611d72565b85610b64565b60088103610ca857506060828051810103126100f65761061982610c69610c3b602060019601612481565b73ffffffffffffffffffffffffffffffffffffffff6060610c5e60408601612481565b940151931690612717565b90604091610c7983519384611d72565b601983527f75736572746f6b656e2076616c756520696e636f7272656374000000000000006020840152612509565b60098103610d2f5750602082519281808201948592010103126100f65761061960019251610cf073ffffffffffffffffffffffffffffffffffffffff601f5460081c166125a0565b90604091610d0083519384611d72565b601883527f72657365727665732076616c756520696e636f727265637400000000000000006020840152612509565b91939291600a8103610ee057506060848051810103126100f657610d5560208501612481565b73ffffffffffffffffffffffffffffffffffffffff6060610d7860408801612481565b960151918180601f5460081c1697165f5216602052602060405f206024604051809881937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa948515610591575f95610ead575b50604094855191610de58784611d72565b601583527f64656c74612076616c756520696e636f727265637400000000000000000000006020840152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156100f6575f91610e74885194859384937f714a2f1300000000000000000000000000000000000000000000000000000000855260048501526024840152606060448401526064830190611ce6565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610ea3576001939495506107bc575061055d565b85513d5f823e3d90fd5b9094506020813d8211610ed8575b81610ec860209383611d72565b810103126100f657519385610dd4565b3d9150610ebb565b92939192600b8103610ffc575090602081519181808201938492010103126100f65751906024602073ffffffffffffffffffffffffffffffffffffffff601f5460081c16604051928380927ff135baaa0000000000000000000000000000000000000000000000000000000082527f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b60048301525afa908115610591575f91610fca575b5061061990600193604091610f9b83519384611d72565b601d83527f6e6f6e7a65726f2064656c746120636f756e7420696e636f72726563740000006020840152612509565b90506020813d8211610ff4575b81610fe460209383611d72565b810103126100f657516001610f84565b3d9150610fd7565b600c81036110bc5750602073ffffffffffffffffffffffffffffffffffffffff6064816110328685805f995183010191016124cb565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152969092166004870152831660248601526044850152929586938492165af1801561059157611089576001915061055d565b6020823d82116110b4575b816110a160209383611d72565b810103126100f657610bdc6001926124fc565b3d9150611094565b600d146110cc576001915061055d565b602073ffffffffffffffffffffffffffffffffffffffff60646110f88584805f985183010191016124a2565b601f546040517f8161b87400000000000000000000000000000000000000000000000000000000815293861660048501529185166024840152604483015290958693849260081c165af191821561059157600192610be25750610b6a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b610182604051611194602082611d72565b5f8152604051918291602083526020830190611ce6565b7fac8429db000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015836104c6565b823567ffffffffffffffff81116100f657820185603f820112156100f65760208101359161120983611dcb565b6112166040519182611d72565b83815260408385010188106100f6575f6020858196604083970183860137830101528152019201916104ae565b8235600e8110156100f657815260209283019201610448565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601d5461129681611db3565b906112a46040519283611d72565b80825260208201601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b8383106112e857604051806101828782611ed7565b600260206001926040516112fb81611d29565b73ffffffffffffffffffffffffffffffffffffffff86541681526113208587016120b4565b838201528152019201920191906112d3565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601a5461136c81611db3565b9061137a6040519283611d72565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106113be57604051806101828782611e5a565b6001602081926113cd85611f7b565b8152019201920191906113a9565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601b5461141581611db3565b906114236040519283611d72565b808252602082019081601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc15f915b8383106114fd57848660405191829160208301906020845251809152604083019060408160051b85010192915f905b82821061149257505050500390f35b919360206114ed827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06001959799849503018652885190836114dd8351604084526040840190611ce6565b9201519084818403910152611e05565b9601920192018594939192611483565b6002602060019260405161151081611d29565b61151986611f7b565b81526115268587016120b4565b83820152815201920192019190611454565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760043567ffffffffffffffff81116100f657366023820112156100f65780600401359061158e82611db3565b9061159c6040519283611d72565b82825260208201906024829460051b820101903682116100f657602401915b81831061185c575050506024359167ffffffffffffffff83116100f657366023840112156100f6578260040135906115f282611db3565b936116006040519586611d72565b82855260208501906024829460051b820101903682116100f65760248101925b8284106117f5575050505073ffffffffffffffffffffffffffffffffffffffff601f5460081c169360405193606085019060406020870152518091526080850192905f905b8082106117d2575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301604085015251808252602082019160208260051b82010193925f915b838310611787575f8061172c8a8a6116ef818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611d72565b6040519485809481937f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190611ce6565b03925af180156105915761173c57005b3d805f833e61174b8183611d72565b8101906020818303126100f65780519067ffffffffffffffff82116100f657019080601f830112156100f65781516117859260200161207e565b005b90919293946020806117c3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951611ce6565b970193019301919392906116b0565b909193845190600e82101561115657602081600193829352019501920190611665565b833567ffffffffffffffff81116100f6578201366043820112156100f65760248101359161182283611dcb565b61182f6040519182611d72565b83815236604484860101116100f6575f602085819660448397018386013783010152815201930192611620565b8235600e8110156100f6578152602092830192016115bb565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b8181106118f1576101828561017681870382611d72565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016118da565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110611999576101828561017681870382611d72565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611982565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601e546119ff81611db3565b90611a0d6040519283611d72565b808252602082019081601e5f527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3505f915b838310611b5b57848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210611a7c57505050500390f35b91939092947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09082030182528451906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110611b125750505050506020806001929601920192018594939192611a6d565b9091929394602080611b4e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951611ce6565b9701950193929101611af0565b604051611b6781611d29565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054611b9081611db3565b91611b9e6040519384611d72565b81835260208301905f5260205f20905f905b838210611bd6575050505060019282602092836002950152815201920192019190611a3e565b600160208192611be586611f7b565b815201930191019091611bb0565b346100f6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657601654808252602082019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110611c6b576101828561017681870382611d72565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611c54565b60206040818301928281528451809452019201905f5b818110611cba5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611cad565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff821117611d4557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611d4557604052565b67ffffffffffffffff8111611d455760051b60200190565b67ffffffffffffffff8111611d4557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b90602080835192838152019201905f5b818110611e225750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101611e15565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611e8c57505050505090565b9091929394602080611ec8837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951611ce6565b97019301930191939290611e7d565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611f0957505050505090565b9091929394602080611f6c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190611e05565b97019301930191939290611efa565b90604051915f8154908160011c9260018316928315612074575b6020851084146120475784875286939081156120075750600114611fc3575b50611fc192500383611d72565b565b90505f9291925260205f20905f915b818310611feb575050906020611fc1928201015f611fb4565b6020919350806001915483858901015201910190918492611fd2565b60209350611fc19592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f611fb4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693611f95565b92919261208a82611dcb565b916120986040519384611d72565b8294818452818301116100f6578281602093845f96015e010152565b90604051918281549182825260208201905f5260205f20925f905b8060078301106122cb57611fc1945491818110612295575b81811061225f575b818110612229575b8181106121f3575b8181106121bd575b818110612187575b818110612152575b10612125575b500383611d72565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f61211d565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301612117565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b16815201930161210f565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301612107565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016120ff565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016120f7565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b1681520193016120ef565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681520193016120e7565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e08201520194019201859293916120cf565b805182101561236c5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b908160209103126100f6575190565b60085460ff1680156123b75790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610591575f9161244f575b50151590565b90506020813d602011612479575b8161246a60209383611d72565b810103126100f657515f612449565b3d915061245d565b519073ffffffffffffffffffffffffffffffffffffffff821682036100f657565b908160609103126100f6576124b681612481565b9160406124c560208401612481565b92015190565b91908260809103126100f6576124e082612481565b916124ed60208201612481565b9160606124c560408401612481565b519081151582036100f657565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156100f6575f9161257060405194859384937f88b44c8500000000000000000000000000000000000000000000000000000000855260048501526024840152606060448401526064830190611ce6565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610591576125965750565b5f611fc191611d72565b73ffffffffffffffffffffffffffffffffffffffff166040517ff135baaa0000000000000000000000000000000000000000000000000000000081527f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b96004820152602081602481855afa8015610591575f906126d1575b73ffffffffffffffffffffffffffffffffffffffff915016156126cc576020602491604051928380927ff135baaa0000000000000000000000000000000000000000000000000000000082527f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd9560048301525afa908115610591575f9161269d575090565b90506020813d6020116126c4575b816126b860209383611d72565b810103126100f6575190565b3d91506126ab565b505f90565b506020813d60201161270f575b816126eb60209383611d72565b810103126100f65773ffffffffffffffffffffffffffffffffffffffff9051612618565b3d91506126de565b73ffffffffffffffffffffffffffffffffffffffff168061273757503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610591575f9161269d57509056fea164736f6c634300081a000a60808060405234601557610b38908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f803560e01c806321d0ee7014610734578063259982e5146107345780632abcd1b1146105cc578063575e24b41461045b5780636c2bbe7e146103225780636fe7e6eb146103275780639f063efc14610322578063b47b2fb11461024a578063b6a8b0fa14610119578063d0ebdbe7146101b2578063dc98354e1461011e578063e1b4af69146101195763eabb5622146100a9575f80fd5b346101165760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101165760043562ffffff8116809103610112577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082541617815580f35b5080fd5b80fd5b610974565b50346101165760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011657610156610739565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101165760049061018c610941565b507f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b50346101165760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101165760043573ffffffffffffffffffffffffffffffffffffffff81168103610112577fffffffffffffffffff0000000000000000000000000000000000000000ffffff76ffffffffffffffffffffffffffffffffffffffff00000083549260181b16911617815580f35b5034610116576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011657610283610739565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101165760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610116576101443567ffffffffffffffff811161011257906102fb6004923690840161075c565b50507f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b61087b565b5034610116576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011657610360610739565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261011657610393610941565b5061039c610964565b5080548173ffffffffffffffffffffffffffffffffffffffff8260181c1691823b15610112576104029262ffffff91836040518096819582947f527596510000000000000000000000000000000000000000000000000000000084521660048301610a7e565b03925af180156104505761043b575b60206040517f6fe7e6eb000000000000000000000000000000000000000000000000000000008152f35b610446828092610a10565b6101165780610411565b6040513d84823e3d90fd5b5034610116576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011657610494610739565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101165760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610116576101243567ffffffffffffffff81116101125761050a90369060040161075c565b505080548173ffffffffffffffffffffffffffffffffffffffff8260181c1691823b15610112576105719262ffffff91836040518096819582947f527596510000000000000000000000000000000000000000000000000000000084521660048301610a7e565b03925af18015610450576105b7575b606082604051907f575e24b40000000000000000000000000000000000000000000000000000000082528060208301526040820152f35b6105c2828092610a10565b610116575f610580565b5034610730577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160c081126107305760a0136107305760a43562ffffff81168091036107305773ffffffffffffffffffffffffffffffffffffffff5f5460181c1690813b1561073057604051917f5275965100000000000000000000000000000000000000000000000000000000835260043573ffffffffffffffffffffffffffffffffffffffff811680910361073057600484015260243573ffffffffffffffffffffffffffffffffffffffff811680910361073057602484015260443562ffffff81168091036107305760448401526064358060020b8091036107305760648401526084359073ffffffffffffffffffffffffffffffffffffffff821680920361073057835f60c49281958395608485015260a48401525af1801561072557610717575080f35b61072391505f90610a10565b005b6040513d5f823e3d90fd5b5f80fd5b61078a565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361073057565b9181601f840112156107305782359167ffffffffffffffff8311610730576020838186019501011161073057565b34610730576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107305760043573ffffffffffffffffffffffffffffffffffffffff81168103610730575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126107305760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610730576101443567ffffffffffffffff81116107305761085090369060040161075c565b9050507f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610730576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107305760043573ffffffffffffffffffffffffffffffffffffffff81168103610730575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126107305760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610730576101843567ffffffffffffffff81116107305761085090369060040161075c565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361073057565b60e435908160020b820361073057565b34610730576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107305760043573ffffffffffffffffffffffffffffffffffffffff81168103610730575060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360112610730576101043567ffffffffffffffff81116107305761085090369060040161075c565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a5157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b91909160c081019260243573ffffffffffffffffffffffffffffffffffffffff811680910361073057825260443573ffffffffffffffffffffffffffffffffffffffff811680910361073057602083015260643562ffffff81168091036107305760408301526084358060020b80910361073057606083015260a43573ffffffffffffffffffffffffffffffffffffffff81168091036107305760a09162ffffff9160808501521691015256fea164736f6c634300081a000a60a034607b57601f610c3838819003918201601f19168301916001600160401b03831184841017607f57808492602094604052833981010312607b57516001600160a01b0381168103607b57608052604051610ba49081610094823960805181818161019901528181610278015281816108cb01526109560152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163481c6a751461090e575080638340f549146107da57806391dd7346146101f35763d9caed121461004a575f80fd5b61017f8161012061014c73ffffffffffffffffffffffffffffffffffffffff6100723661099b565b91836040949294519461008486610a55565b33865216602085015216604083015260608201528360808201526040519283916020830191909160808060a083019473ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015273ffffffffffffffffffffffffffffffffffffffff60408201511660408501526060810151606085015201511515910152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610a9e565b604051809381927f48c8949100000000000000000000000000000000000000000000000000000000835260048301610a0d565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156101e8576101c9575080f35b6101e4903d8084833e6101dc8183610a9e565b810190610adf565b5080f35b6040513d84823e3d90fd5b50346107d65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d6576004359067ffffffffffffffff82116107d657366023830112156107d657816004013567ffffffffffffffff81116107d65782013660248201116107d65773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908133036107d65760a090849003126107d6576040516102b781610a55565b6102c36024850161097a565b81526102d16044850161097a565b9060208101918083526102e66064870161097a565b90604083019282845260848801359060a46060820199838b520135801515918282036107d65760800152156106955750505073ffffffffffffffffffffffffffffffffffffffff81511673ffffffffffffffffffffffffffffffffffffffff83511690865191853b15610691576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91909116600482015260248101919091526044810191909152848160648183885af180156106865790859161066d575b505073ffffffffffffffffffffffffffffffffffffffff8091511691511693519381155f146104905750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19182156104835761045092610454575b505b60405190602082015260208152610444604082610a9e565b60405191829182610a0d565b0390f35b6104759060203d60201161047c575b61046d8183610a9e565b810190610b88565b505f61042a565b503d610463565b50604051903d90823e3d90fd5b9383948392933b1561065e576040517fa5841194000000000000000000000000000000000000000000000000000000008152846004820152858160248183885af1908115610662578691610649575b503082146105d7576020929160649160405196879485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015287602485015260448401525af19182156105cc5760209261059f575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19182156104835761045092610580575b5061042c565b6105989060203d60201161047c5761046d8183610a9e565b505f61057a565b6105be90833d85116105c5575b6105b68183610a9e565b810190610b70565b505f61053a565b503d6105ac565b6040513d85823e3d90fd5b939050604460209260405195869384927fa9059cbb00000000000000000000000000000000000000000000000000000000845287600485015260248401525af19182156105cc5760209261062c575b5061053c565b61064290833d85116105c5576105b68183610a9e565b505f610626565b8161065391610a9e565b61065e57845f6104df565b8480fd5b6040513d88823e3d90fd5b8161067791610a9e565b61068257835f6103be565b8380fd5b6040513d87823e3d90fd5b8680fd5b85939794953b156107d6576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015292909116602483015260448201525f8160648183865af180156107cb5761079d575b5073ffffffffffffffffffffffffffffffffffffffff8085969594955116945116915193813b15610682578360649260405196879586947f0b0d9c090000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af180156101e857610785575b506104509061042c565b610790828092610a9e565b61079a575f61077b565b80fd5b73ffffffffffffffffffffffffffffffffffffffff959394505f6107c091610a9e565b845f94939550610705565b6040513d5f823e3d90fd5b5f80fd5b6108b15f61012061014c73ffffffffffffffffffffffffffffffffffffffff6108023661099b565b91836040949294519461081486610a55565b3386521660208501521660408301526060820152600160808201526040519283916020830191909160808060a083019473ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015273ffffffffffffffffffffffffffffffffffffffff60408201511660408501526060810151606085015201511515910152565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156107cb576108f957005b61090c903d805f833e6101dc8183610a9e565b005b346107d6575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d65760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b359073ffffffffffffffffffffffffffffffffffffffff821682036107d657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126107d65760043573ffffffffffffffffffffffffffffffffffffffff811681036107d6579060243573ffffffffffffffffffffffffffffffffffffffff811681036107d6579060443590565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b60a0810190811067ffffffffffffffff821117610a7157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a7157604052565b6020818303126107d65780519067ffffffffffffffff82116107d6570181601f820112156107d65780519067ffffffffffffffff8211610a715760405192610b4f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185610a9e565b828452602083830101116107d657815f9260208093018386015e8301015290565b908160209103126107d6575180151581036107d65790565b908160209103126107d657519056fea164736f6c634300081a000a60a034607a57601f6112d238819003918201601f19168301916001600160401b03831184841017607e57808492602094604052833981010312607a57516001600160a01b0381168103607a5760805260405161123f9081610093823960805181818160ab015281816107c101528181610a360152610dc10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063234266d7146107e5578063481c6a7514610777576391dd73461461003a575f80fd5b346106a45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106a45760043567ffffffffffffffff81116106a457366023820112156106a457806004013567ffffffffffffffff81116106a45781019060248201913683116106a4577f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8216928333036106a4576020818303126106a45760248101359067ffffffffffffffff82116106a4570190610120828203126106a45760a060247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc846040519461014986610bc6565b610154848301610c50565b8652030101126106a4576040519261016b84610bc6565b61017760448401610c50565b845261018560648401610c50565b6020850152608483013562ffffff811681036106a457604085015260a48301358060020b81036106a457606085015260c483013573ffffffffffffffffffffffffffffffffffffffff811681036106a457608085015260208201938452604082019260e48101358452606083019661010482013588526101248201359167ffffffffffffffff83116106a45761021e9201602401610cab565b946080830195865261026173ffffffffffffffffffffffffffffffffffffffff8651511673ffffffffffffffffffffffffffffffffffffffff8551163091610d9c565b9150506102a373ffffffffffffffffffffffffffffffffffffffff60208851015116309073ffffffffffffffffffffffffffffffffffffffff87511690610d9c565b92915050610719576106bb576020908551906103445f8751936103618c519b516040519c8d97889687957f234266d7000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a485015260c484015261010060e4840152610104830190610cf1565b03925af19485156106b0575f95610678575b506103b073ffffffffffffffffffffffffffffffffffffffff85515116309073ffffffffffffffffffffffffffffffffffffffff85511690610d9c565b979150506104006103f673ffffffffffffffffffffffffffffffffffffffff60208851015116309073ffffffffffffffffffffffffffffffffffffffff87511690610d9c565b9691505051610d43565b87036105f4576104109051610d43565b830361057057855f610469971261052d575b5f84126104e1575b5f811361049f575b505f831361046d575b858560405190602082015260208152610455604082610c0f565b604051918291602083526020830190610cf1565b0390f35b73ffffffffffffffffffffffffffffffffffffffff80602061049696510151169251169161111f565b5f80808061043b565b6104db9073ffffffffffffffffffffffffffffffffffffffff865151168373ffffffffffffffffffffffffffffffffffffffff8651169161111f565b5f610432565b61052873ffffffffffffffffffffffffffffffffffffffff6020875101511673ffffffffffffffffffffffffffffffffffffffff8551168461052288610d43565b92610e86565b61042a565b61056b73ffffffffffffffffffffffffffffffffffffffff8651511673ffffffffffffffffffffffffffffffffffffffff8551168461052285610d43565b610422565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f64656c7461416674657231206973206e6f7420657175616c20746f202d696e7460448201527f32353628646174612e616d6f756e7431290000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f64656c7461416674657230206973206e6f7420657175616c20746f202d696e7460448201527f32353628646174612e616d6f756e7430290000000000000000000000000000006064820152fd5b9094506020813d6020116106a8575b8161069460209383610c0f565b810103126106a45751935f610373565b5f80fd5b3d9150610687565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64656c74614265666f726531206973206e6f74203000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64656c74614265666f726530206973206e6f74203000000000000000000000006044820152fd5b346106a4575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106a457602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360161010081126106a45760a0136106a45760405161082481610bc6565b60043573ffffffffffffffffffffffffffffffffffffffff811681036106a457815260243573ffffffffffffffffffffffffffffffffffffffff811681036106a457602082015260443562ffffff811681036106a45760408201526064358060020b81036106a457606082015260843573ffffffffffffffffffffffffffffffffffffffff811681036106a457608082015260e43567ffffffffffffffff81116106a45773ffffffffffffffffffffffffffffffffffffffff6109e1610a1c936109b56108f65f953690600401610cab565b6040519261090384610bc6565b338452602084019081526040840160a4358152610992606086019260c4358452608087019485526040519889976020808a01525116604088015251606087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b516101008501525161012084015251610120610140840152610160830190610cf1565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610c0f565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610cf1565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156106b0575f91610b4c575b50602081519181808201938492010103126106a457514780610a8e575b602082604051908152f35b5f80808093335af115610aa15781610a83565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051907f90bfb8650000000000000000000000000000000000000000000000000000000082523360048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b90503d805f833e610b5d8183610c0f565b8101906020818303126106a45780519067ffffffffffffffff82116106a4570181601f820112156106a457805190610b9482610c71565b92610ba26040519485610c0f565b828452602083830101116106a457815f9260208093018386015e8301015281610a66565b60a0810190811067ffffffffffffffff821117610be257604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610be257604052565b359073ffffffffffffffffffffffffffffffffffffffff821682036106a457565b67ffffffffffffffff8111610be257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156106a457803590610cc282610c71565b92610cd06040519485610c0f565b828452602083830101116106a457815f926020809301838601378301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b908160209103126106a4575190565b7f80000000000000000000000000000000000000000000000000000000000000008114610d6f575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9290610da890846111b3565b9273ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169181610ded84836111b3565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa9081156106b0575f91610e3f575090565b90506020813d602011610e66575b81610e5a60209383610c0f565b810103126106a4575190565b3d9150610e4d565b908160209103126106a4575180151581036106a45790565b90919073ffffffffffffffffffffffffffffffffffffffff1680610f2657505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af180156106b057610efb5750565b610f1c9060203d602011610f1f575b610f148183610c0f565b810190610d34565b50565b503d610f0a565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b156106a457604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf180156106b0576110f6575b5073ffffffffffffffffffffffffffffffffffffffff1684308214611082576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156110775791602091849361104a575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561103e5750610efb5750565b604051903d90823e3d90fd5b61106990833d8511611070575b6110618183610c0f565b810190610e6e565b505f610fff565b503d611057565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af18015611077579160209184936110d9575b50611001565b6110ef90833d8511611070576110618183610c0f565b505f6110d3565b6111039195505f90610c0f565b5f9373ffffffffffffffffffffffffffffffffffffffff610f8b565b91929073ffffffffffffffffffffffffffffffffffffffff16803b156106a4575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156106b0576111a75750565b5f6111b191610c0f565b565b73ffffffffffffffffffffffffffffffffffffffff16806111d357503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156106b0575f91610e3f57509056fea164736f6c634300081a000a60a034607a57601f61183538819003918201601f19168301916001600160401b03831184841017607e57808492602094604052833981010312607a57516001600160a01b0381168103607a576080526040516117a29081610093823960805181818160b50152818161099001528181610ac101526111390152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80630a5b11e414610ae5578063481c6a7514610a775780635a6bcfda14610790576391dd734614610045575f80fd5b346107795760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107795760043567ffffffffffffffff8111610779573660238201121561077957806004013567ffffffffffffffff81116107795781016024810190368211610779577f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff841690813303610779576020818403126107795760248101359067ffffffffffffffff82116107795701906101a082840312610779576040519161012d83610c27565b61013960248201610ce9565b835260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610779576040519361017485610c70565b61018060448301610ce9565b855261018e60648301610ce9565b6020860152608482013562ffffff811681036107795760408601526101b560a48301610d0a565b606086015260c482013573ffffffffffffffffffffffffffffffffffffffff81168103610779577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c83608093602493858a01526020880198895203010112610779576040519561022487610c8c565b61023060e48301610d0a565b875261023f6101048301610d0a565b6020880152610124820135604088015261014482013560608801526040840196875261016482013567ffffffffffffffff81116107795761039f96602461028892850101610e8a565b916060850192835260406102b36101a46102a56101848501610ed0565b936080890194855201610ed0565b9360a087019485526102e060a08951208b51805160020b6060602083015160020b92015192309089610f80565b5050956103715f8c6103b38c519151955187519e8f97889687957f5a6bcfda000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a48701526020820151900b60c4860152604081015160e486015260600151610104850152565b610140610124840152610144830190610edd565b03925af1968715610785575f9761074d575b506103eb60a08751208951805160020b6060602083015160020b92015192309087610f80565b50509061042a73ffffffffffffffffffffffffffffffffffffffff88515116309073ffffffffffffffffffffffffffffffffffffffff89511690611114565b939150506fffffffffffffffffffffffffffffffff61047e73ffffffffffffffffffffffffffffffffffffffff60208b51015116309073ffffffffffffffffffffffffffffffffffffffff8b511690611114565b9891505016600f0b9060408b510151915f8382019384129112908015821691151617610720576fffffffffffffffffffffffffffffffff16600f0b036106c2576040610548995101515f81125f1461067d57505f82138015610674575b6104e490610f20565b5f8212801561066b575b6104f89015610f20565b5f821261061d575b5f85126105ca575b505f8113610583575b505f831361054c575b868660405190602082015260208152610534604082610ca8565b604051918291602083526020830190610edd565b0390f35b73ffffffffffffffffffffffffffffffffffffffff80602061057997510151169451169151151593611545565b5f8080808061051a565b6105c49073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff875116848651151593611545565b5f610511565b6106179073ffffffffffffffffffffffffffffffffffffffff602089510151169073ffffffffffffffffffffffffffffffffffffffff8851168561060d89610f54565b925115159361120d565b5f610508565b61066673ffffffffffffffffffffffffffffffffffffffff8851511673ffffffffffffffffffffffffffffffffffffffff88511661065a85610f54565b9086855115159361120d565b610500565b505f85126104ee565b505f85136104db565b5f12156104f8575f821280156106b9575b61069790610f20565b5f821380156106b0575b6106ab9015610f20565b6104f8565b505f85136106a1565b505f851261068e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f72726563740000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9096506040813d60401161077d575b8161076960409383610ca8565b810103126107795751955f6103c5565b5f80fd5b3d915061075c565b6040513d5f823e3d90fd5b6101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610779576107c436610d18565b6107cd36610de4565b90610124359167ffffffffffffffff83116107795761093b5f9273ffffffffffffffffffffffffffffffffffffffff9261080e610976963690600401610e8a565b916108fc6040519361081f85610c27565b3385526020850192835260408501938452606085019081526108e760808601948986526108b560a08801958b87526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b6101008901526020820151900b610120880152604081015161014088015260600151610160870152565b516101a06101808601526101e0850190610edd565b915115156101a08401525115156101c0830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610ca8565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610edd565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610785575f916109fd575b50602081805181010312610779576020015147806109e4575b602082604051908152f35b5f80808093335af1156109f757816109d9565b33611656565b90503d805f833e610a0e8183610ca8565b8101906020818303126107795780519067ffffffffffffffff8211610779570181601f8201121561077957805190610a4582610e50565b92610a536040519485610ca8565b8284526020838301011161077957815f9260208093018386015e83010152816109c0565b34610779575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077957610b1936610d18565b610b2236610de4565b906101243567ffffffffffffffff811161077957610b44903690600401610e8a565b91610144359283151580940361077957610164359283151580940361077957610976945f946108fc61093b946108e773ffffffffffffffffffffffffffffffffffffffff976108b560405197610b9989610c27565b3389526020890190815260408901928352606089019485526080890197885260a089019687526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c0810190811067ffffffffffffffff821117610c4357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610c4357604052565b6080810190811067ffffffffffffffff821117610c4357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c4357604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361077957565b35908160020b820361077957565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126107795760405190610d4f82610c70565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361077957815260243573ffffffffffffffffffffffffffffffffffffffff8116810361077957602082015260443562ffffff811681036107795760408201526064358060020b81036107795760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036107795760800152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c60809101126107795760405190610e1b82610c8c565b8160a4358060020b810361077957815260c4358060020b810361077957602082015260e4356040820152606061010435910152565b67ffffffffffffffff8111610c4357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561077957803590610ea182610e50565b92610eaf6040519485610ca8565b8284526020838301011161077957815f926020809301838601378301015290565b3590811515820361077957565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b15610f2757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f80000000000000000000000000000000000000000000000000000000000000008114610720575f0390565b94939290926040519460268601526006850152600384015282525f603a600c8401209281604082015281602082015252604051602081019182526006604082015260408152610fd0606082610ca8565b51902091600683018093116107205760445f9273ffffffffffffffffffffffffffffffffffffffff946040519060208201928352604082015260408152611018606082610ca8565b51902060405194859384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260036024840152165afa908115610785575f91611078575b50602081015160408201516060909201519092565b90503d805f833e6110898183610ca8565b8101906020818303126107795780519067ffffffffffffffff821161077957019080601f830112156107795781519167ffffffffffffffff8311610c43578260051b90604051936110dd6020840186610ca8565b845260208085019282010192831161077957602001905b828210611104575050505f611063565b81518152602091820191016110f4565b92906111209084611716565b9273ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691816111658483611716565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa908115610785575f916111b7575090565b90506020813d6020116111de575b816111d260209383610ca8565b81010312610779575190565b3d91506111c5565b90816020910312610779575180151581036107795790565b90816020910312610779575190565b9293156112af5773ffffffffffffffffffffffffffffffffffffffff16803b15610779576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af18015610785576112a35750565b5f6112ad91610ca8565b565b9173ffffffffffffffffffffffffffffffffffffffff168061134d57505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610785576113225750565b6113439060203d602011611346575b61133b8183610ca8565b8101906111fe565b50565b503d611331565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561077957604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af180156107855761151c575b5073ffffffffffffffffffffffffffffffffffffffff16843082146114a8576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561149d57916020918493611470575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561146457506113225750565b604051903d90823e3d90fd5b61148f90833d8511611496575b6114878183610ca8565b8101906111e6565b505f611425565b503d61147d565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561149d579160209184936114ff575b50611427565b61151590833d8511611496576114878183610ca8565b505f6114f9565b6115299195505f90610ca8565b5f9373ffffffffffffffffffffffffffffffffffffffff6113b1565b9293156115ce5773ffffffffffffffffffffffffffffffffffffffff16803b15610779576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f90829081838160648101611292565b90929073ffffffffffffffffffffffffffffffffffffffff16803b15610779575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610785576112a35750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b73ffffffffffffffffffffffffffffffffffffffff168061173657503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610785575f916111b757509056fea164736f6c634300081a000a60a034607357601f61131538819003918201601f19168301916001600160401b03831184841017607757808492602094604052833981010312607357516001600160a01b0381168103607357608052604051611289908161008c823960805181818160b50152818161076301526108940152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80630a5b11e4146108b8578063481c6a751461084a5780635a6bcfda14610563576391dd734614610045575f80fd5b3461054c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054c5760043567ffffffffffffffff811161054c573660238201121561054c57806004013567ffffffffffffffff811161054c578101602481019036821161054c577f00000000000000000000000000000000000000000000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff83169384330361054c5760208184031261054c5760248101359067ffffffffffffffff821161054c57016101a08184031261054c576040519161012c836109fa565b61013860248301610abc565b835260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838603011261054c576040519361017385610a43565b61017f60448401610abc565b855261018d60648401610abc565b6020860152608483013562ffffff8116810361054c5760408601526101b460a48401610add565b606086015260c483013573ffffffffffffffffffffffffffffffffffffffff8116810361054c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c84608093602493858a0152602088019889520301011261054c576040519061022382610a5f565b61022f60e48401610add565b825261023e6101048401610add565b602083015261012483013560408301526101448301356060830152604084019182526101648301359667ffffffffffffffff881161054c5761028a60409260246103749a870101610c5d565b908160608701526103465f6102b66101a46102a86101848a01610ca3565b9860808b01998a5201610ca3565b9560a089019687526103888a5191519587519d8e97889687957f5a6bcfda000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a48701526020820151900b60c4860152604081015160e486015260600151610104850152565b610140610124840152610144830190610cb0565b03925af1948515610558575f9561051e575b6103fb96508560801d600f0b86600f0b935f82126104d0575b5f851261047d575b505f8113610436575b505f83136103ff575b8686604051906020820152602081526103e7604082610a7b565b604051918291602083526020830190610cb0565b0390f35b73ffffffffffffffffffffffffffffffffffffffff80602061042c975101511694511691511515936110ab565b5f808080806103cd565b6104779073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff8751168486511515936110ab565b5f6103c4565b6104ca9073ffffffffffffffffffffffffffffffffffffffff602089510151169073ffffffffffffffffffffffffffffffffffffffff885116856104c089610cf3565b9251151593610d73565b5f6103bb565b61051973ffffffffffffffffffffffffffffffffffffffff8851511673ffffffffffffffffffffffffffffffffffffffff88511661050d85610cf3565b90868551151593610d73565b6103b3565b94506040863d604011610550575b8161053960409383610a7b565b8101031261054c576103fb95519461039a565b5f80fd5b3d915061052c565b6040513d5f823e3d90fd5b6101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054c5761059736610aeb565b6105a036610bb7565b90610124359167ffffffffffffffff831161054c5761070e5f9273ffffffffffffffffffffffffffffffffffffffff926105e1610749963690600401610c5d565b916106cf604051936105f2856109fa565b3385526020850192835260408501938452606085019081526106ba608086019489865261068860a08801958b87526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b6101008901526020820151900b610120880152604081015161014088015260600151610160870152565b516101a06101808601526101e0850190610cb0565b915115156101a08401525115156101c0830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610a7b565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610cb0565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610558575f916107d0575b5060208180518101031261054c576020015147806107b7575b602082604051908152f35b5f80808093335af1156107ca57816107ac565b336111bc565b90503d805f833e6107e18183610a7b565b81019060208183031261054c5780519067ffffffffffffffff821161054c570181601f8201121561054c5780519061081882610c23565b926108266040519485610a7b565b8284526020838301011161054c57815f9260208093018386015e8301015281610793565b3461054c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054c576108ec36610aeb565b6108f536610bb7565b906101243567ffffffffffffffff811161054c57610917903690600401610c5d565b91610144359283151580940361054c57610164359283151580940361054c57610749945f946106cf61070e946106ba73ffffffffffffffffffffffffffffffffffffffff976106886040519761096c896109fa565b3389526020890190815260408901928352606089019485526080890197885260a089019687526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c0810190811067ffffffffffffffff821117610a1657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610a1657604052565b6080810190811067ffffffffffffffff821117610a1657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a1657604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361054c57565b35908160020b820361054c57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a091011261054c5760405190610b2282610a43565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361054c57815260243573ffffffffffffffffffffffffffffffffffffffff8116810361054c57602082015260443562ffffff8116810361054c5760408201526064358060020b810361054c5760608201526084359073ffffffffffffffffffffffffffffffffffffffff8216820361054c5760800152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c608091011261054c5760405190610bee82610a5f565b8160a4358060020b810361054c57815260c4358060020b810361054c57602082015260e4356040820152606061010435910152565b67ffffffffffffffff8111610a1657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561054c57803590610c7482610c23565b92610c826040519485610a7b565b8284526020838301011161054c57815f926020809301838601378301015290565b3590811515820361054c57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b7f80000000000000000000000000000000000000000000000000000000000000008114610d1f575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9081602091031261054c5751801515810361054c5790565b9081602091031261054c575190565b929315610e155773ffffffffffffffffffffffffffffffffffffffff16803b1561054c576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af1801561055857610e095750565b5f610e1391610a7b565b565b9173ffffffffffffffffffffffffffffffffffffffff1680610eb357505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af1801561055857610e885750565b610ea99060203d602011610eac575b610ea18183610a7b565b810190610d64565b50565b503d610e97565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561054c57604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af1801561055857611082575b5073ffffffffffffffffffffffffffffffffffffffff168430821461100e576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561100357916020918493610fd6575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115610fca5750610e885750565b604051903d90823e3d90fd5b610ff590833d8511610ffc575b610fed8183610a7b565b810190610d4c565b505f610f8b565b503d610fe3565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561100357916020918493611065575b50610f8d565b61107b90833d8511610ffc57610fed8183610a7b565b505f61105f565b61108f9195505f90610a7b565b5f9373ffffffffffffffffffffffffffffffffffffffff610f17565b9293156111345773ffffffffffffffffffffffffffffffffffffffff16803b1561054c576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f90829081838160648101610df8565b90929073ffffffffffffffffffffffffffffffffffffffff16803b1561054c575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1801561055857610e095750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fdfea164736f6c634300081a000a60803461012b57601f614dd438819003918201601f19168301916001600160401b038311848410176101175780849260209460405283398101031261012b57516001600160a01b038116810361012b57600c805460ff19166001908117909155601f80546001600160a81b03191660089390931b610100600160a81b0316929092171790819055602180546001600160a01b03191633179055604051906133fa8083016001600160401b038111848210176101175760409284926119da843960081c6001600160a01b031681523360208201520301905ff0801561010c57602080546001600160a01b0319166001600160a01b03929092169190911790556040516118aa90816101308239f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081631ed7831c14610ecc575080632ade388014610c9e5780633e5e3c2314610bf65780633f7286f414610b4e57806348c8949114610a8c57806366d9a9a01461092f57806385226c8114610886578063916a17c6146107b057806391dd7346146103d0578063b0464fdc146102fb578063b5508aa914610253578063ba414fa614610210578063c34c08e5146101bf578063e20c9f71146101065763fa7626d4146100c3575f80fd5b3461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357602060ff601f54166040519015158152f35b80fd5b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101935761018f8561018381870382611230565b60405191829182610f70565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161016c565b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357602073ffffffffffffffffffffffffffffffffffffffff815416604051908152f35b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760206102496116c1565b6040519015158152f35b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760195461028e81611271565b9161029c6040519384611230565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106102de576040518061018f87826110c6565b6001602081926102ed85611289565b8152019201920191906102c9565b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357601c5461033681611271565b916103446040519384611230565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610386576040518061018f8782611143565b60026020600192604051610399816111e7565b73ffffffffffffffffffffffffffffffffffffffff86541681526103be85870161141d565b83820152815201920192019190610371565b503461074d576103df36611002565b8101919060208184031261074d5780359067ffffffffffffffff821161074d570182601f8201121561074d5780359061041782611271565b936104256040519586611230565b82855260208501916020839460051b82010191821161074d57602001915b818310610797575050508251600181149081610751575b501561064e5750905061048f61048a73ffffffffffffffffffffffffffffffffffffffff601f5460081c1661179a565b61181a565b806040517f5090d6c6000000000000000000000000000000000000000000000000000000006020820152600481526104c8602482611230565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561064b578161052391604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190610fbf565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156106405761062b575b508073ffffffffffffffffffffffffffffffffffffffff601f5460081c166044604051809581937f48c89491000000000000000000000000000000000000000000000000000000008352602060048401528160248401525af191821561061e5761018f926105fe575b506105d961048a73ffffffffffffffffffffffffffffffffffffffff601f5460081c1661179a565b604051906105e8602083611230565b8152604051918291602083526020830190610fbf565b610619903d8084833e6106118183611230565b81019061138c565b6105b1565b50604051903d90823e3d90fd5b8161063591611230565b61010357805f610548565b6040513d84823e3d90fd5b50fd5b73ffffffffffffffffffffffffffffffffffffffff6020541690813b1561074d576040517f7938323a00000000000000000000000000000000000000000000000000000000815260206004820152935160248501819052849160448301915f905b8082106106f75750505091815f81819503925af180156106ec576106d8575b61018f91506105d9565b505f6106e391611230565b61018f5f6106ce565b6040513d5f823e3d90fd5b9180945092909251906007821015610720576020816001938293520194019201869392916106af565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b90501561076a578051600781101561072057155f61045a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8235600781101561074d57815260209283019201610443565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601d546107ea81611271565b906107f86040519283611230565b80825260208201601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b83831061083c576040518061018f8782611143565b6002602060019260405161084f816111e7565b73ffffffffffffffffffffffffffffffffffffffff865416815261087485870161141d565b83820152815201920192019190610827565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601a546108c081611271565b906108ce6040519283611230565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310610912576040518061018f87826110c6565b60016020819261092185611289565b8152019201920191906108fd565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601b5461096981611271565b906109776040519283611230565b808252602082019081601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc15f915b838310610a5157848660405191829160208301906020845251809152604083019060408160051b85010192915f905b8282106109e657505050500390f35b91936020610a41827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083610a318351604084526040840190610fbf565b9201519084818403910152611071565b96019201920185949391926109d7565b60026020600192604051610a64816111e7565b610a6d86611289565b8152610a7a85870161141d565b838201528152019201920191906109a8565b3461074d57601f5f610a9d36611002565b908183604473ffffffffffffffffffffffffffffffffffffffff875460081c16937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f48c89491000000000000000000000000000000000000000000000000000000008652602060048701528160248701528686013785858286010152011681010301925af180156106ec57610b3957005b610b4c903d805f833e6106118183611230565b005b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d5760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b818110610bca5761018f8561018381870382611230565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610bb3565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d5760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110610c725761018f8561018381870382611230565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610c5b565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601e54610cd881611271565b90610ce66040519283611230565b808252602082019081601e5f527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3505f915b838310610e3457848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210610d5557505050500390f35b91939092947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09082030182528451906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110610deb5750505050506020806001929601920192018594939192610d46565b9091929394602080610e27837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951610fbf565b9701950193929101610dc9565b604051610e40816111e7565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054610e6981611271565b91610e776040519384611230565b81835260208301905f5260205f20905f905b838210610eaf575050505060019282602092836002950152815201920192019190610d17565b600160208192610ebe86611289565b815201930191019091610e89565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601654808252602082019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110610f445761018f8561018381870382611230565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610f2d565b60206040818301928281528451809452019201905f5b818110610f935750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610f86565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261074d5760043567ffffffffffffffff811161074d578260238201121561074d5780600401359267ffffffffffffffff841161074d576024848301011161074d576024019190565b90602080835192838152019201905f5b81811061108e5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101611081565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106110f857505050505090565b9091929394602080611134837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951610fbf565b970193019301919392906110e9565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061117557505050505090565b90919293946020806111d8837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190611071565b97019301930191939290611166565b6040810190811067ffffffffffffffff82111761120357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761120357604052565b67ffffffffffffffff81116112035760051b60200190565b90604051915f8154908160011c9260018316928315611382575b60208510841461135557848752869390811561131557506001146112d1575b506112cf92500383611230565b565b90505f9291925260205f20905f915b8183106112f95750509060206112cf928201015f6112c2565b60209193508060019154838589010152019101909184926112e0565b602093506112cf9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f6112c2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f16936112a3565b60208183031261074d5780519067ffffffffffffffff821161074d570181601f8201121561074d5780519067ffffffffffffffff821161120357604051926113fc601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185611230565b8284526020838301011161074d57815f9260208093018386015e8301015290565b90604051918281549182825260208201905f5260205f20925f905b806007830110611634576112cf9454918181106115fe575b8181106115c8575b818110611592575b81811061155c575b818110611526575b8181106114f0575b8181106114bb575b1061148e575b500383611230565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f611486565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301611480565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611478565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301611470565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301611468565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301611460565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301611458565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301611450565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391611438565b60085460ff1680156116d05790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156106ec575f91611768575b50151590565b90506020813d602011611792575b8161178360209383611230565b8101031261074d57515f611762565b3d9150611776565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156106ec575f916117685750151590565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561074d57604051907ff7fe347700000000000000000000000000000000000000000000000000000000825215156004820152600160248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156106ec576118935750565b5f6112cf9161123056fea164736f6c634300081a000a60a06040523461020b57604051601f6133fa38819003918201601f19168301916001600160401b038311848410176101f757808492604094855283398101031261020b578051906001600160a01b038216820361020b57602001516001600160a01b038116919082900361020b57600160ff19600c541617600c55600160ff19601f541617601f556080525f606061009561020f565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196024541617602455670de0b6b3a76400006025555f6026555f60606100e161020f565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196027541617602755670de0b6b3a763ffff196028555f6029556040516060810181811060018060401b038211176101f7576bb504f333f9de6484597d89b39160409182526001815260631960208201520152600160ff19602a541617602a55606319602b556bb504f333f9de6484597d89b360018060a01b0319602c541617602c556402dfd1c040602d55633ade57d0602e5560018060a01b031960235416176023556040516131cb908161022f823960805181818161066f015281816108d101528181610cc901528181610ff7015281816112e60152818161165001528181611bd60152612ccc0152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b038111838210176101f75760405256fe6080806040526004361015610012575f80fd5b5f3560e01c9081631b9ec89e14612020575080631ed7831c14611f785780632ade388014611d4a5780633e5e3c2314611ca25780633f7286f414611bfa578063481c6a7514611b8c57806366d9a9a014611a2f5780637938323a1461059b57806385226c81146104f2578063916a17c61461041c57806391dd734614610389578063b0464fdc146102b3578063b5508aa91461020a578063ba414fa6146101c8578063e20c9f71146101105763fa7626d4146100cc575f80fd5b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57602060ff601f54166040519015158152f35b5f80fd5b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060155491828152019060155f527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475905f5b81811061019c576101988561018c8187038261223e565b6040519182918261227f565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610175565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c576020610200612855565b6040519015158152f35b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760195461024481612366565b90610252604051928361223e565b80825260195f9081527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106102965760405180610198878261237e565b6001602081926102a58561249f565b815201920192019190610281565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601c546102ed81612366565b906102fb604051928361223e565b80825260208201601c5f527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2115f915b83831061033f576040518061019887826123fb565b6002602060019260405161035281612222565b73ffffffffffffffffffffffffffffffffffffffff86541681526103778587016125a2565b8382015281520192019201919061032a565b3461010c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760043567ffffffffffffffff811161010c573660238201121561010c57806004013567ffffffffffffffff811161010c573691016024011161010c5761019860405161040560208261223e565b5f81526040519182916020835260208301906122ce565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601d5461045681612366565b90610464604051928361223e565b80825260208201601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b8383106104a8576040518061019887826123fb565b600260206001926040516104bb81612222565b73ffffffffffffffffffffffffffffffffffffffff86541681526104e08587016125a2565b83820152815201920192019190610493565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601a5461052c81612366565b9061053a604051928361223e565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061057e5760405180610198878261237e565b60016020819261058d8561249f565b815201920192019190610569565b3461010c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760043567ffffffffffffffff811161010c573660238201121561010c5780600401356105f581612366565b91610603604051938461223e565b8183526024602084019260051b8201019036821161010c57602401915b818310611a16578373ffffffffffffffffffffffffffffffffffffffff60205416156119ee575f5b81518110156119ec5760208160051b8301015160078110156119bf57600181036108c657507f0000000000000000000000000000000000000000000000000000000000000000906106a061069b83612abe565b612b3e565b6040517f5090d6c6000000000000000000000000000000000000000000000000000000006020820152600481526106d860248261223e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c575f61073391604051809381927ff28dceb30000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ce565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156108ab576108b6575b506040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f60248201525f816044818373ffffffffffffffffffffffffffffffffffffffff88165af180156108ab576107cb575b506107c561069b600193612abe565b01610648565b913d805f853e6107db818561223e565b83019260208185031261010c5780519067ffffffffffffffff821161010c570183601f8201121561010c5780519167ffffffffffffffff831161087e576040519461084e601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020018761223e565b8386526020848401011161010c576001945f6020856107c5968261069b97018386015e83010152509350506107b6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b5f6108c09161223e565b83610758565b60028103610cbe57507f0000000000000000000000000000000000000000000000000000000000000000906108fd61069b83612abe565b73ffffffffffffffffffffffffffffffffffffffff6020541673ffffffffffffffffffffffffffffffffffffffff602354169061093b338383612ca7565b9591505061098073ffffffffffffffffffffffffffffffffffffffff60215416610975610969338784612ca7565b96915050863091612ca7565b969150503091612ca7565b96915050604051937ff3cd914c000000000000000000000000000000000000000000000000000000008552610a256004860173ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60225416910152565b60ff602a5416151560a4860152602b5460c486015273ffffffffffffffffffffffffffffffffffffffff602c541660e48601526101206101048601525f610124860152602085610144815f73ffffffffffffffffffffffffffffffffffffffff88165af19485156108ab575f95610c8b575b5073ffffffffffffffffffffffffffffffffffffffff6020541690610b56610b4d73ffffffffffffffffffffffffffffffffffffffff6023541692610b44610ae0338688612ca7565b9a91505073ffffffffffffffffffffffffffffffffffffffff6021541697610b3c610b0c33898c612ca7565b93915050610b2a610b1e308b8d612ca7565b9d9150508a3091612ca7565b9e915050610b3661292e565b91612d79565b610b36612969565b602b5490612aa3565b84610b366129bc565b60628801975f60628a129112908015821691151617610c5e5783610c1a610c2094610c15610c5999610b8d60019d8b610b366129f7565b89604091610bd78351610ba0858261223e565b600c81527f537761702064656c7461203000000000000000000000000000000000000000006020820152868360801d600f0b612d79565b610be38351938461223e565b600c83527f537761702064656c7461203100000000000000000000000000000000000000006020840152600f0b612d79565b612a61565b92612e1e565b73ffffffffffffffffffffffffffffffffffffffff602154169073ffffffffffffffffffffffffffffffffffffffff60235416916130b7565b6107c5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9094506020813d8211610cb6575b81610ca66020938361223e565b8101031261010c57519388610a97565b3d9150610c99565b60048103610fec57507f0000000000000000000000000000000000000000000000000000000000000000610cf461069b82612abe565b73ffffffffffffffffffffffffffffffffffffffff602054169073ffffffffffffffffffffffffffffffffffffffff60235416610d32338285612ca7565b915050610d7673ffffffffffffffffffffffffffffffffffffffff60215416610d6b610d5f338684612ca7565b98915050853091612ca7565b959150503091612ca7565b93915050604051917f5a6bcfda000000000000000000000000000000000000000000000000000000008352610df760048401602073ffffffffffffffffffffffffffffffffffffffff60026080928281541685526001810154838116602087015262ffffff8160a01c16604087015260b81c820b6060860152015416910152565b6024548060020b60a485015260181c60020b60c484015260255460e48401526026546101048401526101406101248401525f61014484015260408361016481800301815f73ffffffffffffffffffffffffffffffffffffffff8a165af19384156108ab5785935f95610fbb575b5060205473ffffffffffffffffffffffffffffffffffffffff169460235473ffffffffffffffffffffffffffffffffffffffff169333610ea5908689612ca7565b9a91505060215473ffffffffffffffffffffffffffffffffffffffff169433610ecf908888612ca7565b9291505030610edf90898c612ca7565b98915050883090610eef92612ca7565b9d915050610efb61292e565b90610f0592612d79565b610f0d612969565b90610f1792612d79565b8160801d600f0b610f2791612aa3565b83610f306129bc565b90610f3a92612d79565b600f0b610f4691612aa3565b86610f4f6129f7565b90610f5992612d79565b610f6290612a61565b91610f6c93612e1e565b60215473ffffffffffffffffffffffffffffffffffffffff169160235473ffffffffffffffffffffffffffffffffffffffff1690610fa990612a61565b91610fb393612e1e565b6001906107c5565b610fdd91955060403d8111610fe5575b610fd5818361223e565b810190612a8d565b509389610e64565b503d610fcb565b600581036112db57507f000000000000000000000000000000000000000000000000000000000000000061102261069b82612abe565b73ffffffffffffffffffffffffffffffffffffffff6020541673ffffffffffffffffffffffffffffffffffffffff6023541661105f338284612ca7565b91505061109873ffffffffffffffffffffffffffffffffffffffff60215416610d6b61108c338684612ca7565b97915050853091612ca7565b6040517f5a6bcfda00000000000000000000000000000000000000000000000000000000815260205473ffffffffffffffffffffffffffffffffffffffff9081166004830152602154808216602484015260a081901c62ffffff16604484015260b81c60020b60648301526022541660848201529094925090506027548060020b60a483015260181c60020b60c482015260285460e48201526029546101048201526101406101248201525f61014482015260408161016481800301815f73ffffffffffffffffffffffffffffffffffffffff8b165af19384156108ab5786915f956112ba575b5060205473ffffffffffffffffffffffffffffffffffffffff169460235473ffffffffffffffffffffffffffffffffffffffff1693336111c0908689612ca7565b9991505060215473ffffffffffffffffffffffffffffffffffffffff1696336111ea90888a612ca7565b92915050306111fa90898c612ca7565b9a91505088309061120a92612ca7565b9c91505061121661292e565b9061122092612d79565b611228612969565b9061123292612d79565b8160801d600f0b61124291612aa3565b8561124b6129bc565b9061125592612d79565b600f0b61126191612aa3565b8561126a6129f7565b9061127492612d79565b61127d936130b7565b60215473ffffffffffffffffffffffffffffffffffffffff169160235473ffffffffffffffffffffffffffffffffffffffff1690610fb3936130b7565b6112d391955060403d8111610fe557610fd5818361223e565b50938961117f565b6003810361163f57507f000000000000000000000000000000000000000000000000000000000000000061131161069b82612abe565b73ffffffffffffffffffffffffffffffffffffffff602054169073ffffffffffffffffffffffffffffffffffffffff6023541661134f338285612ca7565b91505061137c73ffffffffffffffffffffffffffffffffffffffff60215416610d6b610d5f338684612ca7565b915050602d5491602e54604051937f234266d70000000000000000000000000000000000000000000000000000000085526114276004860173ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60225416910152565b60a485015260c484015261010060e48401525f610104840152602083610124815f73ffffffffffffffffffffffffffffffffffffffff8a165af19182156108ab5785935f93611609575b5060205473ffffffffffffffffffffffffffffffffffffffff169460235473ffffffffffffffffffffffffffffffffffffffff1693336114b2908689612ca7565b9a91505060215473ffffffffffffffffffffffffffffffffffffffff1694336114dc908888612ca7565b92915050306114ec90898c612ca7565b989150508830906114fc92612ca7565b9d91505061150861292e565b9061151292612d79565b61151a612969565b9061152492612d79565b602d549182611532916129a4565b8461153b6129bc565b9061154592612d79565b602e549283611553916129a4565b8961155c6129f7565b9061156692612d79565b8060801d61157390612a32565b600f0b604092835190611586858361223e565b600e82527f446f6e6174652064656c7461203000000000000000000000000000000000000060208301526115b992612d79565b600f0b6115c590612a32565b600f0b918151916115d6908361223e565b600e82527f446f6e6174652064656c746120310000000000000000000000000000000000006020830152610f5992612d79565b935091506020833d8211611637575b816116256020938361223e565b8101031261010c578492519189611471565b3d9150611618565b60061461164e576001906107c5565b7f000000000000000000000000000000000000000000000000000000000000000061167b61069b82612abe565b773200000000000000000000000000000000000000000000007fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff602154161760215560a06040516116cb81612206565b73ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff81841c16604083015260b81c60020b606082015273ffffffffffffffffffffffffffffffffffffffff602254166080820152206117468183612bc1565b505050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c5773ffffffffffffffffffffffffffffffffffffffff604051917f98296c540000000000000000000000000000000000000000000000000000000083521660048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156108ab576119af575b506040517f6276cbbe0000000000000000000000000000000000000000000000000000000081526118746004820173ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60225416910152565b6bb504f333f9de6484597d89b360a482015260208160c4815f73ffffffffffffffffffffffffffffffffffffffff88165af180156108ab57611971575b506118bb91612bc1565b50505090737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c5773ffffffffffffffffffffffffffffffffffffffff604051927f98296c540000000000000000000000000000000000000000000000000000000084521660048301526bb504f333f9de6484597d89b360248301525f82604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108ab57600192611961575b509050610fb3565b5f61196b9161223e565b83611959565b6020813d82116119a7575b816119896020938361223e565b8101031261010c5751918260020b830361010c5791506118bb6118b1565b3d915061197c565b5f6119b99161223e565b846117d3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b005b7f9096cccb000000000000000000000000000000000000000000000000000000005f5260045ffd5b8235600781101561010c57815260209283019201610620565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601b54611a6981612366565b90611a77604051928361223e565b808252602082019081601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc15f915b838310611b5157848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210611ae657505050500390f35b91936020611b41827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083611b3183516040845260408401906122ce565b9201519084818403910152612311565b9601920192018594939192611ad7565b60026020600192604051611b6481612222565b611b6d8661249f565b8152611b7a8587016125a2565b83820152815201920192019190611aa8565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b818110611c76576101988561018c8187038261223e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611c5f565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110611d1e576101988561018c8187038261223e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611d07565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601e54611d8481612366565b90611d92604051928361223e565b808252602082019081601e5f527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3505f915b838310611ee057848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210611e0157505050500390f35b91939092947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09082030182528451906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110611e975750505050506020806001929601920192018594939192611df2565b9091929394602080611ed3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0876001960301895289516122ce565b9701950193929101611e75565b604051611eec81612222565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054611f1581612366565b91611f23604051938461223e565b81835260208301905f5260205f20905f905b838210611f5b575050505060019282602092836002950152815201920192019190611dc3565b600160208192611f6a8661249f565b815201930191019091611f35565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060165491828152019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110611ff4576101988561018c8187038261223e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611fdd565b3461010c5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5761205881612206565b60043573ffffffffffffffffffffffffffffffffffffffff81169081810361010c57825260243573ffffffffffffffffffffffffffffffffffffffff81169081810361010c5760208401526044359062ffffff8216820361010c57816040850152606435928360020b840361010c5783606086015260843573ffffffffffffffffffffffffffffffffffffffff81169586820361010c57608001527fffffffffffffffffffffffff000000000000000000000000000000000000000060205416176020557fffffffffffffffffffffffff000000000000000000000000000000000000000060215416176021557fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006021549260a01b169116176021557fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff6021549160b81b60190b79ffffff0000000000000000000000000000000000000000000000169116176021557fffffffffffffffffffffffff000000000000000000000000000000000000000060225416176022555f80f35b60a0810190811067ffffffffffffffff82111761087e57604052565b6040810190811067ffffffffffffffff82111761087e57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761087e57604052565b60206040818301928281528451809452019201905f5b8181106122a25750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612295565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b81811061232e5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101612321565b67ffffffffffffffff811161087e5760051b60200190565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106123b057505050505090565b90919293946020806123ec837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516122ce565b970193019301919392906123a1565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061242d57505050505090565b9091929394602080612490837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190612311565b9701930193019193929061241e565b90604051915f8154908160011c9260018316928315612598575b60208510841461256b57848752869390811561252b57506001146124e7575b506124e59250038361223e565b565b90505f9291925260205f20905f915b81831061250f5750509060206124e5928201015f6124d8565b60209193508060019154838589010152019101909184926124f6565b602093506124e59592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f6124d8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f16936124b9565b90604051918281549182825260208201905f5260205f20925f905b8060078301106127b9576124e5945491818110612783575b81811061274d575b818110612717575b8181106126e1575b8181106126ab575b818110612675575b818110612640575b10612613575b50038361223e565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f61260b565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301612605565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b1681520193016125fd565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b1681520193016125f5565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016125ed565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016125e5565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b1681520193016125dd565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681520193016125d5565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e08201520194019201859293916125bd565b9081602091031261010c575190565b60085460ff1680156128645790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156108ab575f916128fc575b50151590565b90506020813d602011612926575b816129176020938361223e565b8101031261010c57515f6128f6565b3d915061290a565b6040519061293d60408361223e565b600e82527f43616c6c65722064656c746120300000000000000000000000000000000000006020830152565b6040519061297860408361223e565b600e82527f43616c6c65722064656c746120310000000000000000000000000000000000006020830152565b81810392915f138015828513169184121617610c5e57565b604051906129cb60408361223e565b601082527f4578656375746f722064656c74612030000000000000000000000000000000006020830152565b60405190612a0660408361223e565b601082527f4578656375746f722064656c74612031000000000000000000000000000000006020830152565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610c5e575f0390565b7f80000000000000000000000000000000000000000000000000000000000000008114610c5e575f0390565b919082604091031261010c576020825192015190565b9190915f8382019384129112908015821691151617610c5e57565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156108ab575f916128fc5750151590565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c57604051907ff7fe347700000000000000000000000000000000000000000000000000000000825215156004820152600160248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156108ab57612bb75750565b5f6124e59161223e565b602090602473ffffffffffffffffffffffffffffffffffffffff94936040518481019182526006604082015260408152612bfc60608261223e565b51902060405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156108ab575f92612c73575b5073ffffffffffffffffffffffffffffffffffffffff8216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d602011612c9f575b81612c8f6020938361223e565b8101031261010c5751905f612c40565b3d9150612c82565b9290612cb3908461313f565b9273ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169181612cf8848361313f565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa9081156108ab575f91612d4a575090565b90506020813d602011612d71575b81612d656020938361223e565b8101031261010c575190565b3d9150612d58565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c575f91612de060405194859384937f714a2f13000000000000000000000000000000000000000000000000000000008552600485015260248401526060604484015260648301906122ce565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156108ab57612bb75750565b9081602091031261010c5751801515810361010c5790565b90919073ffffffffffffffffffffffffffffffffffffffff1680612ebe57505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af180156108ab57612e935750565b612eb49060203d602011612eb7575b612eac818361223e565b810190612846565b50565b503d612ea2565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561010c57604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf180156108ab5761308e575b5073ffffffffffffffffffffffffffffffffffffffff168430821461301a576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561300f57916020918493612fe2575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115612fd65750612e935750565b604051903d90823e3d90fd5b61300190833d8511613008575b612ff9818361223e565b810190612e06565b505f612f97565b503d612fef565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561300f57916020918493613071575b50612f99565b61308790833d851161300857612ff9818361223e565b505f61306b565b61309b9195505f9061223e565b5f9373ffffffffffffffffffffffffffffffffffffffff612f23565b91929073ffffffffffffffffffffffffffffffffffffffff16803b1561010c575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156108ab57612bb75750565b73ffffffffffffffffffffffffffffffffffffffff168061315f57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156108ab575f91612d4a57509056fea164736f6c634300081a000a60a034607a57601f611bb938819003918201601f19168301916001600160401b03831184841017607e57808492602094604052833981010312607a57516001600160a01b0381168103607a57608052604051611b269081610093823960805181818160ab01528181610d29015281816110a6015261158c0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80632229d0b414610d4d578063481c6a7514610cdf576391dd73461461003a575f80fd5b34610c0c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c0c5760043567ffffffffffffffff8111610c0c5736602382011215610c0c57806004013567ffffffffffffffff8111610c0c578101906024820191368311610c0c577f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff841692833303610c0c57602081840312610c0c5760248101359067ffffffffffffffff8211610c0c57019061018082840312610c0c576040519161012383611236565b61012f602482016112f8565b835260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610c0c576040519061016a8261129b565b61017660448201611319565b825261018460648201611319565b60208301526020840191825260a060247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c838803010112610c0c57604051946101cc86611236565b6101d8608483016112f8565b86526101e660a483016112f8565b602087015260c482013562ffffff81168103610c0c57604087015260e48201358060020b8103610c0c57606087015261010482013573ffffffffffffffffffffffffffffffffffffffff81168103610c0c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedc8360609360249360808b015260408901998a5203010112610c0c57604051926102818461127f565b61028e6101248301611319565b8452610144820135602085015261016482013573ffffffffffffffffffffffffffffffffffffffff81168103610c0c576040850152606085019384526101848201359167ffffffffffffffff8311610c0c576102ed9201602401611360565b946080840195865261033073ffffffffffffffffffffffffffffffffffffffff8651511673ffffffffffffffffffffffffffffffffffffffff8651163091611567565b91505061037273ffffffffffffffffffffffffffffffffffffffff60208851015116309073ffffffffffffffffffffffffffffffffffffffff88511690611567565b92915050610c8157610c2357610447956020916104135f885161045b885195516040519c8d97889687957ff3cd914c000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560a4860152602081015160c48601526040015173ffffffffffffffffffffffffffffffffffffffff1660e4850152565b6101206101048401526101248301906113a6565b03925af1948515610c18575f95610be0575b506104aa73ffffffffffffffffffffffffffffffffffffffff85515116309073ffffffffffffffffffffffffffffffffffffffff86511690611567565b979150506104ed73ffffffffffffffffffffffffffffffffffffffff60208751015116309073ffffffffffffffffffffffffffffffffffffffff87511690611567565b855180519196935091501561092357505f602082510151125f146107cb575160200151871261072157610527878760801d600f0b146113f8565b5f831261069d57610582965b5f811261065b575b5f8412610606575b5f81136105be575b505f8313610586575b86866040519060208201526020815261056e6040826112b7565b6040519182916020835260208301906113a6565b0390f35b73ffffffffffffffffffffffffffffffffffffffff8060206105b49751015116945116915151151593611989565b5f80808080610554565b6106009073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff87511684865151151593611989565b5f61054b565b61065673ffffffffffffffffffffffffffffffffffffffff6020885101511673ffffffffffffffffffffffffffffffffffffffff8751166106468761150e565b9085602088510151151593611651565b610543565b61069873ffffffffffffffffffffffffffffffffffffffff8751511673ffffffffffffffffffffffffffffffffffffffff8751166106468461150e565b61053b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f65636966696564000000000000000000000000000000000000000000000000006084820152fd5b5f881361089f576020906107e38589600f0b14611483565b51015183136107f55761058296610533565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604460248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f66696564000000000000000000000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f207a65726f000000000000000000000000000000000000006064820152fd5b602001515f1315610a8557516020015183126109db576109478387600f0b14611483565b5f87126109575761058296610533565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f65636966696564000000000000000000000000000000000000000000000000006084820152fd5b5f8413610b5c57602090610aa0898960801d600f0b146113f8565b5101518713610ab25761058296610533565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604460248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f66696564000000000000000000000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f2030000000000000000000000000000000000000000000006064820152fd5b9094506020813d602011610c10575b81610bfc602093836112b7565b81010312610c0c5751935f61046d565b5f80fd5b3d9150610bef565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656c74614265666f726531206973206e6f7420657175616c20746f203000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656c74614265666f726530206973206e6f7420657175616c20746f203000006044820152fd5b34610c0c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c0c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36016101608112610c0c5760a013610c0c57604051610d8c81611236565b60043573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57815260243573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57602082015260443562ffffff81168103610c0c5760408201526064358060020b8103610c0c57606082015260843573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57608082015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610c0c57604051610e548161127f565b60a4358015158103610c0c57815260c435602082015260e43573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57604082015260407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc360112610c0c5760405191610ec68361129b565b610104358015158103610c0c578352610124358015158103610c0c5760208401526101443567ffffffffffffffff8111610c0c5761108c9361102573ffffffffffffffffffffffffffffffffffffffff936110105f96610fd8610f30611051973690600401611360565b93602060405197610f4089611236565b3389528189019081526040890192835260608901948552608089019687526040519a8b9983808c0152511660408a0152518051151560608a01520151151560808801525160a087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051151561014086015260208101516101608601526040015173ffffffffffffffffffffffffffffffffffffffff16610180850152565b516101806101a08401526101c08301906113a6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826112b7565b604051809381927f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906113a6565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610c18575f916111bc575b5060208151918180820193849201010312610c0c575147806110fe575b602082604051908152f35b5f80808093335af11561111157816110f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051907f90bfb8650000000000000000000000000000000000000000000000000000000082523360048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b90503d805f833e6111cd81836112b7565b810190602081830312610c0c5780519067ffffffffffffffff8211610c0c570181601f82011215610c0c5780519061120482611326565b9261121260405194856112b7565b82845260208383010111610c0c57815f9260208093018386015e83010152816110d6565b60a0810190811067ffffffffffffffff82111761125257604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761125257604052565b6040810190811067ffffffffffffffff82111761125257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761125257604052565b359073ffffffffffffffffffffffffffffffffffffffff82168203610c0c57565b35908115158203610c0c57565b67ffffffffffffffff811161125257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f82011215610c0c5780359061137782611326565b9261138560405194856112b7565b82845260208383010111610c0c57815f926020809301838601378301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90816020910312610c0c575190565b156113ff57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572300000000000000000000000000000000000000000006064820152fd5b1561148a57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572310000000000000000000000000000000000000000006064820152fd5b7f8000000000000000000000000000000000000000000000000000000000000000811461153a575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92906115739084611a9a565b9273ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691816115b88483611a9a565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa908115610c18575f9161160a575090565b90506020813d602011611631575b81611625602093836112b7565b81010312610c0c575190565b3d9150611618565b90816020910312610c0c57518015158103610c0c5790565b9293156116f35773ffffffffffffffffffffffffffffffffffffffff16803b15610c0c576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af18015610c18576116e75750565b5f6116f1916112b7565b565b9173ffffffffffffffffffffffffffffffffffffffff168061179157505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610c18576117665750565b6117879060203d60201161178a575b61177f81836112b7565b8101906113e9565b50565b503d611775565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b15610c0c57604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af18015610c1857611960575b5073ffffffffffffffffffffffffffffffffffffffff16843082146118ec576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156118e1579160209184936118b4575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156118a857506117665750565b604051903d90823e3d90fd5b6118d390833d85116118da575b6118cb81836112b7565b810190611639565b505f611869565b503d6118c1565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af180156118e157916020918493611943575b5061186b565b61195990833d85116118da576118cb81836112b7565b505f61193d565b61196d9195505f906112b7565b5f9373ffffffffffffffffffffffffffffffffffffffff6117f5565b929315611a125773ffffffffffffffffffffffffffffffffffffffff16803b15610c0c576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481016116d6565b90929073ffffffffffffffffffffffffffffffffffffffff16803b15610c0c575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610c18576116e75750565b73ffffffffffffffffffffffffffffffffffffffff1680611aba57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610c18575f9161160a57509056fea164736f6c634300081a000a60a034608157601f610f2238819003918201601f19168301916001600160401b03831184841017608557808492602094604052833981010312608157516001600160a01b0381168103608157608052604051610e88908161009a823960805181818160bd015281816102cc015281816104b4015281816107030152610d280152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063055419b6146102f0578063481c6a7514610282576391dd73461461003a575f80fd5b3461027e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027e5760043567ffffffffffffffff811161027e573660238201121561027e57806004013567ffffffffffffffff811161027e57810136602482011161027e5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361027e576101008282031261027e5760a060247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc8460405194610121866105ba565b61012c848301610633565b86520301011261027e5760405191610143836105d6565b61014f60448201610633565b835261015d60648201610633565b6020840152608481013562ffffff8116810361027e57604084015260a48101358060020b810361027e57606084015260c481013573ffffffffffffffffffffffffffffffffffffffff8116810361027e576080840152602082019280845260e48201358060408501526101046060850193013583528061023e575b505051908161020d575b6102096040515f6020820152602081526101fd6040826105f2565b60405191829182610654565b0390f35b73ffffffffffffffffffffffffffffffffffffffff8060206102369551015116915116906106d6565b5f80806101e2565b73ffffffffffffffffffffffffffffffffffffffff61027792511673ffffffffffffffffffffffffffffffffffffffff855116906106d6565b5f806101d8565b5f80fd5b3461027e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160e0811261027e5760a01361027e5760405161032e816105d6565b60043573ffffffffffffffffffffffffffffffffffffffff8116810361027e57815260243573ffffffffffffffffffffffffffffffffffffffff8116810361027e57602082015260443562ffffff8116810361027e5760408201526064358060020b810361027e57606082015260843573ffffffffffffffffffffffffffffffffffffffff8116810361027e57815f91608061049a9401526040516103d2816105ba565b338152602081019182526060604082019160a4358352019060c435825273ffffffffffffffffffffffffffffffffffffffff6080604051943360208701525182815116604087015282602082015116606087015262ffffff60408201511682870152606081015160020b60a087015201511660c08401525160e0830152516101008201526101008152610467610120826105f2565b604051809381927f48c8949100000000000000000000000000000000000000000000000000000000835260048301610654565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156105af576104e257005b3d805f833e6104f181836105f2565b81019060208183031261027e5780519067ffffffffffffffff821161027e570181601f8201121561027e57805167ffffffffffffffff8111610582576040519261056360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601856105f2565b8184526020828401011161027e575f928160208094018483015e010152005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b6080810190811067ffffffffffffffff82111761058257604052565b60a0810190811067ffffffffffffffff82111761058257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761058257604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361027e57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b919082039182116106a957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6106e1308383610d03565b93915f93919394610ca55773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001693843b1561027e57604051927f0b0d9c0900000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff81169485600486015273ffffffffffffffffffffffffffffffffffffffff8116948560248201528960448201525f81606481838c5af180156105af57610c8b575b50906107b5913091610d03565b6f800000000000000000000000000000008a959392951015610c635789600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610c36578903600f0b03610bb25788916108119161069c565b03610b085786916108219161069c565b03610a5e57816108a45750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115610898575061086d5750565b61088e9060203d602011610891575b61088681836105f2565b810190610ded565b50565b503d61087c565b604051903d90823e3d90fd5b82939491923b15610a4f576040517fa5841194000000000000000000000000000000000000000000000000000000008152836004820152858160248183895af18015610a5357908691610a3a575b503082146109c6576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156109bb5791602091849361098e575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115610898575061086d5750565b6109ad90833d85116109b4575b6109a581836105f2565b810190610dd5565b505f61094f565b503d61099b565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af180156109bb57916020918493610a1d575b50610951565b610a3390833d85116109b4576109a581836105f2565b505f610a17565b81610a44916105f2565b610a4f57845f6108f2565b8480fd5b6040513d88823e3d90fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f74686520646966666572656e6365206265747765656e20706d42616c4265666f60448201527f726520616e6420706d42616c4166746572206973206e6f7420657175616c207460648201527f6f20616d6f756e740000000000000000000000000000000000000000000000006084820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f74686520646966666572656e6365206265747765656e207573657242616c416660448201527f74657220616e64207573657242616c4265666f7265206973206e6f742065717560648201527f616c20746f20616d6f756e7400000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c74614166746572206973206e6f7420657175616c20746f202d616d6f7560448201527f6e742e746f496e743132382829000000000000000000000000000000000000006064820152fd5b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6004897f93dafdf1000000000000000000000000000000000000000000000000000000008152fd5b6107b5929198505f610c9c916105f2565b5f9790916107a8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f64656c74614265666f7265206973206e6f7420657175616c20746f20300000006044820152fd5b9290610d0f9084610dfc565b9273ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169181610d548483610dfc565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa9081156105af575f91610da6575090565b90506020813d602011610dcd575b81610dc1602093836105f2565b8101031261027e575190565b3d9150610db4565b9081602091031261027e5751801515810361027e5790565b9081602091031261027e575190565b73ffffffffffffffffffffffffffffffffffffffff1680610e1c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156105af575f91610da657509056fea164736f6c634300081a000a60a034607357601f610d6f38819003918201601f19168301916001600160401b03831184841017607757808492602094604052833981010312607357516001600160a01b0381168103607357608052604051610ce3908161008c823960805181818160a8015281816104c4015261074e0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80631e2817de146104e8578063481c6a751461047a576391dd73461461003a575f80fd5b346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104645760043567ffffffffffffffff8111610464573660238201121561046457806004013567ffffffffffffffff8111610464578101366024820111610464577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff811692833303610464576101208184031261046457604051916100fe83610849565b61010a602483016108c2565b835260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08386030112610464576040519361014585610865565b610151604484016108c2565b855261015f606484016108c2565b6020860152608483013562ffffff8116810361046457604086015260a48301358060020b810361046457606086015260c483013573ffffffffffffffffffffffffffffffffffffffff81168103610464577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c8460609360249360808a0152602088019889520301011261046457604051916101f983610849565b60e4810135908115158203610464576101249184526101048101356020850152013573ffffffffffffffffffffffffffffffffffffffff81168103610464575f9561034691604085015260408501938085528651916103126020998a9461035a6040516102668882610881565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe088013689830137604051988997889687957ff3cd914c000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560a4860152602081015160c48601526040015173ffffffffffffffffffffffffffffffffffffffff1660e4850152565b6101206101048401526101248301906108e3565b03925af192831561046f5786915f9461043a575b505151156103ed5773ffffffffffffffffffffffffffffffffffffffff8091866103b3836103c49951511684895116876103aa8a60801d610926565b600f0b926109a9565b5101511693511691600f0b92610c42565b604051906103d28183610881565b5f82526103e96040519282849384528301906108e3565b0390f35b73ffffffffffffffffffffffffffffffffffffffff85610422828094610435995101511683885116866103aa89600f0b610926565b5151169351169160801d600f0b92610c42565b6103c4565b8281939295503d8311610468575b6104528183610881565b8101031261046457859051925f61036e565b5f80fd5b503d610448565b6040513d5f823e3d90fd5b34610464575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360161010081126104645760a0136104645760405161052781610865565b60043573ffffffffffffffffffffffffffffffffffffffff8116810361046457815260243573ffffffffffffffffffffffffffffffffffffffff8116810361046457602082015260443562ffffff811681036104645760408201526064358060020b810361046457606082015260843573ffffffffffffffffffffffffffffffffffffffff8116810361046457608082015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610464576040516105ef81610849565b60a435801515810361046457815260c435602082015260e4359173ffffffffffffffffffffffffffffffffffffffff83168303610464576106e8826107349460405f9501526040805161064181610849565b33815260208101948552019081526106b16040519333602086015251604085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051151560e084015260208101516101008401526040015173ffffffffffffffffffffffffffffffffffffffff16610120830152565b61012081526106f961014082610881565b604051809381927f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906108e3565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561046f5761077c57005b3d805f833e61078b8183610881565b8101906020818303126104645780519067ffffffffffffffff8211610464570181601f8201121561046457805167ffffffffffffffff811161081c57604051926107fd601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185610881565b81845260208284010111610464575f928160208094018483015e010152005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761081c57604052565b60a0810190811067ffffffffffffffff82111761081c57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761081c57604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361046457565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610955575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90816020910312610464575180151581036104645790565b90816020910312610464575190565b90919073ffffffffffffffffffffffffffffffffffffffff1680610a4957505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af1801561046f57610a1e5750565b610a3f9060203d602011610a42575b610a378183610881565b81019061099a565b50565b503d610a2d565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561046457604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf1801561046f57610c19575b5073ffffffffffffffffffffffffffffffffffffffff1684308214610ba5576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af18015610b9a57916020918493610b6d575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115610b615750610a1e5750565b604051903d90823e3d90fd5b610b8c90833d8511610b93575b610b848183610881565b810190610982565b505f610b22565b503d610b7a565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af18015610b9a57916020918493610bfc575b50610b24565b610c1290833d8511610b9357610b848183610881565b505f610bf6565b610c269195505f90610881565b5f9373ffffffffffffffffffffffffffffffffffffffff610aae565b91929073ffffffffffffffffffffffffffffffffffffffff16803b15610464575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1801561046f57610cca5750565b5f610cd491610881565b56fea164736f6c634300081a000aa164736f6c634300081a000a","sourceMap":"1288:11985:114:-:0;;;;;;;;;-1:-1:-1;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6268:33;6277:20;1288:11985;;:::i;:::-;6277:20;:::i;:::-;6268:33;:::i;:::-;1288:11985;;6312:16;1288:11985;;6312:32;;;;;1288:11985;;;6312:32;1288:11985;;6312:32;;;;1288:11985;6312:32;;6336:7;1288:11985;6312:32;;1288:11985;6312:32;;;;;;;;1288:11985;;;;;;;;:::i;:::-;;;;6415:70;1288:11985;6415:70;;1288:11985;1590:14:0;1288:11985:114;6542:7;1590:14:0;1288:11985:114;;6496:55;;;;1288:11985;;;6496:55;;5847:4;1288:11985;6496:55;;1288:11985;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;;;;1590:14:0;;;1288:11985:114;;;1590:14:0;1288:11985:114;;;6496:55;;;;;;;;1288:11985;;;6658:59;1288:11985;357:173:108;1288:11985:114;;:::i;:::-;357:173:108;1288:11985:114;6591:10;1590:14:0;1288:11985:114;;;6566:81;1288:11985;;;6604:4;1590:14:0;;1288:11985:114;;;;1590:14:0;280:29:150;1288:11985:114;;;;6629:4;1288:11985;;;1590:14:0;6635:2:114;1288:11985;;;;6336:7;357:173:108;1288:11985:114;;;6566:81;1590:14:0;1288:11985:114;;;;;;;;;;:::i;:::-;1590:14:0;;;;;;1288:11985:114;1590:14:0;;;;1288:11985:114;;;6658:59;;;;;;1288:11985;6658:59;;1288:11985;6658:59;;;:::i;:::-;;;;;;;;;;;1288:11985;;;;6737:20;1288:11985;;:::i;6737:20::-;1288:11985;2349:24:1;;;;1288:11985:114;;2349:24:1;1288:11985:114;2349:24:1;;1288:11985:114;2349:24:1;;1288:11985:114;6336:7;6312:32;1288:11985;;;2349:24:1;;6312:16:114;2349:24:1;1288:11985:114;2349:24:1;;;;;;;;1288:11985:114;;2349:24:1;;;;;:::i;:::-;1288:11985:114;;2349:24:1;1288:11985:114;;;;2349:24:1;1288:11985:114;;;;;;;;;2349:24:1;1288:11985:114;;6658:59;;;;;;;;;;;;;:::i;:::-;;;1907:20:152;;;;;6658:59:114;;;1907:20:152;-1:-1:-1;1288:11985:114;;6658:59;;;;;;1288:11985;;;;;;;;;6496:55;;;;;:::i;:::-;1288:11985;;6496:55;;;;1288:11985;;;;6312:32;;;;;:::i;:::-;1288:11985;;6312:32;;;;1288:11985;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3033:19:11;11102:7:114;1288:11985;;;;11027:33;11036:20;1288:11985;;:::i;11027:33::-;3033:19:11;:::i;:::-;1590:14:0;11143:28:114;1288:11985;1590:14:0;1288:11985:114;;;;;;;;;:::i;:::-;;1590:14:0;;1288:11985:114;;;;;;;10418:54:11;;1288:11985:114;;10418:54:11;;;;;;;1288:11985:114;10418:54:11;;1288:11985:114;;;;;;:::i;:::-;;;;;;10418:54:11;;;;;;;;:::i;:::-;1288:11985:114;10003:159:11;779:42;10003:159;;;1288:11985:114;11143:28;;:::i;:::-;1288:11985;11204:28;1288:11985;;;11204:28;;:::i;:::-;1288:11985;11243:31;;;;1288:11985;;;;11243:31;;11253:20;;;1288:11985;11243:31;;1288:11985;11243:31;;1288:11985;11243:31;1288:11985;11243:31;;;;;;;;1288:11985;;;;;;;;;;11367:30;;;;;1288:11985;;;;;;11367:30;;;;1288:11985;11367:30;;;1288:11985;11367:30;;1288:11985;11367:30;;;;;;;;1288:11985;;;11417:13;1288:11985;;;11408:23;;;;1288:11985;;11408:23;1288:11985;11408:23;;1288:11985;11408:23;;1288:11985;11408:23;;1288:11985;11408:23;;1288:11985;11408:23;;;;;;;;1288:11985;1590:14:0;1288:11985:114;11441:7;1590:14:0;1288:11985:114;11441:40;;;;;1288:11985;;;11441:40;1288:11985;;11441:40;;;;1288:11985;11441:40;;1288:11985;;11441:40;;1288:11985;9429:3;1907:20:152;1288:11985:114;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;1288:11985:114;;;;;;;;;;11441:40;;;;;;;;1288:11985;;11802:54;1288:11985;;;;;;;:::i;:::-;;;;;11531:99;;2031:24:152;356:29:150;11531:99:114;;;1288:11985;;;;;;:::i;:::-;;;;11700:70;1288:11985;11700:70;;1288:11985;;11802:10;1590:14:0;1288:11985:114;1590:14:0;;1288:11985:114;;;;;;;;;;;:::i;:::-;1590:14:0;;;10418:54:11;1590:14:0;;1288:11985:114;1590:14:0;;;;1288:11985:114;;11802:54;;;;;;;1288:11985;11802:54;;1288:11985;11802:54;;;:::i;:::-;;;;;;;;;;;;;;1288:11985;1864:240:58;;;;;;2052:83:105;1288:11985:114;2052:83:105;11984:16:114;11102:7;11968:49;11984:16;1590:14:0;11984:16:114;;;:::i;:::-;1590:14:0;11968:49:114;:::i;:::-;2031:24:152;12037:10:114;;;12033:177;;1288:11985;1590:14:0;;;;1288:11985:114;11441:7;1590:14:0;1288:11985:114;;;;12257:9;1288:11985;;;;;12229:38;;;;1288:11985;12229:38;;1288:11985;12229:38;;1907:20:152;12229:38:114;;;;;;;;;;;;1288:11985;12269:19;;;;;:::i;:::-;1288:11985;;12229:38;;;;;;;;;;;;;;;:::i;:::-;;;1907:20:152;;;;12269:19:114;1907:20:152;;12229:38:114;;;;;;;;;1288:11985;;;;;;;;12033:177;12130:16;12114:49;1864:240:58;12063:31:114;1288:11985;1864:240:58;;11102:7:114;1864:240:58;;1590:14:0;1864:240:58;;;;;;1288:11985:114;12063:31;;:::i;:::-;12130:16;:::i;12114:49::-;1288:11985;12108:91;;12033:177;;;;;;;12108:91;1288:11985;;;;;;;;12108:91;;;1288:11985;;2042:49:64;;;;;1288:11985:114;2042:49:64;;11802:54:114;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1907:20:152;;;;;;;;1864:240:58;11802:54:114;;;;;;;;1288:11985;;;;;;;;;11441:40;;;;;;:::i;:::-;1288:11985;;11441:40;;;11408:23;;;;;:::i;:::-;1288:11985;;11408:23;;;;1288:11985;;;;11367:30;;;;;:::i;:::-;1288:11985;;11367:30;;;;11243:31;;;;;:::i;:::-;1288:11985;;11243:31;;;;1288:11985;;;;;;;;;;;;;;;;;;;;;;1016:26:12;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;7452:33;7461:20;1288:11985;;:::i;7452:33::-;1288:11985;;7496:16;1288:11985;;7496:31;;;;;1288:11985;;;7496:31;1288:11985;;7496:31;;;;1288:11985;7496:31;;7520:6;1288:11985;7496:31;;1288:11985;7496:31;;;;;;;;1288:11985;;;;;;;;:::i;:::-;7601:4;1288:11985;;7624:3;1288:11985;7577:87;;2031:24:152;356:29:150;1288:11985:114;7577:87;;1288:11985;;;;;;;:::i;:::-;;;;7734:70;1288:11985;7734:70;;1288:11985;1590:14:0;1288:11985:114;7861:7;1590:14:0;1288:11985:114;;7815:55;;;;1288:11985;;;7815:55;;5847:4;1288:11985;7815:55;;1288:11985;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;;;;1590:14:0;;;1288:11985:114;;;1590:14:0;1288:11985:114;;;7815:55;;;;;;;;1288:11985;;;7993:54;1288:11985;357:173:108;1288:11985:114;;:::i;:::-;357:173:108;1590:14:0;1288:11985:114;7910:10;1590:14:0;1288:11985:114;;;7885:97;1288:11985;;;7923:4;1590:14:0;;7624:3:114;1288:11985;;;1590:14:0;7934:29:114;1288:11985;;;;7965:4;2031:24:152;1288:11985:114;;1590:14:0;7971:2:114;1288:11985;;;;7520:6;357:173:108;1288:11985:114;;;7885:97;1590:14:0;1288:11985:114;;;;;;;;;;;:::i;:::-;1590:14:0;;;;;;1288:11985:114;1590:14:0;;;;1288:11985:114;;7993:54;;;;;;;1288:11985;7993:54;;1288:11985;7993:54;;;:::i;:::-;;;;;;;;;;;1288:11985;;8058:38;8067:20;1288:11985;;:::i;8067:20::-;8058:38;:::i;7993:54::-;;;;;;;;;;;;;:::i;:::-;;;1907:20:152;;;;;7993:54:114;;;;;;;;7815:55;;;;;:::i;:::-;1288:11985;;7815:55;;;;7496:31;;;;;:::i;:::-;1288:11985;;7496:31;;;;1288:11985;;;;;;;;;;;;;;;;;2723:18:5;1288:11985:114;;;;;;;2723:18:5;1288:11985:114;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3948:69;;;;1288:11985;;;;3948:69;;3964:52;1288:11985;3948:69;;1288:11985;3948:69;;;;;1288:11985;3948:69;;;;;;;;1288:11985;1590:14:0;1288:11985:114;4027:7;1590:14:0;1288:11985:114;4027:36;;;;;1288:11985;;;4027:36;1288:11985;;4027:36;;;;1288:11985;4027:36;;1288:11985;;4027:36;;1288:11985;9429:3;1907:20:152;1288:11985:114;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;1288:11985:114;4059:3;1288:11985;;;;4027:36;;;;;;;;1288:11985;;3948:69;;;;;:::i;:::-;1288:11985;;3948:69;;;;1288:11985;;;;;;;;;;;;1967:24:152;1288:11985:114;1967:24:152;12368:134:114;1288:11985;12405:9;1288:11985;;;12416:9;1288:11985;;;12427:18;1288:11985;;12368:134;;:::i;:::-;1967:24:152;;;;;1288:11985:114;;;1967:24:152;2518:158:114;1967:24:152;;;2518:158:114;1967:24:152;;;;;;;;;1288:11985:114;;;1967:24:152;;;;;;;;;;1288:11985:114;;1967:24:152;;;1288:11985:114;1967:24:152;;;;;;;;;;;;;;;;;;;;1288:11985:114;;1967:24:152;;;;;;;;;;;;;;;;;1288:11985:114;;;1967:24:152;;;;;;;;;12513:33:114;12522:20;1288:11985;;:::i;12513:33::-;1288:11985;;12427:18;1288:11985;;12556:47;;;;;1288:11985;;;12556:47;1288:11985;;12556:47;;;;1288:11985;12556:47;;1288:11985;;12556:47;;1288:11985;9429:3;1907:20:152;1288:11985:114;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;1288:11985:114;12599:3;1288:11985;;;;12556:47;;;;;;;;1288:11985;;;12613:35;12622:20;1288:11985;;:::i;12622:20::-;12613:35;:::i;:::-;1288:11985;;;;;:::i;:::-;;;;12719:70;1967:24:152;12719:70:114;;1288:11985;1590:14:0;1288:11985:114;12846:7;1590:14:0;1288:11985:114;;12800:55;;;;1288:11985;;;12800:55;;5847:4;1288:11985;12800:55;;1288:11985;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;;;;1590:14:0;;;1288:11985:114;;;1590:14:0;1288:11985:114;;;12800:55;;;;;;;;1288:11985;;;12974:59;1288:11985;;;:::i;:::-;357:173:108;1288:11985:114;12895:10;1590:14:0;1288:11985:114;;;12870:93;1288:11985;;12870:93;;;1590:14:0;5677:3:114;1590:14:0;;;;;5941:4:114;1590:14:0;;5947:2:114;1590:14:0;;;;5951:29:114;1590:14:0;;;1288:11985:114;5982:4;1590:14:0;;;;5988:2:114;1590:14:0;;;1288:11985:114;1590:14:0;1288:11985:114;1590:14:0;12870:93:114;;;;1590:14:0;1288:11985:114;;;;;;;;;;:::i;:::-;1590:14:0;;;;;;1288:11985:114;1590:14:0;;;;1288:11985:114;;;12974:59;;;;;;1288:11985;12974:59;;1288:11985;12974:59;;;:::i;:::-;;;;;;;;;;;1288:11985;;;;;13043:47;;;1288:11985;13043:47;;1288:11985;;;;;;;;;;;13043:47;;;;;1288:11985;13043:47;;;;;;;;1288:11985;;;13043:47;;;;;;-1:-1:-1;13043:47:114;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;1288:11985;;;13043:47;;;;;12974:59;;;;;;;;;;;;;;:::i;:::-;;;1907:20:152;;;;;12974:59:114;;;;;;;12800:55;;;;;:::i;:::-;1288:11985;;12800:55;;;;12556:47;;;;;:::i;:::-;1288:11985;;12556:47;;;;1288:11985;;;;;;;;;;;;1967:24:152;;4154:7:114;1967:24:152;;;4154:7:114;1967:24:152;1288:11985:114;;4192:16;1288:11985;;4192:28;;;;;1288:11985;;;4192:28;1288:11985;;4192:28;;;;1288:11985;4192:28;;4216:3;1288:11985;4192:28;;1288:11985;4192:28;;;;;;;;1288:11985;;;4192:16;1288:11985;;4324:345;1288:11985;;4508:76;4531:52;1288:11985;4508:76;;;1288:11985;4508:76;;;4192:28;4508:76;;:::i;:::-;4324:345;1288:11985;;4625:29;1288:11985;4602:53;;;1288:11985;4602:53;;;4192:28;4602:53;;:::i;:::-;1288:11985;;4324:345;;;4364:34;1288:11985;4324:345;;;4192:28;4324:345;;;:::i;:::-;;4508:76;4324:345;;;;;;:::i;:::-;1288:11985;4295:384;;;;1288:11985;;;;;4295:384;;;;1288:11985;4295:384;;1288:11985;;4295:384;;1288:11985;4192:28;1288:11985;;;;:::i;:::-;4295:384;;;1288:11985;4295:384;;;;;;;;1288:11985;1590:14:0;1288:11985:114;;4689:7;1590:14:0;1288:11985:114;4689:39;1288:11985;;4689:39;;;;1288:11985;4689:39;;1288:11985;;4689:39;;1288:11985;9429:3;1907:20:152;1288:11985:114;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;1288:11985:114;280:29:150;1288:11985:114;;;;4689:39;;;;;;;;1288:11985;;;4689:39;;;1288:11985;4689:39;1288:11985;4689:39;;;;;;;;:::i;:::-;;;;;:::i;:::-;;1288:11985;;4689:39;;;;;4295:384;;;;;:::i;:::-;1288:11985;;4295:384;;;;4192:28;;;;;:::i;:::-;1288:11985;;4192:28;;;;1288:11985;;;;;;;;;;;;;;;1862:10:64;1288:11985:114;;;;;;;;;;;;;;;10288:33;10297:20;1288:11985;;:::i;10288:33::-;1288:11985;;10332:16;1288:11985;;10332:28;;;;;1288:11985;;;10332:28;1288:11985;;10332:28;;;;1288:11985;10332:28;;10356:3;1288:11985;10332:28;;1288:11985;10332:28;;;;;;;;1288:11985;;;10380:13;1288:11985;;;10371:23;;;;1288:11985;;10371:23;1288:11985;10371:23;;1288:11985;10371:23;;1288:11985;10371:23;;10332:28;10371:23;;1288:11985;10371:23;;;;;;;;1288:11985;1590:14:0;1288:11985:114;10404:7;1590:14:0;1288:11985:114;10404:33;;;;;1288:11985;;;10404:33;1288:11985;;10404:33;;;;1288:11985;10404:33;;1288:11985;;10404:33;;1288:11985;9429:3;1907:20:152;1288:11985:114;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;1288:11985:114;10432:4;1288:11985;;;;10404:33;;;;;;;;1288:11985;;;;;;;;:::i;:::-;;;;10508:70;1288:11985;10508:70;;1288:11985;1590:14:0;1288:11985:114;10404:7;1590:14:0;1288:11985:114;;10589:55;;;;1288:11985;;;10589:55;;5847:4;1288:11985;10589:55;;1288:11985;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;;;;1590:14:0;;;1288:11985:114;;;1590:14:0;1288:11985:114;;;10589:55;;;;;;;;1288:11985;;;10764:59;1288:11985;;;;:::i;:::-;357:173:108;1288:11985:114;10684:10;1590:14:0;1288:11985:114;;;10659:94;1288:11985;;;10697:4;1590:14:0;;10703:2:114;1288:11985;;;1590:14:0;10707:29:114;1288:11985;;;;10738:4;1288:11985;;;1590:14:0;10744:2:114;1288:11985;;;;10748:4;1288:11985;;;;10659:94;1590:14:0;1288:11985:114;;;;;;;;;;:::i;10764:59::-;;;;;;;;;;;1288:11985;;10834:35;10843:20;1288:11985;;:::i;10764:59::-;;;;;;;;;;;;;:::i;:::-;;;1907:20:152;;;;;10764:59:114;;;;;;;;10589:55;;;;;:::i;:::-;1288:11985;;10589:55;;;;10404:33;;;;;:::i;:::-;1288:11985;;10404:33;;;;10371:23;;;;;:::i;:::-;1288:11985;;10371:23;;;;10332:28;;;;;:::i;:::-;1288:11985;;10332:28;;;;1288:11985;;;;;;;;;;;;8761:33;8770:20;1288:11985;;:::i;8761:33::-;1288:11985;;8805:16;1288:11985;;8805:31;;;;;1288:11985;;;8805:31;1288:11985;;8805:31;;;;1288:11985;8805:31;;8829:6;1288:11985;8805:31;;1288:11985;8805:31;;;;;;;;1288:11985;;;8856:13;1288:11985;;;8847:23;;;;1288:11985;;8847:23;1288:11985;8847:23;;1288:11985;8847:23;;1288:11985;8847:23;;8805:31;8847:23;;1288:11985;8847:23;;;;;;;;1288:11985;1590:14:0;1288:11985:114;8880:7;1590:14:0;1288:11985:114;8880:33;;;;;1288:11985;;;8880:33;1288:11985;;8880:33;;;;1288:11985;8880:33;;1288:11985;;8880:33;;1288:11985;9429:3;1907:20:152;1288:11985:114;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;1288:11985:114;8908:4;1288:11985;;;;8880:33;;;;;;;;1288:11985;;;;;;;;:::i;:::-;8987:4;1288:11985;;9010:3;1288:11985;8963:87;;2031:24:152;356:29:150;1288:11985:114;8963:87;;1288:11985;;;;;;:::i;:::-;;;;9120:70;1288:11985;9120:70;;1288:11985;;9201:52;;;;1288:11985;;;;9201:52;;9217:35;1288:11985;9201:52;;1288:11985;9201:52;;8805:31;9201:52;;1288:11985;9201:52;;;;;;;;1288:11985;1590:14:0;;9263:54:114;1590:14:0;1288:11985:114;9263:10;1590:14:0;1288:11985:114;1590:14:0;;1288:11985:114;;;;;;;;;;;:::i;:::-;1590:14:0;;;;;;1288:11985:114;1590:14:0;;;;1288:11985:114;;9263:54;;;;;;;1288:11985;9263:54;;1288:11985;9263:54;;;:::i;:::-;;;;;;;;;;;1288:11985;;;9201:52;;;;;:::i;:::-;1288:11985;;9201:52;;;;8880:33;;;;;:::i;:::-;1288:11985;;8880:33;;;;8847:23;;;;;:::i;:::-;1288:11985;;8847:23;;;;8805:31;;;;;:::i;:::-;1288:11985;;8805:31;;;;1288:11985;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2575:18:5;1288:11985:114;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2575:18:5;1288:11985:114;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;2711:128:152;1288:11985:114;;2711:128:152;1288:11985:114;;2711:128:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:18:5;1288:11985:114;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2876:18:5;1288:11985:114;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;2031:24:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;1967:24:152;;3706:15:114;1967:24:152;;;3706:15:114;1967:24:152;1288:11985:114;;3736:16;1288:11985;;3736:28;;;;;1288:11985;;;3736:28;1288:11985;;3736:28;;;;1288:11985;3736:28;;3760:3;1288:11985;3736:28;;1288:11985;3736:28;;;;;;;;1288:11985;1590:14:0;1288:11985:114;;3775:7;1590:14:0;1288:11985:114;3775:39;1288:11985;;3775:39;;;;1288:11985;3775:39;;1288:11985;;3775:39;;1288:11985;9429:3;1907:20:152;1288:11985:114;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;1288:11985:114;280:29:150;1288:11985:114;;;;3775:39;;;;;;;;1288:11985;;3824:35;3833:20;1288:11985;;:::i;3775:39::-;;;1288:11985;3775:39;1288:11985;3775:39;;;;;;;:::i;:::-;;;3736:28;;;;;:::i;:::-;1288:11985;;3736:28;;;;1288:11985;;;;;;;;;;;;8194:33;8203:20;1288:11985;;:::i;8194:33::-;1288:11985;;8238:16;1288:11985;;8238:32;;;;;1288:11985;;;8238:32;1288:11985;;8238:32;;;;1288:11985;8238:32;;8262:7;1288:11985;8238:32;;1288:11985;8238:32;;;;;;;;1288:11985;;;;;;;:::i;:::-;;;;;;;;;;;;;;3385:18;1288:11985;;1967:24:152;;3373:9:114;1967:24:152;;;3373:9:114;1967:24:152;3483:34:114;;;;;1288:11985;;;3483:34;1288:11985;;3483:34;;;;1288:11985;3483:34;;3509:7;1288:11985;3483:34;;1288:11985;3483:34;;;;;;;;1288:11985;1590:14:0;1288:11985:114;;3528:7;1590:14:0;1288:11985:114;3528:39;1288:11985;;3528:39;;;;1288:11985;3528:39;;1288:11985;;3528:39;;1288:11985;9429:3;1907:20:152;1288:11985:114;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;1288:11985:114;280:29:150;1288:11985:114;;;;3528:39;;;;;;;;1288:11985;;3577:33;3586:20;1288:11985;;:::i;3528:39::-;;;1288:11985;3528:39;1288:11985;3528:39;;;;;;;:::i;:::-;;;3483:34;;;;;:::i;:::-;1288:11985;;3483:34;;;;1288:11985;;;;;;;;;;;;1967:24:152;;2778:15:114;1967:24:152;;;2778:15:114;1967:24:152;1288:11985:114;;2838:16;1288:11985;;2838:28;;;;;1288:11985;;;2838:28;1288:11985;;2838:28;;;;1288:11985;2838:28;;2821:7;1288:11985;2838:28;;1288:11985;2838:28;;;;;;;;1288:11985;;;2838:16;1288:11985;;2906:333;1288:11985;;3090:64;3113:35;1288:11985;3090:64;;;2821:7;2838:28;3090:64;;1288:11985;2838:28;3090:64;;;2838:16;3090:64;;:::i;2838:28::-;;;;;:::i;:::-;1288:11985;;2838:28;;;;1288:11985;;;;;;;;;;;;2405:143:152;1288:11985:114;;2405:143:152;1288:11985:114;2405:143:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3653:18:5;1288:11985:114;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;3653:18:5;1288:11985:114;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;2031:24:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;3162:18:5;1288:11985:114;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;3162:18:5;1288:11985:114;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3346:26:5;1288:11985:114;;;;:::i;:::-;;;;;;;:::i;:::-;;;;3346:26:5;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;2031:24:152;;1288:11985:114;;;;;:::i;:::-;;;;2031:24:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;4825:33;4834:20;1288:11985;;:::i;4825:33::-;1288:11985;;4899:16;1288:11985;;4899:32;;;;;1288:11985;;;4899:32;1288:11985;;4899:32;;;;1288:11985;4899:32;;4882:7;1288:11985;4899:32;;1288:11985;4899:32;;;;;;;;1288:11985;;;;;;;;:::i;:::-;;;;5002:70;1288:11985;5002:70;;1288:11985;;;4899:16;1288:11985;;5112:328;1288:11985;;5291:64;5314:35;1288:11985;5291:64;;;4882:7;4899:32;5291:64;;1288:11985;4899:32;5291:64;;;4899:16;5291:64;;:::i;:::-;1288:11985;;;5396:29;1288:11985;5373:53;;;1288:11985;5373:53;;;4899:32;5373:53;;:::i;:::-;1288:11985;;;5112:328;;;5152:34;1288:11985;5112:328;;;4899:32;5112:328;;1288:11985;5247:26;4899:16;1288:11985;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;5112:328::-;1288:11985;5083:367;;;;1288:11985;;;;;5083:367;;;;1288:11985;5083:367;;1288:11985;;5083:367;;1288:11985;4899:32;1288:11985;;;;:::i;:::-;5083:367;;;1288:11985;5083:367;;;;;;;;1288:11985;1590:14:0;;5461:59:114;1288:11985;5461:10;1590:14:0;1288:11985:114;1590:14:0;1288:11985:114;;;;;;;;;;:::i;5083:367::-;;;;;:::i;:::-;1288:11985;;5083:367;;;;4899:32;;;;;:::i;:::-;1288:11985;;4899:32;;;;1288:11985;;;;;;;;;;;;;;;2042:49:64;1288:11985:114;;;;;;;;;;;;;;;6853:33;6862:20;1288:11985;;:::i;6853:33::-;1288:11985;;6897:16;1288:11985;;6897:31;;;;;1288:11985;;;6897:31;1288:11985;;6897:31;;;;1288:11985;6897:31;;6921:6;1288:11985;6897:31;;1288:11985;6897:31;;;;;;;;1288:11985;;;;;;;;:::i;:::-;;;;6999:70;1288:11985;6999:70;;1288:11985;1590:14:0;1288:11985:114;7126:7;1590:14:0;1288:11985:114;;7080:55;;;;1288:11985;;;7080:55;;5847:4;1288:11985;7080:55;;1288:11985;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;;;;1590:14:0;;;1288:11985:114;;;1590:14:0;1288:11985:114;;;7080:55;;;;;;;;1288:11985;;;7257:59;1288:11985;357:173:108;1288:11985:114;;:::i;:::-;357:173:108;1288:11985:114;7175:10;1590:14:0;1288:11985:114;;;7150:96;1288:11985;;;7188:4;1590:14:0;;7194:2:114;1288:11985;;;1590:14:0;7198:29:114;1288:11985;;;;7229:4;1288:11985;;;1590:14:0;7235:2:114;1288:11985;;;;6921:6;357:173:108;1288:11985:114;;;7150:96;1590:14:0;1288:11985:114;;;;;;;;;;:::i;7080:55::-;;;;;:::i;:::-;1288:11985;;7080:55;;;;6897:31;;;;;:::i;:::-;1288:11985;;6897:31;;;;1288:11985;;;;;;;;;;;;;;;;;3501:18:5;1288:11985:114;;;;;;;3501:18:5;1288:11985:114;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3794:16:5;1288:11985:114;;;;;;;3794:16:5;1288:11985:114;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:151:152;1288:11985:114;2554:151:152;1288:11985:114;2554:151:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3948:19:5;1288:11985:114;;;;:::i;:::-;;;;;;;:::i;:::-;;;;3948:19:5;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:24:152;1288:11985:114;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;9404:33;9413:20;1288:11985;;:::i;9404:33::-;1288:11985;;9448:16;1288:11985;;9448:32;;;;;1288:11985;;;9448:32;1288:11985;;9448:32;;;;1288:11985;9448:32;;9472:7;1288:11985;9448:32;;1288:11985;9448:32;;;;;;;;1288:11985;;;9500:13;1288:11985;;;9491:23;;;;1288:11985;;9491:23;1288:11985;9491:23;;1288:11985;9491:23;;1288:11985;9491:23;;9448:32;9491:23;;1288:11985;9491:23;;;;;;;;1288:11985;1590:14:0;1288:11985:114;9524:7;1590:14:0;1288:11985:114;9524:33;;;;;1288:11985;;;9524:33;1288:11985;;9524:33;;;;1288:11985;9524:33;;1288:11985;;9524:33;;1288:11985;9429:3;1907:20:152;1288:11985:114;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;1288:11985:114;9552:4;1288:11985;;;;9524:33;;;;;;;;1288:11985;;;;;;;;:::i;:::-;9631:4;1288:11985;;;9607:89;;9654:5;2031:24:152;;356:29:150;1288:11985:114;9607:89;;1288:11985;;;;;;:::i;:::-;;;;9766:70;1288:11985;9766:70;;1288:11985;1590:14:0;1288:11985:114;9524:7;1590:14:0;1288:11985:114;;9847:55;;;;1288:11985;;;9847:55;;5847:4;1288:11985;9847:55;;1288:11985;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;;;;1590:14:0;;;1288:11985:114;;;1590:14:0;1288:11985:114;;;9847:55;;;;;;;;1288:11985;;;10010:54;1288:11985;;;;:::i;:::-;357:173:108;1590:14:0;1288:11985:114;9942:10;1590:14:0;1288:11985:114;;;9917:82;1288:11985;;;9654:5;1590:14:0;;2031:24:152;1288:11985:114;2031:24:152;;1590:14:0;280:29:150;1288:11985:114;2031:24:152;;1288:11985:114;9981:4;2031:24:152;;;1590:14:0;9987:2:114;2031:24:152;;;1288:11985:114;9472:7;1288:11985;2031:24:152;;1288:11985:114;9917:82;1590:14:0;1288:11985:114;;;;;;;;;;;:::i;10010:54::-;;;;;;;;;;;1288:11985;2031:24:152;;;;;;;;;;;9552:4:114;2031:24:152;;;;;9552:4:114;2031:24:152;;;;;;;1288:11985:114;9524:7;1590:14:0;1288:11985:114;;;10197:9;1288:11985;;9448:32;1288:11985;;10169:38;;;;1288:11985;10169:38;;1288:11985;10169:38;;1907:20:152;10169:38:114;;;;;;;;;;;1288:11985;2031:24:152;10209:19:114;9472:7;2031:24:152;;;10209:19:114;:::i;10169:38::-;;;;;;;;;;;;;;;;:::i;:::-;;;1907:20:152;;;;9472:7:114;10209:19;1907:20:152;;10169:38:114;;;;;;;;;1288:11985;;;;;;;;;2031:24:152;9448:32:114;2042:49:64;;;;;1288:11985:114;2042:49:64;;10010:54:114;;;;;;;;;;;;;;:::i;:::-;;;1907:20:152;;;;;10010:54:114;;;;;;;9847:55;;;;;:::i;:::-;1288:11985;;9847:55;;;;9524:33;;;;;:::i;:::-;1288:11985;;9524:33;;;;9491:23;;;;;:::i;:::-;1288:11985;;9491:23;;;;9448:32;;;;;:::i;:::-;1288:11985;;9448:32;;;;1288:11985;;;;;;;;;;;;;;;;;3018:16:5;1288:11985:114;;;;;;;3018:16:5;1288:11985:114;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2146:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1288:11985;;2197:16;1288:11985;;;;2216:18;;;;:::i;:::-;2181:54;1288:11985;2181:54;;;;;1288:11985;;;;;2181:54;;;;;1288:11985;2181:54;;1288:11985;2181:54;;;:::i;:::-;;;;1288:11985;2181:54;;;;;;;;;;;1288:11985;;;2282:18;1288:11985;2261:18;1288:11985;;2282:18;;:::i;:::-;2245:56;1288:11985;2245:56;;;;;1288:11985;;;;;2245:56;;;;;1288:11985;2245:56;;1288:11985;2245:56;;;:::i;:::-;;;;1288:11985;2245:56;;;;;;;;1288:11985;;;;;3906:30:152;;;;;;;;2146:25:114;3906:30:152;;;;;1288:11985:114;3906:30:152;;;;;;3930:4;1288:11985:114;;3906:30:152;;;;;;;;;1288:11985:114;;1967:24:152;;3896:40;1967:24;;;3896:40;1967:24;1288:11985:114;;4051:25:152;;;;;;;;;;2146::114;4051::152;;;;;;;;1288:11985:114;4051:25:152;;;;1907:20;;4051:25;;;;;;;;;1288:11985:114;;1967:24:152;4038:38;1967:24;;;4038:38;1967:24;1288:11985:114;3896:40:152;1590:14:0;1288:11985:114;;;4107:31:152;;;;;;;;;;2146:25:114;4107:31:152;;;;;;;;1288:11985:114;4107:31:152;;;;1907:20;;4107:31;;;;;;;;;1288:11985:114;;1967:24:152;4086:52;1967:24;;;4086:52;1967:24;1288:11985:114;3896:40:152;1590:14:0;1288:11985:114;;;4172:36:152;;;;;;;;;;2146:25:114;4172:36:152;;;;;;;;1288:11985:114;4172:36:152;;;;1907:20;;4172:36;;;;;;;;;1288:11985:114;;1967:24:152;4148:60;1967:24;;;4148:60;1967:24;1288:11985:114;3896:40:152;1590:14:0;1288:11985:114;;;4244:44:152;;;;;;;;;;2146:25:114;4244:44:152;;;;;;;;1288:11985:114;4244:44:152;;;;1907:20;;4244:44;;;;;;;;;1288:11985:114;;1967:24:152;4218:70;1967:24;;;4218:70;1967:24;1288:11985:114;3896:40:152;1590:14:0;1288:11985:114;;;4313:27:152;;;;;;;;;;2146:25:114;4313:27:152;;;;;;;;1288:11985:114;4313:27:152;;;;1907:20;;4313:27;;;;;;;;;1288:11985:114;;1967:24:152;4298:42;1967:24;;;4298:42;1967:24;1288:11985:114;3896:40:152;1590:14:0;1288:11985:114;;;4363:25:152;;;;;;;;;;2146::114;4363::152;;;;;;;;1288:11985:114;4363:25:152;;;;1907:20;;4363:25;;;;;;;;;1288:11985:114;;1967:24:152;4350:38;1967:24;;;4350:38;1967:24;1288:11985:114;3896:40:152;1590:14:0;1288:11985:114;;;4413:27:152;;;;;;;;;;2146:25:114;4413:27:152;;;;;;;;1288:11985:114;4413:27:152;;;;1907:20;;4413:27;;;;;;;;;1288:11985:114;;1967:24:152;4398:42;1967:24;;;4398:42;1967:24;1288:11985:114;3896:40:152;1590:14:0;1288:11985:114;;;4471:34:152;;;;;;;;;;2146:25:114;4471:34:152;;;;;;;;1288:11985:114;4471:34:152;;;;1907:20;;4471:34;;;;;;;;;1288:11985:114;;1967:24:152;4450:55;1967:24;;;4450:55;1967:24;1288:11985:114;;;;;;;:::i;:::-;;1590:14:0;;1288:11985:114;;;;;;;;;;;20318:22:3;;1288:11985:114;;;;4218:70:152;1288:11985:114;;;;20318:22:3;;;4218:70:152;20318:22:3;;:::i;:::-;1288:11985:114;20308:33:3;;1288:11985:114;;20359:19:3;1288:11985:114;20359:19:3;;1288:11985:114;20359:19:3;;1288:11985:114;;20359:19:3;;;1288:11985:114;20359:19:3;;;;;;;;;;;1288:11985:114;20388:20:3;1288:11985:114;20388:20:3;;;;1288:11985:114;;291:59:3;1288:11985:114;;;20388:20:3;;;;;1288:11985:114;20388:20:3;;1288:11985:114;20388:20:3;;1288:11985:114;20388:20:3;;1288:11985:114;291:59:3;20359:19;291:59;;;2197:16:114;291:59:3;;;;:::i;:::-;20388:20;;;1288:11985:114;20388:20:3;;;;;;;;1288:11985:114;1967:24:152;;;4515:41;1967:24;;;4515:41;1967:24;1288:11985:114;3896:40:152;1590:14:0;1288:11985:114;;;4582:26:152;;;;;;;;;;2146:25:114;4582:26:152;;;;;;;;1288:11985:114;4582:26:152;;;;1907:20;;4582:26;;;;;;;;;1288:11985:114;;1967:24:152;4566:42;1967:24;;;4566:42;1967:24;1590:14:0;1288:11985:114;3896:40:152;1590:14:0;1288:11985:114;;4515:41:152;1288:11985:114;;4619:47:152;;;;;1288:11985:114;;20359:19:3;1288:11985:114;;;;4619:47:152;;;;;1288:11985:114;4619:47:152;;1288:11985:114;4619:47:152;;1288:11985:114;4619:47:152;;;;;;;;1288:11985:114;;;2197:16;1288:11985;;;3896:40:152;1590:14:0;1288:11985:114;2352:50;;;;;1288:11985;;20359:19:3;1288:11985:114;;;;2352:50;;;;;1288:11985;2352:50;;1288:11985;2352:50;;1907:20:152;2352:50:114;;;;;;;;1288:11985;;;2261:18;1288:11985;;;3896:40:152;1590:14:0;1288:11985:114;2412:52;;;;;1288:11985;;20359:19:3;1288:11985:114;;;;2412:52;;;;;1288:11985;2412:52;;1288:11985;2412:52;;1907:20:152;2412:52:114;;;;;;;;1288:11985;4966:30:152;;1288:11985:114;1967:24:152;;4966:30;1967:24;1288:11985:114;2527:149;4966:30:152;;:::i;:::-;5028;;;;:::i;:::-;1288:11985:114;;;;373:33:157;;;1288:11985:114;;;422:91:157;;;369:277;1288:11985:114;1967:24:152;;;5069:132;1967:24;;;5069:132;1967:24;1288:11985:114;1967:24:152;;;5069:132;1967:24;;;5069:132;1967:24;1288:11985:114;2197:16;1288:11985;;2527:149;;:::i;:::-;1967:24:152;;;;;;1288:11985:114;;;1967:24:152;2518:158:114;1967:24:152;;;2518:158:114;1967:24:152;;;;;1288:11985:114;1967:24:152;;;1288:11985:114;;;1967:24:152;;;;;;;;;;;;1288:11985:114;1967:24:152;;;;;;;;;;;;;;369:277:157;544:91;;;;369:277;;2412:52:114;;;;;:::i;:::-;1288:11985;;2412:52;;;;;1288:11985;;;;;;;;;;;;2352:50;;;;;:::i;:::-;1288:11985;;2352:50;;;;4619:47:152;;;;;:::i;:::-;1288:11985:114;;4619:47:152;;;;4582:26;1288:11985:114;;;;;;;;;;4582:26:152;20359:19:3;1288:11985:114;;;;;;;;20388:20:3;;;;;:::i;:::-;1288:11985:114;;20388:20:3;;;;;1288:11985:114;;;;;;;;;20359:19:3;;;1288:11985:114;20359:19:3;;1288:11985:114;20359:19:3;;;;;;1288:11985:114;20359:19:3;;;:::i;:::-;;;291:59;;;;;1288:11985:114;;;;;;;20359:19:3;;;;;;-1:-1:-1;20359:19:3;;4471:34:152;1288:11985:114;;;;;;;;;;;4471:34:152;1288:11985:114;;;;;;;;;3906:30:152;1288:11985:114;;;;;;;;;2245:56;;;;;:::i;:::-;1288:11985;;2245:56;;;;;1288:11985;;;2181:54;;;;;:::i;:::-;1288:11985;;2181:54;;;;;1288:11985;;;;2146:25;1288:11985;;;;;;;;;;;;;;;;;;;;;5609:33;5618:20;1288:11985;;:::i;5609:33::-;1288:11985;5653:16;1288:11985;;5653:28;;;;;1288:11985;;;5653:28;1288:11985;;5653:28;;;;1288:11985;5653:28;;5677:3;1288:11985;5653:28;;1288:11985;5653:28;;;;;;;;1288:11985;;;;;;;:::i;:::-;;;;5752:70;1288:11985;5752:70;;1288:11985;1590:14:0;1288:11985:114;5879:7;1590:14:0;1288:11985:114;;5833:55;;;;1288:11985;;;5833:55;;5847:4;1288:11985;5833:55;;1288:11985;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;1590:14:0;;;1288:11985:114;;;;;;1590:14:0;;;1288:11985:114;;;1590:14:0;1288:11985:114;;;5833:55;;;;;;;;1288:11985;;;6007:59;357:173:108;1288:11985:114;;:::i;6007:59::-;;;;;;;;;;;1288:11985;;;;6076:59;1288:11985;6076:59;;;1288:11985;6076:59;;1907:20:152;;5653:28:114;1907:20:152;;1288:11985:114;1907:20:152;5653:16:114;1288:11985;;1907:20:152;;;;;;6076:59:114;;;;;1288:11985;6076:59;;;;;;;;1288:11985;6146:35;6155:20;1288:11985;;:::i;6007:59::-;;;;;;;;;;;;;;:::i;:::-;;;1907:20:152;;;;;6007:59:114;;;;;;;5833:55;;;;;:::i;:::-;1288:11985;;5833:55;;;;5653:28;;;;1288:11985;5653:28;;:::i;:::-;1288:11985;5653:28;;;;1288:11985;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1288:11985:114;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1288:11985:114;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;1288:11985:114;;;;;-1:-1:-1;1288:11985:114;;2031:24:152;1288:11985:114;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;5634:3;1288:11985;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1907:20:152:-;;;;;;;;;;;:::o;:::-;5634:3:114;1907:20:152;1288:11985:114;;;;1907:20:152;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;;;;;;;;;6028:11:114;1907:20:152;1288:11985:114;;;;1907:20:152;;;1288:11985:114;1907:20:152;;;;;1288:11985:114;1907:20:152;;1288:11985:114;;1907:20:152;;;1288:11985:114;1907:20:152;;1288:11985:114;;1907:20:152;;;1288:11985:114;1907:20:152;;;1288:11985:114;;1907:20:152;;;1288:11985:114;1907:20:152;;;;;;;;;;:::i;:::-;;:::o;1288:11985:114:-;;;;1590:14:0;;;;;-1:-1:-1;1590:14:0;1288:11985:114;;;;;1590:14:0;1288:11985:114;;;;;;;:::i;:::-;1590:14:0;;;;1288:11985:114;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;2031:24:152:-;;;;;1288:11985:114;2031:24:152;;;;;9429:3:114;1288:11985;;1907:20:152;;;;;1288:11985:114;1907:20:152;;;;;;1288:11985:114;;;1907:20:152;;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;;;;;1907:20:152;;;1288:11985:114;1907:20:152;;1288:11985:114;1907:20:152;;;;2031:24;;;1288:11985:114;;2031:24:152;;;1288:11985:114;2031:24:152;;;;;;;1288:11985:114;2031:24:152;;1288:11985:114;2031:24:152;;;1288:11985:114;2031:24:152;;;;1907:20;;;;;1288:11985:114;;;;1907:20:152;;1288:11985:114;;1907:20:152;;1288:11985:114;1907:20:152;2031:24;;;;;;;;;;;;;;;;:::o;:::-;2042:49:64;;;;;;;;;1288:11985:114;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;1288:11985:114;;;;;-1:-1:-1;1288:11985:114;;-1:-1:-1;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1288:11985:114;;;;;-1:-1:-1;1288:11985:114;;;;;;;;;;;;;;;;;;;3041:31;1288:11985;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;1288:11985:114;;-1:-1:-1;1288:11985:114;;-1:-1:-1;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1243:204:1:-;1302:7;1288:11985:114;;;;;;;1325:14:1;:::o;1298:143::-;1288:11985:114;;;;1377:39:1;;1288:11985:114;1377:39:1;;;1288:11985:114;192:59:1;;;;1288:11985:114;192:59:1;1377:39;;;1288:11985:114;1377:39:1;;;;;;;1288:11985:114;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1907:20:152;1377:39:1;;;:::i;:::-;;;1907:20:152;;;;;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;1288:11985:114;1590:14:0;;1288:11985:114;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;2031:24:152;;;;;;;;;13103:168:114;357:173:108;13103:168:114;357:173:108;14953:51:61;1288:11985:114;13244:7;1590:14:0;1288:11985:114;;;;14953:51:61;;;1288:11985:114;;;414:1:61;1288:11985:114;398:19:61;;1288:11985:114;;14953:51:61;;;;;;:::i;:::-;1288:11985:114;14943:62:61;;1892:27;1288:11985:114;;1892:27:61;;;;1288:11985:114;1892:27:61;;;;;1288:11985:114;1892:27:61;;;;;;-1:-1:-1;1892:27:61;;;13103:168:114;2147:423:61;;;;;;13103:168:114;:::o;1892:27:61:-;;14953:51;1892:27;;14953:51;1892:27;;;;;;1907:20:152;1892:27:61;;;:::i;:::-;;;1907:20:152;;;;2147:423:61;1907:20:152;;1892:27:61;;;;;-1:-1:-1;1892:27:61;;2270:110:1;1288:11985:114;2349:24:1;;;;1288:11985:114;;2349:24:1;1288:11985:114;2349:24:1;;;;;1288:11985:114;;;;;;;2349:24:1;;;1288:11985:114;2349:24:1;;;;;;;;2270:110;:::o;2349:24::-;1288:11985:114;2349:24:1;;;:::i;2270:110::-;1288:11985:114;2349:24:1;;;;1288:11985:114;;2349:24:1;1288:11985:114;2349:24:1;;;;;1288:11985:114;5677:3;1288:11985;;;;-1:-1:-1;2349:24:1;;;1288:11985:114;2349:24:1;;;;;;;;2270:110;:::o;:::-;1288:11985:114;2349:24:1;;;;1288:11985:114;;2349:24:1;1288:11985:114;2349:24:1;;;;;1288:11985:114;6921:6;1288:11985;;;;-1:-1:-1;2349:24:1;;;1288:11985:114;2349:24:1;;;;;;;;2270:110;:::o;:::-;;1288:11985:114;2349:24:1;;;;1288:11985:114;;2349:24:1;1288:11985:114;2349:24:1;;;;;1288:11985:114;;;;;-1:-1:-1;2349:24:1;;;1288:11985:114;2349:24:1;;;;;;;;2270:110;:::o;1288:11985:114:-;;;;;;;:::i;:::-;-1:-1:-1;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;:::o;7283:408:152:-;;;1288:11985:114;7283:408:152;;1288:11985:114;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;6707:98:152;;;1288:11985:114;;;6707:98:152;;1288:11985:114;6771:2:152;6707:98;;;1288:11985:114;;6707:98:152;;;1288:11985:114;;357:173:108;;-1:-1:-1;6707:98:152;1288:11985:114;6841:7:152;1590:14:0;1288:11985:114;6841:38:152;1288:11985:114;;6841:38:152;;;;1288:11985:114;6841:38:152;;1288:11985:114;6841:38:152;;;1288:11985:114;;;;;;;;;1907:20:152;;1288:11985:114;;;;;;;;;1907:20:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;1907:20:152;1288:11985:114;;;;;;;6841:38:152;;;;;;;;7283:408;7512:71;;;1288:11985:114;;7593:21:152;1288:11985:114;;1590:14:0;1288:11985:114;;;;;;;;;;;:::i;:::-;-1:-1:-1;1590:14:0;;;;;;;;;;1288:11985:114;;7593:91:152;;;;;;;1288:11985:114;7593:91:152;;6841:38;7593:91;;1288:11985:114;;;;;;;;;1907:20:152;;1288:11985:114;;;;;;;;;1907:20:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;1907:20:152;1288:11985:114;;;;;;;;;;;;;;;6841:38:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7593:91:152;7638:9;;7593:91;;;;;;;;;7283:408;;:::o;7593:91::-;;;;;;-1:-1:-1;7593:91:152;;;;;;:::i;:::-;;7283:408::o;6841:38::-;;;6707:98;6841:38;6707:98;6841:38;;;;;;;:::i;:::-;;;;;2915:199:11;11166:4:114;1288:11985;3033:19:11;2915:199;3033:19;:::i;:::-;1590:14:0;1288:11985:114;;1590:14:0;1288:11985:114;;1590:14:0;1288:11985:114;;:::i;:::-;;1590:14:0;;1288:11985:114;;;;;1590:14:0;1288:11985:114;10418:54:11;;1288:11985:114;;10418:54:11;;;;;;1590:14:0;10418:54:11;;;1288:11985:114;;;;;;:::i;:::-;;;;;;10418:54:11;;;;;;;;:::i;:::-;1288:11985:114;10003:159:11;779:42;10003:159;;;2915:199::o;1288:11985:114:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;5253:725:152;1590:14:0;1288:11985:114;;;;;;:::i;:::-;5371:1:152;1288:11985:114;;;;;;;;;1590:14:0;;;6400:33:152;;-1:-1:-1;6369:3:152;1288:11985:114;;;5371:1:152;6358:9;;;;;1288:11985:114;;6400:33:152;;;;;;;;;;;;;;;;;;1288:11985:114;;;;;;;;;;;;;;6430:2:152;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6400:33:152;;-1:-1:-1;6400:33:152;;;;;6388:45;6447:9;6388:45;1288:11985:114;6388:45:152;;;;;:::i;:::-;1288:11985:114;;;;6447:9:152;;:::i;:::-;1288:11985:114;;6447:42:152;;;;;-1:-1:-1;1288:11985:114;;6447:42:152;1288:11985:114;;6447:42:152;;;;1288:11985:114;6447:42:152;;6470:4;6447:42;;;1288:11985:114;5374:8:152;1219:17:150;;;1288:11985:114;6447:42:152;;;;;;;5371:1;6447:42;1288:11985:114;6447:42:152;;;6369:3;;1288:11985:114;;6345:11:152;;6447:42;-1:-1:-1;6447:42:152;;;:::i;:::-;;;;;1288:11985:114;;;-1:-1:-1;1288:11985:114;;;;;6358:9:152;;;;;1288:11985:114;;;;;;;;;;;;;;;;;;6400:33:152;1288:11985:114;;;;;;;;5449:10:152;1590:14:0;1288:11985:114;;;;5482:18:152;1288:11985:114;;;5427:365:152;;1288:11985:114;;5523:21:152;1288:11985:114;;5427:365:152;;;1288:11985:114;;5567:23:152;1288:11985:114;;;5427:365:152;;1288:11985:114;;5613:12:152;1288:11985:114;;5427:365:152;;;1288:11985:114;;5648:10:152;1288:11985:114;;5427:365:152;;;1288:11985:114;;5681:12:152;1288:11985:114;;5427:365:152;;;1288:11985:114;6447:42:152;1288:11985:114;;5716:18:152;1288:11985:114;;;;5716:29:152;;;;1288:11985:114;5716:29:152;;;;;;;;-1:-1:-1;5716:29:152;;;6340:160;1288:11985:114;;;;;5427:365:152;;1288:11985:114;;5768:13:152;1288:11985:114;;5427:365:152;;;1288:11985:114;-1:-1:-1;5845:3:152;5427:365;5823:20;;;;;1288:11985:114;;;;;;1967:24:152;1288:11985:114;;;5864:50:152;1288:11985:114;5864:50:152;;6447:42;5864:50;;1288:11985:114;1219:17:150;;;;1288:11985:114;;5864:50:152;;;-1:-1:-1;5864:50:152;;;;;;;;;5845:3;;5371:1;1288:11985:114;5808:13:152;;5864:50;1288:11985:114;5864:50:152;;;;;;;;;1288:11985:114;5864:50:152;;;:::i;:::-;;;1219:17:150;;;;;1288:11985:114;;;1219:17:150;;;5864:50:152;;;;;;-1:-1:-1;5864:50:152;;;1288:11985:114;;;-1:-1:-1;1288:11985:114;;;;;5823:20:152;;;;;5253:725;:::o;5716:29::-;;1288:11985:114;5716:29:152;;1288:11985:114;5716:29:152;;;;;;1288:11985:114;5716:29:152;;;:::i;:::-;;;1288:11985:114;;;;;;;;;;;;;5716:29:152;;;;;;-1:-1:-1;5716:29:152;;;1288:11985:114;;;-1:-1:-1;1288:11985:114;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;1646:1263:11:-;1288:11985:114;1764:10:11;;;;1288:11985:114;;2070:8:11;;;;;;:20;;;1646:1263;2066:34;;2126:9;;;;:::i;:::-;1288:11985:114;2138:1:11;1288:11985:114;;;;;;;2334:1:11;2329:6;;;:18;;;1646:1263;2325:38;;1288:11985:114;2377:20:11;;;:46;;;1646:1263;2373:82;;2555:7;;;;;;2593;;;;;2628:11;2593:7;;:::i;:::-;2628:11;:::i;:::-;2657:8;;;2653:24;;2700:9;;;;:::i;:::-;1142:78;1288:11985:114;;;;;;;2551:352:11;1646:1263::o;2653:24::-;2667:10;;;:::o;2551:352::-;2730:173;;;;;;;;2551:352;;;;;1646:1263::o;2730:173::-;2772:7;;;;;;2807:11;2772:7;;;:::i;2807:11::-;2836:8;;;2832:24;;2879:9;;;;:::i;:::-;2138:1;1288:11985:114;;;;;;;2730:173:11;;;;;;;2373:82;1288:11985:114;;;;2432:23:11;1288:11985:114;;;;2432:23:11;;:::i;2377:46::-;1288:11985:114;;;2401:22:11;;2377:46;;2325:38;2356:7;;;;;;;;;:::i;2329:18::-;2339:8;;;;2329:18;;2066:34;2092:8;;;;;;:::o;2070:20::-;2082:8;;;;;2070:20;;1288:11985:114;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","LIQUIDITY_PARAMS()":"93ad73ed","MAX_PRICE_LIMIT()":"542524dd","MIN_PRICE_LIMIT()":"c7b8e15d","REMOVE_LIQUIDITY_PARAMS()":"39cd2013","SWAP_PARAMS()":"b1a73b8a","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_emitsSwapFee()":"c41facb8","test_fuzz_ProtocolAndLPFee(uint24,uint16,uint16,int256)":"fd02f058","test_initialize_initializesFeeTo0()":"98e8385f","test_swap_100PercentFee_AmountIn_WithProtocol()":"251216be","test_swap_100PercentLPFee_AmountIn_NoProtocol()":"fd3699c2","test_swap_50PercentLPFee_AmountIn_NoProtocol()":"516571ff","test_swap_50PercentLPFee_AmountOut_NoProtocol()":"ea9b6b4a","test_swap_99PercentFee_AmountOut_WithProtocol()":"beb5106f","test_swap_revertsWith_InvalidFeeForExactOut_whenFeeIsMax()":"9b3c5128","test_swap_withDynamicFee_gas()":"cfa06615","test_updateDynamicLPFee_afterInitialize_failsWithTooLargeFee()":"979acc2f","test_updateDynamicLPFee_afterInitialize_initializesFee()":"ab89e60e","test_updateDynamicLPFee_beforeSwap_failsWithTooLargeFee()":"54e0583c","test_updateDynamicLPFee_beforeSwap_succeeds_gas()":"062d99c5","test_updateDynamicLPFee_revertsIfCallerIsntHook()":"d82478f0","test_updateDynamicLPFee_revertsIfPoolHasStaticFee()":"cd8dcbb0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REMOVE_LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SWAP_PARAMS\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_emitsSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"lpFee\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolFee0\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolFee1\",\"type\":\"uint16\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"}],\"name\":\"test_fuzz_ProtocolAndLPFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_initialize_initializesFeeTo0\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_swap_100PercentFee_AmountIn_WithProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_swap_100PercentLPFee_AmountIn_NoProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_swap_50PercentLPFee_AmountIn_NoProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_swap_50PercentLPFee_AmountOut_NoProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_swap_99PercentFee_AmountOut_WithProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_swap_revertsWith_InvalidFeeForExactOut_whenFeeIsMax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_swap_withDynamicFee_gas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_updateDynamicLPFee_afterInitialize_failsWithTooLargeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_updateDynamicLPFee_afterInitialize_initializesFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_updateDynamicLPFee_beforeSwap_failsWithTooLargeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_updateDynamicLPFee_beforeSwap_succeeds_gas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_updateDynamicLPFee_revertsIfCallerIsntHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_updateDynamicLPFee_revertsIfPoolHasStaticFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/DynamicFees.t.sol\":\"TestDynamicFees\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe\",\"dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/test/utils/mocks/MockERC20.sol\":{\"keccak256\":\"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e\",\"dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"src/NoDelegateCall.sol\":{\"keccak256\":\"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6\",\"dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18\"]},\"src/PoolManager.sol\":{\"keccak256\":\"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72\",\"dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu\"]},\"src/ProtocolFees.sol\":{\"keccak256\":\"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa\",\"dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq\"]},\"src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb\",\"dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn\"]},\"src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb\",\"dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx\"]},\"src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"src/libraries/Pool.sol\":{\"keccak256\":\"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407\",\"dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey\"]},\"src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba\",\"dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787\"]},\"src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138\",\"dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF\"]},\"src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0\",\"dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY\"]},\"src/libraries/SwapMath.sol\":{\"keccak256\":\"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812\",\"dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD\"]},\"src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]},\"src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5\",\"dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV\"]},\"src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572\",\"dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn\"]},\"src/test/ActionsRouter.sol\":{\"keccak256\":\"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef\",\"dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR\"]},\"src/test/BaseTestHooks.sol\":{\"keccak256\":\"0x8bb1b533b9df117bc4c85ef9d4c2afa7758771581a752e0a2a69dcae1041e546\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://eebf2728b8bda26bfd0e8c9726950f9cad3f2b8ffa5951117f2c2a9534e37ba6\",\"dweb:/ipfs/QmPCbUDp3e3sF5EPfte4v3VEF9Lhz8db6jLhZQJxXDvBSE\"]},\"src/test/DynamicFeesTestHook.sol\":{\"keccak256\":\"0x61e3dbdc6786831a87ef8714331e578809748ff28c9194ad2a1ecc63fa429934\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d8519f3561f461c8275ce94623d48e998261d86876a57ed0e42833b72089559f\",\"dweb:/ipfs/Qmcso6jubACJ8ffBtUvoMhCxfxyYsTN4CjSoE4ciEHqMM9\"]},\"src/test/PoolClaimsTest.sol\":{\"keccak256\":\"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887\",\"dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW\"]},\"src/test/PoolDonateTest.sol\":{\"keccak256\":\"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb\",\"dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq\"]},\"src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1\",\"dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK\"]},\"src/test/PoolModifyLiquidityTestNoChecks.sol\":{\"keccak256\":\"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58\",\"dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey\"]},\"src/test/PoolNestedActionsTest.sol\":{\"keccak256\":\"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765\",\"dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx\"]},\"src/test/PoolSwapTest.sol\":{\"keccak256\":\"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753\",\"dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j\"]},\"src/test/PoolTakeTest.sol\":{\"keccak256\":\"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193\",\"dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2\"]},\"src/test/PoolTestBase.sol\":{\"keccak256\":\"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a\",\"dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV\"]},\"src/test/SwapRouterNoChecks.sol\":{\"keccak256\":\"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e\",\"dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5\"]},\"src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]},\"test/DynamicFees.t.sol\":{\"keccak256\":\"0xf44552eb81cbc09ae5160e7714a51ea43bb2cd6ffd7f8f2aeaced2cbcbbacad9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://43efca4d6a18f154c1b18622983ff4b039166440b17bc46ff7d24d37a0181a9f\",\"dweb:/ipfs/QmTLzhqWk7khT4Eqvcom2WkD7X2JvixrJcBmqoi5VV99aQ\"]},\"test/utils/Constants.sol\":{\"keccak256\":\"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3\",\"dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na\"]},\"test/utils/CurrencySettler.sol\":{\"keccak256\":\"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58\",\"dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP\"]},\"test/utils/Deployers.sol\":{\"keccak256\":\"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6\",\"dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J\"]},\"test/utils/LiquidityAmounts.sol\":{\"keccak256\":\"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a\",\"dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY\"]},\"test/utils/SortTokens.sol\":{\"keccak256\":\"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0\",\"dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"PoolId","name":"poolId","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"int128","name":"amount0","type":"int128","indexed":false},{"internalType":"int128","name":"amount1","type":"int128","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"uint128","name":"liquidity","type":"uint128","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"uint24","name":"fee","type":"uint24","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"REMOVE_LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SWAP_PARAMS","outputs":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_emitsSwapFee"},{"inputs":[{"internalType":"uint24","name":"lpFee","type":"uint24"},{"internalType":"uint16","name":"protocolFee0","type":"uint16"},{"internalType":"uint16","name":"protocolFee1","type":"uint16"},{"internalType":"int256","name":"amountSpecified","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"test_fuzz_ProtocolAndLPFee"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_initialize_initializesFeeTo0"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_swap_100PercentFee_AmountIn_WithProtocol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_swap_100PercentLPFee_AmountIn_NoProtocol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_swap_50PercentLPFee_AmountIn_NoProtocol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_swap_50PercentLPFee_AmountOut_NoProtocol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_swap_99PercentFee_AmountOut_WithProtocol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_swap_revertsWith_InvalidFeeForExactOut_whenFeeIsMax"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_swap_withDynamicFee_gas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_updateDynamicLPFee_afterInitialize_failsWithTooLargeFee"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_updateDynamicLPFee_afterInitialize_initializesFee"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_updateDynamicLPFee_beforeSwap_failsWithTooLargeFee"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_updateDynamicLPFee_beforeSwap_succeeds_gas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_updateDynamicLPFee_revertsIfCallerIsntHook"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_updateDynamicLPFee_revertsIfPoolHasStaticFee"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/DynamicFees.t.sol":"TestDynamicFees"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270","urls":["bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe","dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/test/utils/mocks/MockERC20.sol":{"keccak256":"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466","urls":["bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e","dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"src/NoDelegateCall.sol":{"keccak256":"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51","urls":["bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6","dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18"],"license":"MIT"},"src/PoolManager.sol":{"keccak256":"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07","urls":["bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72","dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu"],"license":"BUSL-1.1"},"src/ProtocolFees.sol":{"keccak256":"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755","urls":["bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa","dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq"],"license":"MIT"},"src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"src/libraries/CurrencyDelta.sol":{"keccak256":"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c","urls":["bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb","dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn"],"license":"BUSL-1.1"},"src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa","urls":["bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb","dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx"],"license":"MIT"},"src/libraries/LPFeeLibrary.sol":{"keccak256":"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b","urls":["bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475","dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J"],"license":"MIT"},"src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"src/libraries/ParseBytes.sol":{"keccak256":"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15","urls":["bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17","dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa"],"license":"MIT"},"src/libraries/Pool.sol":{"keccak256":"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0","urls":["bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407","dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey"],"license":"BUSL-1.1"},"src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec","urls":["bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba","dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787"],"license":"MIT"},"src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"src/libraries/SqrtPriceMath.sol":{"keccak256":"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982","urls":["bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138","dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF"],"license":"MIT"},"src/libraries/StateLibrary.sol":{"keccak256":"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952","urls":["bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0","dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY"],"license":"MIT"},"src/libraries/SwapMath.sol":{"keccak256":"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9","urls":["bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812","dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD"],"license":"MIT"},"src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"},"src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"src/libraries/TransientStateLibrary.sol":{"keccak256":"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a","urls":["bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5","dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV"],"license":"MIT"},"src/libraries/UnsafeMath.sol":{"keccak256":"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4","urls":["bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572","dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn"],"license":"MIT"},"src/test/ActionsRouter.sol":{"keccak256":"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52","urls":["bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef","dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR"],"license":"UNLICENSED"},"src/test/BaseTestHooks.sol":{"keccak256":"0x8bb1b533b9df117bc4c85ef9d4c2afa7758771581a752e0a2a69dcae1041e546","urls":["bzz-raw://eebf2728b8bda26bfd0e8c9726950f9cad3f2b8ffa5951117f2c2a9534e37ba6","dweb:/ipfs/QmPCbUDp3e3sF5EPfte4v3VEF9Lhz8db6jLhZQJxXDvBSE"],"license":"UNLICENSED"},"src/test/DynamicFeesTestHook.sol":{"keccak256":"0x61e3dbdc6786831a87ef8714331e578809748ff28c9194ad2a1ecc63fa429934","urls":["bzz-raw://d8519f3561f461c8275ce94623d48e998261d86876a57ed0e42833b72089559f","dweb:/ipfs/Qmcso6jubACJ8ffBtUvoMhCxfxyYsTN4CjSoE4ciEHqMM9"],"license":"UNLICENSED"},"src/test/PoolClaimsTest.sol":{"keccak256":"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986","urls":["bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887","dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW"],"license":"UNLICENSED"},"src/test/PoolDonateTest.sol":{"keccak256":"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105","urls":["bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb","dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq"],"license":"UNLICENSED"},"src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3","urls":["bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1","dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK"],"license":"UNLICENSED"},"src/test/PoolModifyLiquidityTestNoChecks.sol":{"keccak256":"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093","urls":["bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58","dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey"],"license":"UNLICENSED"},"src/test/PoolNestedActionsTest.sol":{"keccak256":"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e","urls":["bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765","dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx"],"license":"UNLICENSED"},"src/test/PoolSwapTest.sol":{"keccak256":"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0","urls":["bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753","dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j"],"license":"UNLICENSED"},"src/test/PoolTakeTest.sol":{"keccak256":"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368","urls":["bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193","dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2"],"license":"UNLICENSED"},"src/test/PoolTestBase.sol":{"keccak256":"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962","urls":["bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a","dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV"],"license":"UNLICENSED"},"src/test/SwapRouterNoChecks.sol":{"keccak256":"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575","urls":["bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e","dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5"],"license":"UNLICENSED"},"src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"},"test/DynamicFees.t.sol":{"keccak256":"0xf44552eb81cbc09ae5160e7714a51ea43bb2cd6ffd7f8f2aeaced2cbcbbacad9","urls":["bzz-raw://43efca4d6a18f154c1b18622983ff4b039166440b17bc46ff7d24d37a0181a9f","dweb:/ipfs/QmTLzhqWk7khT4Eqvcom2WkD7X2JvixrJcBmqoi5VV99aQ"],"license":"UNLICENSED"},"test/utils/Constants.sol":{"keccak256":"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43","urls":["bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3","dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na"],"license":"UNLICENSED"},"test/utils/CurrencySettler.sol":{"keccak256":"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6","urls":["bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58","dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP"],"license":"MIT"},"test/utils/Deployers.sol":{"keccak256":"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7","urls":["bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6","dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J"],"license":"UNLICENSED"},"test/utils/LiquidityAmounts.sol":{"keccak256":"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2","urls":["bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a","dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY"],"license":"UNLICENSED"},"test/utils/SortTokens.sol":{"keccak256":"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844","urls":["bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0","dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD"],"license":"UNLICENSED"}},"version":1},"id":114}