UNPKG

@uniswap/universal-router

Version:

Smart contracts for Universal Router

1 lines 334 kB
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"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":"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":"testExactInput0For1","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testExactInput0For1FromRouter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testExactInput1For0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testExactInput1For0FromRouter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testExactOutput0For1","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testExactOutput0For1FromRouter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testExactOutput1For0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testExactOutput1For0FromRouter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"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":"0x60808060405234602d57600160ff195f5416175f55600160ff19600454161760045561b93a90816100328239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a9254e4146130205750806317b2038d146129fa5780631e461fa71461279d5780631ed7831c146126f45780633e5e3c231461264b5780633f7286f4146125a257806366d9a9a0146123e157806385226c811461227e5780638b0c757414611c48578063916a17c6146118e957806396b973ab146112c157806397d7583e146110545780639e8749d314610df7578063b496473814610b55578063b5508aa9146109c5578063ba414fa614610982578063c3689a14146101f2578063e20c9f71146101315763fa7626d4146100ef575f80fd5b3461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760ff60209154166040519015158152f35b80fd5b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760405180916020600c54928381520191600c82527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7915b8181106101c6576101c2856101ae81870382614e89565b604051918291602083526020830190614c6e565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610197565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576040517f0900000000000000000000000000000000000000000000000000000000000000602082015260018152610259602182614e89565b73ffffffffffffffffffffffffffffffffffffffff601b5416828060405160208101907f70a08231000000000000000000000000000000000000000000000000000000008252846024820152602481526102b4604482614e89565b519082736b175474e89094c44da98b954eedeac495271d0f5af1506102e96102da6151d1565b60208082518301019101614f04565b5061032d736b175474e89094c44da98b954eedeac495271d0f7fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854161760085560075468010000000000000000811015610955576001810180600755811015610928576007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b60095484806103b5615997565b6103be81615b34565b9060405195610402876103d660208201958487615195565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101895288614e89565b7fffffffff0000000000000000000000000000000000000000000000000000000061044b8a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b91169081855260205260408420604051602081019061049b8161046f8b88866159df565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282614e89565b519020855260205260ff6040852054161561091a575b6104d98973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b90845260205260408320906040516104fa8161046f896020830195866159df565b51902083526020526040822054945190875afa506105166151d1565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681036108ed579061054e9160051b90615bc2565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108e25786926108ae575b50036108a9578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610881576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915269152d02c7e14af68000006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561089e578391610886575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854166008556106c7615ae5565b81600955604051906106da606083614e89565b600282526040366020840137736b175474e89094c44da98b954eedeac495271d0f61070483614f6f565b5273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261072383614f7c565b5261046f610742610732614fa0565b9360405192839160208301615143565b61074b83614f6f565b5261075582614f6f565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b15610881576107b3928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401615061565b03925af180156108615761086c575b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526104d2600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa8015610861578290610829575b61082691506155aa565b80f35b506020813d602011610859575b8161084360209383614e89565b8101031261085557610826905161081c565b5f80fd5b3d9150610836565b6040513d84823e3d90fd5b8161087691614e89565b61012e57805f6107c2565b505050fd5b8161089091614e89565b61089b57815f61066d565b50fd5b6040513d85823e3d90fd5b615a15565b9091506020813d6020116108da575b816108ca60209383614e89565b810103126108555751905f6105c3565b3d91506108bd565b6040513d88823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b610922615cac565b506104b1565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760206109bb615200565b6040519015158152f35b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57601054610a0081614f57565b90610a0e6040519283614e89565b808252601083527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729280602084015b838310610a5257604051806101c28782614df0565b6040518287548060011c90600181168015610b4b575b602083108114610b1e57828552908115610add5750600114610aa7575b5060019282610a9985946020940382614e89565b815201960192019194610a3d565b888552602085208592505b818310610ac757505081016020016001610a85565b6001816020925483868801015201920191610ab2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b8401909101915060019050610a85565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b91607f1691610a68565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57806040517f0800000000000000000000000000000000000000000000000000000000000000602082015260018152610bbd602182614e89565b60405190610bcc606083614e89565b60028252604036602084013773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2610bf683614f6f565b52736b175474e89094c44da98b954eedeac495271d0f610c1583614f7c565b5261046f610c34610c24614fa0565b936040519283916020830161502f565b610c3d83614f6f565b52610c4782614f6f565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b1561088157610ca5928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401615061565b03925af1801561086157610de2575b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526104d2600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa8015610861578290610dae575b610d18915061571e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526104d26004820152602081602481736b175474e89094c44da98b954eedeac495271d0f5afa8015610861578290610d7a575b6108269150615336565b506020813d602011610da6575b81610d9460209383614e89565b81010312610855576108269051610d70565b3d9150610d87565b506020813d602011610dda575b81610dc860209383614e89565b8101031261085557610d189051610d0e565b3d9150610dbb565b81610dec91614e89565b61012e57805f610cb4565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57806040517f0800000000000000000000000000000000000000000000000000000000000000602082015260018152610e5f602182614e89565b60405190610e6e606083614e89565b600282526040366020840137736b175474e89094c44da98b954eedeac495271d0f610e9883614f6f565b5273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2610eb783614f7c565b5261046f610ec6610c24614fa0565b610ecf83614f6f565b52610ed982614f6f565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b1561088157610f37928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401615061565b03925af180156108615761103f575b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526104d26004820152602081602481736b175474e89094c44da98b954eedeac495271d0f5afa801561086157829061100b575b610faa915061571e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526104d2600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa8015610861578290610d7a576108269150615336565b506020813d602011611037575b8161102560209383614e89565b8101031261085557610faa9051610fa0565b3d9150611018565b8161104991614e89565b61012e57805f610f46565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57806040517f09000000000000000000000000000000000000000000000000000000000000006020820152600181526110bc602182614e89565b604051906110cb606083614e89565b600282526040366020840137736b175474e89094c44da98b954eedeac495271d0f6110f583614f6f565b5273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261111483614f7c565b5261046f611133611123614fa0565b93604051928391602083016150f1565b61113c83614f6f565b5261114682614f6f565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b15610881576111a4928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401615061565b03925af18015610861576112ac575b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526104d26004820152602081602481736b175474e89094c44da98b954eedeac495271d0f5afa8015610861578290611278575b61121791506154ad565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526104d2600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa80156108615782906108295761082691506155aa565b506020813d6020116112a4575b8161129260209383614e89565b8101031261085557611217905161120d565b3d9150611285565b816112b691614e89565b61012e57805f6111b3565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576040517f0900000000000000000000000000000000000000000000000000000000000000602082015260018152611328602182614e89565b73ffffffffffffffffffffffffffffffffffffffff601b5416828060405160208101907f70a0823100000000000000000000000000000000000000000000000000000000825284602482015260248152611383604482614e89565b51908273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1506113a96102da6151d1565b506113ed73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc27fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854161760085560075468010000000000000000811015610955576001810180600755811015610928576007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b6009548480611475615997565b61147e81615b34565b9060405195611496876103d660208201958487615195565b7fffffffff000000000000000000000000000000000000000000000000000000006114df8a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b9116908185526020526040842060405160208101906115038161046f8b88866159df565b519020855260205260ff604085205416156118db575b6115418973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b90845260205260408320906040516115628161046f896020830195866159df565b51902083526020526040822054945190875afa5061157e6151d1565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681036108ed57906115b69160051b90615bc2565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108e25786926118a7575b50036108a9578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610881576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915269152d02c7e14af68000006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561089e578391611892575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006008541660085561172f615ae5565b8160095560405190611742606083614e89565b60028252604036602084013773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261176c83614f6f565b52736b175474e89094c44da98b954eedeac495271d0f61178b83614f7c565b5261046f61179a610732614fa0565b6117a383614f6f565b526117ad82614f6f565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b156108815761180b928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401615061565b03925af180156108615761187d575b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526104d26004820152602081602481736b175474e89094c44da98b954eedeac495271d0f5afa80156108615782906108295761082691506155aa565b8161188791614e89565b61012e57805f61181a565b8161189c91614e89565b61089b57815f6116d5565b9091506020813d6020116118d3575b816118c360209383614e89565b810103126108555751905f61162b565b3d91506118b6565b6118e3615cac565b50611519565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760135461192481614f57565b906119326040519283614e89565b80825260138352827f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090602084015b83831061197557604051806101c28782614cb7565b60405161198181614e6d565b825473ffffffffffffffffffffffffffffffffffffffff1681526040516001840180548083529089526020808a20908301918a915b816007840110611bc15784600197946002979460209794611a19945491818110611b8d575b818110611b59575b818110611b25575b818110611af1575b818110611abd575b818110611a89575b818110611a57575b10611a2b575b500382614e89565b83820152815201920192019190611960565b7fffffffff0000000000000000000000000000000000000000000000000000000016815286015f611a11565b828a1b7fffffffff00000000000000000000000000000000000000000000000000000000168452928901928b01611a0b565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611a03565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560601b1681520193016119fb565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016119f3565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016119eb565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560c01b1681520193016119e3565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681520193016119db565b9260016101006008927fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e08201520194019201916119b6565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576040517f0800000000000000000000000000000000000000000000000000000000000000602082015260018152611caf602182614e89565b73ffffffffffffffffffffffffffffffffffffffff601b5416828060405160208101907f70a0823100000000000000000000000000000000000000000000000000000000825284602482015260248152611d0a604482614e89565b519082736b175474e89094c44da98b954eedeac495271d0f5af150611d306102da6151d1565b50611d74736b175474e89094c44da98b954eedeac495271d0f7fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854161760085560075468010000000000000000811015610955576001810180600755811015610928576007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b6009548480611dfc615997565b611e0581615b34565b9060405195611e1d876103d660208201958487615195565b7fffffffff00000000000000000000000000000000000000000000000000000000611e668a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b911690818552602052604084206040516020810190611e8a8161046f8b88866159df565b519020855260205260ff60408520541615612270575b611ec88973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9084526020526040832090604051611ee98161046f896020830195866159df565b51902083526020526040822054945190875afa50611f056151d1565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681036108ed5790611f3d9160051b90615bc2565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108e257869261223c575b50036108a9578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610881576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810191909152670de0b6b3a76400006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561089e578391612227575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854166008556120b4615ae5565b81600955604051906120c7606083614e89565b600282526040366020840137736b175474e89094c44da98b954eedeac495271d0f6120f183614f6f565b5273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261211083614f7c565b5261046f61212f61211f614fa0565b9360405192839160208301614ff8565b61213883614f6f565b5261214282614f6f565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b15610881576121a0928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401615061565b03925af1801561086157612212575b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526104d2600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa8015610861578290610d7a576108269150615336565b8161221c91614e89565b61012e57805f6121af565b8161223191614e89565b61089b57815f61205a565b9091506020813d602011612268575b8161225860209383614e89565b810103126108555751905f611fb2565b3d915061224b565b612278615cac565b50611ea0565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576011546122b981614f57565b906122c76040519283614e89565b808252601183527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c689280602084015b83831061230b57604051806101c28782614df0565b6040518287548060011c906001811680156123d7575b602083108114610b1e578285529081156123965750600114612360575b506001928261235285946020940382614e89565b8152019601920191946122f6565b888552602085208592505b8183106123805750508101602001600161233e565b600181602092548386880101520192019161236b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191506001905061233e565b91607f1691612321565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760125461241c81614f57565b9061242a6040519283614e89565b80825260128352827fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444602084015b83831061246d57604051806101c28782614cb7565b60405161247981614e6d565b825473ffffffffffffffffffffffffffffffffffffffff1681526040516001840180548083529089526020808a20908301918a915b81600784011061251b5784600197946002979460209794612509945491818110611b8d57818110611b5957818110611b2557818110611af157818110611abd57818110611a8957818110611a575710611a2b57500382614e89565b83820152815201920192019190612458565b9260016101006008927fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e08201520194019201916124ae565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760405180916020600e54928381520191600e82527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd915b81811061261f576101c2856101ae81870382614e89565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201612608565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760405180916020600f54928381520191600f82527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802915b8181106126c8576101c2856101ae81870382614e89565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016126b1565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760405180916020600d54928381520191600d82527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5915b818110612771576101c2856101ae81870382614e89565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161275a565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57806040517f0900000000000000000000000000000000000000000000000000000000000000602082015260018152612805602182614e89565b60405190612814606083614e89565b60028252604036602084013773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261283e83614f6f565b52736b175474e89094c44da98b954eedeac495271d0f61285d83614f7c565b5261046f61286c611123614fa0565b61287583614f6f565b5261287f82614f6f565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b15610881576128dd928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401615061565b03925af18015610861576129e5575b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526104d2600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa80156108615782906129b1575b61295091506154ad565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526104d26004820152602081602481736b175474e89094c44da98b954eedeac495271d0f5afa80156108615782906108295761082691506155aa565b506020813d6020116129dd575b816129cb60209383614e89565b81010312610855576129509051612946565b3d91506129be565b816129ef91614e89565b61012e57805f6128ec565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576040517f0800000000000000000000000000000000000000000000000000000000000000602082015260018152612a61602182614e89565b73ffffffffffffffffffffffffffffffffffffffff601b5416828060405160208101907f70a0823100000000000000000000000000000000000000000000000000000000825284602482015260248152612abc604482614e89565b51908273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150612ae26102da6151d1565b50612b2673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc27fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854161760085560075468010000000000000000811015610955576001810180600755811015610928576007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b6009548480612bae615997565b612bb781615b34565b9060405195612bcf876103d660208201958487615195565b7fffffffff00000000000000000000000000000000000000000000000000000000612c188a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b911690818552602052604084206040516020810190612c3c8161046f8b88866159df565b519020855260205260ff60408520541615613012575b612c7a8973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9084526020526040832090604051612c9b8161046f896020830195866159df565b51902083526020526040822054945190875afa50612cb76151d1565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681036108ed5790612cef9160051b90615bc2565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108e2578692612fde575b50036108a9578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610881576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810191909152670de0b6b3a76400006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561089e578391612fc9575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855612e66615ae5565b8160095560405190612e79606083614e89565b60028252604036602084013773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2612ea383614f6f565b52736b175474e89094c44da98b954eedeac495271d0f612ec283614f7c565b5261046f612ed161211f614fa0565b612eda83614f6f565b52612ee482614f6f565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b1561088157612f42928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401615061565b03925af1801561086157612fb4575b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526104d26004820152602081602481736b175474e89094c44da98b954eedeac495271d0f5afa8015610861578290610d7a576108269150615336565b81612fbe91614e89565b61012e57805f612f51565b81612fd391614e89565b61089b57815f612e0c565b9091506020813d60201161300a575b81612ffa60209383614e89565b810103126108555751905f612d64565b3d9150612fed565b61301a615cac565b50612c52565b905034610855575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610855577ff877cb1900000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f464f524b5f55524c00000000000000000000000000000000000000000000000060448201525f81606481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115614a9e575f91614bef575b50602061311391604051809381927f71ee464d000000000000000000000000000000000000000000000000000000008352604060048401526044830190614dad565b6301315410602483015203815f737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015614a9e57614bc0575b50604051610120810181811067ffffffffffffffff821117614b45576040526e22d473030f116ddee9f6b43ac78ba38152602081019073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc282526040810191735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f835260608201905f825260808301907f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f825260a08401905f825260c08501955f875260e086015f81526101008701925f845260405198614f6295868b01978b891067ffffffffffffffff8a1117614b455773ffffffffffffffffffffffffffffffffffffffff8c9a81809a988c6101209f8f849c9a85602093819d82946169a39039511684525116910152511660408c0152511660608a01525160808901525160a0880152511660c0860152511660e084015251166101008201520301905ff08015614a9e5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000601b541617601b556040517fe6a43905000000000000000000000000000000000000000000000000000000008152602081806133376004820190736b175474e89094c44da98b954eedeac495271d0f6020604084019373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281520152565b0381735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f5afa8015614a9e5773ffffffffffffffffffffffffffffffffffffffff915f91614ba1575b50161561412a575b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561012e57806040517f06447d560000000000000000000000000000000000000000000000000000000081526104d26004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561086157614115575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561012e57806040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526104d2600482015269152d02c7e14af68000006024820152818160448183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561086157614100575b508060405160208101907f70a082310000000000000000000000000000000000000000000000000000000082526104d26024820152602481526134b5604482614e89565b51908273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1506134db6102da6151d1565b5061351f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc27fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006008541617600855600754680100000000000000008110156140d35760018101806007558110156140a6576007825260208220016104d280915573ffffffffffffffffffffffffffffffffffffffff600a541660085460e01b60095484806135ab615997565b6135b481615b34565b90604051956135cc876103d660208201958487615195565b7fffffffff000000000000000000000000000000000000000000000000000000006136158973ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b9116908185526020526040842060405160208101906136398161046f8b88866159df565b519020855260205260ff60408520541615614098575b6136778873ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b90845260205260408320906040516136988161046f896020830195866159df565b51902083526020526040822054945190865afa506136b46151d1565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681036108ed57906136ec9160051b90615bc2565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108e2578692614064575b50036108a9578391737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15614060576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915269152d02c7e14af68000006044820152818160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561086157614047575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855613862615ae5565b81600955818060405160208101907f70a08231000000000000000000000000000000000000000000000000000000008252846024820152602481526138a8604482614e89565b519082736b175474e89094c44da98b954eedeac495271d0f5af1506138ce6102da6151d1565b50613912736b175474e89094c44da98b954eedeac495271d0f7fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416176008556007546801000000000000000081101561401a576001810180600755811015613fed576007835260208320015573ffffffffffffffffffffffffffffffffffffffff600a541660085460e01b6009548380613999615997565b6139a281615b34565b90604051956139ba876103d660208201958487615195565b7fffffffff00000000000000000000000000000000000000000000000000000000613a038973ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b911690818552602052604084206040516020810190613a278161046f8b88866159df565b519020855260205260ff60408520541615613fdf575b613a658873ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9084526020526040832090604051613a868161046f896020830195866159df565b51902083526020526040822054945190865afa50613aa26151d1565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168103613fb25790613ada9160051b90615bc2565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa918215613fa7578592613f73575b50036108a9578291737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15613f6f576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915269152d02c7e14af68000006044820152818160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561086157613f5a575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855613c50615ae5565b806009556040517f095ea7b30000000000000000000000000000000000000000000000000000000081526e22d473030f116ddee9f6b43ac78ba360048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201526020816044818573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1801561086157613f3d575b506040517f095ea7b30000000000000000000000000000000000000000000000000000000081526e22d473030f116ddee9f6b43ac78ba360048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015260208160448185736b175474e89094c44da98b954eedeac495271d0f5af1801561086157613f10575b508073ffffffffffffffffffffffffffffffffffffffff601b54166e22d473030f116ddee9f6b43ac78ba33b1561089b57604051907f87517c4500000000000000000000000000000000000000000000000000000000825273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26004830152602482015273ffffffffffffffffffffffffffffffffffffffff604482015265ffffffffffff60648201528181608481836e22d473030f116ddee9f6b43ac78ba35af1801561086157613efb575b5073ffffffffffffffffffffffffffffffffffffffff601b54166e22d473030f116ddee9f6b43ac78ba33b1561089b57604051907f87517c45000000000000000000000000000000000000000000000000000000008252736b175474e89094c44da98b954eedeac495271d0f6004830152602482015273ffffffffffffffffffffffffffffffffffffffff604482015265ffffffffffff60648201528181608481836e22d473030f116ddee9f6b43ac78ba35af1801561086157613eea5750f35b81613ef491614e89565b61012e5780f35b81613f0591614e89565b61012e57805f613e29565b613f319060203d602011613f36575b613f298183614e89565b810190614f3f565b613d69565b503d613f1f565b613f559060203d602011613f3657613f298183614e89565b613cde565b81613f6491614e89565b61012e57805f613bf6565b5050fd5b9091506020813d602011613f9f575b81613f8f60209383614e89565b810103126108555751905f613b4f565b3d9150613f82565b6040513d87823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b613fe7615cac565b50613a3d565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161405191614e89565b61405c57815f613808565b5080fd5b8280fd5b9091506020813d602011614090575b8161408060209383614e89565b810103126108555751905f613761565b3d9150614073565b6140a0615cac565b5061364f565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161410a91614e89565b61012e57805f613471565b8161411f91614e89565b61012e57805f6133ed565b6040517fc9c6539600000000000000000000000000000000000000000000000000000000815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26004820152736b175474e89094c44da98b954eedeac495271d0f60248201526020816044815f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f5af1908115614a9e575f91614b72575b505f806040519273ffffffffffffffffffffffffffffffffffffffff60208501917f70a0823100000000000000000000000000000000000000000000000000000000835216938460248201526024815261420b604482614e89565b51908273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1506142316102da6151d1565b5061427573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc27fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854161760085560075468010000000000000000811015614b45576001810180600755811015614b1857819060075f5260205f20015573ffffffffffffffffffffffffffffffffffffffff600a541660085460e01b906009545f806142ff615997565b61430881615b34565b906040519661434c8861432060208201958487615195565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018a5289614e89565b7fffffffff000000000000000000000000000000000000000000000000000000006143958873ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b9116908185526020526040842060405160208101906143b98161046f8b88866159df565b519020855260205260ff60408520541615614b0a575b6143f78773ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b90845260205260408320906040516144188161046f896020830195866159df565b51902083526020526040822054955190855afa506144346151d1565b7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82168203614add5761446a9160051b90615bc2565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024810184905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa918215614a9e575f92614aa9575b50036108a957737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610855576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915268056bc75e2d6310000060448201525f8160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015614a9e57614a89575b507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854166008556145dc615ae5565b81600955818060405160208101907f70a0823100000000000000000000000000000000000000000000000000000000825284602482015260248152614622604482614e89565b519082736b175474e89094c44da98b954eedeac495271d0f5af1506146486102da6151d1565b5061468c736b175474e89094c44da98b954eedeac495271d0f7fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416176008556007546801000000000000000081101561401a576001810180600755811015613fed5781906007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b6009548480614716615997565b61471f81615b34565b9060405195614737876103d660208201958487615195565b7fffffffff000000000000000000000000000000000000000000000000000000006147808a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b9116908185526020526040842060405160208101906147a48161046f8b88866159df565b519020855260205260ff60408520541615614a7b575b6147e28973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b90845260205260408320906040516148038161046f896020830195866159df565b51902083526020526040822054945190875afa5061481f6151d1565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681036108ed57906148579160051b90615bc2565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108e2578692614a47575b50036108a9578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610881576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915268056bc75e2d631000006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561089e578391614a32575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854166008556149cf615ae5565b81600955803b1561089b578180916004604051809481937ffff6cae90000000000000000000000000000000000000000000000000000000083525af1801561086157614a1d575b505061337b565b81614a2791614e89565b61012e57805f614a16565b81614a3c91614e89565b61089b57815f614975565b9091506020813d602011614a73575b81614a6360209383614e89565b810103126108555751905f6148cc565b3d9150614a56565b614a83615cac565b506147ba565b614a969192505f90614e89565b5f905f614583565b6040513d5f823e3d90fd5b9091506020813d602011614ad5575b81614ac560209383614e89565b810103126108555751905f6144df565b3d9150614ab8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b614b12615cac565b506143cf565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614b94915060203d602011614b9a575b614b8c8183614e89565b810190614f13565b5f6141b0565b503d614b82565b614bba915060203d602011614b9a57614b8c8183614e89565b5f613373565b6020813d602011614be7575b81614bd960209383614e89565b810103126108555751613142565b3d9150614bcc565b90503d805f833e614c008183614e89565b8101906020818303126108555780519067ffffffffffffffff8211610855570181601f8201121561085557805191614c3783614eca565b90614c456040519283614e89565b83825260208484010111610855575f60208461311395828096018386015e8301015291506130d1565b90602080835192838152019201905f5b818110614c8b5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101614c7e565b602081016020825282518091526040820190602060408260051b8501019401915f905b828210614ce957505050505090565b9091929395947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087820301825284516020606081604085019373ffffffffffffffffffffffffffffffffffffffff81511686520151936040838201528451809452019201905f905b808210614d735750505060208060019296019201920190929195939495614cda565b9091926020806001927fffffffff000000000000000000000000000000000000000000000000000000008751168152019401920190614d51565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310614e2257505050505090565b9091929394602080614e5e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951614dad565b97019301930191939290614e13565b6040810190811067ffffffffffffffff821117614b4557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117614b4557604052565b67ffffffffffffffff8111614b4557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b90816020910312610855575190565b90816020910312610855575173ffffffffffffffffffffffffffffffffffffffff811681036108555790565b90816020910312610855575180151581036108555790565b67ffffffffffffffff8111614b455760051b60200190565b805115614b185760200190565b805160011015614b185760400190565b8051821015614b185760209160051b010190565b60408051909190614fb18382614e89565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b828110614fe757505050565b806060602080938501015201614fdb565b9190608061502a5f9260018652670de0b6b3a7640000602087015283604087015260a0606087015260a0860190614c6e565b930152565b9190608061502a600192838652670de0b6b3a764000060208701525f604087015260a0606087015260a0860190614c6e565b9061507490604083526040830190614dad565b906020818303910152815180825260208201916020808360051b8301019401925f915b8383106150a657505050505090565b90919293946020806150e2837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951614dad565b97019301930191939290615097565b9190608061502a600192838652670de0b6b3a764000060208701527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604087015260a0606087015260a0860190614c6e565b9190608061502a5f9260018652670de0b6b3a764000060208701527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604087015260a0606087015260a0860190614c6e565b6004927fffffffff000000000000000000000000000000000000000000000000000000006020931682528051928391018483015e01015f815290565b3d156151fb573d906151e282614eca565b916151f06040519384614e89565b82523d5f602084013e565b606090565b5f5460081c60ff16156152185760ff5f5460081c1690565b5f737109709ecfa91a80626ff3989d68f67f5b1dd12d3b6152365790565b505f8060405160206152fe6004828401737109709ecfa91a80626ff3989d68f67f5b1dd12d81527f6661696c65640000000000000000000000000000000000000000000000000000604086015260408552615292606086614e89565b604051938491818301967f667f9d7000000000000000000000