From 735dc376d9053b9f70afb3e3d377730c54eca91f Mon Sep 17 00:00:00 2001 From: Dan Cline <6798349+Rjected@users.noreply.github.com> Date: Sat, 14 Dec 2024 20:32:57 -0500 Subject: [PATCH] chore: put snailtracer and analysis contracts in files (#1911) * chore: put snailtracer and analysis contracts in files * make clippy happy --- bins/revme/src/cmd/bench/analysis.hex | 1 + bins/revme/src/cmd/bench/analysis.rs | 10 +++++----- .../src/cmd/bench/burntpix/bytecode_four.hex | 1 + .../src/cmd/bench/burntpix/bytecode_one.hex | 1 + .../src/cmd/bench/burntpix/bytecode_three.hex | 1 + .../src/cmd/bench/burntpix/bytecode_two.hex | 1 + .../revme/src/cmd/bench/burntpix/static_data.rs | 17 +++++++++-------- bins/revme/src/cmd/bench/snailtracer.hex | 1 + bins/revme/src/cmd/bench/snailtracer.rs | 2 +- 9 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 bins/revme/src/cmd/bench/analysis.hex create mode 100644 bins/revme/src/cmd/bench/burntpix/bytecode_four.hex create mode 100644 bins/revme/src/cmd/bench/burntpix/bytecode_one.hex create mode 100644 bins/revme/src/cmd/bench/burntpix/bytecode_three.hex create mode 100644 bins/revme/src/cmd/bench/burntpix/bytecode_two.hex create mode 100644 bins/revme/src/cmd/bench/snailtracer.hex diff --git a/bins/revme/src/cmd/bench/analysis.hex b/bins/revme/src/cmd/bench/analysis.hex new file mode 100644 index 0000000000..e5331af6c4 --- /dev/null +++ b/bins/revme/src/cmd/bench/analysis.hex @@ -0,0 +1 @@ +6060604052341561000f57600080fd5b604051610dd1380380610dd18339810160405280805190602001909190805182019190602001805190602001909190805182019190505083600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008190555082600390805190602001906100a79291906100e3565b5081600460006101000a81548160ff021916908360ff16021790555080600590805190602001906100d99291906100e3565b5050505050610188565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061012457805160ff1916838001178555610152565b82800160010185558215610152579182015b82811115610151578251825591602001919060010190610136565b5b50905061015f9190610163565b5090565b61018591905b80821115610181576000816000905550600101610169565b5090565b90565b610c3a806101976000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b4578063095ea7b31461014257806318160ddd1461019c57806323b872dd146101c557806327e235e31461023e578063313ce5671461028b5780635c658165146102ba57806370a082311461032657806395d89b4114610373578063a9059cbb14610401578063dd62ed3e1461045b575b600080fd5b34156100bf57600080fd5b6100c76104c7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101075780820151818401526020810190506100ec565b50505050905090810190601f1680156101345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014d57600080fd5b610182600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610565565b604051808215151515815260200191505060405180910390f35b34156101a757600080fd5b6101af610657565b6040518082815260200191505060405180910390f35b34156101d057600080fd5b610224600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061065d565b604051808215151515815260200191505060405180910390f35b341561024957600080fd5b610275600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108f7565b6040518082815260200191505060405180910390f35b341561029657600080fd5b61029e61090f565b604051808260ff1660ff16815260200191505060405180910390f35b34156102c557600080fd5b610310600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610922565b6040518082815260200191505060405180910390f35b341561033157600080fd5b61035d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610947565b6040518082815260200191505060405180910390f35b341561037e57600080fd5b610386610990565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c65780820151818401526020810190506103ab565b50505050905090810190601f1680156103f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561040c57600080fd5b610441600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a2e565b604051808215151515815260200191505060405180910390f35b341561046657600080fd5b6104b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b87565b6040518082815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561072e5750828110155b151561073957600080fd5b82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156108865782600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b60016020528060005260406000206000915090505481565b600460009054906101000a900460ff1681565b6002602052816000526040600020602052806000526040600020600091509150505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a265780601f106109fb57610100808354040283529160200191610a26565b820191906000526020600020905b815481529060010190602001808311610a0957829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a7e57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a72305820df254047bc8f2904ad3e966b6db116d703bebd40efadadb5e738c836ffc8f58a0029 diff --git a/bins/revme/src/cmd/bench/analysis.rs b/bins/revme/src/cmd/bench/analysis.rs index 3eacf5e2a7..10d64842bc 100644 --- a/bins/revme/src/cmd/bench/analysis.rs +++ b/bins/revme/src/cmd/bench/analysis.rs @@ -2,16 +2,16 @@ use database::BenchmarkDB; use revm::{ bytecode::Bytecode, handler::EthHandler, - primitives::{address, bytes, hex, Bytes, TxKind}, + primitives::{address, bytes, Bytes, TxKind}, Context, MainEvm, }; use std::time::Instant; -pub fn run() { - let contract_data : Bytes = hex::decode( "6060604052341561000f57600080fd5b604051610dd1380380610dd18339810160405280805190602001909190805182019190602001805190602001909190805182019190505083600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008190555082600390805190602001906100a79291906100e3565b5081600460006101000a81548160ff021916908360ff16021790555080600590805190602001906100d99291906100e3565b5050505050610188565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061012457805160ff1916838001178555610152565b82800160010185558215610152579182015b82811115610151578251825591602001919060010190610136565b5b50905061015f9190610163565b5090565b61018591905b80821115610181576000816000905550600101610169565b5090565b90565b610c3a806101976000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b4578063095ea7b31461014257806318160ddd1461019c57806323b872dd146101c557806327e235e31461023e578063313ce5671461028b5780635c658165146102ba57806370a082311461032657806395d89b4114610373578063a9059cbb14610401578063dd62ed3e1461045b575b600080fd5b34156100bf57600080fd5b6100c76104c7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101075780820151818401526020810190506100ec565b50505050905090810190601f1680156101345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014d57600080fd5b610182600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610565565b604051808215151515815260200191505060405180910390f35b34156101a757600080fd5b6101af610657565b6040518082815260200191505060405180910390f35b34156101d057600080fd5b610224600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061065d565b604051808215151515815260200191505060405180910390f35b341561024957600080fd5b610275600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108f7565b6040518082815260200191505060405180910390f35b341561029657600080fd5b61029e61090f565b604051808260ff1660ff16815260200191505060405180910390f35b34156102c557600080fd5b610310600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610922565b6040518082815260200191505060405180910390f35b341561033157600080fd5b61035d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610947565b6040518082815260200191505060405180910390f35b341561037e57600080fd5b610386610990565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c65780820151818401526020810190506103ab565b50505050905090810190601f1680156103f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561040c57600080fd5b610441600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a2e565b604051808215151515815260200191505060405180910390f35b341561046657600080fd5b6104b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b87565b6040518082815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561072e5750828110155b151561073957600080fd5b82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156108865782600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b60016020528060005260406000206000915090505481565b600460009054906101000a900460ff1681565b6002602052816000526040600020602052806000526040600020600091509150505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a265780601f106109fb57610100808354040283529160200191610a26565b820191906000526020600020905b815481529060010190602001808311610a0957829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a7e57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a72305820df254047bc8f2904ad3e966b6db116d703bebd40efadadb5e738c836ffc8f58a0029").unwrap().into(); +const CONTRACT_DATA: Bytes = Bytes::from_static(include_str!("analysis.hex").as_bytes()); - let bytecode_raw = Bytecode::new_raw(contract_data.clone()); - let bytecode_analysed = Bytecode::new_raw(contract_data); +pub fn run() { + let bytecode_raw = Bytecode::new_raw(CONTRACT_DATA.clone()); + let bytecode_analysed = Bytecode::new_raw(CONTRACT_DATA); // BenchmarkDB is dummy state that implements Database trait. let context = Context::builder() diff --git a/bins/revme/src/cmd/bench/burntpix/bytecode_four.hex b/bins/revme/src/cmd/bench/burntpix/bytecode_four.hex new file mode 100644 index 0000000000..15371136b0 --- /dev/null +++ b/bins/revme/src/cmd/bench/burntpix/bytecode_four.hex @@ -0,0 +1 @@ +60806040526004361015610011575f80fd5b5f3560e01c80634594229c146106865780638cd8db8a146100b15763f3ccaac01461003a575f80fd5b346100ad575f3660031901126100ad57610052610ac3565b604092919251928391606083528351918260608501525f5b8381106100955750608094505f85848601015260208401526040830152601f80199101168101030190f35b6020868201810151608089840101528795500161006a565b5f80fd5b346100ad5760603660031901126100ad576001546004359060443590602435906001600160a01b0316156100ad578060035581600455026101056100fc6100f78361094c565b6108e0565b9180835261094c565b602082019190601f19013683375167ffffffffffffffff918282116105e757600160401b82116105e75760055482600555808310610646575b5060055f525f5b828110610612575050604051916080830191508111828210176105e757604052600381525f5b606081106105fb5750805190600160401b82116105e757600a5482600a55808310610554575b50602001600a5f525f80516020611a418339815191525f915b83831061053657845f620f424060011d620f4240806101d1620f423f198460011b01611a34565b810302055b600383106103b457600a54846101ee6100f78361094c565b9180835260208301600a5f525f80516020611a418339815191525f915b83831061033957858561021c610906565b5f5b83601482106103245750506102316108bf565b60c89060c881526119008036602084013761024a6108bf565b9060c882523660208301375f60208501935b8082106102f357505060809495506102738261178d565b61027c8161178d565b61028f61028883610a60565b5192610a71565b5161029c61028883610a60565b519280820383850381136102db575b506006556007556008556009558151600b5551600c556040810151600d556060810151600e550151600f55600255005b939290920160011d9260011d808401930391886102ab565b90956103028689600193610cab565b96865161030f8287610a82565b52855161031c8286610a82565b52019061025c565b826103329160019395610cab565b920161021e565b600a602060019261034861089e565b855481528486015483820152600286015460408201526003860154606082015260048601546080820152600586015460a0820152600686015460c0820152600786015460e08201526008860154610100820152600986015461012082015281520192019201919061020b565b9091926103bf6109b7565b5061040f6104056103fb6103f16103e76103e06103da6109b7565b96611a0d565b8752611a0d565b6020870152611a0d565b6040860152611a0d565b6060850152611a0d565b6080840152611a0d565b60a0830152600160401b6001675851f42d4c957f2d92830208916101688360201c07603c90620f4240610450620f423f19621e848085848602050701611a34565b8103870205918112156104e9575084905f5b60028705880390810161010085015290810160e08401520160c0820152601a600160401b60018486020860201c06610120820152600a548610156104d557600192600160401b926104ca8593600a5f52600a8a025f80516020611a41833981519152016109fd565b0208930191906101d6565b634e487b7160e01b5f52603260045260245ffd5b60788112156104fa5750845f610462565b60b481121561050c5750845f91610462565b60f081121561051e57505f9085610462565b61012c131561052e575f85610462565b5f8591610462565b600a60208261054860019451866109fd565b019201920191906101aa565b80600a0290600a8204036105d35782600a02600a810484036105d3575f80516020611a4183398151915291820191015b8181106105915750610191565b805f600a92555f60018201555f60028201555f60038201555f60048201555f60058201555f60068201555f60078201555f60088201555f600982015501610584565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b6020906106066109b7565b8282850101520161016b565b60019060208351930192817f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0015501610145565b827f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091820191015b81811061067b575061013e565b5f815560010161066e565b346100ad5760203660031901126100ad576001546001600160a01b0316156100ad5760035460045490600654916007549060085490600954926106c7610906565b93600a54966106d86100f78961094c565b9780895260208901600a5f525f80516020611a418339815191525f915b8383106108155750505050600254965f955b600435871061073c578751600b556020880151600c556040880151600d556060880151600e556080880151600f556002899055005b90919293949597610750888b600193610cab565b9888518581139081159161080a575b5080156107fc575b80156107ee575b6107e957836107888a8a866020818c039301510302610964565b0261079a86890386888d510302610964565b016107be60408b015160c01b60608c015160801b0160808c015160401b0191610982565b620f4240829392549160031b9282841c0101821b915f19901b19161790555b01959493929190610707565b6107dd565b50602089015186131561076e565b508260208a01511315610767565b90508713158c61075f565b600a602060019261082b9d9798999a9b9d61089e565b855481528486015483820152600286015460408201526003860154606082015260048601546080820152600586015460a0820152600686015460c0820152600786015460e082015260088601546101008201526009860154610120820152815201920192019190999796959493996106f5565b60405190610140820182811067ffffffffffffffff8211176105e757604052565b60405190611920820182811067ffffffffffffffff8211176105e757604052565b6040519190601f01601f1916820167ffffffffffffffff8111838210176105e757604052565b6040519060a0820182811067ffffffffffffffff8211176105e75760405281600b548152600c546020820152600d546040820152600e5460608201526080600f54910152565b67ffffffffffffffff81116105e75760051b60200190565b811561096e570490565b634e487b7160e01b5f52601260045260245ffd5b6005548110156104d55760055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905f90565b6109bf61089e565b905f82525f60208301525f60408301525f60608301525f60808301525f60a08301525f60c08301525f60e08301525f6101008301525f610120830152565b90610120600991805184556020810151600185015560408101516002850155606081015160038501556080810151600485015560a0810151600585015560c0810151600685015560e0810151600785015561010081015160088501550151910155565b8051600a10156104d5576101600190565b805160be10156104d5576117e00190565b80518210156104d55760209160051b010190565b67ffffffffffffffff81116105e757601f01601f191660200190565b9081518110156104d5570160200190565b600380549160045491828402908482048414851517156105d357808202918083048214901517156105d357610afa6100f783610a96565b91808352610b0a601f1991610a96565b013660208401375f805b858110610c4e57508015610c4757610b2b90611809565b8015610c3f575b5f5b858110610b4357505050929190565b5f5b878110610b555750600101610b34565b8088830201610b6381610982565b905490861b1c67ffffffffffffffff91868684841680610b8c575b505050505050600101610b45565b610b9581611809565b60ff9083610bab8460c08a901c84028502610964565b90610bb591610964565b9784610bcb8560808b901c841685028602610964565b90610bd591610964565b9760401c16020290610be691610964565b90610bf091610964565b91029260ff60f81b80938160f893841b165f1a610c0d878d610ab2565b53821b165f1a610c20600186018b610ab2565b531b165f1a90600201610c339087610ab2565b535f8080868682610b7e565b506001610b32565b5050929190565b5f5b878110610c605750600101610b14565b67ffffffffffffffff610c76828a850201610982565b905490861b1c16808410610c8e575b50600101610c50565b92506001610c85565b811561096e570590565b811561096e570790565b9091600160401b60018181675851f42d4c957f2d958602089160209083968051801561096e5785841c06610cde91610a82565b519585875195815190620f424097868b0191825193888601809d8b8d808451998a98828881604089019c8d51950205920205010195606085015102059060808401998a510205019860a08301998a51018094528481526040810190815160c085015101831c926060820190815160e087015101811c9260800190815161010088015101901c90525252610120015180610dda575b5050505050505050505050505080516305f5e0ff19808212918215610dcc575b508115610dc1575b508015610db3575b610dab57505090565b5f8092525290565b506305f5e100825113610da2565b90508251125f610d9a565b6305f5e1001291505f610d92565b808c03610e195750505050505050505050505050610df881516118ae565b610e0283516118ae565b835281525b5f808080808080808080808080610d72565b60028103610e6d57505050505050505050505050610e5a82518280865180028380020105918215610e63575b610e5191839102610c97565b92855102610c97565b83528152610e07565b9091508190610e45565b60038103610ec457505050505050505050505050610e958183518551800290800201056118ae565b610ea781800264e8d4a510000361187d565b908351918551848382028386020105875202910203058152610e07565b60048103610f1f57505050505050505050505090610e5a90610eee8451865180029080020161187d565b908115610f17575b50610f0a8185518751808201910302610c97565b928451901b855102610c97565b90505f610ef6565b60058103610f535750505050505050505050505050610f418151835190611914565b610e5a8251845180029080020161187d565b60068103610fbd57505050505050505050505050610f748251845190611914565b90610f878351855180029080020161187d565b610fb2610fa48284610f9a8288016118ae565b82020595036118ae565b800264e8d4a510000361187d565b020583528152610e07565b6007810361102157505050505050505050505050610fde8251845190611914565b610ffd82610ff48551875180029080020161187d565b809302056118ae565b908261101183800264e8d4a510000361187d565b825f030205855202058152610e07565b60088103611087575050505050505050505050506110428251845190611914565b6110656110578451865180029080020161187d565b92622fefd8938402056118ae565b908261107983800264e8d4a510000361187d565b820205855202058152610e07565b6009810361110f57505050505050505050505050610e5a6110ab8351855190611914565b6110bd8451865180029080020161187d565b908115611107575b6110ce906118ae565b9264e8d4a510006110ff83836110e7888002850361187d565b936110ff6110f4846118ae565b91828002900361187d565b940102610c97565b8391506110c5565b600a8103611189575050505050505050505050506111308251845190611914565b906111438351855180029080020161187d565b91821561117f575b611154906118ae565b91611173818361116c86800264e8d4a510000361187d565b9502610c97565b92020583528152610e07565b909150819061114b565b600b8103611200575050505050505050505050506111aa8251845190611914565b906111c66111c08451865180029080020161187d565b926118ae565b8164e8d4a51000916111f26111e76111e1838002860361187d565b966118ae565b93848002900361187d565b020592020583528152610e07565b600c810361127857505050505050505050505050506112228151835190611914565b6112496112378351855180029080020161187d565b6112428184016118ae565b92036118ae565b9061125d64e8d4a51000928002830361187d565b90808002029080800202908282820305855201058152610e07565b9b9e98999a9b600d81145f146113035750505050505050506112d993929185910208958380885f941c16146112f8575b6112d16112b88651885190611914565b916112cb8751895180029080020161187d565b0261187d565b931d016118ae565b6112eb81800264e8d4a510000361187d565b8202910283528152610e07565b622fefd891506112a8565b989e98600e819c979b95989c999699145f146113735750505050505050505050505081515f8112155f1461134e57508251905f8212611344575b5050610e07565b1d82525f8061133d565b83519091905f811261136757508251901b825250610e07565b811d84521b8152610e07565b600f819d98999a9b9c9d145f146113fb5750505050505050508290518002059384156113f1575b8290518002059384156113e7575b6113ce6113bf6113c46113bf8694858c5102610c97565b6118ae565b9683895102610c97565b9486519251020501928551925102050183528152610e07565b91935083916113a8565b919350839161139a565b6010919395979b5080929496989c9950145f1461145e575050505050505050610e5a919250806114338551875180029080020161187d565b01908115611456575b61144b82828851871b02610c97565b938551901b02610c97565b90508061143c565b969896601181036114935750505050505050506114816113bf86516003026119cf565b92816113ce6113bf87516003026119cf565b979896976012810361151b5750505050505050509080809351800205918215611512575b826114d8816114ce88518a5180029080020161187d565b931b828401610ca1565b03928203020501906114f06113bf8451865190611914565b8161150382800264e8d4a510000361187d565b84020592020583528152610e07565b915080916114b7565b969796601381036115b3575050505050505061157d90622fefd8945164e8d4a51000958187920202059081156115ab575b81811d92839161155f89518b5190611914565b901d9261157489518b5180029080020161187d565b95518401610ca1565b131561159d57611591916111e791036118ae565b02059083528152610e07565b611591916111e791016118ae565b84915061154c565b601491939597999a50809294969850145f1461161357505050505050509080610e5a916115e88551875180029080020161187d565b0190811561160b575b61160082828751871b02610c97565b938651901b02610c97565b9050806115f1565b60158103611665575050505050505050610e5a825182623d0900818751800284800201050191821561165b575b61164f91839160021b02610c97565b92855160021b02610c97565b9091508190611640565b601681036116875750505050505050505061168081516118ae565b8152610e07565b601781036116f05750505050505050506116dc6116a484516118ae565b826116b782800264e8d4a510000361187d565b9182156116e6575b6116cb91839102610c97565b926116d685516118ae565b02610c97565b9083528152610e07565b90915081906116bf565b6018819c9495969799989c145f14611729575050505090878181869486020880940208961d92838388831c070386521c07038152610e07565b9350945094955097506019915014611744575b505050610e07565b82918183920290800203058002058015611786575b801561096e5761176f9064e8d4a510000561187d565b8251845182028390058552020581525f808061173c565b5080611759565b80515f5b81811061179d57505050565b60018082015b8381106117b4575050600101611791565b81906117c08487610a82565b516117cb8288610a82565b51126117d8575b016117a3565b6117e28187610a82565b516117ed8588610a82565b516117f88389610a82565b526118038588610a82565b526117d2565b5f905b6216e36081101561186a57600190620f423f190181815b600a8410611832575050505090565b90918060028596611844839786610964565b0193620f424093849102049361185c86890186610964565b900396019493920204611823565b9062062fd9600391019160011b0461180c565b90600180830160011d90835b84831261189557505050565b91935090836118a48183610c97565b01821d9190611889565b905f91625fdfb0809107905f821261190d575b50600260018181845b8386136118d957505050505050565b9091929364e8d4a510008280889a6118f489869b8902610c97565b019a0202059594600185018502029301915f03906118ca565b015f6118c1565b91908215806119c7575b6119c1575f9061192d84611a34565b61193682611a34565b80821384146119a95761199191620f42406119519202610c97565b620f42409081808280020581808080612cc81985020561caee018402056201c41019018302056202f2d3018202056205131719010205620f422601020590565b622fefd860011d03935b02126119a357565b905f0390565b61195190620f42406119bb9302610c97565b9361199b565b505f9150565b50801561191e565b6119db6119ff916118ae565b6119ed81800264e8d4a510000361187d565b908115611a02575b620f424002610c97565b90565b620f424091506119f5565b6001600160401b91675851f42d4c957f2d020890621e8480602083901c07620f423f190190565b5f81136119ff575f039056fec65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8a2646970667358221220b3f2fe21ac0faf4ab1951c6297ccc37675d0c82e067ed2dd736ca86eeb03ebe164736f6c63430008170033 diff --git a/bins/revme/src/cmd/bench/burntpix/bytecode_one.hex b/bins/revme/src/cmd/bench/burntpix/bytecode_one.hex new file mode 100644 index 0000000000..0ae2fbc55b --- /dev/null +++ b/bins/revme/src/cmd/bench/burntpix/bytecode_one.hex @@ -0,0 +1 @@ +60806040526004361015610011575f80fd5b5f3560e01c63d85fe4b414610024575f80fd5b346100925760603660031901126100925767ffffffffffffffff60043581811161009257366023820112156100925780600401359182116100925736602483830101116100925761008e9161008291604435916024803592016103ee565b604051918291826100b7565b0390f35b5f80fd5b5f5b8381106100a75750505f910152565b8181015183820152602001610098565b604091602082526100d78151809281602086015260208686019101610096565b601f01601f1916010190565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761011357604052565b6100e3565b90601f8019910116810190811067ffffffffffffffff82111761011357604052565b67ffffffffffffffff811161011357601f01601f191660200190565b60405190610163826100f7565b60208083523683820137565b906101798261013a565b6101866040519182610118565b8281528092610197601f199161013a565b0190602036910137565b604051906060820182811067ffffffffffffffff82111761011357604052603c82527f74683d22313522206865696768743d223135222072783d2232222f3e000000006040837f3c726563742069643d22702220783d222d31352220793d222d3135222077696460208201520152565b9061022460209282815194859201610096565b0190565b60206102699193929360405194816102498793518092868087019101610096565b820161025d82518093868085019101610096565b01038085520183610118565b565b60405190610278826100f7565b601082526f181899199a1a9b1b9c1cb0b131b232b360811b6020830152565b634e487b7160e01b5f52603260045260245ffd5b908210156102b7570190565b610297565b9081518110156102b7570160200190565b9693909897949195929560405199888b9951908160208c0191602001916102f392610096565b8901711e3ab9b290343932b31e9111b811103c1e9160711b60208201528151918260328301916020019161032692610096565b016411103c9e9160d91b603282015260370161034191610211565b68222066696c6c3d222360b81b8152956001600160f81b03191660098701526001600160f81b031916600a8601526001600160f81b031916600b8501526001600160f81b031916600c8401526001600160f81b031916600d8301526001600160f81b031916600e8201526211179f60e91b600f82015203600d19810183526012016102699083610118565b604051906103d9826100f7565b60068252651e17b9bb339f60d11b6020830152565b91909161040361011c6036868502020161016f565b9361042b61042261041483866105a2565b61041c6101a1565b90610228565b602087016106fd565b93909461043661026b565b5f94859160105b86881061047957505050505050505061047692916104606104669261041c6103cc565b906106fd565b90829003601f1901825290610228565b90565b5f60105b87821061049457505060106001910197019661043d565b949a90998b6104a48189886102ab565b3560f81c6104b6600183018a896102ab565b3560f81c916104c9906002018a896102ab565b3560f81c906104d78961079c565b926104e18761079c565b600492600f91826104f683871c82168d6102bc565b516001600160f81b031916921661050d908c6102bc565b516001600160f81b0319169280878d8261052b898b1c8216836102bc565b516001600160f81b0319169816610541916102bc565b516001600160f81b031916971c16610559908d6102bc565b516001600160f81b0319169616610570908c6102bc565b516001600160f81b03191696610585986102cd565b61058e916106fd565b99909a60030194601001906001019061047d565b601960016104769260041b01926106cb60016105bd8661079c565b9260041b01600a6106b66105e26105dc6105d68561079c565b9961079c565b9361079c565b92607f604051998a977f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323060208a01527f30302f737667222076657273696f6e3d22312e31222076696577426f783d223060408a01526201018160ed1b60608a015261065781518092602060638d019101610096565b8801600160fd1b6063820152610677825180936020606485019101610096565b0161111f60f11b60648201526106af606682017f3c7265637420783d22302220793d2230222077696474683d22000000000000009052565b0190610211565b6911103432b4b3b43a1e9160b11b81526106af565b7f222072783d2233222066696c6c3d2223323032303230222f3e00000000000000815203600619810184520182610118565b91909160208084018451918260051c905f5b82811061076b5750505050601f1916808451039061072c8261016f565b945f5b83811061073e57505050509190565b6001906001600160f81b0319610756858301856102bc565b51165f1a610764828a6102bc565b530161072f565b83518652948101949281019260010161070f565b6040519061078c826100f7565b60018252600360fc1b6020830152565b8015610832576107aa610156565b90805f915b61080357506107bd8161016f565b915f5b8281106107cd5750505090565b6001906107f06107e28286035f1901856102bc565b516001600160f81b03191690565b5f1a6107fc82876102bc565b53016107c0565b90600a80830692048161082c6001839492019460ff60f81b9060300160f81b165f1a91866102bc565b536107af565b5061047661077f56fea26469706673582212202620cded94f0cf54cc3df219c4b7a2d33ca1cff9b87da504fdd707bc8b7d38e464736f6c63430008170033 diff --git a/bins/revme/src/cmd/bench/burntpix/bytecode_three.hex b/bins/revme/src/cmd/bench/burntpix/bytecode_three.hex new file mode 100644 index 0000000000..b6b0cc46a9 --- /dev/null +++ b/bins/revme/src/cmd/bench/burntpix/bytecode_three.hex @@ -0,0 +1 @@ +60806040526004361015610011575f80fd5b5f3560e01c6354f6127f14610024575f80fd5b3461005b57602036600319011261005b5761005761004360043561014b565b604051918291602083526020830190610080565b0390f35b5f80fd5b5f5b8381106100705750505f910152565b8181015183820152602001610061565b906020916100998151809281855285808601910161005f565b601f01601f1916010190565b6040810190811067ffffffffffffffff8211176100c157604052565b634e487b7160e01b5f52604160045260245ffd5b6060810190811067ffffffffffffffff8211176100c157604052565b6020810190811067ffffffffffffffff8211176100c157604052565b90601f8019910116810190811067ffffffffffffffff8211176100c157604052565b67ffffffffffffffff81116100c157601f01601f191660200190565b7f2abb082c1b23ea79fce2a9e934ecb19ce15738b1483c365d0125f47e8ccc7dfc8114610855577fef285b02a4f711ad84793f73cc8ed6fea8af7013ece8132dacb7b33f6bce93da81146106d5577f708e7b881795f2e6b6c2752108c177ec89248458de3bf69d0d43480b3e5034e6811461069f577feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c811461067e577fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18114610658577f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568114610637577fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3811461061f577f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e146102985760405161028e816100f1565b5f81525f36813790565b6102a06110e5565b805160208201206102af61085e565b906102b990610a2f565b6102c1610937565b926102cb90610af9565b6040516102d7816100a5565b6013815272227d5d5d2c2261747472696275746573223a5b60681b6020820190815260105461030590610c7c565b60115461031190610e26565b9060125461031e90610f13565b9260135461032b90610f13565b9460405196610339886100a5565b6003885260208801625d7d7d60e81b90526040519a8b9960208b019b8c81516020819301916103679261005f565b8b016020810161060f60f31b90528151918260228301916020019161038b9261005f565b01815191826022830191602001916103a29261005f565b01602281017f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000905281519182603c830191602001916103e09261005f565b0190519182603c83016103f29261005f565b01603c81017f7b226b6579223a22497465726174696f6e73222c2274797065223a226e756d6290526b32b91116113b30b63ab2911d60a11b605c820152815191826068830191602001916104459261005f565b0160688101611f4b60f21b9052606a81017f7b226b6579223a2247617355736564222c2274797065223a22737472696e672290526916113b30b63ab2911d1160b11b608a820152815191826094830191602001916104a29261005f565b019062089f4b60ea1b91826094820152609781017f7b226b6579223a22466565734275726e74222c2274797065223a22737472696e90526b339116113b30b63ab2911d1160a11b60b78201528151918260c3830191602001916105049261005f565b019060c382015260c681017f7b226b6579223a225469707350616964222c2274797065223a22737472696e6790526a1116113b30b63ab2911d1160a91b60e68201528151918260f18301916020019161055c9261005f565b0161227d60f01b60f18201528151918260f38301916020019161057e9261005f565b010360d38101835260f301610593908361010d565b815181206040515f602082015263379abe3560e11b6022820152600160f51b602682015260288101919091527f646174613a6170706c69636174696f6e2f6a736f6e3b636861727365743d5554604882015263118b4e0b60e21b606882015291518291610606908290606c85019061005f565b810103604c81018252606c0161061c908261010d565b90565b50604051600260208201526020815261061c816100a5565b50604051610644816100a5565b6004815263084a092b60e31b602082015290565b50604051610665816100a5565b6009815268084eae4dce840a0d2f60bb1b602082015290565b5060405161068b816100a5565b60048152632936598960e21b602082015290565b505f546bffffffffffffffffffffffff19806040519260601b1660208301523060601b1660348201526034815261061c816100d5565b506106de6110e5565b8051602090818301206106ef61085e565b906106f990610a2f565b610701610937565b9361070b90610af9565b604051610717816100a5565b600681528481019165227d5d5d7d7d60d01b8352604051968794878087018881995192839101916107479261005f565b860188810161060f60f31b9052815191828a602284019201916107699261005f565b0181519182896022840192019161077f9261005f565b01602281017f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000090528151918288603c84019201916107bc9261005f565b0190519182603c83016107ce9261005f565b0103601c81018452603c016107e3908461010d565b825181209260405193849384015f90526022840163379abe3560e11b9052600160f51b60268501526028840152604883017f646174613a6170706c69636174696f6e2f6a736f6e3b636861727365743d555490526068830163118b4e0b60e21b9052519081606c84016106069261005f565b5061061c6110e5565b6040519060c0820182811067ffffffffffffffff8211176100c1576040908152609383527f7b224c5350344d65746164617461223a7b226c696e6b73223a5b7b2275726c2260208401527f3a2268747470733a2f2f6275726e747069782e636f6d227d5d2c22696d616765908301527f73223a5b5b7b227769647468223a3736382c22686569676874223a3736382c2260608301527f766572696669636174696f6e223a7b226d6574686f64223a226b656363616b326080830152721a9b14313cba32b9949116113230ba30911d1160691b60a0830152565b60405190610944826100a5565b600a825269113e96113ab936111d1160b11b6020830152565b9081602091031261005b57516001600160a01b038116810361005b5790565b3d156109a6573d9061098d8261012f565b9161099b604051938461010d565b82523d5f602084013e565b606090565b60208183031261005b5780519067ffffffffffffffff821161005b570181601f8201121561005b5780516109de8161012f565b926109ec604051948561010d565b8184526020828401011161005b5761061c916020808501910161005f565b908151811015610a1b570160200190565b634e487b7160e01b5f52603260045260245ffd5b6040805191610a3d836100a5565b601083526020926f181899199a1a9b1b9c1cb0b131b232b360811b6020820152604051610a69816100f1565b5f8152935f935b818510610a7f57505050505090565b9091929394600190610aee60228789601f0360031b1c9260ff60f81b610aba600f82610ab0828960041c168d610a0a565b511696168a610a0a565b51169386519482610ad487945180928c808801910161005f565b83019189830152602182015203600281018452018261010d565b950193929190610a70565b805115610c6957604051610b0c816100d5565b604081527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208201527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f604082015281519160029260028101809111610c5557600390819004600281901b94906001600160fe1b03811603610c55579290610bad610b978661012f565b95610ba5604051978861010d565b80875261012f565b6020860190601f190136823793839284518501935b848110610c02575050505050600390510680600114610bf057600214610be6575090565b603d905f19015390565b50603d90815f19820153600119015390565b8360049197929394959701918251600190603f9082828260121c16880101518453828282600c1c16880101518385015382828260061c168801015188850153168501015186820153019593929190610bc2565b634e487b7160e01b5f52601160045260245ffd5b50604051610c76816100f1565b5f815290565b8015610d3d57604051610c8e816100a5565b6020815260203681830137815f925b610d0e5750610cab8261012f565b91610cb9604051938461010d565b808352601f19610cc88261012f565b013660208501375f5b818110610cde5750505090565b6001906001600160f81b0319610cf98285035f190186610a0a565b51165f1a610d078287610a0a565b5301610cd1565b91600a808406930481610d376001839492019560ff60f81b9060300160f81b165f1a9185610a0a565b53610c9d565b50604051610d4a816100a5565b60018152600360fc1b602082015290565b602190610dbf9294936040519582610d7d88945180926020808801910161005f565b8301601760f91b6020820152610d9c825180936020888501910161005f565b01610db0825180936020878501910161005f565b0103600181018552018361010d565b565b602290610dbf9294936040519582610de388945180926020808801910161005f565b83016102e360f41b6020820152610e03825180936020888501910161005f565b01610e17825180936020878501910161005f565b0103600281018552018361010d565b620f4240808210610f0957633b9aca0080831015610e9e5750604051610e4b816100a5565b60018152604d60f81b602082015290612710818406049204915b600a811015610e8957610e83610e7d61061c94610c7c565b91610c7c565b90610dc1565b610e98610e7d61061c94610c7c565b90610d5b565b905064e8d4a5100080831015610eda5750604051610ebb816100a5565b60018152602160f91b6020820152906298968081840604920491610e65565b9050604051610ee8816100a5565b60018152601560fa1b6020820152906402540be40081840604920491610e65565b5061061c90610c7c565b6103e88082106110a257620f424080831015610f695750604051610f36816100a5565b60048152634b57656960e01b602082015290600a81840604920491600a811015610e8957610e83610e7d61061c94610c7c565b9050633b9aca0080831015610fa65750604051610f85816100a5565b60048152634d57656960e01b60208201529061271081840604920491610e65565b905064e8d4a5100080831015610fe55750604051610fc3816100a5565b60048152634757656960e01b6020820152906298968081840604920491610e65565b905066038d7ea4c680008083101561102a5750604051611004816100a5565b60058152641856a98b2b60db1b60208201528183049290916402540be400910604610e65565b9050670de0b6b3a76400008083101561106f575060405161104a816100a5565b60048152630da98b2b60e31b6020820152906509184e72a00081840604920491610e65565b905060405161107d816100a5565b6003815262098b2b60eb1b602082015290662386f26fc1000081840604920491610e65565b506110ac90610c7c565b61061c6023604051836110c982955180926020808601910161005f565b81016257656960e81b602082015203600381018452018261010d565b600154604080516355afdbcb60e11b81526020926001600160a01b03919084908290600490829086165afa908115611258575f918291829161123b575b5084516303cf32ab60e61b8782019081526004825290611141816100a5565b51915af49161114e61097c565b921561005b57836111698482806004975183010191016109ab565b9260015416825194858092630c543fdb60e11b82525afa92831561123157915f939184938493611202575b506111df6003549160045490519283916111c68a840196633617f92d60e21b8852606060248601526084850190610080565b916044840152606483015203601f19810183528261010d565b51915afa6111eb61097c565b901561005b578161061c92825183010191016109ab565b611223919350863d881161122a575b61121b818361010d565b81019061095d565b915f611194565b503d611211565b50513d5f823e3d90fd5b6112529150863d881161122a5761121b818361010d565b5f611122565b83513d5f823e3d90fdfea2646970667358221220d754235277b87b31b8acce280204f2b5f322de96296361221743109844254a7c64736f6c63430008170033 diff --git a/bins/revme/src/cmd/bench/burntpix/bytecode_two.hex b/bins/revme/src/cmd/bench/burntpix/bytecode_two.hex new file mode 100644 index 0000000000..94951018e0 --- /dev/null +++ b/bins/revme/src/cmd/bench/burntpix/bytecode_two.hex @@ -0,0 +1 @@ +608060408181526004918236101562000016575f80fd5b5f925f3560e01c91826318a87fb6146200051a575081638c72c54e14620004f0578163a4de9ab4146200007f575063ab5fb7961462000053575f80fd5b346200007b57816003193601126200007b57905490516001600160a01b039091168152602090f35b5080fd5b828434620004d05781600319360112620004d05782359063ffffffff8216809203620004d0576024908351946103f19586810167ffffffffffffffff9782821089831117620004de57908291620005af833903905ff0918215620004d4575f546001600160a01b0393841695908416863b15620004d0578751906302b41d8760e51b8252848201525f818781838b5af18015620004c657620004b0575b508360015416863b15620003665787519063218d3ebf60e01b82528482015282818781838b5af18015620003925790839162000498575b50508360025416863b156200036657875190632b18342560e01b82528482015282818781838b5af18015620003925790839162000480575b505086516151df808201908282108b831117620004485789918391620009a083398581526020998a82015203019083f080156200047657841690813b15620003665787519063d35e29d760e01b8252338583015286820152828160448183865af1801562000392579083916200045e575b505086516351d930f960e11b8152338482015282818781855afa90811562000392578391620003ae575b508051156200039c5786015190803b15620003665782809160448a518094819363ea25558360e01b8352878a8401528b358c8401525af1801562000392579083916200037a575b5090838851809681936303cf32ab60e61b8352165afa9384156200036e578194620002c3575b8651868152855181880181905288908290620002b5818385018b8d016200053f565b601f01601f19168101030190f35b90919293503d8083863e620002d981866200058b565b840193858186031262000366578051908882116200036a57019284601f85011215620003665783519788116200035557505084519262000323601f8801601f19168601856200058b565b868452848784010111620003525750620002b59462000348918480850191016200053f565b8480808062000293565b80fd5b634e487b7160e01b83526041905281fd5b8280fd5b8380fd5b508551903d90823e3d90fd5b620003859062000562565b6200007b5781896200026d565b88513d85823e3d90fd5b634e487b7160e01b8352603284528583fd5b90503d8084833e620003c181836200058b565b81019087818303126200036a578051908a82116200045a57019080601f830112156200036a578151918a831162000448578260051b908a5193620004088b8401866200058b565b84528980850192820101928311620004445789809101915b8383106200043357505050508962000226565b82518152918101918a910162000420565b8580fd5b634e487b7160e01b8552604186528785fd5b8480fd5b620004699062000562565b6200007b578189620001fc565b87513d84823e3d90fd5b6200048b9062000562565b6200007b5781896200018b565b620004a39062000562565b6200007b57818962000153565b620004bd91925062000562565b5f90886200011c565b88513d5f823e3d90fd5b5f80fd5b85513d5f823e3d90fd5b85604185634e487b7160e01b5f52525ffd5b8234620004d0575f366003190112620004d05760025490516001600160a01b039091168152602090f35b34620004d0575f366003190112620004d0576001546001600160a01b03168152602090f35b5f5b838110620005515750505f910152565b818101518382015260200162000541565b67ffffffffffffffff81116200057757604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117620005775760405256fe6080806040523461005a575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3610392908161005f8239f35b5f80fdfe60808060405260049081361015610014575f80fd5b5f3560e01c90816318a87fb6146102e257508063218d3ebf1461029e5780632b1834251461025a5780635683b0e014610216578063715018a6146101bf5780638c72c54e146101975780638da5cb5b14610170578063ab5fb796146101485763f2fde38b14610081575f80fd5b34610144576020366003190112610144576001600160a01b0381358181169290839003610144576100b0610305565b82156100f157505f54826001600160601b0360a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b60849060206040519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b5f80fd5b34610144575f366003190112610144576001546040516001600160a01b039091168152602090f35b34610144575f366003190112610144575f546040516001600160a01b039091168152602090f35b34610144575f366003190112610144576003546040516001600160a01b039091168152602090f35b34610144575f366003190112610144576101d7610305565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b503461014457602036600319011261014457356001600160a01b0381169081900361014457610243610305565b6001600160601b0360a01b60015416176001555f80f35b503461014457602036600319011261014457356001600160a01b0381169081900361014457610287610305565b6001600160601b0360a01b60035416176003555f80f35b503461014457602036600319011261014457356001600160a01b03811690819003610144576102cb610305565b6001600160601b0360a01b60025416176002555f80f35b34610144575f366003190112610144576002546001600160a01b03168152602090f35b5f546001600160a01b0316330361031857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea2646970667358221220fe8ff964d09f9b014997308dd60006e6d4f5b368483a50e476a998f6c718631b64736f6c634300081700336080346200100457601f620051df38819003918201601f19168301916001600160401b038311848410176200100857808492604094855283398101031262001004576200005a6020620000528362001038565b920162001038565b90604051916200006a836200101c565b6009835268084eae4dce840a0d2f60bb1b60208401526040516200008e816200101c565b60049384825263084a092b60e31b6020830152331562000ff3575f546001600160a01b0381163381900362000fb6575b5050604051620000ce816200101c565b858152632936598960e21b60208201527feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c90815f52600160205260405f20815160018060401b03811162000fa3578154600181811c9116801562000f98575b602082101462000f8557601f811162000f3b575b506020601f821160011462000eda5791815f80516020620051bf833981519152949262000190945f91620008a7575b508160011b915f199060031b1c19161790555b604051918291826200104d565b0390a25f805160206200511f8339815191525f52600160205280517f2a367ae1ac46d529739aa27ac74856f860e70af05d3642d18ba60fd5d32a069a906001600160401b03811162000ec7578154600181811c9116801562000ebc575b602082101462000ea957601f811162000e5f575b506020601f821160011462000ded57925f80516020620051bf83398151915292826200025d935f805160206200511f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a25f805160206200517f8339815191525f52600160205280517f83b322886c7b7e25779e5d38e06e005c9e7aba1e1267ce9210cf24e31833535a906001600160401b03811162000c50578154600181811c9116801562000de2575b602082101462000c3257601f811162000d98575b506020601f821160011462000d2657925f80516020620051bf83398151915292826200032a935f805160206200517f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a2604051600260208201526020815262000346816200101c565b5f805160206200513f8339815191525f52600160205280517ff73b01b344a9bb3b96525b0cb731f6b14cde20ce6cecea8459266944490b411f906001600160401b03811162000c50578154600181811c9116801562000d1b575b602082101462000c3257601f811162000cd5575b506020601f821160011462000c6357925f80516020620051bf833981519152928262000410935f805160206200513f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a260405160026020820152602081526200042c816200101c565b5f805160206200515f8339815191525f52600160205280517f01f5eb934e794ddcc86b89a579078013860f8fe92140885511742594f219ad0b906001600160401b03811162000c50578154600181811c9116801562000c45575b602082101462000c3257601f811162000bec575b506020601f821160011462000b7a57925f80516020620051bf8339815191529282620004f6935f805160206200515f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a260098054610100600160a81b03191660089290921b610100600160a81b03169190911790556040516200052c816200101c565b60108152600160801b6020808301919091525f805160206200519f8339815191525f526001905280517fde5f0adbf2cf136848982dd95860bdc3e6d8709a8a51ce1295c645c6da617db7906001600160401b03811162000aa4578154600181811c9116801562000b6f575b602082101462000a8657601f811162000b29575b506020601f821160011462000ab757925f80516020620051bf833981519152928262000607935f805160206200519f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a2604051606082901b6001600160601b03191660208201526014815262000630816200101c565b6f0452f40ece91b521d65a03607aecad0560821b5f52600160205280517fadf994b8d5b80a46660e628eabff2156c328d301fe5ea8e44cf09dee1b43e512906001600160401b03811162000aa4578154600181811c9116801562000a99575b602082101462000a8657601f811162000a40575b50806020601f8211600114620009d8575f91620009cc575b508160011b915f199060031b1c19161790555b5f80516020620051bf83398151915260405180620007016f0452f40ece91b521d65a03607aecad0560821b94826200104d565b0390a260405169036f42f57aecc15a72ed60b51b60208083019182525f602a84015260609390931b6001600160601b031916602c83015291815262000746816200101c565b5190519060208110620009ba575b5060405162000763816200101c565b601481526324871b3d60e01b60208201525f805160206200515f8339815191528214620009a9575f805160206200511f8339815191528203620007b1576040516385c169bd60e01b81528390fd5b5f805160206200517f8339815191528203620007d857604051630eceab6760e31b81528390fd5b5f805160206200513f8339815191528203620007ff57604051634ef6d7fb60e01b81528390fd5b5f8281526001602052604090208151936001600160401b0385116200099657815490600182811c921680156200098b575b6020831014620009785750601f81116200092e575b50602093601f8111600114620008b35790816200089493925f80516020620051bf83398151915295965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a26040516140889081620010978239f35b90508301515f62000170565b601f198116825f5260205f20905f5b818110620009155750916001915f80516020620051bf8339815191529697826200089497969510620008fc575b5050811b01905562000183565b8501515f1960f88460031b161c191690555f80620008ef565b85880151835560209788019760019093019201620008c2565b815f5260205f20601f860160051c810191602087106200096d575b601f0160051c01905b81811062000961575062000845565b5f815560010162000952565b909150819062000949565b602290634e487b7160e01b5f525260245ffd5b91607f169162000830565b604190634e487b7160e01b5f525260245ffd5b604051631b32400560e11b81528390fd5b5f199060200360031b1b165f62000754565b90508301515f620006bb565b9150825f5260205f205f925b601f198316841062000a27576001935082601f1981161062000a0e575b5050811b019055620006ce565b8501515f1960f88460031b161c191690555f8062000a01565b85810151825560209384019360019092019101620009e4565b825f5260205f20601f830160051c81016020841062000a7e575b601f830160051c8201811062000a72575050620006a3565b5f815560010162000a5a565b508062000a5a565b602286634e487b7160e01b5f525260245ffd5b90607f16906200068f565b604185634e487b7160e01b5f525260245ffd5b825f5260205f20905f5b601f198416811062000b105750926001835f805160206200519f83398151915296935f80516020620051bf833981519152966200060796601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000ac1565b825f5260205f20601f830160051c81016020841062000b67575b601f830160051c8201811062000b5b575050620005ab565b5f815560010162000b43565b508062000b43565b90607f169062000597565b825f5260205f20905f5b601f198416811062000bd35750926001835f805160206200515f83398151915296935f80516020620051bf83398151915296620004f696601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000b84565b825f5260205f20601f830160051c81016020841062000c2a575b601f830160051c8201811062000c1e5750506200049a565b5f815560010162000c06565b508062000c06565b602287634e487b7160e01b5f525260245ffd5b90607f169062000486565b604186634e487b7160e01b5f525260245ffd5b825f5260205f20905f5b601f198416811062000cbc5750926001835f805160206200513f83398151915296935f80516020620051bf833981519152966200041096601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000c6d565b825f5260205f20601f830160051c81016020841062000d13575b601f830160051c8201811062000d07575050620003b4565b5f815560010162000cef565b508062000cef565b90607f1690620003a0565b825f5260205f20905f5b601f198416811062000d7f5750926001835f805160206200517f83398151915296935f80516020620051bf833981519152966200032a96601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000d30565b825f5260205f20601f830160051c8101916020841062000dd7575b601f0160051c01905b81811062000dcb5750620002ce565b5f815560010162000dbc565b909150819062000db3565b90607f1690620002ba565b825f5260205f20905f5b601f198416811062000e465750926001835f805160206200511f83398151915296935f80516020620051bf833981519152966200025d96601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000df7565b825f5260205f20601f830160051c8101916020841062000e9e575b601f0160051c01905b81811062000e92575062000201565b5f815560010162000e83565b909150819062000e7a565b602288634e487b7160e01b5f525260245ffd5b90607f1690620001ed565b604187634e487b7160e01b5f525260245ffd5b601f19821690835f5260205f20915f5b81811062000f22575092620001909492600192825f80516020620051bf833981519152989610620008fc575050811b01905562000183565b9192602060018192868a01518155019401920162000eea565b825f5260205f20601f830160051c8101916020841062000f7a575b601f0160051c01905b81811062000f6e575062000141565b5f815560010162000f5f565b909150819062000f56565b60228a634e487b7160e01b5f525260245ffd5b90607f16906200012d565b604189634e487b7160e01b5f525260245ffd5b33907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36001600160a01b03191633175f90815580620000be565b6040516306b620db60e21b81528590fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176200100857604052565b51906001600160a01b03821682036200100457565b602080825282518183018190529093925f5b8281106200108157505060409293505f838284010152601f8019910116010190565b8181018601518482016040015285016200105f56fe608060405260043610156200002f575b361562000029576200002136620020df565b602081519101f35b620020a1565b5f3560e01c806301ffc9a7146200027f57806302329a29146200027957806316e023b3146200027357806318160ddd146200026d5780631d26fce61462000267578063217b227014620002615780632a3654a4146200025b578063382bf015146200025557806340339a1e146200024f57806348d0528a146200024957806349a6078d1462000243578063511b6952146200023d57806354f6127f14620002375780635c975abb14620002315780636963d438146200022b57806370a082311462000225578063715018a6146200021f578063723a213014620002195780637e87632c14620002135780637f23690c146200020d57806386a10ddd14620002075780638da5cb5b146200020157806392a91a3a14620001fb5780639790242114620001f5578063a3b261f214620001ef578063be9f0e6f14620001e9578063c9d658f014620001e3578063d35e29d714620001dd578063d6c1407c14620001d7578063db8c966314620001d1578063dedff9c614620001cb578063ea25558314620001c55763f2fde38b036200000f5762001715565b620016f2565b62001659565b62001579565b6200152a565b62001405565b620012f5565b620011ec565b62001180565b620010a9565b6200107d565b62001054565b62000eca565b62000e6b565b62000dbf565b62000c20565b62000bbc565b62000b80565b62000b11565b62000aed565b62000ac9565b62000a63565b62000974565b620008ec565b620008a9565b62000776565b62000720565b620006a7565b620005e2565b62000438565b620003f1565b62000354565b346200034057602036600319011262000340576004356001600160e01b031981168082036200034057620002dc91631d138b8360e11b8214918215620002f3575b508115620002e0575b5060405190151581529081906020820190565b0390f35b620002ec91506200212c565b5f620002c9565b90915063a918fa6b60e01b811490811562000312575b50905f620002c0565b6318a6a9a560e21b8114915081156200032e575b505f62000309565b6301ffc9a760e01b1490505f62000326565b5f80fd5b6044359081151582036200034057565b3462000340576020366003190112620003405760043580151580910362000340576200037f620021e6565b60ff8019600954169116176009555f80f35b5f5b838110620003a35750505f910152565b818101518382015260200162000393565b90602091620003cf8151809281855285808601910162000391565b601f01601f1916010190565b906020620003ee928181520190620003b4565b90565b34620003405760403660031901126200034057620002dc620004186024356004356200227a565b604051918291602083526020830190620003b4565b5f9103126200034057565b3462000340575f36600319011262000340576020600254604051908152f35b634e487b7160e01b5f52604160045260245ffd5b6001600160401b0381116200047f57604052565b62000457565b602081019081106001600160401b038211176200047f57604052565b604081019081106001600160401b038211176200047f57604052565b606081019081106001600160401b038211176200047f57604052565b90601f801991011681019081106001600160401b038211176200047f57604052565b6001600160401b0381116200047f5760051b60200190565b9080601f83011215620003405760209082356200053081620004fb565b93620005406040519586620004d9565b81855260208086019260051b8201019283116200034057602001905b8282106200056b575050505090565b813581529083019083016200055c565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b848310620005b15750505050505090565b9091929394958480620005d1600193603f198682030187528a51620003b4565b9801930193019194939290620005a0565b346200034057604036600319011262000340576001600160401b0360043581811162000340576200061890369060040162000513565b9060243590811162000340576200063490369060040162000513565b90620006418151620017a5565b915f5b82518110156200069757806200067662000661600193866200180a565b516200066e83866200180a565b51906200227a565b6200068282876200180a565b526200068f81866200180a565b500162000644565b60405180620002dc86826200057b565b346200034057602036600319011262000340576020620006c960043562001825565b6040516001600160a01b039091168152f35b600435906001600160a01b03821682036200034057565b604435906001600160a01b03821682036200034057565b602435906001600160a01b03821682036200034057565b3462000340576040366003190112620003405760206200075862000743620006db565b602435906200075282620022f7565b62002317565b6040519015158152f35b6024359063ffffffff821682036200034057565b3462000340576060366003190112620003405762000793620006db565b6200079d62000762565b90620007a8620006f2565b90620007b3620021e6565b600160ff60095416151503620003405763ffffffff8084165f908152600b6020526040902054620008a7946001600160a01b039262000894926200082a91906200080490869081165b161562001868565b6001600160a01b0387165f908152600c602052604090205463ffffffff161615620018b5565b6200086785620008488363ffffffff165f52600b60205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b0385165f908152600c602052604090205b9063ffffffff1663ffffffff19825416179055565b6200089e62001902565b921690620024a0565b005b3462000340576020366003190112620003405760043563ffffffff811680910362000340575f52600b602052602060018060a01b0360405f205416604051908152f35b346200034057602036600319011262000340576001600160a01b0362000911620006db565b165f52600c602052602063ffffffff60405f205416604051908152f35b60209060206040818301928281528551809452019301915f5b82811062000956575050505090565b83516001600160a01b03168552938101939281019260010162000947565b34620003405760208060031936011262000340576004356200099681620022f7565b5f52600560205260405f20906040519081602084549182815201935f5260205f20915f905b828210620009e357620002dc85620009d681890382620004d9565b604051918291826200092e565b835486529485019460019384019390910190620009bb565b6001600160401b0381116200047f57601f01601f191660200190565b81601f82011215620003405780359062000a3182620009fb565b9262000a416040519485620004d9565b828452602083830101116200034057815f926020809301838601378301015290565b34620003405760a0366003190112620003405762000a80620006db565b62000a8a62000709565b60643580151581036200034057608435926001600160401b038411620003405762000abe620008a794369060040162000a17565b926044359162001916565b34620003405760203660031901126200034057620002dc62000418600435620025a7565b3462000340575f3660031901126200034057602060ff600954166040519015158152f35b346200034057602036600319011262000340576001600160401b036004358181116200034057366023820112156200034057806004013591821162000340573660248360051b830101116200034057620002dc91602462000b73920162001b50565b604051918291826200057b565b346200034057602036600319011262000340576001600160a01b0362000ba5620006db565b165f526004602052602060405f2054604051908152f35b3462000340575f366003190112620003405762000bd8620021e6565b5f546001600160a01b0381168062000bec57005b5f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a36001600160a01b0319165f55005b3462000340575f3660031901126200034057600a546040516001600160a01b039091168152602090f35b9080601f830112156200034057602090823562000c6781620004fb565b9362000c776040519586620004d9565b81855260208086019260051b8201019283116200034057602001905b82821062000ca2575050505090565b81356001600160a01b03811681036200034057815290830190830162000c93565b9080601f830112156200034057602090823562000ce081620004fb565b9362000cf06040519586620004d9565b81855260208086019260051b8201019283116200034057602001905b82821062000d1b575050505090565b813580151581036200034057815290830190830162000d0c565b81601f82011215620003405780359160209162000d5284620004fb565b9362000d626040519586620004d9565b808552838086019160051b830101928084116200034057848301915b84831062000d8f5750505050505090565b82356001600160401b0381116200034057869162000db38484809489010162000a17565b81520192019162000d7e565b34620003405760a0366003190112620003405760046001600160401b038135818111620003405762000df5903690840162000c4a565b90602435818111620003405762000e10903690850162000c4a565b604435828111620003405762000e2a903690860162000513565b90606435838111620003405762000e45903690870162000cc3565b926084359081116200034057620008a79562000e649136910162000d35565b9362001bfa565b604036600319011262000340576024356001600160401b038111620003405762000e9a90369060040162000a17565b62000ea4620021e6565b3462000eb857620008a790600435620026e3565b60405163f36ba73760e01b8152600490fd5b3462000340576060366003190112620003405762000ee7620006db565b602435906044356001600160401b038111620003405762000f0d90369060040162000a17565b9062000f198362001825565b6001600160a01b0381811691338303620010245750821680156200101257808214620010005762000f6562000f618462000f5b885f52600560205260405f2090565b62002822565b1590565b62000fd457938062000fce92620008a7967f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc2366712156040518062000fa78a82620003db565b0390a462000fbf604051948592336020850162001ce1565b03601f198101845283620004d9565b62003340565b6040516314ec4d6d60e31b81526001600160a01b038416600482015260248101869052604490fd5b0390fd5b6040516344fed6b160e11b8152600490fd5b604051639577b8b360e01b8152600490fd5b604051632d938f5160e11b81526001600160a01b0391909116600482015260248101869052336044820152606490fd5b3462000340575f36600319011262000340575f546040516001600160a01b039091168152602090f35b346200034057602036600319011262000340576004355f526007602052602060405f2054604051908152f35b6040366003190112620003405760046001600160401b0381358181116200034057620010d9903690840162000513565b906024359081116200034057620010f4903690840162000d35565b91620010ff620021e6565b346200117157815183510362001162578151156200115357505f5b8151811015620008a757806200114c62001137600193856200180a565b516200114483876200180a565b5190620026e3565b016200111a565b6040516397da5f9560e01b8152fd5b604051633bcc897960e01b8152fd5b60405163f36ba73760e01b8152fd5b3462000340576020806003193601126200034057620011a8620011a2620006db565b62001d3a565b90604051918183928301818452825180915281604085019301915f5b828110620011d457505050500390f35b835185528695509381019392810192600101620011c4565b3462000340576060366003190112620003405760046001600160401b038135818111620003405762001222903690840162000513565b60243582811162000340576200123c903690850162000513565b91604435908111620003405762001257903690850162000d35565b9262001262620021e6565b8151835180911490811591620012e8575b50620012d957815115620012ca57505f5b8151811015620008a75780620012c3620012a1600193856200180a565b51620012ae83876200180a565b51620012bb84896200180a565b5191620029bd565b0162001284565b6040516380c9830560e01b8152fd5b6040516317d38eff60e11b8152fd5b9050845114155f62001273565b3462000340576060366003190112620003405762001312620006db565b6200131c62000709565b906200138d6200132b620006f2565b9262001336620021e6565b6200135260016200134960095460ff1690565b15151462001860565b60018060a01b0380931692806200138262001375865f52600360205260405f2090565b546001600160a01b031690565b921691161462001860565b803b15620003405760405163ce5494bb60e01b81526001600160a01b039290921660048301525f8260248183855af1918215620013ff57620008a792620013e1575b50620013da62001902565b9062002b3b565b80620013f1620013f8926200046b565b806200042d565b5f620013cf565b62001d9f565b3462000340576040366003190112620003405762001422620006db565b6200142c62000762565b90600954916200144060ff84161562001860565b60018060a01b03926200146a84620007fc620013758563ffffffff165f52600b60205260405f2090565b60405190610b25808301918383106001600160401b038411176200047f578392620014c7926200352e853960089190911c87166001600160a01b0316815263ffffffff851660208201526040808201819052606082015260800190565b03905ff08015620013ff57620008a79362001519911691620014fc83620008488363ffffffff165f52600b60205260405f2090565b6001600160a01b0383165f908152600c602052604090206200087f565b6200152362001902565b91620024a0565b346200034057606036600319011262000340576044356001600160401b038111620003405762001563620008a791369060040162000a17565b6200156d620021e6565b602435600435620029bd565b3462000340576080366003190112620003405762001596620006db565b60243590620015a462000344565b906064356001600160401b0381116200034057620015c790369060040162000a17565b91620015d38462001825565b6001600160a01b03818116903382036200162b578416908115620010125714620010005783828662001606938662002ce4565b6200160d57005b62000fce620008a79362000fbf604051948592336020850162001d0e565b604051632d938f5160e11b81526001600160a01b038416600482015260248101889052336044820152606490fd5b346200034057602036600319011262000340576004356001600160401b03811162000340576200168e90369060040162000513565b6200169a8151620017a5565b905f5b8151811015620016e25780620016c1620016ba600193856200180a565b51620025a7565b620016cd82866200180a565b52620016da81856200180a565b50016200169d565b60405180620002dc85826200057b565b34620003405760403660031901126200034057620008a760243560043562001e28565b3462000340576020366003190112620003405762001732620006db565b6200173c620021e6565b6001600160a01b0390811690811562001793575f549081168083036200175e57005b82907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36001600160a01b031916175f55005b6040516306b620db60e21b8152600490fd5b90620017b182620004fb565b620017c06040519182620004d9565b8281528092620017d3601f1991620004fb565b01905f5b828110620017e457505050565b806060602080938501015201620017d7565b634e487b7160e01b5f52603260045260245ffd5b80518210156200181f5760209160051b010190565b620017f6565b5f818152600360205260409020546001600160a01b031690811562001848575090565b60249060405190635747cd1b60e11b82526004820152fd5b156200034057565b156200187057565b60405162461bcd60e51b815260206004820152601860248201527f616c7265616479206f776e656420627920736f6d656f6e6500000000000000006044820152606490fd5b15620018bd57565b60405162461bcd60e51b815260206004820152601b60248201527f616c726561647920696e6a656374656420746f20736f6d656f6e6500000000006044820152606490fd5b60405190620019118262000485565b5f8252565b9392919262001926843362002317565b1562001aab576001600160a01b0382811695808216929183881462001a995783620019518862001825565b9182160362001a695750861562001a575762001a49868062001a559962001a4f966200198362000fbf9b8a8862002fbe565b6200198e8362001825565b506200199b838762003142565b6001600160a01b0386165f908152600460205260409020620019bf90849062003473565b506001600160a01b0389165f908152600460205260409020620019e4908490620032d3565b50620019fd8962000848855f52600360205260405f2090565b6040517fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf908062001a318a8e3384620023c6565b0390a460405197889485928886336020870162002464565b620033a8565b620030b0565b565b6040516324ecef4d60e01b8152600490fd5b604051632d938f5160e11b81526001600160a01b0391821660048201526024810188905291166044820152606490fd5b604051635d67d6c160e01b8152600490fd5b604051631294d2a960e01b815260048101859052336024820152604490fd5b91908110156200181f5760051b81013590601e1981360301821215620003405701908135916001600160401b0383116200034057602001823603811362000340579190565b908092918237015f815290565b3d1562001b4b573d9062001b3082620009fb565b9162001b406040519384620004d9565b82523d5f602084013e565b606090565b91909162001b5e83620017a5565b925f5b81811062001b6e57505050565b5f8062001b7d83858762001aca565b6040939162001b9185518093819362001b0f565b0390305af49062001ba162001b1c565b911562001bce57509060019162001bb982886200180a565b5262001bc681876200180a565b500162001b61565b81519192911562001be157825160208401fd5b5163234eb81960e01b8152600481019190915260249150fd5b94939091928551938351851480159062001cd5575b801562001cc9575b801562001cbd575b62001cab575f5b85811062001c38575050505050509050565b8062001ca462001c5c62001c4f6001948c6200180a565b516001600160a01b031690565b62001c6c62001c4f848a6200180a565b62001c7884876200180a565b5162001c8f62001c89868a6200180a565b51151590565b9162001c9c868b6200180a565b519362001916565b0162001c26565b6040516393a8311960e01b8152600490fd5b50825185141562001c1f565b50815185141562001c17565b50805185141562001c0f565b620003ee939260809260018060a01b031682526020820152600160408201528160608201520190620003b4565b620003ee939260809260018060a01b0316825260208201525f60408201528160608201520190620003b4565b60018060a01b03165f526020600460205260405f209060405180928391602082549182815201915f5260205f20935f905b82821062001d8457505050620003ee92500382620004d9565b85548452600195860195879550938101939091019062001d6b565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821162001dcd57565b62001daa565b811562001dde570690565b634e487b7160e01b5f52601260045260245ffd5b908160011b918083046002149015171562001dcd57565b906063820180921162001dcd57565b9081602091031262000340575190565b5f8181526003602052604090205490919062001e4f906001600160a01b0316151562001860565b6001600160a01b0382811692909190833b15620003405760405163116508a760e21b80825260048201849052915f82602481838a5af1908115620013ff5762001eac9262001375926200208a575b505f52600360205260405f2090565b5f546001600160a01b0316908480831691160362001fd5575b5050600a5462001ee691506001600160a01b03165b6001600160a01b031690565b161562001f5a576040516321ac695f60e11b808252602091908282600481875afa918215620013ff575f9262001fb1575b50600a54839062001f31906001600160a01b031662001eda565b9160046040518094819382525afa928315620013ff575f9362001f7b575b50501162001f5a5750565b600a80546001600160a01b0319166001600160a01b03909216919091179055565b62001fa0929350803d1062001fa9575b62001f978183620004d9565b81019062001e18565b905f8062001f4f565b503d62001f8b565b62001fcd919250833d851162001fa95762001f978183620004d9565b905f62001f17565b62001fe09062001d3a565b80511562001ec55762002036620020306200202962001eda62001eda62001eda62001c4f6200203d9762002022620020184362001dbe565b4082519062001dd3565b906200180a565b9462001df2565b62001e09565b6064900490565b823b1562000340576040519182526004820152905f908290602490829084905af18015620013ff5762002073575b808062001ec5565b80620013f162002083926200046b565b5f6200206b565b80620013f16200209a926200046b565b5f62001e9d565b3415620020ba576040516330fa4a2160e11b8152600490fd5b606460405163e5099ee360e01b815260206004820152600460248201525f6044820152fd5b60043610620020f357620003ee9062002db0565b6044604051809263e5099ee360e01b825260206004830152806024830152805f848401375f828201840152601f01601f19168101030190fd5b6200217862002172604051696773c5a04a6d4300884b60b11b60208201525f602a8201526301ffc9a760e01b602c820152602081526200216c81620004a1565b62003410565b6200322d565b805160148114159081620021db575b50620021b457620021989062002ea1565b60601c908115620021ae57620003ee9162002f39565b50505f90565b6040516342bfe79f60e01b81526020600482015290819062000ffc906024830190620003b4565b905015155f62002187565b5f546001600160a01b03163303620021fa57565b60405163bf1169c560e01b8152336004820152602490fd5b60208183031262000340578051906001600160401b03821162000340570181601f82011215620003405780516200224981620009fb565b92620022596040519485620004d9565b818452602082840101116200034057620003ee916020808501910162000391565b5f818152600360205260409020549091906001600160a01b03161562000340576040516354f6127f60e01b81526004810191909152905f90829060249082906001600160a01b03165afa908115620013ff575f91620022d7575090565b620003ee91503d805f833e620022ee8183620004d9565b81019062002212565b5f818152600360205260409020546001600160a01b031615620018485750565b6001600160a01b03806200232b8462001825565b1691169081149182156200233e57505090565b620003ee92505f52600560205260405f206001915f520160205260405f2054151590565b5f19811462001dcd5760010190565b6001600160a01b0390911681525f6020820152606060408201819052620003ee92910190620003b4565b6001600160a01b03909116815260016020820152606060408201819052620003ee92910190620003b4565b6001600160a01b0390911681529015156020820152606060408201819052620003ee92910190620003b4565b6001600160a01b0391821681525f602082015291166040820152606081019190915260a060808201819052620003ee92910190620003b4565b6001600160a01b039182168152911660208201525f6040820152606081019190915260a060808201819052620003ee92910190620003b4565b6001600160a01b03918216815291811660208301529091166040820152606081019190915260a060808201819052620003ee92910190620003b4565b909291906001600160a01b038116801562001a5757620024c1858362002f6c565b5f858152600360205260409020546001600160a01b03166200258e578462001a5594956200258892620024ff620024fa60025462002362565b600255565b6001600160a01b0385165f90815260046020526040902062002523908390620032d3565b506200253c8562000848845f52600360205260405f2090565b5f7fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf604051806200256f8a33836200239b565b0390a462000fbf604051948592853360208601620023f2565b6200303f565b6040516334c7b51160e01b815260048101869052602490fd5b7f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e811462002684575f52600160206001815260405f206040519283915f91815491620025f38362002837565b80865292600181169081156200266057506001146200261e575b505050620003ee92500382620004d9565b5f90815285812095935091905b81831062002647575050620003ee93508201015f80806200260d565b855487840185015294850194869450918301916200262b565b92505050620003ee94925060ff191682840152151560051b8201015f80806200260d565b50600a546040516354f6127f60e01b81527fef285b02a4f711ad84793f73cc8ed6fea8af7013ece8132dacb7b33f6bce93da6004820152905f90829060249082906001600160a01b03165afa908115620013ff575f91620022d7575090565b907ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d821462002810577fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1820362002746576040516385c169bd60e01b8152600490fd5b7f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db93275682036200278057604051630eceab6760e31b8152600490fd5b7fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb38203620027ba57604051634ef6d7fb60e01b8152600490fd5b6200280b81620027fe7fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b293620027f8865f52600160205260405f2090565b620028e4565b60405191829182620003db565b0390a2565b604051631b32400560e11b8152600490fd5b620003ee916001600160a01b031690620032d3565b90600182811c9216801562002867575b60208310146200285357565b634e487b7160e01b5f52602260045260245ffd5b91607f169162002847565b916200288c9183549060031b91821b915f19901b19161790565b9055565b601f82116200289e57505050565b5f5260205f20906020601f840160051c83019310620028d9575b601f0160051c01905b818110620028cd575050565b5f8155600101620028c1565b9091508190620028b8565b91909182516001600160401b0381116200047f57620029108162002909845462002837565b8462002890565b602080601f831160011462002951575081906200288c9394955f9262002945575b50508160011b915f199060031b1c19161790565b015190505f8062002931565b90601f1983169562002966855f5260205f2090565b925f905b888210620029a4575050836001959697106200298b575b505050811b019055565b01515f1960f88460031b161c191690555f808062002981565b806001859682949686015181550195019301906200296a565b9091604051602090602081019084825285604082015260408152620029e281620004bd565b5190205f5260018060205260405f20918351916001600160401b0383116200047f5762002a1c8362002a15865462002837565b8662002890565b602091601f841160011462002a965750509162002a76827fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb959362002a85955f9162002a8a575b508160011b915f199060031b1c19161790565b905560405191829182620003db565b0390a3565b90508401515f62002a63565b9190601f1984169062002aac865f5260205f2090565b935f915b83831062002b16575050509262002a859492600192827fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb98961062002afd575b5050811b019055620027fe565b8501515f1960f88460031b161c191690555f8062002af0565b88850151865594850194938101939181019162002ab0565b801562001dcd575f190190565b62001a5591906001600160a01b039062001a49908262002b5b8262001825565b161562002cb9575b5f62002ba162002b7560025462001dbe565b62002b88845f52600860205260405f2090565b5481811062002c76575b505f52600760205260405f2090565b555f81815260086020526040812055805f62002bbd8262001825565b9462002bcf620024fa60025462002b2e565b62002bdb838762003142565b6001600160a01b0386165f90815260046020526040902062002bff90849062003473565b5062002c2762002c17845f52600360205260405f2090565b80546001600160a01b0319169055565b7fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf604051918716918062002c5d8a338362002371565b0390a462000fbf6040519485928533602086016200242b565b62002cb162002c8d835f52600760205260405f2090565b548062002ca2845f52600760205260405f2090565b555f52600860205260405f2090565b555f62002b92565b600254805f5260076020528160405f205562002cdd825f52600860205260405f2090565b5562002b63565b919392845f52600560205260405f209260018060a01b039062002d0b828216809662003473565b1562002d5d57509062002d587fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c9392604051938493151584526040602085015216956040830190620003b4565b0390a4565b6040516312a8c6a360e21b81526001600160a01b0391909116600482015260248101879052604490fd5b9060349391815f823701916bffffffffffffffffffffffff199060601b16825260148201520190565b63ffffffff60e01b5f35169062002df562002172604051696773c5a04a6d4300884b60b11b60208201525f602a82015284602c820152602081526200216c81620004a1565b80516014811415908162002e96575b50620021b45762002e159062002ea1565b60601c91821562002e7257505f91829160405162002e508162002e416020820194349033908762002d87565b03601f198101835282620004d9565b519134905af162002e6062001b1c565b901562002e6a5790565b602081519101fd5b60405163bb370b2b60e01b81526001600160e01b0319919091166004820152602490fd5b905015155f62002e04565b90602082519201516bffffffffffffffffffffffff1990818116936014811062002eca57505050565b60140360031b82901b16169150565b5f602091604051838101906301ffc9a760e01b8252631aed5a8560e21b60248201526024815262002f0a81620004bd565b5191617530fa5f513d8262002f2c575b508162002f25575090565b9050151590565b6020111591505f62002f1a565b5f90602092604051848101916301ffc9a760e01b835263ffffffff60e01b1660248201526024815262002f0a81620004bd565b600254805f5260076020528260405f205562002f90835f52600860205260405f2090565b556001600160a01b03161562002fa35750565b62002fbb5f918262002ca262002b7560025462001dbe565b55565b6001600160a01b03919082161562002fdb575b161562002fa35750565b600254805f5260076020528360405f205562002fff845f52600860205260405f2090565b5562002fd1565b906040620003ee927f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d81528160208201520190620003b4565b6200304a8162002ed9565b15620030ac57604051631aed5a8560e21b8152915f91839182908490829062003077906004830162003006565b03926001600160a01b03165af18015620013ff57620030935750565b620030a9903d805f833e620022ee8183620004d9565b50565b5050565b9190620030bd8362002ed9565b15620030e95750620030775f928392604051948580948193631aed5a8560e21b83526004830162003006565b905015620030f45750565b803b156200311f57604051634349776d60e01b81526001600160a01b03919091166004820152602490fd5b604051630317313760e01b81526001600160a01b03919091166004820152602490fd5b90805f526005906020926005602052604090815f20938454945f5b8681106200316f575050505050505050565b8154156200181f575f828152889020548551906001600160a01b0390811690620031998362000485565b5f8352885f52858b52620031b082895f2062003473565b1562003206579188917fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c898d620031fc6001989783519384935f85528401528c16958d830190620003b4565b0390a4016200315d565b87516312a8c6a360e21b81526001600160a01b0383166004820152602481018a9052604490fd5b5f52600160206001815260405f206040519283915f91815491620032518362002837565b80865292600181169081156200266057506001146200327b57505050620003ee92500382620004d9565b5f90815285812095935091905b818310620032a4575050620003ee93508201015f80806200260d565b8554878401850152948501948694509183019162003288565b80548210156200181f575f5260205f2001905f90565b5f828152600182016020526040902054620021ae57805490680100000000000000008210156200047f57826200332b62003315846001809601855584620032bd565b819391549060031b91821b915f19901b19161790565b90558054925f520160205260405f2055600190565b6200334b8162002ed9565b62003354575050565b620030775f92918392604051948580948193631aed5a8560e21b83527f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f009706004840152604060248401526044830190620003b4565b620033b38162002ed9565b620033bc575050565b620030775f92918392604051948580948193631aed5a8560e21b83527fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab006004840152604060248401526044830190620003b4565b60208151910151906020811062003425575090565b5f199060200360031b1b1690565b80549081156200345f575f19918201916200344f8383620032bd565b909182549160031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f1462003525575f19928484019085821162001dcd57805494850194851162001dcd575f958583620034c994620034d69803620034dc575b50505062003433565b905f5260205260405f2090565b55600190565b6200350d6200350691620034f56200351b9487620032bd565b90549060031b1c92839187620032bd565b9062002872565b85905f5260205260405f2090565b555f8080620034c0565b505050505f9056fe60806040908082523461011357608081610b2580380380916100218285610173565b8339810103126101135761003481610196565b60209160048382015192846060878501519401519160018060a01b03199033825f5416175f5560018060a01b0316809160015416176001558751938480926355afdbcb60e11b82525afa918215610169575f92610132575b508551928584019463466c6dc560e11b86526024850152604484015260648301526064825260a082019060018060401b039383831085841117610117575f938493885251915af4913d1561012b573d918211610117575f908451926100fa82601f19601f8401160185610173565b83523d92013e5b15610113575161097a90816101ab8239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b5050610101565b9091508481813d8311610162575b61014a8183610173565b810103126101135761015b90610196565b905f61008c565b503d610140565b86513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761011757604052565b51906001600160a01b03821682036101135756fe608060409080825260049081361015610016575f80fd5b5f3560e01c90816301ffc9a71461060457508063221a8729146105e65780634358d2be146105c85780634594229c146104e357806354f6127f146104b05780637b103999146104895780637f23690c146104555780639790242114610395578063c20db68914610377578063ce5494bb14610337578063dedff9c614610226578063e710563c146102085763f3ccaac0146100af575f80fd5b346101cd575f3660031901126101cd57600154825163463962a760e11b815260209290918391839182906001600160a01b03165afa9081156101fe575f91829182916101d1575b508451848101906354f6127f60e01b82527f2abb082c1b23ea79fce2a9e934ecb19ce15738b1483c365d0125f47e8ccc7dfc60248201526024815261013a8161069c565b51915af4916101476107e7565b92156101cd57825183019282818186019503126101cd57828101519067ffffffffffffffff82116101cd57019083603f830112156101cd57828201519161018d836106ee565b9461019a835196876106cc565b8386528284830101116101cd576101c9926101ba91838688019101610656565b51928284938452830190610677565b0390f35b5f80fd5b6101f19150843d86116101f7575b6101e981836106cc565b8101906107c8565b5f6100f6565b503d6101df565b83513d5f823e3d90fd5b82346101cd575f3660031901126101cd576020906012549051908152f35b50346101cd57602090816003193601126101cd5780359067ffffffffffffffff82116101cd5761025891369101610768565b9182519061027d61026883610750565b92610275835194856106cc565b808452610750565b601f1901835f5b828110610327575050505f5b84518110156102cb57806102af6102a96001938861091c565b51610816565b6102b9828661091c565b526102c4818561091c565b5001610290565b509250825191808301818452825180915281858501958260051b8601019301915f955b8287106102fb5785850386f35b909192938280610317600193603f198a82030186528851610677565b96019201960195929190926102ee565b6060828287010152018490610284565b50346101cd5760203660031901126101cd57356001600160a01b03818116918290036101cd575f5490811633036101cd576001600160a01b031916175f55005b82346101cd575f3660031901126101cd576020906013549051908152f35b5090806003193601126101cd5767ffffffffffffffff82358181116101cd576103c19036908501610768565b5060248035908282116101cd57366023830112156101cd57818501356103e681610750565b936103f3865195866106cc565b818552602460208096019260051b850101933685116101cd5760248101925b85841061042f5788883461042257005b5163f36ba73760e01b8152fd5b83358381116101cd57879161044a839288369187010161070a565b815201930192610412565b5090806003193601126101cd5760243567ffffffffffffffff81116101cd57610481903690840161070a565b503461042257005b82346101cd575f3660031901126101cd575f5490516001600160a01b039091168152602090f35b5090346101cd5760203660031901126101cd576104d06101c99235610816565b9051918291602083526020830190610677565b5090346101cd5760203660031901126101cd575f548235926001600160a01b03929091831633036101cd5760205a93600154168251938480926355afdbcb60e11b82525afa9182156105be57915f92918392839261059d575b5051602081019063116508a760e21b8252866024820152602481526105608161069c565b51915af461056c6107e7565b50156101cd575a916010540160105503806011540160115548810260125401601255483a0302601354016013555f80f35b6105b791925060203d6020116101f7576101e981836106cc565b905f61053c565b50513d5f823e3d90fd5b82346101cd575f3660031901126101cd576020906010549051908152f35b82346101cd575f3660031901126101cd576020906011549051908152f35b82346101cd5760203660031901126101cd57359063ffffffff60e01b82168092036101cd576020916301ffc9a760e01b8114908115610645575b5015158152f35b6318a6a9a560e21b1490508361063e565b5f5b8381106106675750505f910152565b8181015183820152602001610658565b9060209161069081518092818552858086019101610656565b601f01601f1916010190565b6060810190811067ffffffffffffffff8211176106b857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176106b857604052565b67ffffffffffffffff81116106b857601f01601f191660200190565b81601f820112156101cd57803590610721826106ee565b9261072f60405194856106cc565b828452602083830101116101cd57815f926020809301838601378301015290565b67ffffffffffffffff81116106b85760051b60200190565b9080601f830112156101cd57602090823561078281610750565b9361079060405195866106cc565b81855260208086019260051b8201019283116101cd57602001905b8282106107b9575050505090565b813581529083019083016107ab565b908160209103126101cd57516001600160a01b03811681036101cd5790565b3d15610811573d906107f8826106ee565b9161080660405193846106cc565b82523d5f602084013e565b606090565b6001546040805163463962a760e11b815290926020928390839060049082906001600160a01b03165afa91821561091257915f9291839283926108f3575b508551858101916354f6127f60e01b83526024820152602481526108778161069c565b51915af4916108846107e7565b92156101cd57825183019282818186019503126101cd57828101519067ffffffffffffffff82116101cd570183603f820112156101cd5782810151916108c9836106ee565b946108d6825196876106cc565b8386528184840101116101cd576108f09385019101610656565b90565b61090b919250853d87116101f7576101e981836106cc565b905f610854565b84513d5f823e3d90fd5b80518210156109305760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfea26469706673582212206c5c550fe4870b5c8de9ec4447e02e6de1853a7e6abc9bf7c2adcfb0811426f264736f6c63430008170033a2646970667358221220284f10fd0dc3415ffbddda3e3c1614081dd249040175886fa332e2b6d847ca5d64736f6c63430008170033deba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1e0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3f675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756114bd03b3a46d48759680d81ebb2b414fda7d030a7105a851867accf1c2352e7ece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2a2646970667358221220193803e886292584245208d51558ce29840826ff8149c83648336d598b01be5c64736f6c63430008170033 diff --git a/bins/revme/src/cmd/bench/burntpix/static_data.rs b/bins/revme/src/cmd/bench/burntpix/static_data.rs index 3f2a995045..a968faa202 100644 --- a/bins/revme/src/cmd/bench/burntpix/static_data.rs +++ b/bins/revme/src/cmd/bench/burntpix/static_data.rs @@ -1,4 +1,4 @@ -use revm::primitives::{address, bytes, fixed_bytes, Address, Bytes, FixedBytes}; +use revm::primitives::{address, fixed_bytes, Address, Bytes, FixedBytes}; pub const BURNTPIX_MAIN_ADDRESS: Address = address!("49206861766520746f6f206d7563682074696d65"); pub const BURNTPIX_ADDRESS_ONE: Address = address!("0a743ba7304efcc9e384ece9be7631e2470e401e"); @@ -12,10 +12,11 @@ pub const STORAGE_ONE: FixedBytes<32> = pub const STORAGE_TWO: FixedBytes<32> = fixed_bytes!("000000000000000000000000c917e98213a05d271adc5d93d2fee6c1f1006f75"); -pub static BURNTPIX_BYTECODE_ONE: Bytes = bytes!("60806040526004361015610011575f80fd5b5f3560e01c63d85fe4b414610024575f80fd5b346100925760603660031901126100925767ffffffffffffffff60043581811161009257366023820112156100925780600401359182116100925736602483830101116100925761008e9161008291604435916024803592016103ee565b604051918291826100b7565b0390f35b5f80fd5b5f5b8381106100a75750505f910152565b8181015183820152602001610098565b604091602082526100d78151809281602086015260208686019101610096565b601f01601f1916010190565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761011357604052565b6100e3565b90601f8019910116810190811067ffffffffffffffff82111761011357604052565b67ffffffffffffffff811161011357601f01601f191660200190565b60405190610163826100f7565b60208083523683820137565b906101798261013a565b6101866040519182610118565b8281528092610197601f199161013a565b0190602036910137565b604051906060820182811067ffffffffffffffff82111761011357604052603c82527f74683d22313522206865696768743d223135222072783d2232222f3e000000006040837f3c726563742069643d22702220783d222d31352220793d222d3135222077696460208201520152565b9061022460209282815194859201610096565b0190565b60206102699193929360405194816102498793518092868087019101610096565b820161025d82518093868085019101610096565b01038085520183610118565b565b60405190610278826100f7565b601082526f181899199a1a9b1b9c1cb0b131b232b360811b6020830152565b634e487b7160e01b5f52603260045260245ffd5b908210156102b7570190565b610297565b9081518110156102b7570160200190565b9693909897949195929560405199888b9951908160208c0191602001916102f392610096565b8901711e3ab9b290343932b31e9111b811103c1e9160711b60208201528151918260328301916020019161032692610096565b016411103c9e9160d91b603282015260370161034191610211565b68222066696c6c3d222360b81b8152956001600160f81b03191660098701526001600160f81b031916600a8601526001600160f81b031916600b8501526001600160f81b031916600c8401526001600160f81b031916600d8301526001600160f81b031916600e8201526211179f60e91b600f82015203600d19810183526012016102699083610118565b604051906103d9826100f7565b60068252651e17b9bb339f60d11b6020830152565b91909161040361011c6036868502020161016f565b9361042b61042261041483866105a2565b61041c6101a1565b90610228565b602087016106fd565b93909461043661026b565b5f94859160105b86881061047957505050505050505061047692916104606104669261041c6103cc565b906106fd565b90829003601f1901825290610228565b90565b5f60105b87821061049457505060106001910197019661043d565b949a90998b6104a48189886102ab565b3560f81c6104b6600183018a896102ab565b3560f81c916104c9906002018a896102ab565b3560f81c906104d78961079c565b926104e18761079c565b600492600f91826104f683871c82168d6102bc565b516001600160f81b031916921661050d908c6102bc565b516001600160f81b0319169280878d8261052b898b1c8216836102bc565b516001600160f81b0319169816610541916102bc565b516001600160f81b031916971c16610559908d6102bc565b516001600160f81b0319169616610570908c6102bc565b516001600160f81b03191696610585986102cd565b61058e916106fd565b99909a60030194601001906001019061047d565b601960016104769260041b01926106cb60016105bd8661079c565b9260041b01600a6106b66105e26105dc6105d68561079c565b9961079c565b9361079c565b92607f604051998a977f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323060208a01527f30302f737667222076657273696f6e3d22312e31222076696577426f783d223060408a01526201018160ed1b60608a015261065781518092602060638d019101610096565b8801600160fd1b6063820152610677825180936020606485019101610096565b0161111f60f11b60648201526106af606682017f3c7265637420783d22302220793d2230222077696474683d22000000000000009052565b0190610211565b6911103432b4b3b43a1e9160b11b81526106af565b7f222072783d2233222066696c6c3d2223323032303230222f3e00000000000000815203600619810184520182610118565b91909160208084018451918260051c905f5b82811061076b5750505050601f1916808451039061072c8261016f565b945f5b83811061073e57505050509190565b6001906001600160f81b0319610756858301856102bc565b51165f1a610764828a6102bc565b530161072f565b83518652948101949281019260010161070f565b6040519061078c826100f7565b60018252600360fc1b6020830152565b8015610832576107aa610156565b90805f915b61080357506107bd8161016f565b915f5b8281106107cd5750505090565b6001906107f06107e28286035f1901856102bc565b516001600160f81b03191690565b5f1a6107fc82876102bc565b53016107c0565b90600a80830692048161082c6001839492019460ff60f81b9060300160f81b165f1a91866102bc565b536107af565b5061047661077f56fea26469706673582212202620cded94f0cf54cc3df219c4b7a2d33ca1cff9b87da504fdd707bc8b7d38e464736f6c63430008170033"); - -pub static BURNTPIX_BYTECODE_TWO: Bytes = bytes!("608060408181526004918236101562000016575f80fd5b5f925f3560e01c91826318a87fb6146200051a575081638c72c54e14620004f0578163a4de9ab4146200007f575063ab5fb7961462000053575f80fd5b346200007b57816003193601126200007b57905490516001600160a01b039091168152602090f35b5080fd5b828434620004d05781600319360112620004d05782359063ffffffff8216809203620004d0576024908351946103f19586810167ffffffffffffffff9782821089831117620004de57908291620005af833903905ff0918215620004d4575f546001600160a01b0393841695908416863b15620004d0578751906302b41d8760e51b8252848201525f818781838b5af18015620004c657620004b0575b508360015416863b15620003665787519063218d3ebf60e01b82528482015282818781838b5af18015620003925790839162000498575b50508360025416863b156200036657875190632b18342560e01b82528482015282818781838b5af18015620003925790839162000480575b505086516151df808201908282108b831117620004485789918391620009a083398581526020998a82015203019083f080156200047657841690813b15620003665787519063d35e29d760e01b8252338583015286820152828160448183865af1801562000392579083916200045e575b505086516351d930f960e11b8152338482015282818781855afa90811562000392578391620003ae575b508051156200039c5786015190803b15620003665782809160448a518094819363ea25558360e01b8352878a8401528b358c8401525af1801562000392579083916200037a575b5090838851809681936303cf32ab60e61b8352165afa9384156200036e578194620002c3575b8651868152855181880181905288908290620002b5818385018b8d016200053f565b601f01601f19168101030190f35b90919293503d8083863e620002d981866200058b565b840193858186031262000366578051908882116200036a57019284601f85011215620003665783519788116200035557505084519262000323601f8801601f19168601856200058b565b868452848784010111620003525750620002b59462000348918480850191016200053f565b8480808062000293565b80fd5b634e487b7160e01b83526041905281fd5b8280fd5b8380fd5b508551903d90823e3d90fd5b620003859062000562565b6200007b5781896200026d565b88513d85823e3d90fd5b634e487b7160e01b8352603284528583fd5b90503d8084833e620003c181836200058b565b81019087818303126200036a578051908a82116200045a57019080601f830112156200036a578151918a831162000448578260051b908a5193620004088b8401866200058b565b84528980850192820101928311620004445789809101915b8383106200043357505050508962000226565b82518152918101918a910162000420565b8580fd5b634e487b7160e01b8552604186528785fd5b8480fd5b620004699062000562565b6200007b578189620001fc565b87513d84823e3d90fd5b6200048b9062000562565b6200007b5781896200018b565b620004a39062000562565b6200007b57818962000153565b620004bd91925062000562565b5f90886200011c565b88513d5f823e3d90fd5b5f80fd5b85513d5f823e3d90fd5b85604185634e487b7160e01b5f52525ffd5b8234620004d0575f366003190112620004d05760025490516001600160a01b039091168152602090f35b34620004d0575f366003190112620004d0576001546001600160a01b03168152602090f35b5f5b838110620005515750505f910152565b818101518382015260200162000541565b67ffffffffffffffff81116200057757604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117620005775760405256fe6080806040523461005a575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3610392908161005f8239f35b5f80fdfe60808060405260049081361015610014575f80fd5b5f3560e01c90816318a87fb6146102e257508063218d3ebf1461029e5780632b1834251461025a5780635683b0e014610216578063715018a6146101bf5780638c72c54e146101975780638da5cb5b14610170578063ab5fb796146101485763f2fde38b14610081575f80fd5b34610144576020366003190112610144576001600160a01b0381358181169290839003610144576100b0610305565b82156100f157505f54826001600160601b0360a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b60849060206040519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b5f80fd5b34610144575f366003190112610144576001546040516001600160a01b039091168152602090f35b34610144575f366003190112610144575f546040516001600160a01b039091168152602090f35b34610144575f366003190112610144576003546040516001600160a01b039091168152602090f35b34610144575f366003190112610144576101d7610305565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b503461014457602036600319011261014457356001600160a01b0381169081900361014457610243610305565b6001600160601b0360a01b60015416176001555f80f35b503461014457602036600319011261014457356001600160a01b0381169081900361014457610287610305565b6001600160601b0360a01b60035416176003555f80f35b503461014457602036600319011261014457356001600160a01b03811690819003610144576102cb610305565b6001600160601b0360a01b60025416176002555f80f35b34610144575f366003190112610144576002546001600160a01b03168152602090f35b5f546001600160a01b0316330361031857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea2646970667358221220fe8ff964d09f9b014997308dd60006e6d4f5b368483a50e476a998f6c718631b64736f6c634300081700336080346200100457601f620051df38819003918201601f19168301916001600160401b038311848410176200100857808492604094855283398101031262001004576200005a6020620000528362001038565b920162001038565b90604051916200006a836200101c565b6009835268084eae4dce840a0d2f60bb1b60208401526040516200008e816200101c565b60049384825263084a092b60e31b6020830152331562000ff3575f546001600160a01b0381163381900362000fb6575b5050604051620000ce816200101c565b858152632936598960e21b60208201527feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c90815f52600160205260405f20815160018060401b03811162000fa3578154600181811c9116801562000f98575b602082101462000f8557601f811162000f3b575b506020601f821160011462000eda5791815f80516020620051bf833981519152949262000190945f91620008a7575b508160011b915f199060031b1c19161790555b604051918291826200104d565b0390a25f805160206200511f8339815191525f52600160205280517f2a367ae1ac46d529739aa27ac74856f860e70af05d3642d18ba60fd5d32a069a906001600160401b03811162000ec7578154600181811c9116801562000ebc575b602082101462000ea957601f811162000e5f575b506020601f821160011462000ded57925f80516020620051bf83398151915292826200025d935f805160206200511f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a25f805160206200517f8339815191525f52600160205280517f83b322886c7b7e25779e5d38e06e005c9e7aba1e1267ce9210cf24e31833535a906001600160401b03811162000c50578154600181811c9116801562000de2575b602082101462000c3257601f811162000d98575b506020601f821160011462000d2657925f80516020620051bf83398151915292826200032a935f805160206200517f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a2604051600260208201526020815262000346816200101c565b5f805160206200513f8339815191525f52600160205280517ff73b01b344a9bb3b96525b0cb731f6b14cde20ce6cecea8459266944490b411f906001600160401b03811162000c50578154600181811c9116801562000d1b575b602082101462000c3257601f811162000cd5575b506020601f821160011462000c6357925f80516020620051bf833981519152928262000410935f805160206200513f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a260405160026020820152602081526200042c816200101c565b5f805160206200515f8339815191525f52600160205280517f01f5eb934e794ddcc86b89a579078013860f8fe92140885511742594f219ad0b906001600160401b03811162000c50578154600181811c9116801562000c45575b602082101462000c3257601f811162000bec575b506020601f821160011462000b7a57925f80516020620051bf8339815191529282620004f6935f805160206200515f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a260098054610100600160a81b03191660089290921b610100600160a81b03169190911790556040516200052c816200101c565b60108152600160801b6020808301919091525f805160206200519f8339815191525f526001905280517fde5f0adbf2cf136848982dd95860bdc3e6d8709a8a51ce1295c645c6da617db7906001600160401b03811162000aa4578154600181811c9116801562000b6f575b602082101462000a8657601f811162000b29575b506020601f821160011462000ab757925f80516020620051bf833981519152928262000607935f805160206200519f833981519152965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a2604051606082901b6001600160601b03191660208201526014815262000630816200101c565b6f0452f40ece91b521d65a03607aecad0560821b5f52600160205280517fadf994b8d5b80a46660e628eabff2156c328d301fe5ea8e44cf09dee1b43e512906001600160401b03811162000aa4578154600181811c9116801562000a99575b602082101462000a8657601f811162000a40575b50806020601f8211600114620009d8575f91620009cc575b508160011b915f199060031b1c19161790555b5f80516020620051bf83398151915260405180620007016f0452f40ece91b521d65a03607aecad0560821b94826200104d565b0390a260405169036f42f57aecc15a72ed60b51b60208083019182525f602a84015260609390931b6001600160601b031916602c83015291815262000746816200101c565b5190519060208110620009ba575b5060405162000763816200101c565b601481526324871b3d60e01b60208201525f805160206200515f8339815191528214620009a9575f805160206200511f8339815191528203620007b1576040516385c169bd60e01b81528390fd5b5f805160206200517f8339815191528203620007d857604051630eceab6760e31b81528390fd5b5f805160206200513f8339815191528203620007ff57604051634ef6d7fb60e01b81528390fd5b5f8281526001602052604090208151936001600160401b0385116200099657815490600182811c921680156200098b575b6020831014620009785750601f81116200092e575b50602093601f8111600114620008b35790816200089493925f80516020620051bf83398151915295965f91620008a757508160011b915f199060031b1c1916179055604051918291826200104d565b0390a26040516140889081620010978239f35b90508301515f62000170565b601f198116825f5260205f20905f5b818110620009155750916001915f80516020620051bf8339815191529697826200089497969510620008fc575b5050811b01905562000183565b8501515f1960f88460031b161c191690555f80620008ef565b85880151835560209788019760019093019201620008c2565b815f5260205f20601f860160051c810191602087106200096d575b601f0160051c01905b81811062000961575062000845565b5f815560010162000952565b909150819062000949565b602290634e487b7160e01b5f525260245ffd5b91607f169162000830565b604190634e487b7160e01b5f525260245ffd5b604051631b32400560e11b81528390fd5b5f199060200360031b1b165f62000754565b90508301515f620006bb565b9150825f5260205f205f925b601f198316841062000a27576001935082601f1981161062000a0e575b5050811b019055620006ce565b8501515f1960f88460031b161c191690555f8062000a01565b85810151825560209384019360019092019101620009e4565b825f5260205f20601f830160051c81016020841062000a7e575b601f830160051c8201811062000a72575050620006a3565b5f815560010162000a5a565b508062000a5a565b602286634e487b7160e01b5f525260245ffd5b90607f16906200068f565b604185634e487b7160e01b5f525260245ffd5b825f5260205f20905f5b601f198416811062000b105750926001835f805160206200519f83398151915296935f80516020620051bf833981519152966200060796601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000ac1565b825f5260205f20601f830160051c81016020841062000b67575b601f830160051c8201811062000b5b575050620005ab565b5f815560010162000b43565b508062000b43565b90607f169062000597565b825f5260205f20905f5b601f198416811062000bd35750926001835f805160206200515f83398151915296935f80516020620051bf83398151915296620004f696601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000b84565b825f5260205f20601f830160051c81016020841062000c2a575b601f830160051c8201811062000c1e5750506200049a565b5f815560010162000c06565b508062000c06565b602287634e487b7160e01b5f525260245ffd5b90607f169062000486565b604186634e487b7160e01b5f525260245ffd5b825f5260205f20905f5b601f198416811062000cbc5750926001835f805160206200513f83398151915296935f80516020620051bf833981519152966200041096601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000c6d565b825f5260205f20601f830160051c81016020841062000d13575b601f830160051c8201811062000d07575050620003b4565b5f815560010162000cef565b508062000cef565b90607f1690620003a0565b825f5260205f20905f5b601f198416811062000d7f5750926001835f805160206200517f83398151915296935f80516020620051bf833981519152966200032a96601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000d30565b825f5260205f20601f830160051c8101916020841062000dd7575b601f0160051c01905b81811062000dcb5750620002ce565b5f815560010162000dbc565b909150819062000db3565b90607f1690620002ba565b825f5260205f20905f5b601f198416811062000e465750926001835f805160206200511f83398151915296935f80516020620051bf833981519152966200025d96601f19811610620008fc575050811b01905562000183565b9091602060018192858901518155019301910162000df7565b825f5260205f20601f830160051c8101916020841062000e9e575b601f0160051c01905b81811062000e92575062000201565b5f815560010162000e83565b909150819062000e7a565b602288634e487b7160e01b5f525260245ffd5b90607f1690620001ed565b604187634e487b7160e01b5f525260245ffd5b601f19821690835f5260205f20915f5b81811062000f22575092620001909492600192825f80516020620051bf833981519152989610620008fc575050811b01905562000183565b9192602060018192868a01518155019401920162000eea565b825f5260205f20601f830160051c8101916020841062000f7a575b601f0160051c01905b81811062000f6e575062000141565b5f815560010162000f5f565b909150819062000f56565b60228a634e487b7160e01b5f525260245ffd5b90607f16906200012d565b604189634e487b7160e01b5f525260245ffd5b33907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36001600160a01b03191633175f90815580620000be565b6040516306b620db60e21b81528590fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176200100857604052565b51906001600160a01b03821682036200100457565b602080825282518183018190529093925f5b8281106200108157505060409293505f838284010152601f8019910116010190565b8181018601518482016040015285016200105f56fe608060405260043610156200002f575b361562000029576200002136620020df565b602081519101f35b620020a1565b5f3560e01c806301ffc9a7146200027f57806302329a29146200027957806316e023b3146200027357806318160ddd146200026d5780631d26fce61462000267578063217b227014620002615780632a3654a4146200025b578063382bf015146200025557806340339a1e146200024f57806348d0528a146200024957806349a6078d1462000243578063511b6952146200023d57806354f6127f14620002375780635c975abb14620002315780636963d438146200022b57806370a082311462000225578063715018a6146200021f578063723a213014620002195780637e87632c14620002135780637f23690c146200020d57806386a10ddd14620002075780638da5cb5b146200020157806392a91a3a14620001fb5780639790242114620001f5578063a3b261f214620001ef578063be9f0e6f14620001e9578063c9d658f014620001e3578063d35e29d714620001dd578063d6c1407c14620001d7578063db8c966314620001d1578063dedff9c614620001cb578063ea25558314620001c55763f2fde38b036200000f5762001715565b620016f2565b62001659565b62001579565b6200152a565b62001405565b620012f5565b620011ec565b62001180565b620010a9565b6200107d565b62001054565b62000eca565b62000e6b565b62000dbf565b62000c20565b62000bbc565b62000b80565b62000b11565b62000aed565b62000ac9565b62000a63565b62000974565b620008ec565b620008a9565b62000776565b62000720565b620006a7565b620005e2565b62000438565b620003f1565b62000354565b346200034057602036600319011262000340576004356001600160e01b031981168082036200034057620002dc91631d138b8360e11b8214918215620002f3575b508115620002e0575b5060405190151581529081906020820190565b0390f35b620002ec91506200212c565b5f620002c9565b90915063a918fa6b60e01b811490811562000312575b50905f620002c0565b6318a6a9a560e21b8114915081156200032e575b505f62000309565b6301ffc9a760e01b1490505f62000326565b5f80fd5b6044359081151582036200034057565b3462000340576020366003190112620003405760043580151580910362000340576200037f620021e6565b60ff8019600954169116176009555f80f35b5f5b838110620003a35750505f910152565b818101518382015260200162000393565b90602091620003cf8151809281855285808601910162000391565b601f01601f1916010190565b906020620003ee928181520190620003b4565b90565b34620003405760403660031901126200034057620002dc620004186024356004356200227a565b604051918291602083526020830190620003b4565b5f9103126200034057565b3462000340575f36600319011262000340576020600254604051908152f35b634e487b7160e01b5f52604160045260245ffd5b6001600160401b0381116200047f57604052565b62000457565b602081019081106001600160401b038211176200047f57604052565b604081019081106001600160401b038211176200047f57604052565b606081019081106001600160401b038211176200047f57604052565b90601f801991011681019081106001600160401b038211176200047f57604052565b6001600160401b0381116200047f5760051b60200190565b9080601f83011215620003405760209082356200053081620004fb565b93620005406040519586620004d9565b81855260208086019260051b8201019283116200034057602001905b8282106200056b575050505090565b813581529083019083016200055c565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b848310620005b15750505050505090565b9091929394958480620005d1600193603f198682030187528a51620003b4565b9801930193019194939290620005a0565b346200034057604036600319011262000340576001600160401b0360043581811162000340576200061890369060040162000513565b9060243590811162000340576200063490369060040162000513565b90620006418151620017a5565b915f5b82518110156200069757806200067662000661600193866200180a565b516200066e83866200180a565b51906200227a565b6200068282876200180a565b526200068f81866200180a565b500162000644565b60405180620002dc86826200057b565b346200034057602036600319011262000340576020620006c960043562001825565b6040516001600160a01b039091168152f35b600435906001600160a01b03821682036200034057565b604435906001600160a01b03821682036200034057565b602435906001600160a01b03821682036200034057565b3462000340576040366003190112620003405760206200075862000743620006db565b602435906200075282620022f7565b62002317565b6040519015158152f35b6024359063ffffffff821682036200034057565b3462000340576060366003190112620003405762000793620006db565b6200079d62000762565b90620007a8620006f2565b90620007b3620021e6565b600160ff60095416151503620003405763ffffffff8084165f908152600b6020526040902054620008a7946001600160a01b039262000894926200082a91906200080490869081165b161562001868565b6001600160a01b0387165f908152600c602052604090205463ffffffff161615620018b5565b6200086785620008488363ffffffff165f52600b60205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b0385165f908152600c602052604090205b9063ffffffff1663ffffffff19825416179055565b6200089e62001902565b921690620024a0565b005b3462000340576020366003190112620003405760043563ffffffff811680910362000340575f52600b602052602060018060a01b0360405f205416604051908152f35b346200034057602036600319011262000340576001600160a01b0362000911620006db565b165f52600c602052602063ffffffff60405f205416604051908152f35b60209060206040818301928281528551809452019301915f5b82811062000956575050505090565b83516001600160a01b03168552938101939281019260010162000947565b34620003405760208060031936011262000340576004356200099681620022f7565b5f52600560205260405f20906040519081602084549182815201935f5260205f20915f905b828210620009e357620002dc85620009d681890382620004d9565b604051918291826200092e565b835486529485019460019384019390910190620009bb565b6001600160401b0381116200047f57601f01601f191660200190565b81601f82011215620003405780359062000a3182620009fb565b9262000a416040519485620004d9565b828452602083830101116200034057815f926020809301838601378301015290565b34620003405760a0366003190112620003405762000a80620006db565b62000a8a62000709565b60643580151581036200034057608435926001600160401b038411620003405762000abe620008a794369060040162000a17565b926044359162001916565b34620003405760203660031901126200034057620002dc62000418600435620025a7565b3462000340575f3660031901126200034057602060ff600954166040519015158152f35b346200034057602036600319011262000340576001600160401b036004358181116200034057366023820112156200034057806004013591821162000340573660248360051b830101116200034057620002dc91602462000b73920162001b50565b604051918291826200057b565b346200034057602036600319011262000340576001600160a01b0362000ba5620006db565b165f526004602052602060405f2054604051908152f35b3462000340575f366003190112620003405762000bd8620021e6565b5f546001600160a01b0381168062000bec57005b5f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a36001600160a01b0319165f55005b3462000340575f3660031901126200034057600a546040516001600160a01b039091168152602090f35b9080601f830112156200034057602090823562000c6781620004fb565b9362000c776040519586620004d9565b81855260208086019260051b8201019283116200034057602001905b82821062000ca2575050505090565b81356001600160a01b03811681036200034057815290830190830162000c93565b9080601f830112156200034057602090823562000ce081620004fb565b9362000cf06040519586620004d9565b81855260208086019260051b8201019283116200034057602001905b82821062000d1b575050505090565b813580151581036200034057815290830190830162000d0c565b81601f82011215620003405780359160209162000d5284620004fb565b9362000d626040519586620004d9565b808552838086019160051b830101928084116200034057848301915b84831062000d8f5750505050505090565b82356001600160401b0381116200034057869162000db38484809489010162000a17565b81520192019162000d7e565b34620003405760a0366003190112620003405760046001600160401b038135818111620003405762000df5903690840162000c4a565b90602435818111620003405762000e10903690850162000c4a565b604435828111620003405762000e2a903690860162000513565b90606435838111620003405762000e45903690870162000cc3565b926084359081116200034057620008a79562000e649136910162000d35565b9362001bfa565b604036600319011262000340576024356001600160401b038111620003405762000e9a90369060040162000a17565b62000ea4620021e6565b3462000eb857620008a790600435620026e3565b60405163f36ba73760e01b8152600490fd5b3462000340576060366003190112620003405762000ee7620006db565b602435906044356001600160401b038111620003405762000f0d90369060040162000a17565b9062000f198362001825565b6001600160a01b0381811691338303620010245750821680156200101257808214620010005762000f6562000f618462000f5b885f52600560205260405f2090565b62002822565b1590565b62000fd457938062000fce92620008a7967f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc2366712156040518062000fa78a82620003db565b0390a462000fbf604051948592336020850162001ce1565b03601f198101845283620004d9565b62003340565b6040516314ec4d6d60e31b81526001600160a01b038416600482015260248101869052604490fd5b0390fd5b6040516344fed6b160e11b8152600490fd5b604051639577b8b360e01b8152600490fd5b604051632d938f5160e11b81526001600160a01b0391909116600482015260248101869052336044820152606490fd5b3462000340575f36600319011262000340575f546040516001600160a01b039091168152602090f35b346200034057602036600319011262000340576004355f526007602052602060405f2054604051908152f35b6040366003190112620003405760046001600160401b0381358181116200034057620010d9903690840162000513565b906024359081116200034057620010f4903690840162000d35565b91620010ff620021e6565b346200117157815183510362001162578151156200115357505f5b8151811015620008a757806200114c62001137600193856200180a565b516200114483876200180a565b5190620026e3565b016200111a565b6040516397da5f9560e01b8152fd5b604051633bcc897960e01b8152fd5b60405163f36ba73760e01b8152fd5b3462000340576020806003193601126200034057620011a8620011a2620006db565b62001d3a565b90604051918183928301818452825180915281604085019301915f5b828110620011d457505050500390f35b835185528695509381019392810192600101620011c4565b3462000340576060366003190112620003405760046001600160401b038135818111620003405762001222903690840162000513565b60243582811162000340576200123c903690850162000513565b91604435908111620003405762001257903690850162000d35565b9262001262620021e6565b8151835180911490811591620012e8575b50620012d957815115620012ca57505f5b8151811015620008a75780620012c3620012a1600193856200180a565b51620012ae83876200180a565b51620012bb84896200180a565b5191620029bd565b0162001284565b6040516380c9830560e01b8152fd5b6040516317d38eff60e11b8152fd5b9050845114155f62001273565b3462000340576060366003190112620003405762001312620006db565b6200131c62000709565b906200138d6200132b620006f2565b9262001336620021e6565b6200135260016200134960095460ff1690565b15151462001860565b60018060a01b0380931692806200138262001375865f52600360205260405f2090565b546001600160a01b031690565b921691161462001860565b803b15620003405760405163ce5494bb60e01b81526001600160a01b039290921660048301525f8260248183855af1918215620013ff57620008a792620013e1575b50620013da62001902565b9062002b3b565b80620013f1620013f8926200046b565b806200042d565b5f620013cf565b62001d9f565b3462000340576040366003190112620003405762001422620006db565b6200142c62000762565b90600954916200144060ff84161562001860565b60018060a01b03926200146a84620007fc620013758563ffffffff165f52600b60205260405f2090565b60405190610b25808301918383106001600160401b038411176200047f578392620014c7926200352e853960089190911c87166001600160a01b0316815263ffffffff851660208201526040808201819052606082015260800190565b03905ff08015620013ff57620008a79362001519911691620014fc83620008488363ffffffff165f52600b60205260405f2090565b6001600160a01b0383165f908152600c602052604090206200087f565b6200152362001902565b91620024a0565b346200034057606036600319011262000340576044356001600160401b038111620003405762001563620008a791369060040162000a17565b6200156d620021e6565b602435600435620029bd565b3462000340576080366003190112620003405762001596620006db565b60243590620015a462000344565b906064356001600160401b0381116200034057620015c790369060040162000a17565b91620015d38462001825565b6001600160a01b03818116903382036200162b578416908115620010125714620010005783828662001606938662002ce4565b6200160d57005b62000fce620008a79362000fbf604051948592336020850162001d0e565b604051632d938f5160e11b81526001600160a01b038416600482015260248101889052336044820152606490fd5b346200034057602036600319011262000340576004356001600160401b03811162000340576200168e90369060040162000513565b6200169a8151620017a5565b905f5b8151811015620016e25780620016c1620016ba600193856200180a565b51620025a7565b620016cd82866200180a565b52620016da81856200180a565b50016200169d565b60405180620002dc85826200057b565b34620003405760403660031901126200034057620008a760243560043562001e28565b3462000340576020366003190112620003405762001732620006db565b6200173c620021e6565b6001600160a01b0390811690811562001793575f549081168083036200175e57005b82907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36001600160a01b031916175f55005b6040516306b620db60e21b8152600490fd5b90620017b182620004fb565b620017c06040519182620004d9565b8281528092620017d3601f1991620004fb565b01905f5b828110620017e457505050565b806060602080938501015201620017d7565b634e487b7160e01b5f52603260045260245ffd5b80518210156200181f5760209160051b010190565b620017f6565b5f818152600360205260409020546001600160a01b031690811562001848575090565b60249060405190635747cd1b60e11b82526004820152fd5b156200034057565b156200187057565b60405162461bcd60e51b815260206004820152601860248201527f616c7265616479206f776e656420627920736f6d656f6e6500000000000000006044820152606490fd5b15620018bd57565b60405162461bcd60e51b815260206004820152601b60248201527f616c726561647920696e6a656374656420746f20736f6d656f6e6500000000006044820152606490fd5b60405190620019118262000485565b5f8252565b9392919262001926843362002317565b1562001aab576001600160a01b0382811695808216929183881462001a995783620019518862001825565b9182160362001a695750861562001a575762001a49868062001a559962001a4f966200198362000fbf9b8a8862002fbe565b6200198e8362001825565b506200199b838762003142565b6001600160a01b0386165f908152600460205260409020620019bf90849062003473565b506001600160a01b0389165f908152600460205260409020620019e4908490620032d3565b50620019fd8962000848855f52600360205260405f2090565b6040517fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf908062001a318a8e3384620023c6565b0390a460405197889485928886336020870162002464565b620033a8565b620030b0565b565b6040516324ecef4d60e01b8152600490fd5b604051632d938f5160e11b81526001600160a01b0391821660048201526024810188905291166044820152606490fd5b604051635d67d6c160e01b8152600490fd5b604051631294d2a960e01b815260048101859052336024820152604490fd5b91908110156200181f5760051b81013590601e1981360301821215620003405701908135916001600160401b0383116200034057602001823603811362000340579190565b908092918237015f815290565b3d1562001b4b573d9062001b3082620009fb565b9162001b406040519384620004d9565b82523d5f602084013e565b606090565b91909162001b5e83620017a5565b925f5b81811062001b6e57505050565b5f8062001b7d83858762001aca565b6040939162001b9185518093819362001b0f565b0390305af49062001ba162001b1c565b911562001bce57509060019162001bb982886200180a565b5262001bc681876200180a565b500162001b61565b81519192911562001be157825160208401fd5b5163234eb81960e01b8152600481019190915260249150fd5b94939091928551938351851480159062001cd5575b801562001cc9575b801562001cbd575b62001cab575f5b85811062001c38575050505050509050565b8062001ca462001c5c62001c4f6001948c6200180a565b516001600160a01b031690565b62001c6c62001c4f848a6200180a565b62001c7884876200180a565b5162001c8f62001c89868a6200180a565b51151590565b9162001c9c868b6200180a565b519362001916565b0162001c26565b6040516393a8311960e01b8152600490fd5b50825185141562001c1f565b50815185141562001c17565b50805185141562001c0f565b620003ee939260809260018060a01b031682526020820152600160408201528160608201520190620003b4565b620003ee939260809260018060a01b0316825260208201525f60408201528160608201520190620003b4565b60018060a01b03165f526020600460205260405f209060405180928391602082549182815201915f5260205f20935f905b82821062001d8457505050620003ee92500382620004d9565b85548452600195860195879550938101939091019062001d6b565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821162001dcd57565b62001daa565b811562001dde570690565b634e487b7160e01b5f52601260045260245ffd5b908160011b918083046002149015171562001dcd57565b906063820180921162001dcd57565b9081602091031262000340575190565b5f8181526003602052604090205490919062001e4f906001600160a01b0316151562001860565b6001600160a01b0382811692909190833b15620003405760405163116508a760e21b80825260048201849052915f82602481838a5af1908115620013ff5762001eac9262001375926200208a575b505f52600360205260405f2090565b5f546001600160a01b0316908480831691160362001fd5575b5050600a5462001ee691506001600160a01b03165b6001600160a01b031690565b161562001f5a576040516321ac695f60e11b808252602091908282600481875afa918215620013ff575f9262001fb1575b50600a54839062001f31906001600160a01b031662001eda565b9160046040518094819382525afa928315620013ff575f9362001f7b575b50501162001f5a5750565b600a80546001600160a01b0319166001600160a01b03909216919091179055565b62001fa0929350803d1062001fa9575b62001f978183620004d9565b81019062001e18565b905f8062001f4f565b503d62001f8b565b62001fcd919250833d851162001fa95762001f978183620004d9565b905f62001f17565b62001fe09062001d3a565b80511562001ec55762002036620020306200202962001eda62001eda62001eda62001c4f6200203d9762002022620020184362001dbe565b4082519062001dd3565b906200180a565b9462001df2565b62001e09565b6064900490565b823b1562000340576040519182526004820152905f908290602490829084905af18015620013ff5762002073575b808062001ec5565b80620013f162002083926200046b565b5f6200206b565b80620013f16200209a926200046b565b5f62001e9d565b3415620020ba576040516330fa4a2160e11b8152600490fd5b606460405163e5099ee360e01b815260206004820152600460248201525f6044820152fd5b60043610620020f357620003ee9062002db0565b6044604051809263e5099ee360e01b825260206004830152806024830152805f848401375f828201840152601f01601f19168101030190fd5b6200217862002172604051696773c5a04a6d4300884b60b11b60208201525f602a8201526301ffc9a760e01b602c820152602081526200216c81620004a1565b62003410565b6200322d565b805160148114159081620021db575b50620021b457620021989062002ea1565b60601c908115620021ae57620003ee9162002f39565b50505f90565b6040516342bfe79f60e01b81526020600482015290819062000ffc906024830190620003b4565b905015155f62002187565b5f546001600160a01b03163303620021fa57565b60405163bf1169c560e01b8152336004820152602490fd5b60208183031262000340578051906001600160401b03821162000340570181601f82011215620003405780516200224981620009fb565b92620022596040519485620004d9565b818452602082840101116200034057620003ee916020808501910162000391565b5f818152600360205260409020549091906001600160a01b03161562000340576040516354f6127f60e01b81526004810191909152905f90829060249082906001600160a01b03165afa908115620013ff575f91620022d7575090565b620003ee91503d805f833e620022ee8183620004d9565b81019062002212565b5f818152600360205260409020546001600160a01b031615620018485750565b6001600160a01b03806200232b8462001825565b1691169081149182156200233e57505090565b620003ee92505f52600560205260405f206001915f520160205260405f2054151590565b5f19811462001dcd5760010190565b6001600160a01b0390911681525f6020820152606060408201819052620003ee92910190620003b4565b6001600160a01b03909116815260016020820152606060408201819052620003ee92910190620003b4565b6001600160a01b0390911681529015156020820152606060408201819052620003ee92910190620003b4565b6001600160a01b0391821681525f602082015291166040820152606081019190915260a060808201819052620003ee92910190620003b4565b6001600160a01b039182168152911660208201525f6040820152606081019190915260a060808201819052620003ee92910190620003b4565b6001600160a01b03918216815291811660208301529091166040820152606081019190915260a060808201819052620003ee92910190620003b4565b909291906001600160a01b038116801562001a5757620024c1858362002f6c565b5f858152600360205260409020546001600160a01b03166200258e578462001a5594956200258892620024ff620024fa60025462002362565b600255565b6001600160a01b0385165f90815260046020526040902062002523908390620032d3565b506200253c8562000848845f52600360205260405f2090565b5f7fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf604051806200256f8a33836200239b565b0390a462000fbf604051948592853360208601620023f2565b6200303f565b6040516334c7b51160e01b815260048101869052602490fd5b7f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e811462002684575f52600160206001815260405f206040519283915f91815491620025f38362002837565b80865292600181169081156200266057506001146200261e575b505050620003ee92500382620004d9565b5f90815285812095935091905b81831062002647575050620003ee93508201015f80806200260d565b855487840185015294850194869450918301916200262b565b92505050620003ee94925060ff191682840152151560051b8201015f80806200260d565b50600a546040516354f6127f60e01b81527fef285b02a4f711ad84793f73cc8ed6fea8af7013ece8132dacb7b33f6bce93da6004820152905f90829060249082906001600160a01b03165afa908115620013ff575f91620022d7575090565b907ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d821462002810577fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1820362002746576040516385c169bd60e01b8152600490fd5b7f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db93275682036200278057604051630eceab6760e31b8152600490fd5b7fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb38203620027ba57604051634ef6d7fb60e01b8152600490fd5b6200280b81620027fe7fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b293620027f8865f52600160205260405f2090565b620028e4565b60405191829182620003db565b0390a2565b604051631b32400560e11b8152600490fd5b620003ee916001600160a01b031690620032d3565b90600182811c9216801562002867575b60208310146200285357565b634e487b7160e01b5f52602260045260245ffd5b91607f169162002847565b916200288c9183549060031b91821b915f19901b19161790565b9055565b601f82116200289e57505050565b5f5260205f20906020601f840160051c83019310620028d9575b601f0160051c01905b818110620028cd575050565b5f8155600101620028c1565b9091508190620028b8565b91909182516001600160401b0381116200047f57620029108162002909845462002837565b8462002890565b602080601f831160011462002951575081906200288c9394955f9262002945575b50508160011b915f199060031b1c19161790565b015190505f8062002931565b90601f1983169562002966855f5260205f2090565b925f905b888210620029a4575050836001959697106200298b575b505050811b019055565b01515f1960f88460031b161c191690555f808062002981565b806001859682949686015181550195019301906200296a565b9091604051602090602081019084825285604082015260408152620029e281620004bd565b5190205f5260018060205260405f20918351916001600160401b0383116200047f5762002a1c8362002a15865462002837565b8662002890565b602091601f841160011462002a965750509162002a76827fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb959362002a85955f9162002a8a575b508160011b915f199060031b1c19161790565b905560405191829182620003db565b0390a3565b90508401515f62002a63565b9190601f1984169062002aac865f5260205f2090565b935f915b83831062002b16575050509262002a859492600192827fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb98961062002afd575b5050811b019055620027fe565b8501515f1960f88460031b161c191690555f8062002af0565b88850151865594850194938101939181019162002ab0565b801562001dcd575f190190565b62001a5591906001600160a01b039062001a49908262002b5b8262001825565b161562002cb9575b5f62002ba162002b7560025462001dbe565b62002b88845f52600860205260405f2090565b5481811062002c76575b505f52600760205260405f2090565b555f81815260086020526040812055805f62002bbd8262001825565b9462002bcf620024fa60025462002b2e565b62002bdb838762003142565b6001600160a01b0386165f90815260046020526040902062002bff90849062003473565b5062002c2762002c17845f52600360205260405f2090565b80546001600160a01b0319169055565b7fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf604051918716918062002c5d8a338362002371565b0390a462000fbf6040519485928533602086016200242b565b62002cb162002c8d835f52600760205260405f2090565b548062002ca2845f52600760205260405f2090565b555f52600860205260405f2090565b555f62002b92565b600254805f5260076020528160405f205562002cdd825f52600860205260405f2090565b5562002b63565b919392845f52600560205260405f209260018060a01b039062002d0b828216809662003473565b1562002d5d57509062002d587fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c9392604051938493151584526040602085015216956040830190620003b4565b0390a4565b6040516312a8c6a360e21b81526001600160a01b0391909116600482015260248101879052604490fd5b9060349391815f823701916bffffffffffffffffffffffff199060601b16825260148201520190565b63ffffffff60e01b5f35169062002df562002172604051696773c5a04a6d4300884b60b11b60208201525f602a82015284602c820152602081526200216c81620004a1565b80516014811415908162002e96575b50620021b45762002e159062002ea1565b60601c91821562002e7257505f91829160405162002e508162002e416020820194349033908762002d87565b03601f198101835282620004d9565b519134905af162002e6062001b1c565b901562002e6a5790565b602081519101fd5b60405163bb370b2b60e01b81526001600160e01b0319919091166004820152602490fd5b905015155f62002e04565b90602082519201516bffffffffffffffffffffffff1990818116936014811062002eca57505050565b60140360031b82901b16169150565b5f602091604051838101906301ffc9a760e01b8252631aed5a8560e21b60248201526024815262002f0a81620004bd565b5191617530fa5f513d8262002f2c575b508162002f25575090565b9050151590565b6020111591505f62002f1a565b5f90602092604051848101916301ffc9a760e01b835263ffffffff60e01b1660248201526024815262002f0a81620004bd565b600254805f5260076020528260405f205562002f90835f52600860205260405f2090565b556001600160a01b03161562002fa35750565b62002fbb5f918262002ca262002b7560025462001dbe565b55565b6001600160a01b03919082161562002fdb575b161562002fa35750565b600254805f5260076020528360405f205562002fff845f52600860205260405f2090565b5562002fd1565b906040620003ee927f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d81528160208201520190620003b4565b6200304a8162002ed9565b15620030ac57604051631aed5a8560e21b8152915f91839182908490829062003077906004830162003006565b03926001600160a01b03165af18015620013ff57620030935750565b620030a9903d805f833e620022ee8183620004d9565b50565b5050565b9190620030bd8362002ed9565b15620030e95750620030775f928392604051948580948193631aed5a8560e21b83526004830162003006565b905015620030f45750565b803b156200311f57604051634349776d60e01b81526001600160a01b03919091166004820152602490fd5b604051630317313760e01b81526001600160a01b03919091166004820152602490fd5b90805f526005906020926005602052604090815f20938454945f5b8681106200316f575050505050505050565b8154156200181f575f828152889020548551906001600160a01b0390811690620031998362000485565b5f8352885f52858b52620031b082895f2062003473565b1562003206579188917fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c898d620031fc6001989783519384935f85528401528c16958d830190620003b4565b0390a4016200315d565b87516312a8c6a360e21b81526001600160a01b0383166004820152602481018a9052604490fd5b5f52600160206001815260405f206040519283915f91815491620032518362002837565b80865292600181169081156200266057506001146200327b57505050620003ee92500382620004d9565b5f90815285812095935091905b818310620032a4575050620003ee93508201015f80806200260d565b8554878401850152948501948694509183019162003288565b80548210156200181f575f5260205f2001905f90565b5f828152600182016020526040902054620021ae57805490680100000000000000008210156200047f57826200332b62003315846001809601855584620032bd565b819391549060031b91821b915f19901b19161790565b90558054925f520160205260405f2055600190565b6200334b8162002ed9565b62003354575050565b620030775f92918392604051948580948193631aed5a8560e21b83527f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f009706004840152604060248401526044830190620003b4565b620033b38162002ed9565b620033bc575050565b620030775f92918392604051948580948193631aed5a8560e21b83527fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab006004840152604060248401526044830190620003b4565b60208151910151906020811062003425575090565b5f199060200360031b1b1690565b80549081156200345f575f19918201916200344f8383620032bd565b909182549160031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f1462003525575f19928484019085821162001dcd57805494850194851162001dcd575f958583620034c994620034d69803620034dc575b50505062003433565b905f5260205260405f2090565b55600190565b6200350d6200350691620034f56200351b9487620032bd565b90549060031b1c92839187620032bd565b9062002872565b85905f5260205260405f2090565b555f8080620034c0565b505050505f9056fe60806040908082523461011357608081610b2580380380916100218285610173565b8339810103126101135761003481610196565b60209160048382015192846060878501519401519160018060a01b03199033825f5416175f5560018060a01b0316809160015416176001558751938480926355afdbcb60e11b82525afa918215610169575f92610132575b508551928584019463466c6dc560e11b86526024850152604484015260648301526064825260a082019060018060401b039383831085841117610117575f938493885251915af4913d1561012b573d918211610117575f908451926100fa82601f19601f8401160185610173565b83523d92013e5b15610113575161097a90816101ab8239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b5050610101565b9091508481813d8311610162575b61014a8183610173565b810103126101135761015b90610196565b905f61008c565b503d610140565b86513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761011757604052565b51906001600160a01b03821682036101135756fe608060409080825260049081361015610016575f80fd5b5f3560e01c90816301ffc9a71461060457508063221a8729146105e65780634358d2be146105c85780634594229c146104e357806354f6127f146104b05780637b103999146104895780637f23690c146104555780639790242114610395578063c20db68914610377578063ce5494bb14610337578063dedff9c614610226578063e710563c146102085763f3ccaac0146100af575f80fd5b346101cd575f3660031901126101cd57600154825163463962a760e11b815260209290918391839182906001600160a01b03165afa9081156101fe575f91829182916101d1575b508451848101906354f6127f60e01b82527f2abb082c1b23ea79fce2a9e934ecb19ce15738b1483c365d0125f47e8ccc7dfc60248201526024815261013a8161069c565b51915af4916101476107e7565b92156101cd57825183019282818186019503126101cd57828101519067ffffffffffffffff82116101cd57019083603f830112156101cd57828201519161018d836106ee565b9461019a835196876106cc565b8386528284830101116101cd576101c9926101ba91838688019101610656565b51928284938452830190610677565b0390f35b5f80fd5b6101f19150843d86116101f7575b6101e981836106cc565b8101906107c8565b5f6100f6565b503d6101df565b83513d5f823e3d90fd5b82346101cd575f3660031901126101cd576020906012549051908152f35b50346101cd57602090816003193601126101cd5780359067ffffffffffffffff82116101cd5761025891369101610768565b9182519061027d61026883610750565b92610275835194856106cc565b808452610750565b601f1901835f5b828110610327575050505f5b84518110156102cb57806102af6102a96001938861091c565b51610816565b6102b9828661091c565b526102c4818561091c565b5001610290565b509250825191808301818452825180915281858501958260051b8601019301915f955b8287106102fb5785850386f35b909192938280610317600193603f198a82030186528851610677565b96019201960195929190926102ee565b6060828287010152018490610284565b50346101cd5760203660031901126101cd57356001600160a01b03818116918290036101cd575f5490811633036101cd576001600160a01b031916175f55005b82346101cd575f3660031901126101cd576020906013549051908152f35b5090806003193601126101cd5767ffffffffffffffff82358181116101cd576103c19036908501610768565b5060248035908282116101cd57366023830112156101cd57818501356103e681610750565b936103f3865195866106cc565b818552602460208096019260051b850101933685116101cd5760248101925b85841061042f5788883461042257005b5163f36ba73760e01b8152fd5b83358381116101cd57879161044a839288369187010161070a565b815201930192610412565b5090806003193601126101cd5760243567ffffffffffffffff81116101cd57610481903690840161070a565b503461042257005b82346101cd575f3660031901126101cd575f5490516001600160a01b039091168152602090f35b5090346101cd5760203660031901126101cd576104d06101c99235610816565b9051918291602083526020830190610677565b5090346101cd5760203660031901126101cd575f548235926001600160a01b03929091831633036101cd5760205a93600154168251938480926355afdbcb60e11b82525afa9182156105be57915f92918392839261059d575b5051602081019063116508a760e21b8252866024820152602481526105608161069c565b51915af461056c6107e7565b50156101cd575a916010540160105503806011540160115548810260125401601255483a0302601354016013555f80f35b6105b791925060203d6020116101f7576101e981836106cc565b905f61053c565b50513d5f823e3d90fd5b82346101cd575f3660031901126101cd576020906010549051908152f35b82346101cd575f3660031901126101cd576020906011549051908152f35b82346101cd5760203660031901126101cd57359063ffffffff60e01b82168092036101cd576020916301ffc9a760e01b8114908115610645575b5015158152f35b6318a6a9a560e21b1490508361063e565b5f5b8381106106675750505f910152565b8181015183820152602001610658565b9060209161069081518092818552858086019101610656565b601f01601f1916010190565b6060810190811067ffffffffffffffff8211176106b857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176106b857604052565b67ffffffffffffffff81116106b857601f01601f191660200190565b81601f820112156101cd57803590610721826106ee565b9261072f60405194856106cc565b828452602083830101116101cd57815f926020809301838601378301015290565b67ffffffffffffffff81116106b85760051b60200190565b9080601f830112156101cd57602090823561078281610750565b9361079060405195866106cc565b81855260208086019260051b8201019283116101cd57602001905b8282106107b9575050505090565b813581529083019083016107ab565b908160209103126101cd57516001600160a01b03811681036101cd5790565b3d15610811573d906107f8826106ee565b9161080660405193846106cc565b82523d5f602084013e565b606090565b6001546040805163463962a760e11b815290926020928390839060049082906001600160a01b03165afa91821561091257915f9291839283926108f3575b508551858101916354f6127f60e01b83526024820152602481526108778161069c565b51915af4916108846107e7565b92156101cd57825183019282818186019503126101cd57828101519067ffffffffffffffff82116101cd570183603f820112156101cd5782810151916108c9836106ee565b946108d6825196876106cc565b8386528184840101116101cd576108f09385019101610656565b90565b61090b919250853d87116101f7576101e981836106cc565b905f610854565b84513d5f823e3d90fd5b80518210156109305760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfea26469706673582212206c5c550fe4870b5c8de9ec4447e02e6de1853a7e6abc9bf7c2adcfb0811426f264736f6c63430008170033a2646970667358221220284f10fd0dc3415ffbddda3e3c1614081dd249040175886fa332e2b6d847ca5d64736f6c63430008170033deba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1e0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3f675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756114bd03b3a46d48759680d81ebb2b414fda7d030a7105a851867accf1c2352e7ece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2a2646970667358221220193803e886292584245208d51558ce29840826ff8149c83648336d598b01be5c64736f6c63430008170033"); - -pub static BURNTPIX_BYTECODE_THREE: Bytes = bytes!("60806040526004361015610011575f80fd5b5f3560e01c6354f6127f14610024575f80fd5b3461005b57602036600319011261005b5761005761004360043561014b565b604051918291602083526020830190610080565b0390f35b5f80fd5b5f5b8381106100705750505f910152565b8181015183820152602001610061565b906020916100998151809281855285808601910161005f565b601f01601f1916010190565b6040810190811067ffffffffffffffff8211176100c157604052565b634e487b7160e01b5f52604160045260245ffd5b6060810190811067ffffffffffffffff8211176100c157604052565b6020810190811067ffffffffffffffff8211176100c157604052565b90601f8019910116810190811067ffffffffffffffff8211176100c157604052565b67ffffffffffffffff81116100c157601f01601f191660200190565b7f2abb082c1b23ea79fce2a9e934ecb19ce15738b1483c365d0125f47e8ccc7dfc8114610855577fef285b02a4f711ad84793f73cc8ed6fea8af7013ece8132dacb7b33f6bce93da81146106d5577f708e7b881795f2e6b6c2752108c177ec89248458de3bf69d0d43480b3e5034e6811461069f577feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c811461067e577fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18114610658577f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568114610637577fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3811461061f577f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e146102985760405161028e816100f1565b5f81525f36813790565b6102a06110e5565b805160208201206102af61085e565b906102b990610a2f565b6102c1610937565b926102cb90610af9565b6040516102d7816100a5565b6013815272227d5d5d2c2261747472696275746573223a5b60681b6020820190815260105461030590610c7c565b60115461031190610e26565b9060125461031e90610f13565b9260135461032b90610f13565b9460405196610339886100a5565b6003885260208801625d7d7d60e81b90526040519a8b9960208b019b8c81516020819301916103679261005f565b8b016020810161060f60f31b90528151918260228301916020019161038b9261005f565b01815191826022830191602001916103a29261005f565b01602281017f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000905281519182603c830191602001916103e09261005f565b0190519182603c83016103f29261005f565b01603c81017f7b226b6579223a22497465726174696f6e73222c2274797065223a226e756d6290526b32b91116113b30b63ab2911d60a11b605c820152815191826068830191602001916104459261005f565b0160688101611f4b60f21b9052606a81017f7b226b6579223a2247617355736564222c2274797065223a22737472696e672290526916113b30b63ab2911d1160b11b608a820152815191826094830191602001916104a29261005f565b019062089f4b60ea1b91826094820152609781017f7b226b6579223a22466565734275726e74222c2274797065223a22737472696e90526b339116113b30b63ab2911d1160a11b60b78201528151918260c3830191602001916105049261005f565b019060c382015260c681017f7b226b6579223a225469707350616964222c2274797065223a22737472696e6790526a1116113b30b63ab2911d1160a91b60e68201528151918260f18301916020019161055c9261005f565b0161227d60f01b60f18201528151918260f38301916020019161057e9261005f565b010360d38101835260f301610593908361010d565b815181206040515f602082015263379abe3560e11b6022820152600160f51b602682015260288101919091527f646174613a6170706c69636174696f6e2f6a736f6e3b636861727365743d5554604882015263118b4e0b60e21b606882015291518291610606908290606c85019061005f565b810103604c81018252606c0161061c908261010d565b90565b50604051600260208201526020815261061c816100a5565b50604051610644816100a5565b6004815263084a092b60e31b602082015290565b50604051610665816100a5565b6009815268084eae4dce840a0d2f60bb1b602082015290565b5060405161068b816100a5565b60048152632936598960e21b602082015290565b505f546bffffffffffffffffffffffff19806040519260601b1660208301523060601b1660348201526034815261061c816100d5565b506106de6110e5565b8051602090818301206106ef61085e565b906106f990610a2f565b610701610937565b9361070b90610af9565b604051610717816100a5565b600681528481019165227d5d5d7d7d60d01b8352604051968794878087018881995192839101916107479261005f565b860188810161060f60f31b9052815191828a602284019201916107699261005f565b0181519182896022840192019161077f9261005f565b01602281017f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000090528151918288603c84019201916107bc9261005f565b0190519182603c83016107ce9261005f565b0103601c81018452603c016107e3908461010d565b825181209260405193849384015f90526022840163379abe3560e11b9052600160f51b60268501526028840152604883017f646174613a6170706c69636174696f6e2f6a736f6e3b636861727365743d555490526068830163118b4e0b60e21b9052519081606c84016106069261005f565b5061061c6110e5565b6040519060c0820182811067ffffffffffffffff8211176100c1576040908152609383527f7b224c5350344d65746164617461223a7b226c696e6b73223a5b7b2275726c2260208401527f3a2268747470733a2f2f6275726e747069782e636f6d227d5d2c22696d616765908301527f73223a5b5b7b227769647468223a3736382c22686569676874223a3736382c2260608301527f766572696669636174696f6e223a7b226d6574686f64223a226b656363616b326080830152721a9b14313cba32b9949116113230ba30911d1160691b60a0830152565b60405190610944826100a5565b600a825269113e96113ab936111d1160b11b6020830152565b9081602091031261005b57516001600160a01b038116810361005b5790565b3d156109a6573d9061098d8261012f565b9161099b604051938461010d565b82523d5f602084013e565b606090565b60208183031261005b5780519067ffffffffffffffff821161005b570181601f8201121561005b5780516109de8161012f565b926109ec604051948561010d565b8184526020828401011161005b5761061c916020808501910161005f565b908151811015610a1b570160200190565b634e487b7160e01b5f52603260045260245ffd5b6040805191610a3d836100a5565b601083526020926f181899199a1a9b1b9c1cb0b131b232b360811b6020820152604051610a69816100f1565b5f8152935f935b818510610a7f57505050505090565b9091929394600190610aee60228789601f0360031b1c9260ff60f81b610aba600f82610ab0828960041c168d610a0a565b511696168a610a0a565b51169386519482610ad487945180928c808801910161005f565b83019189830152602182015203600281018452018261010d565b950193929190610a70565b805115610c6957604051610b0c816100d5565b604081527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208201527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f604082015281519160029260028101809111610c5557600390819004600281901b94906001600160fe1b03811603610c55579290610bad610b978661012f565b95610ba5604051978861010d565b80875261012f565b6020860190601f190136823793839284518501935b848110610c02575050505050600390510680600114610bf057600214610be6575090565b603d905f19015390565b50603d90815f19820153600119015390565b8360049197929394959701918251600190603f9082828260121c16880101518453828282600c1c16880101518385015382828260061c168801015188850153168501015186820153019593929190610bc2565b634e487b7160e01b5f52601160045260245ffd5b50604051610c76816100f1565b5f815290565b8015610d3d57604051610c8e816100a5565b6020815260203681830137815f925b610d0e5750610cab8261012f565b91610cb9604051938461010d565b808352601f19610cc88261012f565b013660208501375f5b818110610cde5750505090565b6001906001600160f81b0319610cf98285035f190186610a0a565b51165f1a610d078287610a0a565b5301610cd1565b91600a808406930481610d376001839492019560ff60f81b9060300160f81b165f1a9185610a0a565b53610c9d565b50604051610d4a816100a5565b60018152600360fc1b602082015290565b602190610dbf9294936040519582610d7d88945180926020808801910161005f565b8301601760f91b6020820152610d9c825180936020888501910161005f565b01610db0825180936020878501910161005f565b0103600181018552018361010d565b565b602290610dbf9294936040519582610de388945180926020808801910161005f565b83016102e360f41b6020820152610e03825180936020888501910161005f565b01610e17825180936020878501910161005f565b0103600281018552018361010d565b620f4240808210610f0957633b9aca0080831015610e9e5750604051610e4b816100a5565b60018152604d60f81b602082015290612710818406049204915b600a811015610e8957610e83610e7d61061c94610c7c565b91610c7c565b90610dc1565b610e98610e7d61061c94610c7c565b90610d5b565b905064e8d4a5100080831015610eda5750604051610ebb816100a5565b60018152602160f91b6020820152906298968081840604920491610e65565b9050604051610ee8816100a5565b60018152601560fa1b6020820152906402540be40081840604920491610e65565b5061061c90610c7c565b6103e88082106110a257620f424080831015610f695750604051610f36816100a5565b60048152634b57656960e01b602082015290600a81840604920491600a811015610e8957610e83610e7d61061c94610c7c565b9050633b9aca0080831015610fa65750604051610f85816100a5565b60048152634d57656960e01b60208201529061271081840604920491610e65565b905064e8d4a5100080831015610fe55750604051610fc3816100a5565b60048152634757656960e01b6020820152906298968081840604920491610e65565b905066038d7ea4c680008083101561102a5750604051611004816100a5565b60058152641856a98b2b60db1b60208201528183049290916402540be400910604610e65565b9050670de0b6b3a76400008083101561106f575060405161104a816100a5565b60048152630da98b2b60e31b6020820152906509184e72a00081840604920491610e65565b905060405161107d816100a5565b6003815262098b2b60eb1b602082015290662386f26fc1000081840604920491610e65565b506110ac90610c7c565b61061c6023604051836110c982955180926020808601910161005f565b81016257656960e81b602082015203600381018452018261010d565b600154604080516355afdbcb60e11b81526020926001600160a01b03919084908290600490829086165afa908115611258575f918291829161123b575b5084516303cf32ab60e61b8782019081526004825290611141816100a5565b51915af49161114e61097c565b921561005b57836111698482806004975183010191016109ab565b9260015416825194858092630c543fdb60e11b82525afa92831561123157915f939184938493611202575b506111df6003549160045490519283916111c68a840196633617f92d60e21b8852606060248601526084850190610080565b916044840152606483015203601f19810183528261010d565b51915afa6111eb61097c565b901561005b578161061c92825183010191016109ab565b611223919350863d881161122a575b61121b818361010d565b81019061095d565b915f611194565b503d611211565b50513d5f823e3d90fd5b6112529150863d881161122a5761121b818361010d565b5f611122565b83513d5f823e3d90fdfea2646970667358221220d754235277b87b31b8acce280204f2b5f322de96296361221743109844254a7c64736f6c63430008170033"); - -pub static BURNTPIX_BYTECODE_FOUR: Bytes = bytes!("60806040526004361015610011575f80fd5b5f3560e01c80634594229c146106865780638cd8db8a146100b15763f3ccaac01461003a575f80fd5b346100ad575f3660031901126100ad57610052610ac3565b604092919251928391606083528351918260608501525f5b8381106100955750608094505f85848601015260208401526040830152601f80199101168101030190f35b6020868201810151608089840101528795500161006a565b5f80fd5b346100ad5760603660031901126100ad576001546004359060443590602435906001600160a01b0316156100ad578060035581600455026101056100fc6100f78361094c565b6108e0565b9180835261094c565b602082019190601f19013683375167ffffffffffffffff918282116105e757600160401b82116105e75760055482600555808310610646575b5060055f525f5b828110610612575050604051916080830191508111828210176105e757604052600381525f5b606081106105fb5750805190600160401b82116105e757600a5482600a55808310610554575b50602001600a5f525f80516020611a418339815191525f915b83831061053657845f620f424060011d620f4240806101d1620f423f198460011b01611a34565b810302055b600383106103b457600a54846101ee6100f78361094c565b9180835260208301600a5f525f80516020611a418339815191525f915b83831061033957858561021c610906565b5f5b83601482106103245750506102316108bf565b60c89060c881526119008036602084013761024a6108bf565b9060c882523660208301375f60208501935b8082106102f357505060809495506102738261178d565b61027c8161178d565b61028f61028883610a60565b5192610a71565b5161029c61028883610a60565b519280820383850381136102db575b506006556007556008556009558151600b5551600c556040810151600d556060810151600e550151600f55600255005b939290920160011d9260011d808401930391886102ab565b90956103028689600193610cab565b96865161030f8287610a82565b52855161031c8286610a82565b52019061025c565b826103329160019395610cab565b920161021e565b600a602060019261034861089e565b855481528486015483820152600286015460408201526003860154606082015260048601546080820152600586015460a0820152600686015460c0820152600786015460e08201526008860154610100820152600986015461012082015281520192019201919061020b565b9091926103bf6109b7565b5061040f6104056103fb6103f16103e76103e06103da6109b7565b96611a0d565b8752611a0d565b6020870152611a0d565b6040860152611a0d565b6060850152611a0d565b6080840152611a0d565b60a0830152600160401b6001675851f42d4c957f2d92830208916101688360201c07603c90620f4240610450620f423f19621e848085848602050701611a34565b8103870205918112156104e9575084905f5b60028705880390810161010085015290810160e08401520160c0820152601a600160401b60018486020860201c06610120820152600a548610156104d557600192600160401b926104ca8593600a5f52600a8a025f80516020611a41833981519152016109fd565b0208930191906101d6565b634e487b7160e01b5f52603260045260245ffd5b60788112156104fa5750845f610462565b60b481121561050c5750845f91610462565b60f081121561051e57505f9085610462565b61012c131561052e575f85610462565b5f8591610462565b600a60208261054860019451866109fd565b019201920191906101aa565b80600a0290600a8204036105d35782600a02600a810484036105d3575f80516020611a4183398151915291820191015b8181106105915750610191565b805f600a92555f60018201555f60028201555f60038201555f60048201555f60058201555f60068201555f60078201555f60088201555f600982015501610584565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b6020906106066109b7565b8282850101520161016b565b60019060208351930192817f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0015501610145565b827f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091820191015b81811061067b575061013e565b5f815560010161066e565b346100ad5760203660031901126100ad576001546001600160a01b0316156100ad5760035460045490600654916007549060085490600954926106c7610906565b93600a54966106d86100f78961094c565b9780895260208901600a5f525f80516020611a418339815191525f915b8383106108155750505050600254965f955b600435871061073c578751600b556020880151600c556040880151600d556060880151600e556080880151600f556002899055005b90919293949597610750888b600193610cab565b9888518581139081159161080a575b5080156107fc575b80156107ee575b6107e957836107888a8a866020818c039301510302610964565b0261079a86890386888d510302610964565b016107be60408b015160c01b60608c015160801b0160808c015160401b0191610982565b620f4240829392549160031b9282841c0101821b915f19901b19161790555b01959493929190610707565b6107dd565b50602089015186131561076e565b508260208a01511315610767565b90508713158c61075f565b600a602060019261082b9d9798999a9b9d61089e565b855481528486015483820152600286015460408201526003860154606082015260048601546080820152600586015460a0820152600686015460c0820152600786015460e082015260088601546101008201526009860154610120820152815201920192019190999796959493996106f5565b60405190610140820182811067ffffffffffffffff8211176105e757604052565b60405190611920820182811067ffffffffffffffff8211176105e757604052565b6040519190601f01601f1916820167ffffffffffffffff8111838210176105e757604052565b6040519060a0820182811067ffffffffffffffff8211176105e75760405281600b548152600c546020820152600d546040820152600e5460608201526080600f54910152565b67ffffffffffffffff81116105e75760051b60200190565b811561096e570490565b634e487b7160e01b5f52601260045260245ffd5b6005548110156104d55760055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905f90565b6109bf61089e565b905f82525f60208301525f60408301525f60608301525f60808301525f60a08301525f60c08301525f60e08301525f6101008301525f610120830152565b90610120600991805184556020810151600185015560408101516002850155606081015160038501556080810151600485015560a0810151600585015560c0810151600685015560e0810151600785015561010081015160088501550151910155565b8051600a10156104d5576101600190565b805160be10156104d5576117e00190565b80518210156104d55760209160051b010190565b67ffffffffffffffff81116105e757601f01601f191660200190565b9081518110156104d5570160200190565b600380549160045491828402908482048414851517156105d357808202918083048214901517156105d357610afa6100f783610a96565b91808352610b0a601f1991610a96565b013660208401375f805b858110610c4e57508015610c4757610b2b90611809565b8015610c3f575b5f5b858110610b4357505050929190565b5f5b878110610b555750600101610b34565b8088830201610b6381610982565b905490861b1c67ffffffffffffffff91868684841680610b8c575b505050505050600101610b45565b610b9581611809565b60ff9083610bab8460c08a901c84028502610964565b90610bb591610964565b9784610bcb8560808b901c841685028602610964565b90610bd591610964565b9760401c16020290610be691610964565b90610bf091610964565b91029260ff60f81b80938160f893841b165f1a610c0d878d610ab2565b53821b165f1a610c20600186018b610ab2565b531b165f1a90600201610c339087610ab2565b535f8080868682610b7e565b506001610b32565b5050929190565b5f5b878110610c605750600101610b14565b67ffffffffffffffff610c76828a850201610982565b905490861b1c16808410610c8e575b50600101610c50565b92506001610c85565b811561096e570590565b811561096e570790565b9091600160401b60018181675851f42d4c957f2d958602089160209083968051801561096e5785841c06610cde91610a82565b519585875195815190620f424097868b0191825193888601809d8b8d808451998a98828881604089019c8d51950205920205010195606085015102059060808401998a510205019860a08301998a51018094528481526040810190815160c085015101831c926060820190815160e087015101811c9260800190815161010088015101901c90525252610120015180610dda575b5050505050505050505050505080516305f5e0ff19808212918215610dcc575b508115610dc1575b508015610db3575b610dab57505090565b5f8092525290565b506305f5e100825113610da2565b90508251125f610d9a565b6305f5e1001291505f610d92565b808c03610e195750505050505050505050505050610df881516118ae565b610e0283516118ae565b835281525b5f808080808080808080808080610d72565b60028103610e6d57505050505050505050505050610e5a82518280865180028380020105918215610e63575b610e5191839102610c97565b92855102610c97565b83528152610e07565b9091508190610e45565b60038103610ec457505050505050505050505050610e958183518551800290800201056118ae565b610ea781800264e8d4a510000361187d565b908351918551848382028386020105875202910203058152610e07565b60048103610f1f57505050505050505050505090610e5a90610eee8451865180029080020161187d565b908115610f17575b50610f0a8185518751808201910302610c97565b928451901b855102610c97565b90505f610ef6565b60058103610f535750505050505050505050505050610f418151835190611914565b610e5a8251845180029080020161187d565b60068103610fbd57505050505050505050505050610f748251845190611914565b90610f878351855180029080020161187d565b610fb2610fa48284610f9a8288016118ae565b82020595036118ae565b800264e8d4a510000361187d565b020583528152610e07565b6007810361102157505050505050505050505050610fde8251845190611914565b610ffd82610ff48551875180029080020161187d565b809302056118ae565b908261101183800264e8d4a510000361187d565b825f030205855202058152610e07565b60088103611087575050505050505050505050506110428251845190611914565b6110656110578451865180029080020161187d565b92622fefd8938402056118ae565b908261107983800264e8d4a510000361187d565b820205855202058152610e07565b6009810361110f57505050505050505050505050610e5a6110ab8351855190611914565b6110bd8451865180029080020161187d565b908115611107575b6110ce906118ae565b9264e8d4a510006110ff83836110e7888002850361187d565b936110ff6110f4846118ae565b91828002900361187d565b940102610c97565b8391506110c5565b600a8103611189575050505050505050505050506111308251845190611914565b906111438351855180029080020161187d565b91821561117f575b611154906118ae565b91611173818361116c86800264e8d4a510000361187d565b9502610c97565b92020583528152610e07565b909150819061114b565b600b8103611200575050505050505050505050506111aa8251845190611914565b906111c66111c08451865180029080020161187d565b926118ae565b8164e8d4a51000916111f26111e76111e1838002860361187d565b966118ae565b93848002900361187d565b020592020583528152610e07565b600c810361127857505050505050505050505050506112228151835190611914565b6112496112378351855180029080020161187d565b6112428184016118ae565b92036118ae565b9061125d64e8d4a51000928002830361187d565b90808002029080800202908282820305855201058152610e07565b9b9e98999a9b600d81145f146113035750505050505050506112d993929185910208958380885f941c16146112f8575b6112d16112b88651885190611914565b916112cb8751895180029080020161187d565b0261187d565b931d016118ae565b6112eb81800264e8d4a510000361187d565b8202910283528152610e07565b622fefd891506112a8565b989e98600e819c979b95989c999699145f146113735750505050505050505050505081515f8112155f1461134e57508251905f8212611344575b5050610e07565b1d82525f8061133d565b83519091905f811261136757508251901b825250610e07565b811d84521b8152610e07565b600f819d98999a9b9c9d145f146113fb5750505050505050508290518002059384156113f1575b8290518002059384156113e7575b6113ce6113bf6113c46113bf8694858c5102610c97565b6118ae565b9683895102610c97565b9486519251020501928551925102050183528152610e07565b91935083916113a8565b919350839161139a565b6010919395979b5080929496989c9950145f1461145e575050505050505050610e5a919250806114338551875180029080020161187d565b01908115611456575b61144b82828851871b02610c97565b938551901b02610c97565b90508061143c565b969896601181036114935750505050505050506114816113bf86516003026119cf565b92816113ce6113bf87516003026119cf565b979896976012810361151b5750505050505050509080809351800205918215611512575b826114d8816114ce88518a5180029080020161187d565b931b828401610ca1565b03928203020501906114f06113bf8451865190611914565b8161150382800264e8d4a510000361187d565b84020592020583528152610e07565b915080916114b7565b969796601381036115b3575050505050505061157d90622fefd8945164e8d4a51000958187920202059081156115ab575b81811d92839161155f89518b5190611914565b901d9261157489518b5180029080020161187d565b95518401610ca1565b131561159d57611591916111e791036118ae565b02059083528152610e07565b611591916111e791016118ae565b84915061154c565b601491939597999a50809294969850145f1461161357505050505050509080610e5a916115e88551875180029080020161187d565b0190811561160b575b61160082828751871b02610c97565b938651901b02610c97565b9050806115f1565b60158103611665575050505050505050610e5a825182623d0900818751800284800201050191821561165b575b61164f91839160021b02610c97565b92855160021b02610c97565b9091508190611640565b601681036116875750505050505050505061168081516118ae565b8152610e07565b601781036116f05750505050505050506116dc6116a484516118ae565b826116b782800264e8d4a510000361187d565b9182156116e6575b6116cb91839102610c97565b926116d685516118ae565b02610c97565b9083528152610e07565b90915081906116bf565b6018819c9495969799989c145f14611729575050505090878181869486020880940208961d92838388831c070386521c07038152610e07565b9350945094955097506019915014611744575b505050610e07565b82918183920290800203058002058015611786575b801561096e5761176f9064e8d4a510000561187d565b8251845182028390058552020581525f808061173c565b5080611759565b80515f5b81811061179d57505050565b60018082015b8381106117b4575050600101611791565b81906117c08487610a82565b516117cb8288610a82565b51126117d8575b016117a3565b6117e28187610a82565b516117ed8588610a82565b516117f88389610a82565b526118038588610a82565b526117d2565b5f905b6216e36081101561186a57600190620f423f190181815b600a8410611832575050505090565b90918060028596611844839786610964565b0193620f424093849102049361185c86890186610964565b900396019493920204611823565b9062062fd9600391019160011b0461180c565b90600180830160011d90835b84831261189557505050565b91935090836118a48183610c97565b01821d9190611889565b905f91625fdfb0809107905f821261190d575b50600260018181845b8386136118d957505050505050565b9091929364e8d4a510008280889a6118f489869b8902610c97565b019a0202059594600185018502029301915f03906118ca565b015f6118c1565b91908215806119c7575b6119c1575f9061192d84611a34565b61193682611a34565b80821384146119a95761199191620f42406119519202610c97565b620f42409081808280020581808080612cc81985020561caee018402056201c41019018302056202f2d3018202056205131719010205620f422601020590565b622fefd860011d03935b02126119a357565b905f0390565b61195190620f42406119bb9302610c97565b9361199b565b505f9150565b50801561191e565b6119db6119ff916118ae565b6119ed81800264e8d4a510000361187d565b908115611a02575b620f424002610c97565b90565b620f424091506119f5565b6001600160401b91675851f42d4c957f2d020890621e8480602083901c07620f423f190190565b5f81136119ff575f039056fec65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8a2646970667358221220b3f2fe21ac0faf4ab1951c6297ccc37675d0c82e067ed2dd736ca86eeb03ebe164736f6c63430008170033"); +pub const BURNTPIX_BYTECODE_ONE: Bytes = + Bytes::from_static(include_str!("bytecode_one.hex").as_bytes()); +pub const BURNTPIX_BYTECODE_TWO: Bytes = + Bytes::from_static(include_str!("bytecode_two.hex").as_bytes()); +pub const BURNTPIX_BYTECODE_THREE: Bytes = + Bytes::from_static(include_str!("bytecode_three.hex").as_bytes()); +pub const BURNTPIX_BYTECODE_FOUR: Bytes = + Bytes::from_static(include_str!("bytecode_four.hex").as_bytes()); diff --git a/bins/revme/src/cmd/bench/snailtracer.hex b/bins/revme/src/cmd/bench/snailtracer.hex new file mode 100644 index 0000000000..6736c83128 --- /dev/null +++ b/bins/revme/src/cmd/bench/snailtracer.hex @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506004361061004c5760003560e01c806330627b7c1461005157806375ac892a14610085578063784f13661461011d578063c294360114610146575b600080fd5b610059610163565b604080516001600160f81b03199485168152928416602084015292168183015290519081900360600190f35b6100a86004803603604081101561009b57600080fd5b50803590602001356102d1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100e25781810151838201526020016100ca565b50505050905090810190601f16801561010f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100596004803603606081101561013357600080fd5b508035906020810135906040013561055b565b6100a86004803603602081101561015c57600080fd5b5035610590565b6000806000610176610400610300610834565b60405180606001604052806001546000546207d5dc028161019357fe5b058152600060208083018290526040928301919091528251600b81905583820151600c81905593830151600d819055835160608082018652928152808401959095528484015282519081018352600654815260075491810191909152600854918101919091526102259161021c916102139161020e91612ef7565b612f64565b6207d5dc612feb565b620f424061301e565b8051600e556020810151600f55604001516010556102416142dd565b61025a816102556102006101806008613064565b613212565b90506102708161025561014561021c6008613064565b905061028481610255610258806008613064565b905061029a8161025561020a61020c6008613064565b90506102a781600461301e565b90506102b1613250565b8051602082015160409092015160f891821b9692821b9550901b92509050565b606060005b6000548112156104c95760006102ed828686613064565b90506002816000015160f81b90808054603f811680603e811461032a576002830184556001831661031c578192505b600160028404019350610342565b600084815260209081902060ff198516905560419094555b505050600190038154600116156103685790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506002816020015160f81b90808054603f811680603e81146103c557600283018455600183166103b7578192505b6001600284040193506103dd565b600084815260209081902060ff198516905560419094555b505050600190038154600116156104035790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506002816040015160f81b90808054603f811680603e81146104605760028301845560018316610452578192505b600160028404019350610478565b600084815260209081902060ff198516905560419094555b5050506001900381546001161561049e5790600052602060002090602091828204019190065b815460ff601f929092036101000a9182021916600160f81b90930402919091179055506001016102d6565b506002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561054d5780601f106105225761010080835404028352916020019161054d565b820191906000526020600020905b81548152906001019060200180831161053057829003601f168201915b505050505090505b92915050565b60008060008061056c878787613064565b8051602082015160409092015160f891821b9a92821b9950901b9650945050505050565b600154606090600019015b600081126107a35760005b6000548112156107995760006105bd828487613064565b90506002816000015160f81b90808054603f811680603e81146105fa57600283018455600183166105ec578192505b600160028404019350610612565b600084815260209081902060ff198516905560419094555b505050600190038154600116156106385790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506002816020015160f81b90808054603f811680603e81146106955760028301845560018316610687578192505b6001600284040193506106ad565b600084815260209081902060ff198516905560419094555b505050600190038154600116156106d35790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506002816040015160f81b90808054603f811680603e81146107305760028301845560018316610722578192505b600160028404019350610748565b600084815260209081902060ff198516905560419094555b5050506001900381546001161561076e5790600052602060002090602091828204019190065b815460ff601f929092036101000a9182021916600160f81b90930402919091179055506001016105a6565b506000190161059b565b506002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b919050565b8160008190555080600181905550604051806080016040528060405180606001604052806302faf08081526020016303197500815260200163119e7f8081525081526020016108a460405180606001604052806000815260200161a673198152602001620f423f19815250612f64565b815260006020808301829052604092830182905283518051600355808201516004558301516005558381015180516006559081015160075582015160085582820151600955606092830151600a805460ff1916911515919091179055815192830190915260015490548291906207d5dc028161091c57fe5b058152600060208083018290526040928301919091528251600b81905583820151600c81905593830151600d819055835160608082018652928152808401959095528484015282519081018352600654815260075491810191909152600854918101919091526109979161021c916102139161020e91612ef7565b8051600e55602080820151600f55604091820151601055815160a08101835264174876e8008152825160608082018552641748862a40825263026e8f00828501526304dd1e008286015282840191825284518082018652600080825281860181905281870181905284870191825286518084018852620b71b081526203d09081880181905281890152928501928352608085018181526011805460018082018355919093528651600b9093027f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c688101938455955180517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c69880155808901517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6a8801558901517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6b870155925180517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6c870155808801517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6d8701558801517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6e860155925180517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6f860155958601517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c7085015594909501517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c71830155517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c72909101805492949192909160ff1990911690836002811115610c1057fe5b0217905550505060116040518060a0016040528064174876e8008152602001604051806060016040528064174290493f19815260200163026e8f0081526020016304dd1e008152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806203d09081526020016203d0908152602001620b71b0815250815260200160006002811115610cb657fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff1990921691908490811115610d5857fe5b0217905550505060116040518060a0016040528064174876e800815260200160405180606001604052806302faf080815260200163026e8f00815260200164174876e800815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620b71b08152602001620b71b08152602001620b71b0815250815260200160006002811115610dfd57fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff1990921691908490811115610e9f57fe5b0217905550505060116040518060a0016040528064174876e800815260200160405180606001604052806302faf080815260200163026e8f00815260200164173e54e97f1981525081526020016040518060600160405280600081526020016000815260200160008152508152602001604051806060016040528060008152602001600081526020016000815250815260200160006002811115610f3f57fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff1990921691908490811115610fe157fe5b0217905550505060116040518060a0016040528064174876e800815260200160405180606001604052806302faf080815260200164174876e80081526020016304dd1e00815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620b71b08152602001620b71b08152602001620b71b081525081526020016000600281111561108657fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff199092169190849081111561112857fe5b0217905550505060116040518060a0016040528064174876e800815260200160405180606001604052806302faf080815260200164174399c9ff1981526020016304dd1e00815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620b71b08152602001620b71b08152602001620b71b08152508152602001600060028111156111ce57fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff199092169190849081111561127057fe5b0217905550505060116040518060a0016040528062fbc5208152602001604051806060016040528063019bfcc0815260200162fbc52081526020016302cd29c0815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561131157fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff19909216919084908111156113b357fe5b0217905550505060116040518060a001604052806323c34600815260200160405180606001604052806302faf080815260200163289c455081526020016304dd1e008152508152602001604051806060016040528062b71b00815260200162b71b00815260200162b71b00815250815260200160405180606001604052806000815260200160008152602001600081525081526020016000600281111561145657fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff19909216919084908111156114f857fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f208152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016305a1f4a081525081526020016040518060600160405280630459e44081526020016302f34f6081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561160c57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff19909216919084908111156116fd57fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f20815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001600081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016305a1f4a08152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561180e57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff19909216919084908111156118ff57fe5b0217905550505060126040518060e001604052806040518060600160405280630555a9608152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e44081526020016302f34f6081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016305a1f4a08152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115611a1357fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115611b0457fe5b0217905550505060126040518060e001604052806040518060600160405280630555a960815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016305a1f4a081525081526020016040518060600160405280630459e4408152602001600081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115611c1557fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115611d0657fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f208152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e44081526020016302f34f6081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016303aa6a608152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115611e1a57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115611f0b57fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f20815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016303aa6a6081525081526020016040518060600160405280630459e4408152602001600081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561201c57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561210d57fe5b0217905550505060126040518060e001604052806040518060600160405280630555a9608152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016303aa6a6081525081526020016040518060600160405280630459e44081526020016302f34f6081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561222157fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561231257fe5b0217905550505060126040518060e001604052806040518060600160405280630555a960815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001600081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016303aa6a608152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561242357fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561251457fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f208152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016303aa6a6081525081526020016040518060600160405280630555a9608152602001630188c2e081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561262857fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561271957fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f208152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630555a9608152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016305a1f4a08152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561282d57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561291e57fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f20815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630555a960815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016303aa6a608152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115612a3257fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115612b2357fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f20815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016305a1f4a081525081526020016040518060600160405280630555a960815260200163016a8c8081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115612c3757fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115612d2857fe5b0217905550505060005b601254811015612ef257600060128281548110612d4b57fe5b600091825260209182902060408051610140810182526013909302909101805460e08401908152600182015461010085015260028083015461012086015290845282516060818101855260038401548252600484015482880152600584015482860152858701919091528351808201855260068401548152600784015481880152600884015481860152858501528351808201855260098401548152600a84015481880152600b840154818601528186015283518082018552600c8401548152600d84015481880152600e84015481860152608086015283519081018452600f830154815260108301549581019590955260118201549285019290925260a0830193909352601283015491929160c084019160ff90911690811115612e6c57fe5b6002811115612e7757fe5b815250509050612eac61020e612e95836020015184600001516132cd565b612ea7846040015185600001516132cd565b612ef7565b60128381548110612eb957fe5b60009182526020918290208351600960139093029091019182015590820151600a820155604090910151600b9091015550600101612d32565b505050565b612eff6142dd565b604051806060016040528083602001518560400151028460400151866020015102038152602001836040015185600001510284600001518660400151020381526020018360000151856020015102846020015186600001510203815250905092915050565b612f6c6142dd565b604082015160208301518351600092612f9292918002918002919091019080020161330c565b90506040518060600160405280828560000151620f42400281612fb157fe5b058152602001828560200151620f42400281612fc957fe5b058152602001828560400151620f42400281612fe157fe5b0590529392505050565b612ff36142dd565b5060408051606081018252835183028152602080850151840290820152928101519091029082015290565b6130266142dd565b60405180606001604052808385600001518161303e57fe5b0581526020018385602001518161305157fe5b05815260200183856040015181612fe157fe5b61306c6142dd565b6000546013805463ffffffff1916918502860163ffffffff169190911790556130936142dd565b905060005b828112156131f157600061317261314c61021c613115600b60405180606001604052908160008201548152602001600182015481526020016002820154815250506207a1206000546207a1206130ec613343565b63ffffffff16816130f957fe5b0663ffffffff168d620f424002018161310e57fe5b0503612feb565b60408051606081018252600e548152600f5460208201526010549181019190915260015461025591906207a12090816130ec613343565b604080516060810182526006548152600754602082015260085491810191909152613212565b6040805160e081019091526003546080820190815260045460a083015260055460c083015291925060009181906131ae9061025586608c612feb565b81526020016131bc84612f64565b815260006020820181905260409091015290506131e5846102556131df8461336c565b8861301e565b93505050600101613098565b5061320861021c61320183613753565b60ff612feb565b90505b9392505050565b61321a6142dd565b50604080516060810182528251845101815260208084015181860151019082015291810151928101519092019181019190915290565b60008080556001819055613266906002906142fe565b60006003819055600481905560058190556006819055600781905560088190556009819055600a805460ff19169055600b819055600c819055600d819055600e819055600f81905560108190556132bf90601190614345565b6132cb60126000614366565b565b6132d56142dd565b5060408051606081018252825184510381526020808401518186015103908201528282015184830151039181019190915292915050565b80600260018201055b8181121561333d5780915060028182858161332c57fe5b05018161333557fe5b059050613315565b50919050565b6013805463ffffffff19811663ffffffff9182166341c64e6d0261303901821617918290551690565b6133746142dd565b600a826040015113156133a657604051806060016040528060008152602001600081526020016000815250905061082f565b60008060006133b48561379f565b91945092509050826133e857604051806060016040528060008152602001600081526020016000815250935050505061082f565b6133f0614387565b6133f86143c7565b6134006142dd565b6134086142dd565b600086600181111561341657fe5b1415613505576011858154811061342957fe5b60009182526020918290206040805160a081018252600b90930290910180548352815160608082018452600183015482526002808401548388015260038401548386015285870192909252835180820185526004840154815260058401548188015260068401548186015285850152835180820185526007840154815260088401549681019690965260098301549386019390935291830193909352600a830154919291608084019160ff909116908111156134e157fe5b60028111156134ec57fe5b8152505093508360600151915083604001519050613653565b6012858154811061351257fe5b600091825260209182902060408051610140810182526013909302909101805460e08401908152600182015461010085015260028083015461012086015290845282516060818101855260038401548252600484015482880152600584015482860152858701919091528351808201855260068401548152600784015481880152600884015481860152858501528351808201855260098401548152600a84015481880152600b840154818601528186015283518082018552600c8401548152600d84015481880152600e84015481860152608086015283519081018452600f830154815260108301549581019590955260118201549285019290925260a0830193909352601283015491929160c084019160ff9091169081111561363357fe5b600281111561363e57fe5b8152505092508260a001519150826080015190505b6040820151600190811215613669575060408201515b808360200151131561367c575060208201515b808360400151131561368f575060408201515b60408a01805160010190819052600512156136f75780620f42406136b1613343565b63ffffffff16816136be57fe5b0663ffffffff1612156136e8576136e16136db84620f4240612feb565b8261301e565b92506136f7565b50965061082f95505050505050565b6136ff6142dd565b600088600181111561370d57fe5b14156137255761371e8b878b613a57565b9050613733565b6137308b868b613aec565b90505b6137448361025561021c8785613baa565b9b9a5050505050505050505050565b61375b6142dd565b60405180606001604052806137738460000151613be8565b81526020016137858460200151613be8565b81526020016137978460400151613be8565b905292915050565b60008080808080805b6011548110156138c2576000613890601183815481106137c457fe5b60009182526020918290206040805160a081018252600b90930290910180548352815160608082018452600183015482526002808401548388015260038401548386015285870192909252835180820185526004840154815260058401548188015260068401548186015285850152835180820185526007840154815260088401549681019690965260098301549386019390935291830193909352600a830154919291608084019160ff9091169081111561387c57fe5b600281111561388757fe5b9052508a613c13565b90506000811380156138a957508415806138a957508481125b156138b957809450600093508192505b506001016137a8565b5060005b601254811015613a49576000613a17601283815481106138e257fe5b600091825260209182902060408051610140810182526013909302909101805460e08401908152600182015461010085015260028083015461012086015290845282516060818101855260038401548252600484015482880152600584015482860152858701919091528351808201855260068401548152600784015481880152600884015481860152858501528351808201855260098401548152600a84015481880152600b840154818601528186015283518082018552600c8401548152600d84015481880152600e84015481860152608086015283519081018452600f830154815260108301549581019590955260118201549285019290925260a0830193909352601283015491929160c084019160ff90911690811115613a0357fe5b6002811115613a0e57fe5b9052508a613cbb565b9050600081138015613a305750841580613a3057508481125b15613a4057809450600193508192505b506001016138c6565b509196909550909350915050565b613a5f6142dd565b6000613a7a856000015161025561021c886020015187612feb565b90506000613a8f61020e8387602001516132cd565b9050600085608001516002811115613aa357fe5b1415613ae1576000613ab9828860200151613e0c565b12613acd57613aca81600019612feb565b90505b613ad8868383613e31565b9250505061320b565b613ad8868383613fc1565b613af46142dd565b6000613b0f856000015161025561021c886020015187612feb565b6060860151909150620a2c2a9015613b2757506216e3605b6000620f4240613b3f87606001518960200151613e0c565b81613b4657fe5b05905060008112613b55576000035b64e8d4a5100081800281038380020281900590036000811215613b8c57613b8188858960600151613fc1565b94505050505061320b565b613b9e88858960600151868686614039565b98975050505050505050565b613bb26142dd565b50604080516060810182528251845102815260208084015181860151029082015291810151928101519092029181019190915290565b600080821215613bfa5750600061082f565b620f4240821315613c0f5750620f424061082f565b5090565b600080613c28846020015184600001516132cd565b90506000620f4240613c3e838660200151613e0c565b81613c4557fe5b865191900591506000908002613c5b8480613e0c565b838402030190506000811215613c775760009350505050610555565b613c808161330c565b90506103e88183031315613c9957900391506105559050565b6103e88183011315613caf570191506105559050565b50600095945050505050565b600080613cd0846020015185600001516132cd565b90506000613ce6856040015186600001516132cd565b90506000613cf8856020015183612ef7565b90506000620f4240613d0a8584613e0c565b81613d1157fe5b0590506103e71981138015613d2757506103e881125b15613d39576000945050505050610555565b85518751600091613d49916132cd565b9050600082613d588386613e0c565b81613d5f57fe5b0590506000811280613d735750620f424081135b15613d875760009650505050505050610555565b6000613d938388612ef7565b9050600084613da68b6020015184613e0c565b81613dad57fe5b0590506000811280613dc35750620f4240818401135b15613dd957600098505050505050505050610555565b600085613de68985613e0c565b81613ded57fe5b0590506103e88112156137445760009950505050505050505050610555565b6040808201519083015160208084015190850151845186510291020191020192915050565b613e396142dd565b6000620f424080613e48613343565b63ffffffff1681613e5557fe5b0663ffffffff16625fdfb00281613e6857fe5b0590506000620f4240613e79613343565b63ffffffff1681613e8657fe5b0663ffffffff1690506000613e9a8261330c565b6103e8029050613ea86142dd565b620186a0613eb98760000151614216565b1315613ee657604051806060016040528060008152602001620f4240815260200160008152509050613f09565b6040518060600160405280620f4240815260200160008152602001600081525090505b613f1661020e8288612ef7565b90506000613f2761020e8884612ef7565b9050613f7f61020e613f64613f5285620f424088613f448c61422e565b0281613f4c57fe5b05612feb565b61025585620f424089613f448d61424e565b6102558a613f7689620f42400361330c565b6103e802612feb565b9150613fb460405180608001604052808a81526020018481526020018b6040015181526020018b60600151151581525061336c565b9998505050505050505050565b613fc96142dd565b6000613ffb61020e8660200151613ff686620f4240613fec898c60200151613e0c565b60020281613f4c57fe5b6132cd565b90506140306040518060800160405280868152602001838152602001876040015181526020018760600151151581525061336c565b95945050505050565b6140416142dd565b60608701516000199015614053575060015b600061408961020e61021c61406c8c602001518a612feb565b613ff68b6140798a61330c565b620f42408c8e0205018802612feb565b60608a0151909150620f42408601906140ba57620f42406140aa838a613e0c565b816140b157fe5b05620f42400390505b60408a0151619c406c0c9f2c9cd04674edea40000000620ea6008480028502850285020205019060021261415e5761412a61411f60405180608001604052808d81526020018681526020018e6040015181526020018e6060015115151581525061336c565b82620f424003612feb565b92506141448361025561413e8e8e8e613fc1565b84612feb565b925061415383620f424061301e565b94505050505061420c565b600281056203d09001620f4240614173613343565b63ffffffff168161418057fe5b0663ffffffff1612156141b2576141536141a461419e8d8d8d613fc1565b83612feb565b600283056203d0900161301e565b6142056141f76141ec60405180608001604052808e81526020018781526020018f6040015181526020018f6060015115151581525061336c565b83620f424003612feb565b60028305620b71b00361301e565b9450505050505b9695505050505050565b60008082131561422757508061082f565b5060000390565b60008061423a8361424e565b905061320b81820264e8d4a510000361330c565b60005b600082121561426757625fdfb082019150614251565b5b625fdfb0821261427f57625fdfb082039150614268565b6001828160025b818313156142d457818385028161429957fe5b0585019450620f4240808788860202816142af57fe5b05816142b757fe5b600095909503940592506001810181029190910290600201614286565b50505050919050565b60405180606001604052806000815260200160008152602001600081525090565b50805460018160011615610100020316600290046000825580601f106143245750614342565b601f0160209004906000526020600020908101906143429190614401565b50565b50805460008255600b02906000526020600020908101906143429190614416565b50805460008255601302906000526020600020908101906143429190614475565b6040518060a00160405280600081526020016143a16142dd565b81526020016143ae6142dd565b81526020016143bb6142dd565b81526020016000905290565b6040518060e001604052806143da6142dd565b81526020016143e76142dd565b81526020016143f46142dd565b81526020016143a16142dd565b5b80821115613c0f5760008155600101614402565b5b80821115613c0f57600080825560018201819055600282018190556003820181905560048201819055600582018190556006820181905560078201819055600882018190556009820155600a8101805460ff19169055600b01614417565b5b80821115613c0f576000808255600182018190556002820181905560038201819055600482018190556005820181905560068201819055600782018190556008820181905560098201819055600a8201819055600b8201819055600c8201819055600d8201819055600e8201819055600f820181905560108201819055601182015560128101805460ff1916905560130161447656fea2646970667358221220037024f5647853879c58fbcc61ac3616455f6f731cc6e84f91eb5a3b4e06c00464736f6c63430007060033 diff --git a/bins/revme/src/cmd/bench/snailtracer.rs b/bins/revme/src/cmd/bench/snailtracer.rs index 1d1f20c976..bf28f998a2 100644 --- a/bins/revme/src/cmd/bench/snailtracer.rs +++ b/bins/revme/src/cmd/bench/snailtracer.rs @@ -29,4 +29,4 @@ pub fn run() { println!("elapsed: {:?}", start.elapsed()); } -static CONTRACT_DATA : Bytes = bytes!("608060405234801561001057600080fd5b506004361061004c5760003560e01c806330627b7c1461005157806375ac892a14610085578063784f13661461011d578063c294360114610146575b600080fd5b610059610163565b604080516001600160f81b03199485168152928416602084015292168183015290519081900360600190f35b6100a86004803603604081101561009b57600080fd5b50803590602001356102d1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100e25781810151838201526020016100ca565b50505050905090810190601f16801561010f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100596004803603606081101561013357600080fd5b508035906020810135906040013561055b565b6100a86004803603602081101561015c57600080fd5b5035610590565b6000806000610176610400610300610834565b60405180606001604052806001546000546207d5dc028161019357fe5b058152600060208083018290526040928301919091528251600b81905583820151600c81905593830151600d819055835160608082018652928152808401959095528484015282519081018352600654815260075491810191909152600854918101919091526102259161021c916102139161020e91612ef7565b612f64565b6207d5dc612feb565b620f424061301e565b8051600e556020810151600f55604001516010556102416142dd565b61025a816102556102006101806008613064565b613212565b90506102708161025561014561021c6008613064565b905061028481610255610258806008613064565b905061029a8161025561020a61020c6008613064565b90506102a781600461301e565b90506102b1613250565b8051602082015160409092015160f891821b9692821b9550901b92509050565b606060005b6000548112156104c95760006102ed828686613064565b90506002816000015160f81b90808054603f811680603e811461032a576002830184556001831661031c578192505b600160028404019350610342565b600084815260209081902060ff198516905560419094555b505050600190038154600116156103685790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506002816020015160f81b90808054603f811680603e81146103c557600283018455600183166103b7578192505b6001600284040193506103dd565b600084815260209081902060ff198516905560419094555b505050600190038154600116156104035790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506002816040015160f81b90808054603f811680603e81146104605760028301845560018316610452578192505b600160028404019350610478565b600084815260209081902060ff198516905560419094555b5050506001900381546001161561049e5790600052602060002090602091828204019190065b815460ff601f929092036101000a9182021916600160f81b90930402919091179055506001016102d6565b506002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561054d5780601f106105225761010080835404028352916020019161054d565b820191906000526020600020905b81548152906001019060200180831161053057829003601f168201915b505050505090505b92915050565b60008060008061056c878787613064565b8051602082015160409092015160f891821b9a92821b9950901b9650945050505050565b600154606090600019015b600081126107a35760005b6000548112156107995760006105bd828487613064565b90506002816000015160f81b90808054603f811680603e81146105fa57600283018455600183166105ec578192505b600160028404019350610612565b600084815260209081902060ff198516905560419094555b505050600190038154600116156106385790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506002816020015160f81b90808054603f811680603e81146106955760028301845560018316610687578192505b6001600284040193506106ad565b600084815260209081902060ff198516905560419094555b505050600190038154600116156106d35790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506002816040015160f81b90808054603f811680603e81146107305760028301845560018316610722578192505b600160028404019350610748565b600084815260209081902060ff198516905560419094555b5050506001900381546001161561076e5790600052602060002090602091828204019190065b815460ff601f929092036101000a9182021916600160f81b90930402919091179055506001016105a6565b506000190161059b565b506002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b919050565b8160008190555080600181905550604051806080016040528060405180606001604052806302faf08081526020016303197500815260200163119e7f8081525081526020016108a460405180606001604052806000815260200161a673198152602001620f423f19815250612f64565b815260006020808301829052604092830182905283518051600355808201516004558301516005558381015180516006559081015160075582015160085582820151600955606092830151600a805460ff1916911515919091179055815192830190915260015490548291906207d5dc028161091c57fe5b058152600060208083018290526040928301919091528251600b81905583820151600c81905593830151600d819055835160608082018652928152808401959095528484015282519081018352600654815260075491810191909152600854918101919091526109979161021c916102139161020e91612ef7565b8051600e55602080820151600f55604091820151601055815160a08101835264174876e8008152825160608082018552641748862a40825263026e8f00828501526304dd1e008286015282840191825284518082018652600080825281860181905281870181905284870191825286518084018852620b71b081526203d09081880181905281890152928501928352608085018181526011805460018082018355919093528651600b9093027f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c688101938455955180517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c69880155808901517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6a8801558901517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6b870155925180517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6c870155808801517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6d8701558801517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6e860155925180517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6f860155958601517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c7085015594909501517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c71830155517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c72909101805492949192909160ff1990911690836002811115610c1057fe5b0217905550505060116040518060a0016040528064174876e8008152602001604051806060016040528064174290493f19815260200163026e8f0081526020016304dd1e008152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806203d09081526020016203d0908152602001620b71b0815250815260200160006002811115610cb657fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff1990921691908490811115610d5857fe5b0217905550505060116040518060a0016040528064174876e800815260200160405180606001604052806302faf080815260200163026e8f00815260200164174876e800815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620b71b08152602001620b71b08152602001620b71b0815250815260200160006002811115610dfd57fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff1990921691908490811115610e9f57fe5b0217905550505060116040518060a0016040528064174876e800815260200160405180606001604052806302faf080815260200163026e8f00815260200164173e54e97f1981525081526020016040518060600160405280600081526020016000815260200160008152508152602001604051806060016040528060008152602001600081526020016000815250815260200160006002811115610f3f57fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff1990921691908490811115610fe157fe5b0217905550505060116040518060a0016040528064174876e800815260200160405180606001604052806302faf080815260200164174876e80081526020016304dd1e00815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620b71b08152602001620b71b08152602001620b71b081525081526020016000600281111561108657fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff199092169190849081111561112857fe5b0217905550505060116040518060a0016040528064174876e800815260200160405180606001604052806302faf080815260200164174399c9ff1981526020016304dd1e00815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620b71b08152602001620b71b08152602001620b71b08152508152602001600060028111156111ce57fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff199092169190849081111561127057fe5b0217905550505060116040518060a0016040528062fbc5208152602001604051806060016040528063019bfcc0815260200162fbc52081526020016302cd29c0815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561131157fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff19909216919084908111156113b357fe5b0217905550505060116040518060a001604052806323c34600815260200160405180606001604052806302faf080815260200163289c455081526020016304dd1e008152508152602001604051806060016040528062b71b00815260200162b71b00815260200162b71b00815250815260200160405180606001604052806000815260200160008152602001600081525081526020016000600281111561145657fe5b905281546001818101845560009384526020938490208351600b90930201918255838301518051838301558085015160028085019190915560409182015160038501558185015180516004860155808701516005860155820151600685015560608501518051600786015595860151600885015594015160098301556080830151600a83018054949593949193909260ff19909216919084908111156114f857fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f208152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016305a1f4a081525081526020016040518060600160405280630459e44081526020016302f34f6081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561160c57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff19909216919084908111156116fd57fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f20815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001600081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016305a1f4a08152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561180e57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff19909216919084908111156118ff57fe5b0217905550505060126040518060e001604052806040518060600160405280630555a9608152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e44081526020016302f34f6081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016305a1f4a08152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115611a1357fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115611b0457fe5b0217905550505060126040518060e001604052806040518060600160405280630555a960815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016305a1f4a081525081526020016040518060600160405280630459e4408152602001600081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115611c1557fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115611d0657fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f208152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e44081526020016302f34f6081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016303aa6a608152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115611e1a57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115611f0b57fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f20815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016303aa6a6081525081526020016040518060600160405280630459e4408152602001600081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561201c57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561210d57fe5b0217905550505060126040518060e001604052806040518060600160405280630555a9608152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016303aa6a6081525081526020016040518060600160405280630459e44081526020016302f34f6081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561222157fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561231257fe5b0217905550505060126040518060e001604052806040518060600160405280630555a960815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001600081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016303aa6a608152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561242357fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561251457fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f208152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016303aa6a6081525081526020016040518060600160405280630555a9608152602001630188c2e081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561262857fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561271957fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f208152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630555a9608152602001630188c2e081526020016304a62f8081525081526020016040518060600160405280630459e4408152602001630188c2e081526020016305a1f4a08152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e5881525081526020016001600281111561282d57fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff199092169190849081111561291e57fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f20815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630555a960815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016303aa6a608152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115612a3257fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115612b2357fe5b0217905550505060126040518060e00160405280604051806060016040528063035e1f20815260200163016a8c8081526020016304a62f8081525081526020016040518060600160405280630459e440815260200163016a8c8081526020016305a1f4a081525081526020016040518060600160405280630555a960815260200163016a8c8081526020016304a62f808152508152602001604051806060016040528060008152602001600081526020016000815250815260200160405180606001604052806000815260200160008152602001600081525081526020016040518060600160405280620f3e588152602001620f3e588152602001620f3e58815250815260200160016002811115612c3757fe5b905281546001818101845560009384526020938490208351805160139094029091019283558085015183830155604090810151600280850191909155858501518051600386015580870151600486015582015160058501558185015180516006860155808701516007860155820151600885015560608501518051600986015580870151600a860155820151600b85015560808501518051600c86015580870151600d860155820151600e85015560a08501518051600f860155958601516010850155940151601183015560c0830151601283018054949593949193909260ff1990921691908490811115612d2857fe5b0217905550505060005b601254811015612ef257600060128281548110612d4b57fe5b600091825260209182902060408051610140810182526013909302909101805460e08401908152600182015461010085015260028083015461012086015290845282516060818101855260038401548252600484015482880152600584015482860152858701919091528351808201855260068401548152600784015481880152600884015481860152858501528351808201855260098401548152600a84015481880152600b840154818601528186015283518082018552600c8401548152600d84015481880152600e84015481860152608086015283519081018452600f830154815260108301549581019590955260118201549285019290925260a0830193909352601283015491929160c084019160ff90911690811115612e6c57fe5b6002811115612e7757fe5b815250509050612eac61020e612e95836020015184600001516132cd565b612ea7846040015185600001516132cd565b612ef7565b60128381548110612eb957fe5b60009182526020918290208351600960139093029091019182015590820151600a820155604090910151600b9091015550600101612d32565b505050565b612eff6142dd565b604051806060016040528083602001518560400151028460400151866020015102038152602001836040015185600001510284600001518660400151020381526020018360000151856020015102846020015186600001510203815250905092915050565b612f6c6142dd565b604082015160208301518351600092612f9292918002918002919091019080020161330c565b90506040518060600160405280828560000151620f42400281612fb157fe5b058152602001828560200151620f42400281612fc957fe5b058152602001828560400151620f42400281612fe157fe5b0590529392505050565b612ff36142dd565b5060408051606081018252835183028152602080850151840290820152928101519091029082015290565b6130266142dd565b60405180606001604052808385600001518161303e57fe5b0581526020018385602001518161305157fe5b05815260200183856040015181612fe157fe5b61306c6142dd565b6000546013805463ffffffff1916918502860163ffffffff169190911790556130936142dd565b905060005b828112156131f157600061317261314c61021c613115600b60405180606001604052908160008201548152602001600182015481526020016002820154815250506207a1206000546207a1206130ec613343565b63ffffffff16816130f957fe5b0663ffffffff168d620f424002018161310e57fe5b0503612feb565b60408051606081018252600e548152600f5460208201526010549181019190915260015461025591906207a12090816130ec613343565b604080516060810182526006548152600754602082015260085491810191909152613212565b6040805160e081019091526003546080820190815260045460a083015260055460c083015291925060009181906131ae9061025586608c612feb565b81526020016131bc84612f64565b815260006020820181905260409091015290506131e5846102556131df8461336c565b8861301e565b93505050600101613098565b5061320861021c61320183613753565b60ff612feb565b90505b9392505050565b61321a6142dd565b50604080516060810182528251845101815260208084015181860151019082015291810151928101519092019181019190915290565b60008080556001819055613266906002906142fe565b60006003819055600481905560058190556006819055600781905560088190556009819055600a805460ff19169055600b819055600c819055600d819055600e819055600f81905560108190556132bf90601190614345565b6132cb60126000614366565b565b6132d56142dd565b5060408051606081018252825184510381526020808401518186015103908201528282015184830151039181019190915292915050565b80600260018201055b8181121561333d5780915060028182858161332c57fe5b05018161333557fe5b059050613315565b50919050565b6013805463ffffffff19811663ffffffff9182166341c64e6d0261303901821617918290551690565b6133746142dd565b600a826040015113156133a657604051806060016040528060008152602001600081526020016000815250905061082f565b60008060006133b48561379f565b91945092509050826133e857604051806060016040528060008152602001600081526020016000815250935050505061082f565b6133f0614387565b6133f86143c7565b6134006142dd565b6134086142dd565b600086600181111561341657fe5b1415613505576011858154811061342957fe5b60009182526020918290206040805160a081018252600b90930290910180548352815160608082018452600183015482526002808401548388015260038401548386015285870192909252835180820185526004840154815260058401548188015260068401548186015285850152835180820185526007840154815260088401549681019690965260098301549386019390935291830193909352600a830154919291608084019160ff909116908111156134e157fe5b60028111156134ec57fe5b8152505093508360600151915083604001519050613653565b6012858154811061351257fe5b600091825260209182902060408051610140810182526013909302909101805460e08401908152600182015461010085015260028083015461012086015290845282516060818101855260038401548252600484015482880152600584015482860152858701919091528351808201855260068401548152600784015481880152600884015481860152858501528351808201855260098401548152600a84015481880152600b840154818601528186015283518082018552600c8401548152600d84015481880152600e84015481860152608086015283519081018452600f830154815260108301549581019590955260118201549285019290925260a0830193909352601283015491929160c084019160ff9091169081111561363357fe5b600281111561363e57fe5b8152505092508260a001519150826080015190505b6040820151600190811215613669575060408201515b808360200151131561367c575060208201515b808360400151131561368f575060408201515b60408a01805160010190819052600512156136f75780620f42406136b1613343565b63ffffffff16816136be57fe5b0663ffffffff1612156136e8576136e16136db84620f4240612feb565b8261301e565b92506136f7565b50965061082f95505050505050565b6136ff6142dd565b600088600181111561370d57fe5b14156137255761371e8b878b613a57565b9050613733565b6137308b868b613aec565b90505b6137448361025561021c8785613baa565b9b9a5050505050505050505050565b61375b6142dd565b60405180606001604052806137738460000151613be8565b81526020016137858460200151613be8565b81526020016137978460400151613be8565b905292915050565b60008080808080805b6011548110156138c2576000613890601183815481106137c457fe5b60009182526020918290206040805160a081018252600b90930290910180548352815160608082018452600183015482526002808401548388015260038401548386015285870192909252835180820185526004840154815260058401548188015260068401548186015285850152835180820185526007840154815260088401549681019690965260098301549386019390935291830193909352600a830154919291608084019160ff9091169081111561387c57fe5b600281111561388757fe5b9052508a613c13565b90506000811380156138a957508415806138a957508481125b156138b957809450600093508192505b506001016137a8565b5060005b601254811015613a49576000613a17601283815481106138e257fe5b600091825260209182902060408051610140810182526013909302909101805460e08401908152600182015461010085015260028083015461012086015290845282516060818101855260038401548252600484015482880152600584015482860152858701919091528351808201855260068401548152600784015481880152600884015481860152858501528351808201855260098401548152600a84015481880152600b840154818601528186015283518082018552600c8401548152600d84015481880152600e84015481860152608086015283519081018452600f830154815260108301549581019590955260118201549285019290925260a0830193909352601283015491929160c084019160ff90911690811115613a0357fe5b6002811115613a0e57fe5b9052508a613cbb565b9050600081138015613a305750841580613a3057508481125b15613a4057809450600193508192505b506001016138c6565b509196909550909350915050565b613a5f6142dd565b6000613a7a856000015161025561021c886020015187612feb565b90506000613a8f61020e8387602001516132cd565b9050600085608001516002811115613aa357fe5b1415613ae1576000613ab9828860200151613e0c565b12613acd57613aca81600019612feb565b90505b613ad8868383613e31565b9250505061320b565b613ad8868383613fc1565b613af46142dd565b6000613b0f856000015161025561021c886020015187612feb565b6060860151909150620a2c2a9015613b2757506216e3605b6000620f4240613b3f87606001518960200151613e0c565b81613b4657fe5b05905060008112613b55576000035b64e8d4a5100081800281038380020281900590036000811215613b8c57613b8188858960600151613fc1565b94505050505061320b565b613b9e88858960600151868686614039565b98975050505050505050565b613bb26142dd565b50604080516060810182528251845102815260208084015181860151029082015291810151928101519092029181019190915290565b600080821215613bfa5750600061082f565b620f4240821315613c0f5750620f424061082f565b5090565b600080613c28846020015184600001516132cd565b90506000620f4240613c3e838660200151613e0c565b81613c4557fe5b865191900591506000908002613c5b8480613e0c565b838402030190506000811215613c775760009350505050610555565b613c808161330c565b90506103e88183031315613c9957900391506105559050565b6103e88183011315613caf570191506105559050565b50600095945050505050565b600080613cd0846020015185600001516132cd565b90506000613ce6856040015186600001516132cd565b90506000613cf8856020015183612ef7565b90506000620f4240613d0a8584613e0c565b81613d1157fe5b0590506103e71981138015613d2757506103e881125b15613d39576000945050505050610555565b85518751600091613d49916132cd565b9050600082613d588386613e0c565b81613d5f57fe5b0590506000811280613d735750620f424081135b15613d875760009650505050505050610555565b6000613d938388612ef7565b9050600084613da68b6020015184613e0c565b81613dad57fe5b0590506000811280613dc35750620f4240818401135b15613dd957600098505050505050505050610555565b600085613de68985613e0c565b81613ded57fe5b0590506103e88112156137445760009950505050505050505050610555565b6040808201519083015160208084015190850151845186510291020191020192915050565b613e396142dd565b6000620f424080613e48613343565b63ffffffff1681613e5557fe5b0663ffffffff16625fdfb00281613e6857fe5b0590506000620f4240613e79613343565b63ffffffff1681613e8657fe5b0663ffffffff1690506000613e9a8261330c565b6103e8029050613ea86142dd565b620186a0613eb98760000151614216565b1315613ee657604051806060016040528060008152602001620f4240815260200160008152509050613f09565b6040518060600160405280620f4240815260200160008152602001600081525090505b613f1661020e8288612ef7565b90506000613f2761020e8884612ef7565b9050613f7f61020e613f64613f5285620f424088613f448c61422e565b0281613f4c57fe5b05612feb565b61025585620f424089613f448d61424e565b6102558a613f7689620f42400361330c565b6103e802612feb565b9150613fb460405180608001604052808a81526020018481526020018b6040015181526020018b60600151151581525061336c565b9998505050505050505050565b613fc96142dd565b6000613ffb61020e8660200151613ff686620f4240613fec898c60200151613e0c565b60020281613f4c57fe5b6132cd565b90506140306040518060800160405280868152602001838152602001876040015181526020018760600151151581525061336c565b95945050505050565b6140416142dd565b60608701516000199015614053575060015b600061408961020e61021c61406c8c602001518a612feb565b613ff68b6140798a61330c565b620f42408c8e0205018802612feb565b60608a0151909150620f42408601906140ba57620f42406140aa838a613e0c565b816140b157fe5b05620f42400390505b60408a0151619c406c0c9f2c9cd04674edea40000000620ea6008480028502850285020205019060021261415e5761412a61411f60405180608001604052808d81526020018681526020018e6040015181526020018e6060015115151581525061336c565b82620f424003612feb565b92506141448361025561413e8e8e8e613fc1565b84612feb565b925061415383620f424061301e565b94505050505061420c565b600281056203d09001620f4240614173613343565b63ffffffff168161418057fe5b0663ffffffff1612156141b2576141536141a461419e8d8d8d613fc1565b83612feb565b600283056203d0900161301e565b6142056141f76141ec60405180608001604052808e81526020018781526020018f6040015181526020018f6060015115151581525061336c565b83620f424003612feb565b60028305620b71b00361301e565b9450505050505b9695505050505050565b60008082131561422757508061082f565b5060000390565b60008061423a8361424e565b905061320b81820264e8d4a510000361330c565b60005b600082121561426757625fdfb082019150614251565b5b625fdfb0821261427f57625fdfb082039150614268565b6001828160025b818313156142d457818385028161429957fe5b0585019450620f4240808788860202816142af57fe5b05816142b757fe5b600095909503940592506001810181029190910290600201614286565b50505050919050565b60405180606001604052806000815260200160008152602001600081525090565b50805460018160011615610100020316600290046000825580601f106143245750614342565b601f0160209004906000526020600020908101906143429190614401565b50565b50805460008255600b02906000526020600020908101906143429190614416565b50805460008255601302906000526020600020908101906143429190614475565b6040518060a00160405280600081526020016143a16142dd565b81526020016143ae6142dd565b81526020016143bb6142dd565b81526020016000905290565b6040518060e001604052806143da6142dd565b81526020016143e76142dd565b81526020016143f46142dd565b81526020016143a16142dd565b5b80821115613c0f5760008155600101614402565b5b80821115613c0f57600080825560018201819055600282018190556003820181905560048201819055600582018190556006820181905560078201819055600882018190556009820155600a8101805460ff19169055600b01614417565b5b80821115613c0f576000808255600182018190556002820181905560038201819055600482018190556005820181905560068201819055600782018190556008820181905560098201819055600a8201819055600b8201819055600c8201819055600d8201819055600e8201819055600f820181905560108201819055601182015560128101805460ff1916905560130161447656fea2646970667358221220037024f5647853879c58fbcc61ac3616455f6f731cc6e84f91eb5a3b4e06c00464736f6c63430007060033"); +const CONTRACT_DATA: Bytes = Bytes::from_static(include_str!("snailtracer.hex").as_bytes());