@uniswap/universal-router
Version:
Smart contracts for Universal Router
1 lines • 353 kB
JSON
{"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":"0x60808060405234602d57600160ff195f5416175f55600160ff19600454161760045561ca8a90816100328239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a9254e414612fc85750806317b2038d146129e15780631e461fa7146127705780631ed7831c146126c75780633e5e3c231461261e5780633f7286f41461257557806366d9a9a0146123b457806385226c81146122515780638b0c757414611c5a578063916a17c6146118fb57806396b973ab1461131257806397d7583e146110915780639e8749d314610e20578063b496473814610b6a578063b5508aa9146109da578063ba414fa614610997578063c3689a14146101f2578063e20c9f71146101315763fa7626d4146100ef575f80fd5b3461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760ff60209154166040519015158152f35b80fd5b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760405180916020600c54928381520191600c82527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7915b8181106101c6576101c2856101ae81870382614dbc565b604051918291602083526020830190614ba1565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610197565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576040517f0900000000000000000000000000000000000000000000000000000000000000602082015260018152610259602182614dbc565b73ffffffffffffffffffffffffffffffffffffffff601d541661033473ffffffffffffffffffffffffffffffffffffffff601b541691848060405160208101907f70a08231000000000000000000000000000000000000000000000000000000008252866024820152602481526102d1604482614dbc565b519082855af1506102f26102e3615104565b60208082518301019101614e37565b5073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416176008556007546801000000000000000081101561096a57600181018060075581101561093d576007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b60095484806103bc6158ca565b6103c581615a67565b9060405195610409876103dd602082019584876150c8565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101895288614dbc565b7fffffffff000000000000000000000000000000000000000000000000000000006104528a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b9116908185526020526040842060405160208101906104a2816104768b8886615912565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282614dbc565b519020855260205260ff6040852054161561092f575b6104e08973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b90845260205260408320906040516105018161047689602083019586615912565b51902083526020526040822054945190875afa5061051d615104565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116810361090257906105559160051b90615af5565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108f75786926108c3575b50036108be578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610896576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915269152d02c7e14af68000006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156108b357839161089b575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854166008556106ce615a18565b81600955604051906106e1606083614dbc565b60028252604036602084013773ffffffffffffffffffffffffffffffffffffffff601d541661070f83614ea2565b5273ffffffffffffffffffffffffffffffffffffffff601c541661073283614eaf565b52610476610751610741614ed3565b9360405192839160208301615076565b61075a83614ea2565b5261076482614ea2565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b15610896576107c2928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401614f94565b03925af1801561087657610881575b50506024602073ffffffffffffffffffffffffffffffffffffffff601c5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa801561087657829061083e575b61083b91506154dd565b80f35b506020813d60201161086e575b8161085860209383614dbc565b8101031261086a5761083b9051610831565b5f80fd5b3d915061084b565b6040513d84823e3d90fd5b8161088b91614dbc565b61012e57805f6107d1565b505050fd5b816108a591614dbc565b6108b057815f610674565b50fd5b6040513d85823e3d90fd5b615948565b9091506020813d6020116108ef575b816108df60209383614dbc565b8101031261086a5751905f6105ca565b3d91506108d2565b6040513d88823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b610937615bdf565b506104b8565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760206109d0615133565b6040519015158152f35b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57601054610a1581614e8a565b90610a236040519283614dbc565b808252601083527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729280602084015b838310610a6757604051806101c28782614d23565b6040518287548060011c90600181168015610b60575b602083108114610b3357828552908115610af25750600114610abc575b5060019282610aae85946020940382614dbc565b815201960192019194610a52565b888552602085208592505b818310610adc57505081016020016001610a9a565b6001816020925483868801015201920191610ac7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b8401909101915060019050610a9a565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b91607f1691610a7d565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57806040517f0800000000000000000000000000000000000000000000000000000000000000602082015260018152610bd2602182614dbc565b60405190610be1606083614dbc565b60028252604036602084013773ffffffffffffffffffffffffffffffffffffffff601c5416610c0f83614ea2565b5273ffffffffffffffffffffffffffffffffffffffff601d5416610c3283614eaf565b52610476610c51610c41614ed3565b9360405192839160208301614f62565b610c5a83614ea2565b52610c6482614ea2565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b1561089657610cc2928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401614f94565b03925af1801561087657610e0b575b50506024602073ffffffffffffffffffffffffffffffffffffffff601c5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa8015610876578290610dd7575b610d3b9150615651565b6024602073ffffffffffffffffffffffffffffffffffffffff601d5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa8015610876578290610da3575b61083b9150615269565b506020813d602011610dcf575b81610dbd60209383614dbc565b8101031261086a5761083b9051610d99565b3d9150610db0565b506020813d602011610e03575b81610df160209383614dbc565b8101031261086a57610d3b9051610d31565b3d9150610de4565b81610e1591614dbc565b61012e57805f610cd1565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57806040517f0800000000000000000000000000000000000000000000000000000000000000602082015260018152610e88602182614dbc565b60405190610e97606083614dbc565b60028252604036602084013773ffffffffffffffffffffffffffffffffffffffff601d5416610ec583614ea2565b5273ffffffffffffffffffffffffffffffffffffffff601c5416610ee883614eaf565b52610476610ef7610c41614ed3565b610f0083614ea2565b52610f0a82614ea2565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b1561089657610f68928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401614f94565b03925af180156108765761107c575b50506024602073ffffffffffffffffffffffffffffffffffffffff601d5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa8015610876578290611048575b610fe19150615651565b6024602073ffffffffffffffffffffffffffffffffffffffff601c5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa8015610876578290610da35761083b9150615269565b506020813d602011611074575b8161106260209383614dbc565b8101031261086a57610fe19051610fd7565b3d9150611055565b8161108691614dbc565b61012e57805f610f77565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57806040517f09000000000000000000000000000000000000000000000000000000000000006020820152600181526110f9602182614dbc565b60405190611108606083614dbc565b60028252604036602084013773ffffffffffffffffffffffffffffffffffffffff601d541661113683614ea2565b5273ffffffffffffffffffffffffffffffffffffffff601c541661115983614eaf565b52610476611178611168614ed3565b9360405192839160208301615024565b61118183614ea2565b5261118b82614ea2565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b15610896576111e9928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401614f94565b03925af18015610876576112fd575b50506024602073ffffffffffffffffffffffffffffffffffffffff601d5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa80156108765782906112c9575b61126291506153e0565b6024602073ffffffffffffffffffffffffffffffffffffffff601c5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa801561087657829061083e5761083b91506154dd565b506020813d6020116112f5575b816112e360209383614dbc565b8101031261086a576112629051611258565b3d91506112d6565b8161130791614dbc565b61012e57805f6111f8565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576040517f0900000000000000000000000000000000000000000000000000000000000000602082015260018152611379602182614dbc565b73ffffffffffffffffffffffffffffffffffffffff601c54166113f173ffffffffffffffffffffffffffffffffffffffff601b541691848060405160208101907f70a08231000000000000000000000000000000000000000000000000000000008252866024820152602481526102d1604482614dbc565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416176008556007546801000000000000000081101561096a57600181018060075581101561093d576007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b60095484806114796158ca565b61148281615a67565b906040519561149a876103dd602082019584876150c8565b7fffffffff000000000000000000000000000000000000000000000000000000006114e38a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b911690818552602052604084206040516020810190611507816104768b8886615912565b519020855260205260ff604085205416156118ed575b6115458973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b90845260205260408320906040516115668161047689602083019586615912565b51902083526020526040822054945190875afa50611582615104565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116810361090257906115ba9160051b90615af5565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108f75786926118b9575b50036108be578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610896576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915269152d02c7e14af68000006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156108b35783916118a4575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855611733615a18565b8160095560405190611746606083614dbc565b60028252604036602084013773ffffffffffffffffffffffffffffffffffffffff601c541661177483614ea2565b5273ffffffffffffffffffffffffffffffffffffffff601d541661179783614eaf565b526104766117a6610741614ed3565b6117af83614ea2565b526117b982614ea2565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b1561089657611817928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401614f94565b03925af180156108765761188f575b50506024602073ffffffffffffffffffffffffffffffffffffffff601d5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa801561087657829061083e5761083b91506154dd565b8161189991614dbc565b61012e57805f611826565b816118ae91614dbc565b6108b057815f6116d9565b9091506020813d6020116118e5575b816118d560209383614dbc565b8101031261086a5751905f61162f565b3d91506118c8565b6118f5615bdf565b5061151d565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760135461193681614e8a565b906119446040519283614dbc565b80825260138352827f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090602084015b83831061198757604051806101c28782614bea565b60405161199381614da0565b825473ffffffffffffffffffffffffffffffffffffffff1681526040516001840180548083529089526020808a20908301918a915b816007840110611bd35784600197946002979460209794611a2b945491818110611b9f575b818110611b6b575b818110611b37575b818110611b03575b818110611acf575b818110611a9b575b818110611a69575b10611a3d575b500382614dbc565b83820152815201920192019190611972565b7fffffffff0000000000000000000000000000000000000000000000000000000016815286015f611a23565b828a1b7fffffffff00000000000000000000000000000000000000000000000000000000168452928901928b01611a1d565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611a15565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301611a0d565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301611a05565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016119fd565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560c01b1681520193016119f5565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681520193016119ed565b9260016101006008927fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e08201520194019201916119c8565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576040517f0800000000000000000000000000000000000000000000000000000000000000602082015260018152611cc1602182614dbc565b73ffffffffffffffffffffffffffffffffffffffff601d5416611d3973ffffffffffffffffffffffffffffffffffffffff601b541691848060405160208101907f70a08231000000000000000000000000000000000000000000000000000000008252866024820152602481526102d1604482614dbc565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416176008556007546801000000000000000081101561096a57600181018060075581101561093d576007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b6009548480611dc16158ca565b611dca81615a67565b9060405195611de2876103dd602082019584876150c8565b7fffffffff00000000000000000000000000000000000000000000000000000000611e2b8a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b911690818552602052604084206040516020810190611e4f816104768b8886615912565b519020855260205260ff60408520541615612243575b611e8d8973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9084526020526040832090604051611eae8161047689602083019586615912565b51902083526020526040822054945190875afa50611eca615104565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681036109025790611f029160051b90615af5565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108f757869261220f575b50036108be578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610896576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810191909152670de0b6b3a76400006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156108b35783916121fa575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855612079615a18565b816009556040519061208c606083614dbc565b60028252604036602084013773ffffffffffffffffffffffffffffffffffffffff601d54166120ba83614ea2565b5273ffffffffffffffffffffffffffffffffffffffff601c54166120dd83614eaf565b526104766120fc6120ec614ed3565b9360405192839160208301614f2b565b61210583614ea2565b5261210f82614ea2565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b156108965761216d928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401614f94565b03925af18015610876576121e5575b50506024602073ffffffffffffffffffffffffffffffffffffffff601c5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa8015610876578290610da35761083b9150615269565b816121ef91614dbc565b61012e57805f61217c565b8161220491614dbc565b6108b057815f61201f565b9091506020813d60201161223b575b8161222b60209383614dbc565b8101031261086a5751905f611f77565b3d915061221e565b61224b615bdf565b50611e65565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760115461228c81614e8a565b9061229a6040519283614dbc565b808252601183527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c689280602084015b8383106122de57604051806101c28782614d23565b6040518287548060011c906001811680156123aa575b602083108114610b33578285529081156123695750600114612333575b506001928261232585946020940382614dbc565b8152019601920191946122c9565b888552602085208592505b81831061235357505081016020016001612311565b600181602092548386880101520192019161233e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b8401909101915060019050612311565b91607f16916122f4565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576012546123ef81614e8a565b906123fd6040519283614dbc565b80825260128352827fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444602084015b83831061244057604051806101c28782614bea565b60405161244c81614da0565b825473ffffffffffffffffffffffffffffffffffffffff1681526040516001840180548083529089526020808a20908301918a915b8160078401106124ee57846001979460029794602097946124dc945491818110611b9f57818110611b6b57818110611b3757818110611b0357818110611acf57818110611a9b57818110611a695710611a3d57500382614dbc565b8382015281520192019201919061242b565b9260016101006008927fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920191612481565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760405180916020600e54928381520191600e82527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd915b8181106125f2576101c2856101ae81870382614dbc565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016125db565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760405180916020600f54928381520191600f82527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802915b81811061269b576101c2856101ae81870382614dbc565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201612684565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e5760405180916020600d54928381520191600d82527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5915b818110612744576101c2856101ae81870382614dbc565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161272d565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e57806040517f09000000000000000000000000000000000000000000000000000000000000006020820152600181526127d8602182614dbc565b604051906127e7606083614dbc565b60028252604036602084013773ffffffffffffffffffffffffffffffffffffffff601c541661281583614ea2565b5273ffffffffffffffffffffffffffffffffffffffff601d541661283883614eaf565b52610476612847611168614ed3565b61285083614ea2565b5261285a82614ea2565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b15610896576128b8928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401614f94565b03925af18015610876576129cc575b50506024602073ffffffffffffffffffffffffffffffffffffffff601c5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa8015610876578290612998575b61293191506153e0565b6024602073ffffffffffffffffffffffffffffffffffffffff601d5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa801561087657829061083e5761083b91506154dd565b506020813d6020116129c4575b816129b260209383614dbc565b8101031261086a576129319051612927565b3d91506129a5565b816129d691614dbc565b61012e57805f6128c7565b503461012e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012e576040517f0800000000000000000000000000000000000000000000000000000000000000602082015260018152612a48602182614dbc565b73ffffffffffffffffffffffffffffffffffffffff601c5416612ac073ffffffffffffffffffffffffffffffffffffffff601b541691848060405160208101907f70a08231000000000000000000000000000000000000000000000000000000008252866024820152602481526102d1604482614dbc565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416176008556007546801000000000000000081101561096a57600181018060075581101561093d576007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b6009548480612b486158ca565b612b5181615a67565b9060405195612b69876103dd602082019584876150c8565b7fffffffff00000000000000000000000000000000000000000000000000000000612bb28a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b911690818552602052604084206040516020810190612bd6816104768b8886615912565b519020855260205260ff60408520541615612fba575b612c148973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9084526020526040832090604051612c358161047689602083019586615912565b51902083526020526040822054945190875afa50612c51615104565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681036109025790612c899160051b90615af5565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108f7578692612f86575b50036108be578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610896576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810191909152670de0b6b3a76400006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156108b3578391612f71575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855612e00615a18565b8160095560405190612e13606083614dbc565b60028252604036602084013773ffffffffffffffffffffffffffffffffffffffff601c5416612e4183614ea2565b5273ffffffffffffffffffffffffffffffffffffffff601d5416612e6483614eaf565b52610476612e736120ec614ed3565b612e7c83614ea2565b52612e8682614ea2565b5073ffffffffffffffffffffffffffffffffffffffff601b541691823b1561089657612ee4928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401614f94565b03925af1801561087657612f5c575b50506024602073ffffffffffffffffffffffffffffffffffffffff601d5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa8015610876578290610da35761083b9150615269565b81612f6691614dbc565b61012e57805f612ef3565b81612f7b91614dbc565b6108b057815f612da6565b9091506020813d602011612fb2575b81612fa260209383614dbc565b8101031261086a5751905f612cfe565b3d9150612f95565b612fc2615bdf565b50612bec565b90503461086a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261086a577ff877cb1900000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f464f524b5f55524c00000000000000000000000000000000000000000000000060448201525f81606481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156149d1575f91614b22575b5060206130bb91604051809381927f71ee464d000000000000000000000000000000000000000000000000000000008352604060048401526044830190614ce0565b6301315410602483015203815f737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156149d157614af3575b5060405161121d908181019080821067ffffffffffffffff831117614a78578061b838928484833903905ff080156149d15773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000601c541617601c55604051918083019083821067ffffffffffffffff831117614a78578392833903905ff080156149d15773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000601d541617601d55604051610120810181811067ffffffffffffffff821117614a78576040526e22d473030f116ddee9f6b43ac78ba38152602081019073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc282526040810191735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f835260608201905f825260808301907f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f825260a08401905f825260c08501955f875260e086015f81526101008701925f845260405198614f6295868b01978b891067ffffffffffffffff8a1117614a785773ffffffffffffffffffffffffffffffffffffffff8c9a81809a988c6101209f8f849c9a85602093819d82946168d69039511684525116910152511660408c0152511660608a01525160808901525160a0880152511660c0860152511660e084015251166101008201520301905ff080156149d157601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055601c54601d546040517fe6a43905000000000000000000000000000000000000000000000000000000008152918316600483018190529216602482018190529190602081604481735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f5afa80156149d15773ffffffffffffffffffffffffffffffffffffffff915f91614ad4575b501615614110575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561012e57806040517f06447d560000000000000000000000000000000000000000000000000000000081526104d26004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610876576140fb575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561012e57806040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526104d2600482015269152d02c7e14af68000006024820152818160448183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610876576140e6575b505061353373ffffffffffffffffffffffffffffffffffffffff601c5416828060405160208101907f70a082310000000000000000000000000000000000000000000000000000000082526104d26024820152602481526102d1604482614dbc565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006008541617600855600754680100000000000000008110156140b957600181018060075581101561408c576007825260208220016104d280915573ffffffffffffffffffffffffffffffffffffffff600a541660085460e01b60095484806135bf6158ca565b6135c881615a67565b90604051956135e0876103dd602082019584876150c8565b7fffffffff000000000000000000000000000000000000000000000000000000006136298973ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b91169081855260205260408420604051602081019061364d816104768b8886615912565b519020855260205260ff6040852054161561407e575b61368b8873ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b90845260205260408320906040516136ac8161047689602083019586615912565b51902083526020526040822054945190865afa506136c8615104565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116810361090257906137009160051b90615af5565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108f757869261404a575b50036108be578391737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15614046576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915269152d02c7e14af68000006044820152818160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156108765761402d575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855613876615a18565b816009556138d873ffffffffffffffffffffffffffffffffffffffff601d5416838060405160208101907f70a08231000000000000000000000000000000000000000000000000000000008252866024820152602481526102d1604482614dbc565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854161760085560075468010000000000000000811015614000576001810180600755811015613fd3576007835260208320015573ffffffffffffffffffffffffffffffffffffffff600a541660085460e01b600954838061395f6158ca565b61396881615a67565b9060405195613980876103dd602082019584876150c8565b7fffffffff000000000000000000000000000000000000000000000000000000006139c98973ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b9116908185526020526040842060405160208101906139ed816104768b8886615912565b519020855260205260ff60408520541615613fc5575b613a2b8873ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9084526020526040832090604051613a4c8161047689602083019586615912565b51902083526020526040822054945190865afa50613a68615104565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168103613f985790613aa09160051b90615af5565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa918215613f8d578592613f59575b50036108be578291737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15613ee1576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915269152d02c7e14af68000006044820152818160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561087657613f44575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855613c16615a18565b8060095580602073ffffffffffffffffffffffffffffffffffffffff601c54166044604051809481937f095ea7b30000000000000000000000000000000000000000000000000000000083526e22d473030f116ddee9f6b43ac78ba360048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1801561087657613f27575b5080602073ffffffffffffffffffffffffffffffffffffffff601d54166044604051809481937f095ea7b30000000000000000000000000000000000000000000000000000000083526e22d473030f116ddee9f6b43ac78ba360048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1801561087657613efa575b508073ffffffffffffffffffffffffffffffffffffffff601c541673ffffffffffffffffffffffffffffffffffffffff601b5416906e22d473030f116ddee9f6b43ac78ba33b15613ee1576040517f87517c4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529181166024830152604482015265ffffffffffff60648201528181608481836e22d473030f116ddee9f6b43ac78ba35af1801561087657613ee5575b5073ffffffffffffffffffffffffffffffffffffffff601d541673ffffffffffffffffffffffffffffffffffffffff601b5416906e22d473030f116ddee9f6b43ac78ba33b15613ee1576040517f87517c4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529181166024830152604482015265ffffffffffff60648201528181608481836e22d473030f116ddee9f6b43ac78ba35af1801561087657613ed05750f35b81613eda91614dbc565b61012e5780f35b5050fd5b81613eef91614dbc565b61012e57805f613e05565b613f1b9060203d602011613f20575b613f138183614dbc565b810190614e72565b613d3b565b503d613f09565b613f3f9060203d602011613f2057613f138183614dbc565b613caa565b81613f4e91614dbc565b61012e57805f613bbc565b9091506020813d602011613f85575b81613f7560209383614dbc565b8101031261086a5751905f613b15565b3d9150613f68565b6040513d87823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b613fcd615bdf565b50613a03565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161403791614dbc565b61404257815f61381c565b5080fd5b8280fd5b9091506020813d602011614076575b8161406660209383614dbc565b8101031261086a5751905f613775565b3d9150614059565b614086615bdf565b50613663565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b816140f091614dbc565b61012e57805f6134d1565b8161410591614dbc565b61012e57805f61344d565b6040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152911660248201526020816044815f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f5af19081156149d1575f91614aa5575b506141fd73ffffffffffffffffffffffffffffffffffffffff601c54165f806040519473ffffffffffffffffffffffffffffffffffffffff60208701917f70a082310000000000000000000000000000000000000000000000000000000083521695866024820152602481526102d1604482614dbc565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854161760085560075468010000000000000000811015614a78576001810180600755811015614a4b57819060075f5260205f20015573ffffffffffffffffffffffffffffffffffffffff600a541660085460e01b906009545f806142876158ca565b61429081615a67565b90604051966142d4886142a8602082019584876150c8565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018a5289614dbc565b7fffffffff0000000000000000000000000000000000000000000000000000000061431d8873ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b911690818552602052604084206040516020810190614341816104768b8886615912565b519020855260205260ff60408520541615614a3d575b61437f8773ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b90845260205260408320906040516143a08161047689602083019586615912565b51902083526020526040822054955190855afa506143bc615104565b7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82168203614a10576143f29160051b90615af5565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024810184905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156149d1575f926149dc575b50036108be57737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561086a576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915268056bc75e2d6310000060448201525f8160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156149d1576149bc575b507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855614564615a18565b816009556145c673ffffffffffffffffffffffffffffffffffffffff601d5416838060405160208101907f70a08231000000000000000000000000000000000000000000000000000000008252866024820152602481526102d1604482614dbc565b6370a082317fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600854161760085560075468010000000000000000811015614000576001810180600755811015613fd35781906007845260208420015573ffffffffffffffffffffffffffffffffffffffff600a54169060085460e01b60095484806146506158ca565b61465981615a67565b9060405195614671876103dd602082019584876150c8565b7fffffffff000000000000000000000000000000000000000000000000000000006146ba8a73ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b9116908185526020526040842060405160208101906146de816104768b8886615912565b519020855260205260ff604085205416156149ae575b61471c8973ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b908452602052604083209060405161473d8161047689602083019586615912565b51902083526020526040822054945190875afa50614759615104565b907f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116810361090257906147919160051b90615af5565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810183905290602082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108f757869261497a575b50036108be578392737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610896576040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481019190915268056bc75e2d631000006044820152828160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156108b3578391614965575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000600a5416600a557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060085416600855614909615a18565b81600955803b156108b0578180916004604051809481937ffff6cae90000000000000000000000000000000000000000000000000000000083525af1801561087657156133d9578161495a91614dbc565b61012e57805f6133d9565b8161496f91614dbc565b6108b057815f6148af565b9091506020813d6020116149a6575b8161499660209383614dbc565b8101031261086a5751905f614806565b3d9150614989565b6149b6615bdf565b506146f4565b6149c99192505f90614dbc565b5f905f61450b565b6040513d5f823e3d90fd5b9091506020813d602011614a08575b816149f860209383614dbc565b8101031261086a5751905f614467565b3d91506149eb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b614a45615bdf565b50614357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614ac7915060203d602011614acd575b614abf8183614dbc565b810190614e46565b5f614186565b503d614ab5565b614aed915060203d602011614acd57614abf8183614dbc565b5f6133d1565b6020813d602011614b1a575b81614b0c60209383614dbc565b8101031261086a57516130ea565b3d9150614aff565b90503d805f833e614b338183614dbc565b81019060208183031261086a5780519067ffffffffffffffff821161086a570181601f8201121561086a57805191614b6a83614dfd565b90614b786040519283614dbc565b8382526020848401011161086a575f6020846130bb95828096018386015e830101529150613079565b90602080835192838152019201905f5b818110614bbe5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101614bb1565b602081016020825282518091526040820190602060408260051b8501019401915f905b828210614c1c57505050505090565b9091929395947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087820301825284516020606081604085019373ffffffffffffffffffffffffffffffffffffffff81511686520151936040838201528451809452019201905f905b808210614ca65750505060208060019296019201920190929195939495614c0d565b9091926020806001927fffffffff000000000000000000000000000000000000000000000000000000008751168152019401920190614c84565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310614d5557505050505090565b9091929394602080614d91837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951614ce0565b97019301930191939290614d46565b6040810190811067ffffffffffffffff821117614a7857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117614a7857604052565b67ffffffffffffffff8111614a7857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9081602091031261086a575190565b9081602091031261086a575173ffffffffffffffffffffffffffffffffffffffff8116810361086a5790565b9081602091031261086a5751801515810361086a5790565b67ffffffffffffffff8111614a785760051b60200190565b805115614a4b5760200190565b805160011015614a4b5760400190565b8051821015614a4b5760209160051b010190565b60408051909190614ee48382614dbc565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b828110614f1a57505050565b806060602080938501015201614f0e565b91906080614f5d5f9260018652670de0b6b3a7640000602087015283604087015260a0606087015260a0860190614ba1565b930152565b91906080614f5d600192838652670de0b6b3a764000060208701525f604087015260a0606087015260a0860190614ba1565b90614fa790604083526040830190614ce0565b906020818303910152815180825260208201916020808360051b8301019401925f915b838310614fd957505050505090565b9091929394602080615015837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951614ce0565b97019301930191939290614fca565b91906080614f5d600192838652670de0b6b3a764000060208701527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604087015260a0606087015260a0860190614ba1565b91906080614f5d5f9260018652670de0b6b3a764000060208701527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604087015260a0606087015260a0860190614ba1565b6004927fffffffff000000000000000000000000000000000000000000000000000000006020931682528051928391018483015e01015f815290565b3d1561512e573d9061511582614dfd565b916151236040519384614dbc565b82523d5f602084013e565b606090565b5f5460081c60ff161561514b5760ff5f5460081c1690565b5f737109709ecfa91a80626ff3989d68f67f5b1dd12d3b6151695790565b505f8060405160206152316004828401737109709ecfa91a80626ff3989d68f67f5b1dd12d81527f6661696c656400000000000000000000000000000000000000000000000000006040860152604085526151c5606086614dbc565b604051938491818301967f667f9d70000000000000000000000000000000000000000000000000000000008852518091602485015e8201018281018781525003017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282614dbc565b519082737109709ecfa91a80626ff3989d68f67f5b1dd12d5af150615266615257615104565b60208082518301019101614e72565b90565b69152d02c7e14af680000081111561527e5750565b6153667fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8917f41304facd9323d