UNPKG

@uniswap/v4-core

Version:

🦄 Core smart contracts of Uniswap v4

1 lines • 566 kB
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"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_clear_gas","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_clear_positiveDelta_inputExact_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_clear_reverts_negativeDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_clear_reverts_positiveDelta_inputGreaterThanDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_clear_reverts_positiveDelta_inputLessThanDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_clear_reverts_positiveDelta_inputZero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_clear_reverts_zeroDelta_inputNonzero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_clear_zeroDelta_inputZero_isUnchanged","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040523461016457600160ff19600c541617600c55600160ff19601f541617601f555f606061002e610168565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196020541617602055670de0b6b3a76400006021555f6022555f606061007a610168565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196023541617602355670de0b6b3a763ffff196024555f6025556040516060810181811060018060401b038211176101505760409081526001808352606319602084018190526bb504f333f9de6484597d89b39383018490526026805460ff1916909217909155602755602880546001600160a01b03199081169093179055604280548316600e17905560438054909216614000600160a01b0317909155516201b9b89081620001888239f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b038111838210176101505760405256fe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c8062fb81f4146137375780630a9254e414611e185780631ed7831c14611d6f5780632ade388014611b4357806339cd201314611ae25780633c3ce0bd146118675780633e5e3c23146117be5780633f7286f414611715578063425ed4c114611523578063542524dd146114d457806366d9a9a0146113795780637624bbef1461102457806385226c8114610f7c578063916a17c614610ea757806393ad73ed14610e425780639cb9ee5e14610cfb578063b0464fdc14610c26578063b1a73b8a14610bbe578063b5508aa914610b16578063b76ad49c14610914578063ba414fa6146108d1578063bff18419146105c6578063c7b8e15d14610588578063e20c9f71146104cf578063fa7626d41461048e5763fcc2b80714610142575061000e565b3461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610419576040519061017f608083613c28565b60038252606036602084013760405191608061019b8185613c28565b600384527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825b8181106104505783808685600b6101d982613d32565b52604051836020820152602081526101f2604082613c28565b6101fb83613d32565b5261020582613d32565b50600a61021182613d6c565b526029546032546040805173ffffffffffffffffffffffffffffffffffffffff9384166020820181905293909216908201525f606082015261025c916102f291610288816080810186565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613c28565b61029186613d6c565b5261029b85613d6c565b5060076102a785613d7c565b526040519283916020830173ffffffffffffffffffffffffffffffffffffffff60a092168152670de0b6b3a764000060208201525f6040820152608060608201525f60808201520190565b6102fb83613d7c565b5261030582613d7c565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610441576040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fbda73abf000000000000000000000000000000000000000000000000000000006004820152838160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561044557849161042c575b505073ffffffffffffffffffffffffffffffffffffffff6032541691823b15610427576103f7928492836040518096819582947f5ef2431400000000000000000000000000000000000000000000000000000000845260048401613df1565b03925af1801561041c576104085750f35b8161041291613c28565b6104195780f35b80fd5b6040513d84823e3d90fd5b505050fd5b8161043691613c28565b610441578285610398565b5050fd5b6040513d86823e3d90fd5b8060606020809388010152016101c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957602060ff601f54166040519015158152f35b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104195760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b81811061055c576105588561054c81870382613c28565b60405191829182613981565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610535565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104195760206040516401000276a48152f35b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610419578060405161060460c082613c28565b6005815260a0366020830137610618613c81565b90600561062482613d32565b5273ffffffffffffffffffffffffffffffffffffffff6029541660405181602082015260208152610656604082613c28565b61065f84613d32565b5261066983613d32565b50600c61067583613d6c565b52602b546040805173ffffffffffffffffffffffffffffffffffffffff8481166020830152309282019290925291166060820152670de0b6b3a764000060808201526106c48160a0810161025c565b6106cd84613d6c565b526106d783613d6c565b50836106e283613d7c565b52604051816020820152602081526106fb604082613c28565b61070484613d7c565b5261070e83613d7c565b50600a61071a83613d8c565b5273ffffffffffffffffffffffffffffffffffffffff60325416604051908260208301526040820152670de0b6b3a7640000606082015260608152610760608082613c28565b61076984613d8c565b5261077383613d8c565b50600761077f83613d9c565b52604051906020820152670de0b6b3a764000160408201528360608201526080808201528360a082015260a081526107b860c082613c28565b6107c183613d9c565b526107cb82613d9c565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610441576040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fbda73abf000000000000000000000000000000000000000000000000000000006004820152838160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156104455784916108bc57505073ffffffffffffffffffffffffffffffffffffffff6032541691823b15610427576103f7928492836040518096819582947f5ef2431400000000000000000000000000000000000000000000000000000000845260048401613df1565b816108c691613c28565b61044157825f610398565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957602061090a614296565b6040519015158152f35b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610419578060405161095260c082613c28565b6005815260a0366020830137610966613c81565b90600561097282613d32565b5261025c6107b873ffffffffffffffffffffffffffffffffffffffff60295416604051816020820152602081526109aa604082613c28565b6109b386613d32565b526109bd85613d32565b50600c6109c985613d6c565b52602b546040805173ffffffffffffffffffffffffffffffffffffffff8481166020830152309282019290925291166060820152670de0b6b3a76400006080820152610a188160a0810161025c565b610a2186613d6c565b52610a2b85613d6c565b5085610a3685613d7c565b5260405181602082015260208152610a4f604082613c28565b610a5886613d7c565b52610a6285613d7c565b50600a610a6e85613d8c565b5273ffffffffffffffffffffffffffffffffffffffff60325416604051908260208301526040820152670de0b6b3a7640000606082015260608152610ab4608082613c28565b610abd86613d8c565b52610ac785613d8c565b506007610ad385613d9c565b526040519283916020830173ffffffffffffffffffffffffffffffffffffffff60a0921681525f60208201525f6040820152608060608201525f60808201520190565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957601954610b5181613c69565b91610b5f6040519384613c28565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610ba157604051806105588782613acf565b600160208192610bb085613ee0565b815201920192019190610b8c565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957601c54610c6181613c69565b91610c6f6040519384613c28565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610cb157604051806105588782613b4c565b60026020600192604051610cc481613c0c565b73ffffffffffffffffffffffffffffffffffffffff8654168152610ce9858701613fe3565b83820152815201920192019190610c9c565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957606090604051610d3a8382613c28565b600281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301366020830137604051906060610d778184613c28565b600283527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001835b818110610e3257505061025c610e1f84956003610dbb85613d32565b5273ffffffffffffffffffffffffffffffffffffffff602954169060405190826020830152306040830152670de0b6b3a7640000818301528152610e00608082613c28565b610e0986613d32565b52610e1385613d32565b5060076102a785613d6c565b610e2883613d6c565b526107cb82613d6c565b8086602080938701015201610d9f565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610419576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957601d54610ee281613c69565b91610ef06040519384613c28565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310610f3257604051806105588782613b4c565b60026020600192604051610f4581613c0c565b73ffffffffffffffffffffffffffffffffffffffff8654168152610f6a858701613fe3565b83820152815201920192019190610f1d565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957601a54610fb781613c69565b91610fc56040519384613c28565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061100757604051806105588782613acf565b60016020819261101685613ee0565b815201920192019190610ff2565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957806112ea6101207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051916110898184613c28565b600883520136602083013761109c613cd9565b60056110a783613d32565b5273ffffffffffffffffffffffffffffffffffffffff60295416604051816020820152602081526110d9604082613c28565b6110e283613d32565b526110ec82613d32565b50600c6110f884613d6c565b52602b546040805173ffffffffffffffffffffffffffffffffffffffff8481166020830152309282019290925291166060820152670de0b6b3a764000060808201526111478160a0810161025c565b61115083613d6c565b5261115a82613d6c565b508461116584613d7c565b526040518160208201526020815261117e604082613c28565b61118783613d7c565b5261119182613d7c565b50600a61119d84613d8c565b5273ffffffffffffffffffffffffffffffffffffffff60325416938491604051816020820152836040820152670de0b6b3a76400006060820152606081526111e6608082613c28565b6111ef85613d8c565b526111f984613d8c565b50600b61120586613d9c565b52604051600160208201526020815261121f604082613c28565b61122885613d9c565b5261123284613d9c565b50600761123e86613dac565b5260405161128e8161025c846020830173ffffffffffffffffffffffffffffffffffffffff60a092168152670de0b6b3a764000060208201525f6040820152608060608201525f60808201520190565b61129785613dac565b526112a184613dac565b50600a6112ad86613dbc565b5261025c6040519384926020840160409073ffffffffffffffffffffffffffffffffffffffff5f9395948160608401971683521660208201520152565b6112f382613dbc565b526112fd81613dbc565b50600b61130983613dcc565b5260405184602082015260208152611322604082613c28565b61132b82613dcc565b5261133581613dcc565b50823b15610427576103f7928492836040518096819582947f5ef2431400000000000000000000000000000000000000000000000000000000845260048401613df1565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957601b546113b481613c69565b6113c16040519182613c28565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b83831061149957868587604051928392602084019060208552518091526040840160408260051b8601019392905b82821061142e57505050500390f35b91936020611489827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc060019597998495030186528851908361147983516040845260408401906139d0565b9201519084818403910152613a7a565b960192019201859493919261141f565b600260206001926040516114ac81613c0c565b6114b586613ee0565b81526114c2858701613fe3565b838201528152019201920191906113f1565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610419575060405173fffd8963efd1fc6a506488495d951d5263988d258152602090f35b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610419578060405161156160c082613c28565b6005815260a0366020830137611575613c81565b90600561158182613d32565b5273ffffffffffffffffffffffffffffffffffffffff60295416604051816020820152602081526115b3604082613c28565b6115bc84613d32565b526115c683613d32565b50600c6115d283613d6c565b52602b546040805173ffffffffffffffffffffffffffffffffffffffff8481166020830152309282019290925291166060820152670de0b6b3a764000060808201526116218160a0810161025c565b61162a84613d6c565b5261163483613d6c565b508361163f83613d7c565b5260405181602082015260208152611658604082613c28565b61166184613d7c565b5261166b83613d7c565b50600a61167783613d8c565b5273ffffffffffffffffffffffffffffffffffffffff60325416604051908260208301526040820152670de0b6b3a76400006060820152606081526116bd608082613c28565b6116c684613d8c565b526116d083613d8c565b5060076116dc83613d9c565b52604051906020820152670de0b6b3a763ffff60408201528360608201526080808201528360a082015260a081526107b860c082613c28565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104195760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110611792576105588561054c81870382613c28565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161177b565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104195760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061183b576105588561054c81870382613c28565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611824565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957806112ea6101207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051916118cc8184613c28565b60088352013660208301376118df613cd9565b60056118ea83613d32565b5273ffffffffffffffffffffffffffffffffffffffff602954166040518160208201526020815261191c604082613c28565b61192583613d32565b5261192f82613d32565b50600c61193b84613d6c565b52602b546040805173ffffffffffffffffffffffffffffffffffffffff8481166020830152309282019290925291166060820152670de0b6b3a7640000608082015261198a8160a0810161025c565b61199383613d6c565b5261199d82613d6c565b50846119a884613d7c565b52604051816020820152602081526119c1604082613c28565b6119ca83613d7c565b526119d482613d7c565b50600a6119e084613d8c565b5273ffffffffffffffffffffffffffffffffffffffff60325416938491604051816020820152836040820152670de0b6b3a7640000606082015260608152611a29608082613c28565b611a3285613d8c565b52611a3c84613d8c565b50600b611a4886613d9c565b526040516001602082015260208152611a62604082613c28565b611a6b85613d9c565b52611a7584613d9c565b506007611a8186613dac565b52604051816020820152670de0b6b3a7640000604082015260016060820152608080820152600560a08201527f636c65617200000000000000000000000000000000000000000000000000000060c082015260c0815261128e60e082613c28565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104195760235460245460255460408051600285810b825260189590951c90940b60208501528301919091526060820152608090f35b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957601e54611b7e81613c69565b611b8b6040519182613c28565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b838310611cd95786858760405192839260208401906020855251809152604084019160408260051b8601019392815b838310611bf75786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110611c9057505050505060208060019297019301930190928695949293611bea565b9091929394602080611ccc837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0876001960301895289516139d0565b9701950193929101611c6c565b604051611ce581613c0c565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054611d0e81613c69565b91611d1c6040519384613c28565b8183528a526020808b20908b9084015b838210611d52575050505060019282602092836002950152815201920192019190611bbb565b600160208192611d6186613ee0565b815201930191019091611d2c565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104195760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110611dec576105588561054c81870382613c28565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611dd5565b503461041957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957604051615e828082019082821067ffffffffffffffff83111761370a5760209183916200626d833930815203019082f080156136d05773ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffff0000000000000000000000000000000000000000602b541617602b5560405190611bb9908183019183831067ffffffffffffffff8411176136dd57918391602093620181628439815203019082f080156136d05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602f541617602f5573ffffffffffffffffffffffffffffffffffffffff602b541660405190610d6f908183019183831067ffffffffffffffff8411176136dd579183916020936201ac3d8439815203019082f080156136d05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602e541617602e5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611835908183019183831067ffffffffffffffff8411176136dd57918391602093620108448439815203019082f080156136d05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602c541617602c5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611315908183019183831067ffffffffffffffff8411176136dd57918391602093620120798439815203019082f080156136d05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602d541617602d5573ffffffffffffffffffffffffffffffffffffffff602b5416604051906112d2908183019183831067ffffffffffffffff8411176136dd579183916020936200f5728439815203019082f080156136d05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603054161760305573ffffffffffffffffffffffffffffffffffffffff602b541660405190610f22908183019183831067ffffffffffffffff8411176136dd5791839160209362019d1b8439815203019082f080156136d05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603154161760315573ffffffffffffffffffffffffffffffffffffffff602b541660405190610c38908183019183831067ffffffffffffffff8411176136dd579183916020936200e93a8439815203019082f080156136d05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603354161760335573ffffffffffffffffffffffffffffffffffffffff602b541660405190614dd4908183019183831067ffffffffffffffff8411176136dd579183916020936201338e8439815203019082f080156136d05773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455604080516123328282613c28565b600d815282602082017f666565436f6e74726f6c6c65720000000000000000000000000000000000000081528351600d6020820192835e82602d820152600d815261237e602d82613c28565b5190208351907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa90811561354e578291613681575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15613558578173ffffffffffffffffffffffffffffffffffffffff61244f92865193849283927fc657c718000000000000000000000000000000000000000000000000000000008452169687600484015288602484015260448301906139d0565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561354e5761366c575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000603554161760355573ffffffffffffffffffffffffffffffffffffffff602b541681519061284b908183019183831067ffffffffffffffff84111761363f579183916020936200c0ef8439815203019083f080156136345773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff000000000000000000000000000000000000000060325416176032558173ffffffffffffffffffffffffffffffffffffffff602b541673ffffffffffffffffffffffffffffffffffffffff60355416813b1561363057829160248392865194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af180156136235761360e575b50506125b46147cc565b73ffffffffffffffffffffffffffffffffffffffff806125d26147cc565b92169116808210156135f15773ffffffffffffffffffffffffffffffffffffffff80915b1691827fffffffffffffffffffffffff0000000000000000000000000000000000000000602a541617602a551691827fffffffffffffffffffffffff0000000000000000000000000000000000000000602954161760295561265661439b565b5061265f61439b565b50603c81519361266e85613bf0565b84526020808501938452610bb88386019081526060860183815260808701888152602b5486517f6276cbbe000000000000000000000000000000000000000000000000000000008152895173ffffffffffffffffffffffffffffffffffffffff908116600483015289518116602483015260408b015162ffffff166044830152845160020b6064830152835181166084830152929593949390929091839160c49183918e91166c0100000000000000000000000060a48401525af180156135e7576135a6575b5073ffffffffffffffffffffffffffffffffffffffff602c54169560209789896127c689519a612764838d613c28565b838c527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083019b8c36858301378b519485809481937f5a6bcfda00000000000000000000000000000000000000000000000000000000835289600484016143c5565b03925af180156134ef5773ffffffffffffffffffffffffffffffffffffffff96959493919287938492613589575b5051167fffffffffffffffffffffffff0000000000000000000000000000000000000000603654161760365551167fffffffffffffffffffffffff00000000000000000000000000000000000000006037541617603755517fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000806037549360a01b1616911617603755517fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff6037549160b81b60190b79ffffff00000000000000000000000000000000000000000000001691161760375551167fffffffffffffffffffffffff000000000000000000000000000000000000000060385416176038558460048573ffffffffffffffffffffffffffffffffffffffff603454168551928380927fc34c08e50000000000000000000000000000000000000000000000000000000082525afa90811561354e579073ffffffffffffffffffffffffffffffffffffffff91839161355c575b5016803b156135585781809160a48651809481937f1b9ec89e00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff60365416600484015260375473ffffffffffffffffffffffffffffffffffffffff8116602485015262ffffff8160a01c16604485015260b81c60020b606484015273ffffffffffffffffffffffffffffffffffffffff6038541660848401525af1801561354e57613535575b505073ffffffffffffffffffffffffffffffffffffffff602a5416612a5661439b565b50612a5f61439b565b50825190612a6c82613bf0565b868252858201908152838201610bb881526060830191848352608084019389855260a0812050898973ffffffffffffffffffffffffffffffffffffffff602b541660c48a51809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352612b2f600484018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6c0100000000000000000000000060a48401525af180156134ef576134f9575b50670de0b6b3a764000089612bc173ffffffffffffffffffffffffffffffffffffffff602c54168d8b5190612b848583613c28565b81528c36858301378b519485809481937f5a6bcfda00000000000000000000000000000000000000000000000000000000835289600484016143c5565b03925af180156134ef5773ffffffffffffffffffffffffffffffffffffffff969594939192879384926134d2575b5051167fffffffffffffffffffffffff0000000000000000000000000000000000000000603954161760395551167fffffffffffffffffffffffff0000000000000000000000000000000000000000603a541617603a55517fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff000000000000000000000000000000000000000080603a549360a01b1616911617603a55517fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff603a549160b81b60190b79ffffff000000000000000000000000000000000000000000000016911617603a5551167fffffffffffffffffffffffff0000000000000000000000000000000000000000603b541617603b5573ffffffffffffffffffffffffffffffffffffffff603654167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905573ffffffffffffffffffffffffffffffffffffffff603754167fffffffffffffffffffffffff0000000000000000000000000000000000000000603d541617603d556037547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000807fffffffffffffffffffffffff0000000000000000000000000000000000000000603d5494161616911617603d556037547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff0000000000000000000000000000000000000000000000603d54921660190b79ffffff000000000000000000000000000000000000000000000016911617603d5573ffffffffffffffffffffffffffffffffffffffff603854167fffffffffffffffffffffffff0000000000000000000000000000000000000000603e541617603e5573ffffffffffffffffffffffffffffffffffffffff603954167fffffffffffffffffffffffff0000000000000000000000000000000000000000603f541617603f5573ffffffffffffffffffffffffffffffffffffffff603a54167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416178155603a547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000807fffffffffffffffffffffffff00000000000000000000000000000000000000008554941616169116178155603a547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff00000000000000000000000000000000000000000000008354921660190b79ffffff000000000000000000000000000000000000000000000016911617815573ffffffffffffffffffffffffffffffffffffffff603b54167fffffffffffffffffffffffff00000000000000000000000000000000000000006041541617604155746400000000000000000000000000000000000000007fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff603d541617603d55746400000000000000000000000000000000000000007fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff82541617815580516130c881613bf0565b73ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff81168583015262ffffff8160a01c168383015260b81c60020b606082015273ffffffffffffffffffffffffffffffffffffffff60385416608082015273ffffffffffffffffffffffffffffffffffffffff602b54168460a083208451828101918252600686820152858152613171606082613c28565b51902060248551809481937f1e2eaeaf00000000000000000000000000000000000000000000000000000000835260048301525afa80156134c8578690613483575b73ffffffffffffffffffffffffffffffffffffffff915016928454918260020b926131dd8461445a565b9060181c60020b956131ee8761445a565b90818373ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821611613477575b505073ffffffffffffffffffffffffffffffffffffffff831681116133fd575061324e91614c7b565b915b8451936080850185811067ffffffffffffffff8211176133d05792613386613353938b938b9897968a528752878701998a526fffffffffffffffffffffffffffffffff8988019616600f0b86526060870184815273ffffffffffffffffffffffffffffffffffffffff602c5416968a51926132cb8b85613c28565b868452368b8501378a519b8c998a9889977f5a6bcfda000000000000000000000000000000000000000000000000000000008952600489019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b5160020b60a48701525160020b60c48601525160e4850152516101048401526101406101248401526101448301906139d0565b03925af19081156133c7575061339a578280f35b816133b992903d106133c0575b6133b18183613c28565b810190614287565b505f808280f35b503d6133a7565b513d85823e3d90fd5b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b9073ffffffffffffffffffffffffffffffffffffffff811682101561346c579061342a6134309282614c7b565b92614c31565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f1461346557505b91613250565b905061345f565b905061345f91614c31565b90935091505f80613225565b508481813d83116134c1575b6134998183613c28565b810103126134bd5773ffffffffffffffffffffffffffffffffffffffff90516131b3565b5f80fd5b503d61348f565b83513d88823e3d90fd5b6134e8908d803d106133c0576133b18183613c28565b505f612bef565b88513d8d823e3d90fd5b8981813d831161352e575b61350e8183613c28565b8101031261352a57518060020b03613526575f612b4f565b8980fd5b8a80fd5b503d613504565b8161353f91613c28565b61354a57845f612a33565b8480fd5b84513d84823e3d90fd5b5080fd5b61357c9150873d8911613582575b6135748183613c28565b81019061436f565b5f61297b565b503d61356a565b61359f908d803d106133c0576133b18183613c28565b505f6127f4565b6020813d6020116135df575b816135bf60209383613c28565b810103126135db57518060020b036135d7575f612734565b8780fd5b8880fd5b3d91506135b2565b86513d8b823e3d90fd5b9073ffffffffffffffffffffffffffffffffffffffff80916125f6565b8161361891613c28565b61355857815f6125aa565b50505051903d90823e3d90fd5b8280fd5b5051903d90823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161367691613c28565b61363057825f612474565b90506020813d6020116136c8575b8161369c60209383613c28565b81010312613558575173ffffffffffffffffffffffffffffffffffffffff81168103613558575f6123d7565b3d915061368f565b50604051903d90823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50346134bd575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126134bd576138c960405161377760c082613c28565b6005815260a036602083013761378b613c81565b600b61379683613d32565b526040515f6020820152602081526137af604082613c28565b6137b882613d32565b526137c281613d32565b50600a6137ce83613d6c565b5273ffffffffffffffffffffffffffffffffffffffff6029541673ffffffffffffffffffffffffffffffffffffffff603254169384916040516138438161025c86856020840160409073ffffffffffffffffffffffffffffffffffffffff5f9395948160608401971683521660208201520152565b61384c85613d6c565b5261385684613d6c565b50600761386286613d7c565b526040516138aa8161025c846020830173ffffffffffffffffffffffffffffffffffffffff60a0921681525f60208201525f6040820152608060608201525f60808201520190565b6138b385613d7c565b526138bd84613d7c565b50600a6112ad86613d8c565b6138d282613d8c565b526138dc81613d8c565b50600b6138e883613d9c565b526040515f602082015260208152613901604082613c28565b61390a82613d9c565b5261391481613d9c565b50823b156134bd57613958925f92836040518096819582947f5ef2431400000000000000000000000000000000000000000000000000000000845260048401613df1565b03925af180156139765761396a575080f35b61001891505f90613c28565b6040513d5f823e3d90fd5b60206040818301928281528451809452019201905f5b8181106139a45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101613997565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9073ffffffffffffffffffffffffffffffffffffffff8091169116039073ffffffffffffffffffffffffffffffffffffffff8211613a4d57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90602080835192838152019201905f5b818110613a975750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101613a8a565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613b0157505050505090565b9091929394602080613b3d837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516139d0565b97019301930191939290613af2565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613b7e57505050505090565b9091929394602080613be1837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190613a7a565b97019301930191939290613b6f565b60a0810190811067ffffffffffffffff82111761046157604052565b6040810190811067ffffffffffffffff82111761046157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761046157604052565b67ffffffffffffffff81116104615760051b60200190565b60405160c09190613c928382613c28565b60058152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b828110613cc857505050565b806060602080938501015201613cbc565b6040516101209190613ceb8382613c28565b60088152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b828110613d2157505050565b806060602080938501015201613d15565b805115613d3f5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015613d3f5760400190565b805160021015613d3f5760600190565b805160031015613d3f5760800190565b805160041015613d3f5760a00190565b805160051015613d3f5760c00190565b805160061015613d3f5760e00190565b805160071015613d3f576101000190565b8051821015613d3f5760209160051b010190565b604081016040825282518091526020606083019301905f905b808210613e90575050506020818303910152815180825260208201916020808360051b8301019401925f915b838310613e4557505050505090565b9091929394602080613e81837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0866001960301875289516139d0565b97019301930191939290613e36565b909193845190600e821015613eb357602081600193829352019501920190613e0a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90604051915f8154908160011c9260018316928315613fd9575b602085108414613fac578487528693908115613f6c5750600114613f28575b50613f2692500383613c28565b565b90505f9291925260205f20905f915b818310613f50575050906020613f26928201015f613f19565b6020919350806001915483858901015201910190918492613f37565b60209350613f269592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f613f19565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693613efa565b90604051918281549182825260208201905f5260205f20925f905b8060078301106141fa57613f269454918181106141c4575b81811061418e575b818110614158575b818110614122575b8181106140ec575b8181106140b6575b818110614081575b10614054575b500383613c28565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f61404c565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301614046565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b16815201930161403e565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301614036565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b16815201930161402e565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301614026565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b16815201930161401e565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301614016565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391613ffe565b908160209103126134bd575190565b60085460ff1680156142a55790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115613976575f9161433d575b50151590565b90506020813d602011614367575b8161435860209383613c28565b810103126134bd57515f614337565b3d915061434b565b908160209103126134bd575173ffffffffffffffffffffffffffffffffffffffff811681036134bd5790565b604051906143a882613bf0565b5f6080838281528260208201528260408201528260608201520152565b8061442161014092614457959473ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6020548060020b60a083015260181c60020b60c082015260215460e08201526022546101008201528161012082015201906139d0565b90565b60020b908160ff1d82810118620d89e881116147a05763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189160028116614784575b60048116614768575b6008811661474c575b60108116614730575b60208116614714575b604081166146f8575b608081166146dc575b61010081166146c0575b61020081166146a4575b6104008116614688575b610800811661466c575b6110008116614650575b6120008116614634575b6140008116614618575b61800081166145fc575b6201000081166145e0575b6202000081166145c5575b6204000081166145aa575b6208000016614591575b5f1261456a575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04614563565b6b048a170391f7dc42444e8fa290910260801c9061455c565b6d2216e584f5fa1ea926041bedfe9890920260801c91614552565b916e5d6af8dedb81196699c329225ee6040260801c91614547565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161453c565b916f31be135f97d08fd981231505542fcfa60260801c91614531565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614527565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161451d565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614513565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614509565b916ff3392b0822b70005940c7a398e4b70f30260801c916144ff565b916ff987a7253ac413176f2b074cf7815e540260801c916144f5565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916144eb565b916ffe5dee046a99a2a811c461f1969c30530260801c916144e1565b916fff2ea16466c96a3843ec78b326b528610260801c916144d8565b916fff973b41fa98c081472e6896dfb254c00260801c916144cf565b916fffcb9843d60f6159c9db58835c9266440260801c916144c6565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916144bd565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916144b4565b916ffff97272373d413259a46990580e213a0260801c916144ab565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60408051916147db8284613c28565b600183527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820136602085013762004f48926113255f5b60ff8116600181101561498657855183810181811067ffffffffffffffff821117610461578190858a833960608082526004908201527f544553540000000000000000000000000000000000000000000000000000000060808201526012896148b160a084018481036020860152604090600481527f544553540000000000000000000000000000000000000000000000000000000060208201520190565b92015203905ff0801561497c57816148ed9173ffffffffffffffffffffffffffffffffffffffff6148e3819589613ddd565b9116905285613ddd565b5116803b156134bd575f809160448851809481937f40c10f190000000000000000000000000000000000000000000000000000000083523060048401527f800000000000000000000000000000000000000000000000000000000000000060248401525af1801561497c579160019160ff9361496c575b500116614812565b5f61497691613c28565b5f614964565b86513d5f823e3d90fd5b50505073ffffffffffffffffffffffffffffffffffffffff9193506149aa90613d32565b51168151610120810181811067ffffffffffffffff82111761046157835273ffffffffffffffffffffffffffffffffffffffff602f5416815273ffffffffffffffffffffffffffffffffffffffff602e5416602082015273ffffffffffffffffffffffffffffffffffffffff602c54168382015273ffffffffffffffffffffffffffffffffffffffff602d5416606082015273ffffffffffffffffffffffffffffffffffffffff60305416608082015273ffffffffffffffffffffffffffffffffffffffff6031541660a082015273ffffffffffffffffffffffffffffffffffffffff6033541660c08201526004602073ffffffffffffffffffffffffffffffffffffffff603454168551928380927fc34c08e50000000000000000000000000000000000000000000000000000000082525afa908115614c27579073ffffffffffffffffffffffffffffffffffffffff915f91614c08575b501660e082015273ffffffffffffffffffffffffffffffffffffffff603254166101008201525f5b6009811015614c015773ffffffffffffffffffffffffffffffffffffffff8160051b830151168451907f095ea7b300000000000000000000000000000000000000000000000000000000825260048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201526020816044815f885af18015614bf757614bc0575b50600101614b2b565b6020813d8211614bef575b81614bd860209383613c28565b810103126134bd5751801515036134bd575f614bb7565b3d9150614bcb565b85513d5f823e3d90fd5b5050905090565b614c21915060203d602011613582576135748183613c28565b5f614b03565b84513d5f823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff614c61614c70926144579483811684831611614c7557613a13565b16678ac7230489e80000614cfa565b614ecc565b90613a13565b61445791614c709173ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611614cf4575b614ce473ffffffffffffffffffffffffffffffffffffffff91614cde838516848316614db3565b93613a13565b1690678ac7230489e80000614e2d565b90614cb7565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000008409928280851094039380850394858411156134bd5714614dac576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156134bd5714614e24576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039