#
tokens: 49163/50000 10/1140 files (page 19/103)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 19 of 103. Use http://codebase.md/cyfrin/aderyn?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .cargo
│   └── config.toml
├── .git-blame-ignore-revs
├── .gitattributes
├── .github
│   ├── images
│   │   ├── aderyn_logo.png
│   │   ├── poweredbycyfrinblack.png
│   │   └── poweredbycyfrinblue.png
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── false_positive_issue.md
│   │   └── feature_request.md
│   └── workflows
│       ├── cargo.yml
│       ├── dependencies.yml
│       ├── release.yml
│       ├── reports.yml
│       └── toml.yml
├── .gitignore
├── .gitmodules
├── .vscode
│   └── settings.json
├── aderyn
│   ├── Cargo.toml
│   ├── oranda.json
│   ├── README.md
│   ├── src
│   │   ├── birdsong.rs
│   │   ├── completions.rs
│   │   ├── lib.rs
│   │   ├── lsp.rs
│   │   ├── main.rs
│   │   ├── mcp.rs
│   │   └── panic.rs
│   └── templates
│       └── aderyn.toml
├── aderyn_core
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── README.md
│   ├── src
│   │   ├── ast
│   │   │   ├── ast_nodes.rs
│   │   │   ├── ast.rs
│   │   │   ├── impls
│   │   │   │   ├── ctx
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── workspace.rs
│   │   │   │   ├── ctx.rs
│   │   │   │   ├── disp
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── disp.rs
│   │   │   │   ├── node
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── documentation.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── import_directives.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── pragma_directives.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── node.rs
│   │   │   │   ├── own
│   │   │   │   │   ├── hashing.rs
│   │   │   │   │   ├── node_id.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   └── own.rs
│   │   │   ├── impls.rs
│   │   │   ├── macros.rs
│   │   │   ├── magic.rs
│   │   │   ├── node_type.rs
│   │   │   └── yul.rs
│   │   ├── ast.rs
│   │   ├── audit
│   │   │   ├── attack_surface.rs
│   │   │   ├── auditor.rs
│   │   │   ├── entrypoint.rs
│   │   │   └── public_functions_no_sender.rs
│   │   ├── audit.rs
│   │   ├── context
│   │   │   ├── browser
│   │   │   │   ├── ancestral_line.rs
│   │   │   │   ├── closest_ancestor.rs
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── extractor.rs
│   │   │   │   ├── immediate_children.rs
│   │   │   │   ├── location.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── parent.rs
│   │   │   │   ├── peek_over.rs
│   │   │   │   ├── peek_under.rs
│   │   │   │   ├── peek.rs
│   │   │   │   ├── siblings.rs
│   │   │   │   ├── sort_nodes.rs
│   │   │   │   └── storage_vars.rs
│   │   │   ├── browser.rs
│   │   │   ├── capturable.rs
│   │   │   ├── flow
│   │   │   │   ├── display.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── kind.rs
│   │   │   │   ├── primitives.rs
│   │   │   │   ├── reducibles.rs
│   │   │   │   ├── tests.rs
│   │   │   │   ├── utils.rs
│   │   │   │   ├── visualizer.rs
│   │   │   │   └── voids.rs
│   │   │   ├── flow.rs
│   │   │   ├── graph
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   ├── new.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── visit.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── preprocess
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   └── new.rs
│   │   │   │   ├── preprocess.rs
│   │   │   │   ├── traits.rs
│   │   │   │   └── utils.rs
│   │   │   ├── graph.rs
│   │   │   ├── macros.rs
│   │   │   ├── mcp
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── contract_surface
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── util.rs
│   │   │   │   ├── contract_surface.rs
│   │   │   │   ├── list_contracts
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── list_contracts.rs
│   │   │   │   ├── node_finder
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_finder.rs
│   │   │   │   ├── node_summarizer
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_summarizer.rs
│   │   │   │   ├── project_overview
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── project_overview.rs
│   │   │   │   ├── tool_guide
│   │   │   │   │   └── tool.rs
│   │   │   │   └── tool_guide.rs
│   │   │   ├── mcp.rs
│   │   │   ├── router
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── internal_calls.rs
│   │   │   │   ├── modifier_calls.rs
│   │   │   │   └── tests.rs
│   │   │   ├── router.rs
│   │   │   └── workspace.rs
│   │   ├── context.rs
│   │   ├── detect
│   │   │   ├── detector.rs
│   │   │   ├── entrypoint.rs
│   │   │   ├── helpers.rs
│   │   │   ├── high
│   │   │   │   ├── _template.rs
│   │   │   │   ├── abi_encode_packed_hash_collision.rs
│   │   │   │   ├── arbitrary_transfer_from.rs
│   │   │   │   ├── const_func_changes_state.rs
│   │   │   │   ├── contract_locks_ether.rs
│   │   │   │   ├── dangerous_unary_operator.rs
│   │   │   │   ├── delegate_call_unchecked_address.rs
│   │   │   │   ├── delete_nested_mapping.rs
│   │   │   │   ├── dynamic_array_length_assignment.rs
│   │   │   │   ├── enumerable_loop_removal.rs
│   │   │   │   ├── eth_send_unchecked_address.rs
│   │   │   │   ├── experimental_encoder.rs
│   │   │   │   ├── function_selector_collision.rs
│   │   │   │   ├── incorrect_caret_operator.rs
│   │   │   │   ├── incorrect_erc20_interface.rs
│   │   │   │   ├── incorrect_erc721_interface.rs
│   │   │   │   ├── incorrect_shift_order.rs
│   │   │   │   ├── misused_boolean.rs
│   │   │   │   ├── msg_value_in_loops.rs
│   │   │   │   ├── multiple_constructors.rs
│   │   │   │   ├── nested_struct_in_mapping.rs
│   │   │   │   ├── out_of_order_retryable.rs
│   │   │   │   ├── pre_declared_variable_usage.rs
│   │   │   │   ├── reentrancy_state_change.rs
│   │   │   │   ├── reused_contract_name.rs
│   │   │   │   ├── rtlo.rs
│   │   │   │   ├── selfdestruct.rs
│   │   │   │   ├── signed_integer_storage_array.rs
│   │   │   │   ├── state_variable_shadowing.rs
│   │   │   │   ├── storage_array_memory_edit.rs
│   │   │   │   ├── strict_equality_contract_balance.rs
│   │   │   │   ├── tautological_compare.rs
│   │   │   │   ├── tautology_or_contradiction.rs
│   │   │   │   ├── tx_origin_used_for_auth.rs
│   │   │   │   ├── unchecked_low_level_call.rs
│   │   │   │   ├── unchecked_send.rs
│   │   │   │   ├── unprotected_initializer.rs
│   │   │   │   ├── unsafe_casting.rs
│   │   │   │   ├── weak_randomness.rs
│   │   │   │   └── yul_return.rs
│   │   │   ├── high.rs
│   │   │   ├── low
│   │   │   │   ├── _template.rs
│   │   │   │   ├── assert_state_change.rs
│   │   │   │   ├── block_timestamp_deadline.rs
│   │   │   │   ├── boolean_equality.rs
│   │   │   │   ├── builtin_symbol_shadowing.rs
│   │   │   │   ├── centralization_risk.rs
│   │   │   │   ├── constant_function_contains_assembly.rs
│   │   │   │   ├── costly_loop.rs
│   │   │   │   ├── dead_code.rs
│   │   │   │   ├── delegatecall_in_loop.rs
│   │   │   │   ├── deprecated_oz_function.rs
│   │   │   │   ├── division_before_multiplication.rs
│   │   │   │   ├── ecrecover.rs
│   │   │   │   ├── empty_block.rs
│   │   │   │   ├── empty_require_revert.rs
│   │   │   │   ├── function_initializing_state.rs
│   │   │   │   ├── function_pointer_in_constructor.rs
│   │   │   │   ├── inconsistent_type_names.rs
│   │   │   │   ├── incorrect_modifier.rs
│   │   │   │   ├── internal_function_used_once.rs
│   │   │   │   ├── large_numeric_literal.rs
│   │   │   │   ├── literal_instead_of_constant.rs
│   │   │   │   ├── local_variable_shadowing.rs
│   │   │   │   ├── missing_inheritance.rs
│   │   │   │   ├── modifier_used_only_once.rs
│   │   │   │   ├── multiple_placeholders.rs
│   │   │   │   ├── non_reentrant_not_first.rs
│   │   │   │   ├── push_0_opcode.rs
│   │   │   │   ├── redundant_statement.rs
│   │   │   │   ├── require_revert_in_loop.rs
│   │   │   │   ├── return_bomb.rs
│   │   │   │   ├── solmate_safe_transfer_lib.rs
│   │   │   │   ├── state_change_without_event.rs
│   │   │   │   ├── state_no_address_check.rs
│   │   │   │   ├── state_variable_could_be_constant.rs
│   │   │   │   ├── state_variable_could_be_immutable.rs
│   │   │   │   ├── state_variable_read_external.rs
│   │   │   │   ├── storage_array_length_not_cached.rs
│   │   │   │   ├── todo.rs
│   │   │   │   ├── unchecked_return.rs
│   │   │   │   ├── uninitialized_local_variable.rs
│   │   │   │   ├── unsafe_erc20_operation.rs
│   │   │   │   ├── unsafe_oz_erc721_mint.rs
│   │   │   │   ├── unspecific_solidity_pragma.rs
│   │   │   │   ├── unused_error.rs
│   │   │   │   ├── unused_import.rs
│   │   │   │   ├── unused_public_function.rs
│   │   │   │   ├── unused_state_variable.rs
│   │   │   │   └── void_constructor.rs
│   │   │   ├── low.rs
│   │   │   └── test_utils.rs
│   │   ├── detect.rs
│   │   ├── lib.rs
│   │   ├── stats
│   │   │   ├── cloc.rs
│   │   │   ├── dbg_tips.txt
│   │   │   ├── ignore.rs
│   │   │   ├── token.rs
│   │   │   └── util.rs
│   │   ├── stats.rs
│   │   ├── test_utils
│   │   │   └── load_source_unit.rs
│   │   ├── test_utils.rs
│   │   ├── visitor
│   │   │   ├── ast_visitor.rs
│   │   │   ├── macros.rs
│   │   │   └── workspace_visitor.rs
│   │   └── visitor.rs
│   ├── templates
│   │   └── mcp-tool-response
│   │       ├── callgraph.md
│   │       ├── contract_surface.md
│   │       ├── list_contracts.md
│   │       ├── node_finder_get_all.md
│   │       ├── node_finder_grep.md
│   │       ├── node_finder_search.md
│   │       ├── node_summarizer.md
│   │       ├── project_overview.md
│   │       └── tool_guide.md
│   └── tests
│       ├── common
│       │   ├── ancestral_line.rs
│       │   ├── closest_ancestor.rs
│       │   ├── immediate_children.rs
│       │   ├── immediate_parent.rs
│       │   ├── mod.rs
│       │   ├── new_ast_nodes.rs
│       │   ├── peek_over.rs
│       │   └── sibling.rs
│       └── traversal.rs
├── aderyn_driver
│   ├── .gitignore
│   ├── benches
│   │   └── detectors.rs
│   ├── Cargo.toml
│   ├── README.md
│   ├── src
│   │   ├── compile.rs
│   │   ├── config.rs
│   │   ├── display.rs
│   │   ├── driver.rs
│   │   ├── interface
│   │   │   ├── json.rs
│   │   │   ├── lsp.rs
│   │   │   ├── markdown.rs
│   │   │   ├── mod.rs
│   │   │   ├── sarif.rs
│   │   │   ├── tables.rs
│   │   │   └── util.rs
│   │   ├── lib.rs
│   │   ├── mcp.rs
│   │   ├── process.rs
│   │   └── runner.rs
│   └── tests
│       └── astgen.rs
├── bacon.toml
├── benchmarks
│   ├── aderyn
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── iteration_times.svg
│   │       │   └── pdf.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── iteration_times_small.svg
│   │       ├── iteration_times.svg
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── relative_iteration_times_small.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── SD.svg
│   │       └── typical.svg
│   ├── arbitrary-transfer-from
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── avoid-abi-encode-packed
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── block-timestamp-deadline
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── centralization-risk
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── constants-instead-of-literals
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── delegate-call-in-loop
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── deprecated-oz-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── ecrecover
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── empty-block
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── hello_world
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── inconsistent-type-names
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── large-numeric-literal
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── non-reentrant-before-others
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── push-zero-opcode
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── report
│   │   └── index.html
│   ├── require-with-string
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── solmate-safe-transfer-lib
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unindexed-events
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unprotected-initializer
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-erc20-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-oz-erc721-mint
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unspecific-solidity-pragma
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-internal-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-modifier
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-public-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   └── zero-address-check
│       ├── base
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       ├── change
│       │   └── estimates.json
│       ├── new
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       └── report
│           ├── both
│           │   ├── pdf.svg
│           │   └── regression.svg
│           ├── change
│           │   ├── mean.svg
│           │   ├── median.svg
│           │   └── t-test.svg
│           ├── index.html
│           ├── MAD.svg
│           ├── mean.svg
│           ├── median.svg
│           ├── pdf_small.svg
│           ├── pdf.svg
│           ├── regression_small.svg
│           ├── regression.svg
│           ├── relative_pdf_small.svg
│           ├── relative_regression_small.svg
│           ├── SD.svg
│           ├── slope.svg
│           └── typical.svg
├── Cargo.lock
├── Cargo.toml
├── cli
│   ├── benchmarks.sh
│   └── reportgen.sh
├── CODEOWNERS
├── CONTRIBUTING.md
├── cyfrinup
│   ├── dynamic_script
│   └── why.md
├── deny.toml
├── dist-workspace.toml
├── funding.json
├── LICENSE
├── Makefile
├── package-lock.json
├── package.json
├── README.md
├── RELEASE_CHECKLIST.md
├── reports
│   ├── adhoc-sol-files-highs-only-report.json
│   ├── adhoc-sol-files-report.md
│   ├── ccip-functions-report.md
│   ├── empty_report.md
│   ├── hardhat-playground-report.md
│   ├── nft-report-icm.md
│   ├── nft-report.md
│   ├── prb-math-report.md
│   ├── report.json
│   ├── report.md
│   ├── report.sarif
│   ├── sablier-aderyn-toml-nested-root.md
│   ├── templegold-report.md
│   └── uniswap_profile.md
├── rust-toolchain.toml
├── rustfmt.toml
├── tests
│   ├── adhoc-sol-files
│   │   ├── aderyn.toml
│   │   ├── Counter.sol
│   │   ├── DemoASTNodes.sol
│   │   ├── Helper.sol
│   │   ├── InconsistentUints.sol
│   │   ├── inheritance
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   └── InheritanceBase.sol
│   │   ├── InternalFunctions.sol
│   │   ├── lib
│   │   │   └── ThisShouldBeExcluded.sol
│   │   ├── multiple-versions
│   │   │   ├── 0.4
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.5
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.6
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.7
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   └── 0.8
│   │   │       ├── A.sol
│   │   │       └── B.sol
│   │   ├── OnceModifierExample.sol
│   │   └── StateVariables.sol
│   ├── ast
│   │   ├── abstract_contract.json
│   │   ├── address_payable.json
│   │   ├── array_type_name.json
│   │   ├── ast-erc4626.json
│   │   ├── base_constructor_call.json
│   │   ├── bit_not.json
│   │   ├── call.json
│   │   ├── constructor.json
│   │   ├── contract_dep_order.json
│   │   ├── do_while.json
│   │   ├── documentation_1.json
│   │   ├── documentation_2.json
│   │   ├── documentation_3.json
│   │   ├── documentation_local_variable.json
│   │   ├── documentation_on_statements.json
│   │   ├── documentation_triple.json
│   │   ├── empty_block.json
│   │   ├── enum_value_declaration.json
│   │   ├── enum_value.json
│   │   ├── event_definition.json
│   │   ├── experimental_encoder_pragma.json
│   │   ├── fallback_and_reveice_ether.json
│   │   ├── fallback_payable.json
│   │   ├── fallback.json
│   │   ├── function_type.json
│   │   ├── function.json
│   │   ├── global_enum.json
│   │   ├── global_struct.json
│   │   ├── inheritance_specifier.json
│   │   ├── leave.json
│   │   ├── license.json
│   │   ├── long_type_name_binary_operation.json
│   │   ├── long_type_name_identifier.json
│   │   ├── loop.json
│   │   ├── mappings.json
│   │   ├── modifier_definition.json
│   │   ├── modifier_invocation.json
│   │   ├── mutability.json
│   │   ├── nested_functions.json
│   │   ├── non_utf8.json
│   │   ├── override.json
│   │   ├── placeholder_statement.json
│   │   ├── receive_ether.json
│   │   ├── short_type_name_ref.json
│   │   ├── short_type_name.json
│   │   ├── slot_offset.json
│   │   ├── smoke.json
│   │   ├── source_location.json
│   │   ├── string.json
│   │   ├── stringlit.json
│   │   ├── switch_default.json
│   │   ├── switch.json
│   │   ├── try_catch.json
│   │   ├── two_base_functions.json
│   │   ├── unicode.json
│   │   ├── used_errors.json
│   │   ├── userDefinedValueType.json
│   │   ├── using_for_directive.json
│   │   ├── var_access.json
│   │   └── yul_hex_literal.json
│   ├── contract-playground
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── dot
│   │   │   └── .gitkeep
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── script
│   │   │   └── Counter.s.sol
│   │   ├── src
│   │   │   ├── AbstractContract.sol
│   │   │   ├── AderynIgnoreCustomDetectors.sol
│   │   │   ├── AdminContract.sol
│   │   │   ├── ArbitraryTransferFrom.sol
│   │   │   ├── AssemblyExample.sol
│   │   │   ├── AssertStateChange.sol
│   │   │   ├── auditor_mode
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   └── PublicFunctionsWithoutSenderCheck.sol
│   │   │   ├── BooleanEquality.sol
│   │   │   ├── BuiltinSymbolShadow.sol
│   │   │   ├── CacheArrayLength.sol
│   │   │   ├── CallGraphTests.sol
│   │   │   ├── Casting.sol
│   │   │   ├── cloc
│   │   │   │   ├── AnotherHeavilyCommentedContract.sol
│   │   │   │   ├── EmptyContractFile.sol
│   │   │   │   └── HeavilyCommentedContract.sol
│   │   │   ├── CompilerBugStorageSignedIntegerArray.sol
│   │   │   ├── ConstantFuncsAssembly.sol
│   │   │   ├── ConstantsLiterals.sol
│   │   │   ├── ConstFuncChangeState.sol
│   │   │   ├── ContractLocksEther.sol
│   │   │   ├── ContractWithTodo.sol
│   │   │   ├── control_flow
│   │   │   │   └── SimpleProgram.sol
│   │   │   ├── CostlyOperationsInsideLoops.sol
│   │   │   ├── Counter.sol
│   │   │   ├── CrazyPragma.sol
│   │   │   ├── DangerousStrictEquality1.sol
│   │   │   ├── DangerousStrictEquality2.sol
│   │   │   ├── DangerousUnaryOperator.sol
│   │   │   ├── DeadCode.sol
│   │   │   ├── DelegateCallWithoutAddressCheck.sol
│   │   │   ├── DeletionNestedMappingStructureContract.sol
│   │   │   ├── DeprecatedOZFunctions.sol
│   │   │   ├── DivisionBeforeMultiplication.sol
│   │   │   ├── DynamicArrayLengthAssignment.sol
│   │   │   ├── EmitAfterExternalCall.sol
│   │   │   ├── EmptyBlocks.sol
│   │   │   ├── EnumerableSetIteration.sol
│   │   │   ├── eth2
│   │   │   │   └── DepositContract.sol
│   │   │   ├── ExperimentalEncoder.sol
│   │   │   ├── ExternalCalls.sol
│   │   │   ├── FunctionInitializingState.sol
│   │   │   ├── FunctionPointers.sol
│   │   │   ├── FunctionSignatureCollision.sol
│   │   │   ├── HugeConstants.sol
│   │   │   ├── IgnoreEverything.sol
│   │   │   ├── InconsistentUints.sol
│   │   │   ├── IncorrectCaretOperator.sol
│   │   │   ├── IncorrectERC20.sol
│   │   │   ├── IncorrectERC721.sol
│   │   │   ├── IncorrectModifier.sol
│   │   │   ├── IncorrectShift.sol
│   │   │   ├── inheritance
│   │   │   │   ├── ExtendedInheritance.sol
│   │   │   │   ├── IContractInheritance.sol
│   │   │   │   └── InheritanceBase.sol
│   │   │   ├── InternalFunctions.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── LocalVariableShadow.sol
│   │   │   ├── MissingInheritance.sol
│   │   │   ├── MisusedBoolean.sol
│   │   │   ├── MsgValueInLoop.sol
│   │   │   ├── MultipleConstructorSchemes.sol
│   │   │   ├── MultiplePlaceholders.sol
│   │   │   ├── nested
│   │   │   │   ├── 1
│   │   │   │   │   └── Nested.sol
│   │   │   │   └── 2
│   │   │   │       └── Nested.sol
│   │   │   ├── nested_mappings
│   │   │   │   ├── LaterVersion.sol
│   │   │   │   └── NestedMappings.sol
│   │   │   ├── OnceModifierExample.sol
│   │   │   ├── OnlyLibrary.sol
│   │   │   ├── OutOfOrderRetryable.sol
│   │   │   ├── parent_chain
│   │   │   │   └── ParentChainContract.sol
│   │   │   ├── PragmaRange.sol
│   │   │   ├── PreDeclaredVarUsage.sol
│   │   │   ├── PublicFunction.sol
│   │   │   ├── PublicVariableReadInExternalContext.sol
│   │   │   ├── RedundantStatements.sol
│   │   │   ├── ReturnBomb.sol
│   │   │   ├── reused_contract_name
│   │   │   │   ├── ContractA.sol
│   │   │   │   └── ContractB.sol
│   │   │   ├── RevertsAndRequriesInLoops.sol
│   │   │   ├── router
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   ├── FallbackAndReceiveOverrides.sol
│   │   │   │   ├── InternalCalls.sol
│   │   │   │   ├── ModifierCalls.sol
│   │   │   │   └── VarOverridesFunction.sol
│   │   │   ├── RTLO.sol
│   │   │   ├── SendEtherNoChecks.sol
│   │   │   ├── SendEtherNoChecksLibImport.sol
│   │   │   ├── StateChangeAfterExternalCall.sol
│   │   │   ├── StateShadowing.sol
│   │   │   ├── StateVariableCouldBeDeclaredConstant.sol
│   │   │   ├── StateVariableCouldBeDeclaredImmutable.sol
│   │   │   ├── StateVariables.sol
│   │   │   ├── StateVariablesChangesWithoutEvents.sol
│   │   │   ├── StateVariablesManipulation.sol
│   │   │   ├── StorageConditionals.sol
│   │   │   ├── StorageParameters.sol
│   │   │   ├── T11sTranferer.sol
│   │   │   ├── TautologicalCompare.sol
│   │   │   ├── TautologyOrContradiction.sol
│   │   │   ├── TestERC20.sol
│   │   │   ├── TransientKeyword.sol
│   │   │   ├── Trump.sol
│   │   │   ├── TxOriginUsedForAuth.sol
│   │   │   ├── U2.sol
│   │   │   ├── U3.sol
│   │   │   ├── U4.sol
│   │   │   ├── U5.sol
│   │   │   ├── UncheckedCalls.sol
│   │   │   ├── UncheckedReturn.sol
│   │   │   ├── UncheckedSend.sol
│   │   │   ├── UninitializedLocalVariables.sol
│   │   │   ├── UninitializedStateVariable.sol
│   │   │   ├── uniswap
│   │   │   │   ├── UniswapV2Swapper.sol
│   │   │   │   └── UniswapV3Swapper.sol
│   │   │   ├── UnprotectedInitialize.sol
│   │   │   ├── UnsafeERC721Mint.sol
│   │   │   ├── UnusedError.sol
│   │   │   ├── UnusedImport.sol
│   │   │   ├── UnusedStateVariables.sol
│   │   │   ├── UsingSelfdestruct.sol
│   │   │   ├── VoidConstructor.sol
│   │   │   ├── WeakRandomness.sol
│   │   │   ├── WrongOrderOfLayout.sol
│   │   │   ├── YulReturn.sol
│   │   │   └── ZeroAddressCheck.sol
│   │   └── test
│   │       └── Counter.t.sol
│   ├── foundry-nft-f23
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── foundry.lock
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── foundry-nft-f23-icm
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── aderyn.toml
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── hardhat-js-playground
│   │   ├── .gitignore
│   │   ├── artifacts
│   │   │   ├── build-info
│   │   │   │   └── cee6fe9a9a2f03f7ff10a27ab2746af6.json
│   │   │   └── contracts
│   │   │       ├── Counter.sol
│   │   │       │   ├── Counter.dbg.json
│   │   │       │   └── Counter.json
│   │   │       ├── ExtendedInheritance.sol
│   │   │       │   ├── ExtendedInheritance.dbg.json
│   │   │       │   └── ExtendedInheritance.json
│   │   │       ├── IContractInheritance.sol
│   │   │       │   ├── IContractInheritance.dbg.json
│   │   │       │   └── IContractInheritance.json
│   │   │       ├── InheritanceBase.sol
│   │   │       │   ├── InheritanceBase.dbg.json
│   │   │       │   └── InheritanceBase.json
│   │   │       ├── KeccakContract.sol
│   │   │       │   ├── KeccakContract.dbg.json
│   │   │       │   └── KeccakContract.json
│   │   │       ├── Lock.sol
│   │   │       │   ├── Lock.dbg.json
│   │   │       │   └── Lock.json
│   │   │       └── StateVariables.sol
│   │   │           ├── StateVariables.dbg.json
│   │   │           └── StateVariables.json
│   │   ├── contracts
│   │   │   ├── Counter.sol
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   ├── InheritanceBase.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── Lock.sol
│   │   │   └── StateVariables.sol
│   │   ├── hardhat.config.js
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── scripts
│   │   │   └── deploy.js
│   │   ├── test
│   │   │   └── Lock.js
│   │   └── yarn.lock
│   ├── no-sol-files
│   │   ├── extra
│   │   │   └── HelloAgain.md
│   │   ├── Hello.txt
│   │   └── Hello.yul
│   └── toml
│       ├── nested_project1
│       │   ├── aderyn.toml
│       │   ├── folder1
│       │   │   └── hardhat.config.ts
│       │   ├── folder2
│       │   │   └── hardhat.config.ts
│       │   └── folder3
│       │       └── file.txt
│       └── nested_project2
│           ├── aderyn.toml
│           ├── folder1
│           │   └── foundry.toml
│           └── folder2
│               └── file1.txt
├── tools
│   └── xtask
│       ├── Cargo.toml
│       └── src
│           ├── blesspr.rs
│           ├── cut_release.rs
│           ├── flags.rs
│           ├── main.rs
│           ├── reportgen.rs
│           └── tomlgen.rs
└── typos.toml
```

# Files

--------------------------------------------------------------------------------
/benchmarks/centralization-risk/report/both/regression.svg:
--------------------------------------------------------------------------------

```
  1 | <svg width="960" height="540" viewBox="0 0 960 540" xmlns="http://www.w3.org/2000/svg">
  2 | <text x="480" y="32" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="16.129032258064516" opacity="1" fill="#000000">
  3 | centralization-risk
  4 | </text>
  5 | <text x="27" y="263" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 27, 263)">
  6 | Total sample time (ms)
  7 | </text>
  8 | <text x="510" y="513" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
  9 | Iterations (x 10^3)
 10 | </text>
 11 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="472" x2="87" y2="53"/>
 12 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="186" y1="472" x2="186" y2="53"/>
 13 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="285" y1="472" x2="285" y2="53"/>
 14 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="385" y1="472" x2="385" y2="53"/>
 15 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="484" y1="472" x2="484" y2="53"/>
 16 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="584" y1="472" x2="584" y2="53"/>
 17 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="683" y1="472" x2="683" y2="53"/>
 18 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="782" y1="472" x2="782" y2="53"/>
 19 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="882" y1="472" x2="882" y2="53"/>
 20 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="472" x2="932" y2="472"/>
 21 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="433" x2="932" y2="433"/>
 22 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="393" x2="932" y2="393"/>
 23 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="354" x2="932" y2="354"/>
 24 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="314" x2="932" y2="314"/>
 25 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="274" x2="932" y2="274"/>
 26 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="235" x2="932" y2="235"/>
 27 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="195" x2="932" y2="195"/>
 28 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="155" x2="932" y2="155"/>
 29 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="116" x2="932" y2="116"/>
 30 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="76" x2="932" y2="76"/>
 31 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="86,53 86,472 "/>
 32 | <text x="77" y="472" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 33 | 0.0
 34 | </text>
 35 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,472 86,472 "/>
 36 | <text x="77" y="433" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 37 | 10.0
 38 | </text>
 39 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,433 86,433 "/>
 40 | <text x="77" y="393" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 41 | 20.0
 42 | </text>
 43 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,393 86,393 "/>
 44 | <text x="77" y="354" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 45 | 30.0
 46 | </text>
 47 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,354 86,354 "/>
 48 | <text x="77" y="314" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 49 | 40.0
 50 | </text>
 51 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,314 86,314 "/>
 52 | <text x="77" y="274" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 53 | 50.0
 54 | </text>
 55 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,274 86,274 "/>
 56 | <text x="77" y="235" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 57 | 60.0
 58 | </text>
 59 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,235 86,235 "/>
 60 | <text x="77" y="195" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 61 | 70.0
 62 | </text>
 63 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,195 86,195 "/>
 64 | <text x="77" y="155" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 65 | 80.0
 66 | </text>
 67 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,155 86,155 "/>
 68 | <text x="77" y="116" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 69 | 90.0
 70 | </text>
 71 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,116 86,116 "/>
 72 | <text x="77" y="76" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 73 | 100.0
 74 | </text>
 75 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,76 86,76 "/>
 76 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 932,473 "/>
 77 | <text x="87" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 78 | 0
 79 | </text>
 80 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 87,478 "/>
 81 | <text x="186" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 82 | 1
 83 | </text>
 84 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="186,473 186,478 "/>
 85 | <text x="285" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 86 | 2
 87 | </text>
 88 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="285,473 285,478 "/>
 89 | <text x="385" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 90 | 3
 91 | </text>
 92 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="385,473 385,478 "/>
 93 | <text x="484" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 94 | 4
 95 | </text>
 96 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="484,473 484,478 "/>
 97 | <text x="584" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 98 | 5
 99 | </text>
100 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="584,473 584,478 "/>
101 | <text x="683" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
102 | 6
103 | </text>
104 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="683,473 683,478 "/>
105 | <text x="782" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
106 | 7
107 | </text>
108 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="782,473 782,478 "/>
109 | <text x="882" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
110 | 8
111 | </text>
112 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="882,473 882,478 "/>
113 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="1" points="87,472 932,81 "/>
114 | <polygon opacity="0.25" fill="#E31A1C" points="87,472 932,82 932,79 "/>
115 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="87,472 932,53 "/>
116 | <polygon opacity="0.25" fill="#1F78B4" points="87,472 932,58 932,53 "/>
117 | <text x="132" y="68" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
118 | Base Sample
119 | </text>
120 | <text x="132" y="83" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
121 | New Sample
122 | </text>
123 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="2" points="102,73 122,73 "/>
124 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="102,88 122,88 "/>
125 | </svg>
126 | 
```

--------------------------------------------------------------------------------
/benchmarks/centralization-risk/report/pdf_small.svg:
--------------------------------------------------------------------------------

```
 1 | <svg width="450" height="300" viewBox="0 0 450 300" xmlns="http://www.w3.org/2000/svg">
 2 | <text x="15" y="130" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 15, 130)">
 3 | Density (a.u.)
 4 | </text>
 5 | <text x="255" y="285" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 6 | Average Time (µs)
 7 | </text>
 8 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="74,15 74,244 "/>
 9 | <text x="65" y="244" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
10 | 0
11 | </text>
12 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,244 74,244 "/>
13 | <text x="65" y="220" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
14 | 0.1
15 | </text>
16 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,220 74,220 "/>
17 | <text x="65" y="195" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
18 | 0.2
19 | </text>
20 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,195 74,195 "/>
21 | <text x="65" y="170" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
22 | 0.3
23 | </text>
24 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,170 74,170 "/>
25 | <text x="65" y="145" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
26 | 0.4
27 | </text>
28 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,145 74,145 "/>
29 | <text x="65" y="120" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
30 | 0.5
31 | </text>
32 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,120 74,120 "/>
33 | <text x="65" y="96" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
34 | 0.6
35 | </text>
36 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,96 74,96 "/>
37 | <text x="65" y="71" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
38 | 0.7
39 | </text>
40 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,71 74,71 "/>
41 | <text x="65" y="46" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
42 | 0.8
43 | </text>
44 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,46 74,46 "/>
45 | <text x="65" y="21" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
46 | 0.9
47 | </text>
48 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,21 74,21 "/>
49 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="75,245 434,245 "/>
50 | <text x="81" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
51 | 11
52 | </text>
53 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,245 81,250 "/>
54 | <text x="152" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
55 | 12
56 | </text>
57 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="152,245 152,250 "/>
58 | <text x="224" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
59 | 13
60 | </text>
61 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="224,245 224,250 "/>
62 | <text x="296" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
63 | 14
64 | </text>
65 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="296,245 296,250 "/>
66 | <text x="367" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
67 | 15
68 | </text>
69 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="367,245 367,250 "/>
70 | <polygon opacity="0.25" fill="#1F78B4" points="75,244 75,244 76,244 77,244 77,244 78,244 79,244 80,244 80,244 81,244 82,244 82,244 83,244 84,244 85,244 85,244 86,244 87,243 87,243 88,243 89,243 90,243 90,243 91,243 92,242 92,242 93,242 94,242 95,241 95,241 96,241 97,240 98,240 98,240 99,239 100,239 100,238 101,238 102,237 103,236 103,236 104,235 105,234 105,234 106,233 107,232 108,231 108,230 109,229 110,228 110,227 111,225 112,224 113,223 113,221 114,220 115,218 116,217 116,215 117,213 118,211 118,209 119,208 120,205 121,203 121,201 122,199 123,197 123,194 124,192 125,189 126,187 126,184 127,182 128,179 128,176 129,173 130,170 131,167 131,164 132,161 133,158 133,155 134,152 135,149 136,146 136,142 137,139 138,136 139,133 139,130 140,126 141,123 141,120 142,117 143,113 144,110 144,107 145,104 146,101 146,98 147,95 148,91 149,89 149,86 150,83 151,80 151,77 152,74 153,72 154,69 154,67 155,64 156,62 157,60 157,58 158,56 159,54 159,52 160,50 161,48 162,47 162,45 163,44 164,43 164,41 165,40 166,39 167,39 167,38 168,37 169,37 169,37 170,36 171,36 172,36 172,37 173,37 174,37 175,38 175,38 176,39 177,40 177,41 178,42 179,43 180,45 180,46 181,48 182,49 182,51 183,53 184,54 185,56 185,58 186,61 187,63 187,65 188,67 189,70 190,72 190,74 191,77 192,79 192,82 193,84 194,87 195,89 195,92 196,95 197,97 198,100 198,102 199,105 200,107 200,110 201,112 202,115 203,117 203,120 204,122 205,124 205,127 206,129 207,131 208,133 208,136 209,138 210,140 210,142 211,144 212,146 213,148 213,150 214,152 215,153 216,155 216,157 217,159 218,161 218,162 219,164 220,166 221,167 221,169 222,170 223,172 223,173 224,175 225,176 226,178 226,179 227,180 228,182 228,183 229,184 230,186 231,187 231,188 232,189 233,191 233,192 234,193 235,194 236,195 236,196 237,197 238,198 239,199 239,200 240,201 241,202 241,203 242,204 243,205 244,206 244,207 245,208 246,209 246,209 247,210 248,211 249,212 249,212 250,213 251,214 251,214 252,215 253,216 254,216 254,217 255,217 256,218 257,219 257,219 258,220 259,220 259,221 260,221 261,222 262,222 262,223 263,223 264,224 264,224 265,225 266,225 267,225 267,226 268,226 269,227 269,227 270,227 271,228 272,228 272,229 273,229 274,229 275,230 275,230 276,230 277,231 277,231 278,232 279,232 280,232 280,232 281,233 282,233 282,233 283,234 284,234 285,234 285,234 286,235 287,235 287,235 288,235 289,236 290,236 290,236 291,236 292,236 292,237 293,237 294,237 295,237 295,237 296,237 297,237 298,238 298,238 299,238 300,238 300,238 301,238 302,238 303,238 303,238 304,238 305,239 305,239 306,239 307,239 308,239 308,239 309,239 310,239 310,239 311,239 312,239 313,239 313,239 314,239 315,239 316,239 316,239 317,239 318,239 318,240 319,240 320,240 321,240 321,240 322,240 323,240 323,240 324,240 325,240 326,240 326,240 327,240 328,240 328,240 329,240 330,239 331,239 331,239 332,239 333,239 333,239 334,239 335,239 336,239 336,239 337,239 338,239 339,239 339,238 340,238 341,238 341,238 342,238 343,238 344,238 344,237 345,237 346,237 346,237 347,237 348,237 349,236 349,236 350,236 351,236 351,236 352,236 353,235 354,235 354,235 355,235 356,235 357,235 357,235 358,235 359,234 359,234 360,234 361,234 362,234 362,234 363,234 364,234 364,234 365,234 366,234 367,234 367,234 368,234 369,234 369,234 370,234 371,234 372,235 372,235 373,235 374,235 375,235 375,235 376,235 377,236 377,236 378,236 379,236 380,236 380,236 381,237 382,237 382,237 383,237 384,237 385,238 385,238 386,238 387,238 387,239 388,239 389,239 390,239 390,239 391,240 392,240 392,240 393,240 394,240 395,241 395,241 396,241 397,241 398,241 398,242 399,242 400,242 400,242 401,242 402,242 403,242 403,243 404,243 405,243 405,243 406,243 407,243 408,243 408,243 409,243 410,243 410,244 411,244 412,244 413,244 413,244 414,244 415,244 416,244 416,244 417,244 418,244 418,244 419,244 420,244 421,244 421,244 422,244 423,244 423,244 424,244 425,244 426,244 426,244 427,244 428,244 428,244 429,244 430,244 431,244 431,244 432,244 433,244 434,244 434,244 75,244 "/>
71 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="187,244 187,65 "/>
72 | </svg>
73 | 
```

--------------------------------------------------------------------------------
/benchmarks/constants-instead-of-literals/report/pdf_small.svg:
--------------------------------------------------------------------------------

```
 1 | <svg width="450" height="300" viewBox="0 0 450 300" xmlns="http://www.w3.org/2000/svg">
 2 | <text x="15" y="130" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 15, 130)">
 3 | Density (a.u.)
 4 | </text>
 5 | <text x="255" y="285" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 6 | Average Time (ms)
 7 | </text>
 8 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="74,15 74,244 "/>
 9 | <text x="65" y="244" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
10 | 0
11 | </text>
12 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,244 74,244 "/>
13 | <text x="65" y="220" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
14 | 0.5
15 | </text>
16 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,220 74,220 "/>
17 | <text x="65" y="196" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
18 | 1
19 | </text>
20 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,196 74,196 "/>
21 | <text x="65" y="172" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
22 | 1.5
23 | </text>
24 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,172 74,172 "/>
25 | <text x="65" y="148" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
26 | 2
27 | </text>
28 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,148 74,148 "/>
29 | <text x="65" y="124" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
30 | 2.5
31 | </text>
32 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,124 74,124 "/>
33 | <text x="65" y="100" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
34 | 3
35 | </text>
36 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,100 74,100 "/>
37 | <text x="65" y="76" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
38 | 3.5
39 | </text>
40 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,76 74,76 "/>
41 | <text x="65" y="52" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
42 | 4
43 | </text>
44 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,52 74,52 "/>
45 | <text x="65" y="27" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
46 | 4.5
47 | </text>
48 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,27 74,27 "/>
49 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="75,245 434,245 "/>
50 | <text x="115" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
51 | 1.2
52 | </text>
53 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="115,245 115,250 "/>
54 | <text x="190" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
55 | 1.4
56 | </text>
57 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="190,245 190,250 "/>
58 | <text x="266" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
59 | 1.6
60 | </text>
61 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="266,245 266,250 "/>
62 | <text x="342" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
63 | 1.8
64 | </text>
65 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="342,245 342,250 "/>
66 | <text x="417" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
67 | 2
68 | </text>
69 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="417,245 417,250 "/>
70 | <polygon opacity="0.25" fill="#1F78B4" points="75,244 75,244 76,244 77,244 77,244 78,244 79,244 80,244 80,244 81,244 82,244 82,244 83,244 84,244 85,244 85,244 86,244 87,244 87,244 88,244 89,244 90,244 90,244 91,244 92,244 92,244 93,243 94,243 95,243 95,243 96,243 97,243 98,243 98,243 99,242 100,242 100,242 101,242 102,242 103,241 103,241 104,241 105,241 105,240 106,240 107,240 108,239 108,239 109,238 110,238 110,238 111,237 112,237 113,236 113,235 114,235 115,234 116,234 116,233 117,232 118,231 118,230 119,230 120,229 121,228 121,227 122,226 123,225 123,224 124,222 125,221 126,220 126,218 127,217 128,215 128,214 129,212 130,211 131,209 131,207 132,205 133,203 133,201 134,199 135,197 136,194 136,192 137,190 138,187 139,184 139,182 140,179 141,176 141,173 142,170 143,167 144,164 144,161 145,157 146,154 146,151 147,147 148,144 149,140 149,136 150,133 151,129 151,125 152,122 153,118 154,114 154,110 155,107 156,103 157,99 157,96 158,92 159,88 159,85 160,82 161,78 162,75 162,72 163,69 164,66 164,63 165,60 166,58 167,55 167,53 168,51 169,49 169,47 170,45 171,43 172,42 172,41 173,39 174,39 175,38 175,37 176,37 177,36 177,36 178,36 179,37 180,37 180,37 181,38 182,39 182,40 183,41 184,42 185,43 185,44 186,46 187,47 187,49 188,50 189,52 190,54 190,56 191,58 192,60 192,62 193,64 194,66 195,68 195,70 196,72 197,74 198,76 198,78 199,80 200,82 200,84 201,86 202,88 203,90 203,91 204,93 205,95 205,97 206,99 207,100 208,102 208,104 209,105 210,107 210,108 211,110 212,111 213,113 213,114 214,116 215,117 216,119 216,120 217,122 218,123 218,124 219,126 220,127 221,129 221,130 222,131 223,133 223,134 224,136 225,137 226,139 226,140 227,141 228,143 228,144 229,146 230,147 231,149 231,150 232,152 233,153 233,155 234,156 235,158 236,159 236,161 237,162 238,164 239,165 239,167 240,168 241,170 241,171 242,173 243,174 244,175 244,177 245,178 246,179 246,181 247,182 248,183 249,185 249,186 250,187 251,188 251,189 252,191 253,192 254,193 254,194 255,195 256,196 257,197 257,198 258,199 259,200 259,201 260,202 261,203 262,204 262,205 263,206 264,207 264,208 265,209 266,209 267,210 267,211 268,212 269,213 269,214 270,214 271,215 272,216 272,217 273,218 274,218 275,219 275,220 276,221 277,221 277,222 278,223 279,224 280,224 280,225 281,226 282,226 282,227 283,228 284,228 285,229 285,229 286,230 287,231 287,231 288,232 289,232 290,233 290,233 291,233 292,234 292,234 293,235 294,235 295,235 295,236 296,236 297,236 298,237 298,237 299,237 300,237 300,238 301,238 302,238 303,238 303,238 304,238 305,239 305,239 306,239 307,239 308,239 308,239 309,239 310,239 310,239 311,239 312,239 313,239 313,239 314,239 315,239 316,240 316,240 317,240 318,240 318,240 319,240 320,240 321,240 321,240 322,240 323,240 323,240 324,240 325,240 326,240 326,240 327,240 328,240 328,240 329,240 330,240 331,240 331,239 332,239 333,239 333,239 334,239 335,239 336,239 336,239 337,239 338,239 339,239 339,239 340,239 341,239 341,238 342,238 343,238 344,238 344,238 345,238 346,238 346,237 347,237 348,237 349,237 349,237 350,237 351,237 351,236 352,236 353,236 354,236 354,236 355,236 356,235 357,235 357,235 358,235 359,235 359,235 360,235 361,234 362,234 362,234 363,234 364,234 364,234 365,234 366,234 367,234 367,234 368,234 369,234 369,234 370,234 371,234 372,234 372,234 373,234 374,234 375,234 375,234 376,234 377,235 377,235 378,235 379,235 380,235 380,235 381,235 382,236 382,236 383,236 384,236 385,236 385,237 386,237 387,237 387,237 388,238 389,238 390,238 390,238 391,239 392,239 392,239 393,239 394,239 395,240 395,240 396,240 397,240 398,240 398,241 399,241 400,241 400,241 401,241 402,242 403,242 403,242 404,242 405,242 405,242 406,242 407,243 408,243 408,243 409,243 410,243 410,243 411,243 412,243 413,243 413,244 414,244 415,244 416,244 416,244 417,244 418,244 418,244 419,244 420,244 421,244 421,244 422,244 423,244 423,244 424,244 425,244 426,244 426,244 427,244 428,244 428,244 429,244 430,244 431,244 431,244 432,244 433,244 434,244 434,244 75,244 "/>
71 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="199,244 199,81 "/>
72 | </svg>
73 | 
```

--------------------------------------------------------------------------------
/benchmarks/deprecated-oz-functions/report/both/regression.svg:
--------------------------------------------------------------------------------

```
  1 | <svg width="960" height="540" viewBox="0 0 960 540" xmlns="http://www.w3.org/2000/svg">
  2 | <text x="480" y="32" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="16.129032258064516" opacity="1" fill="#000000">
  3 | deprecated-oz-functions
  4 | </text>
  5 | <text x="27" y="263" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 27, 263)">
  6 | Total sample time (ms)
  7 | </text>
  8 | <text x="510" y="513" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
  9 | Iterations
 10 | </text>
 11 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="472" x2="87" y2="53"/>
 12 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="192" y1="472" x2="192" y2="53"/>
 13 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="298" y1="472" x2="298" y2="53"/>
 14 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="403" y1="472" x2="403" y2="53"/>
 15 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="509" y1="472" x2="509" y2="53"/>
 16 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="615" y1="472" x2="615" y2="53"/>
 17 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="720" y1="472" x2="720" y2="53"/>
 18 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="826" y1="472" x2="826" y2="53"/>
 19 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="932" y1="472" x2="932" y2="53"/>
 20 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="472" x2="932" y2="472"/>
 21 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="433" x2="932" y2="433"/>
 22 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="393" x2="932" y2="393"/>
 23 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="354" x2="932" y2="354"/>
 24 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="314" x2="932" y2="314"/>
 25 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="275" x2="932" y2="275"/>
 26 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="235" x2="932" y2="235"/>
 27 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="196" x2="932" y2="196"/>
 28 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="156" x2="932" y2="156"/>
 29 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="116" x2="932" y2="116"/>
 30 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="77" x2="932" y2="77"/>
 31 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="86,53 86,472 "/>
 32 | <text x="77" y="472" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 33 | 0.0
 34 | </text>
 35 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,472 86,472 "/>
 36 | <text x="77" y="433" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 37 | 10.0
 38 | </text>
 39 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,433 86,433 "/>
 40 | <text x="77" y="393" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 41 | 20.0
 42 | </text>
 43 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,393 86,393 "/>
 44 | <text x="77" y="354" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 45 | 30.0
 46 | </text>
 47 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,354 86,354 "/>
 48 | <text x="77" y="314" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 49 | 40.0
 50 | </text>
 51 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,314 86,314 "/>
 52 | <text x="77" y="275" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 53 | 50.0
 54 | </text>
 55 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,275 86,275 "/>
 56 | <text x="77" y="235" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 57 | 60.0
 58 | </text>
 59 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,235 86,235 "/>
 60 | <text x="77" y="196" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 61 | 70.0
 62 | </text>
 63 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,196 86,196 "/>
 64 | <text x="77" y="156" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 65 | 80.0
 66 | </text>
 67 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,156 86,156 "/>
 68 | <text x="77" y="116" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 69 | 90.0
 70 | </text>
 71 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,116 86,116 "/>
 72 | <text x="77" y="77" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 73 | 100.0
 74 | </text>
 75 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,77 86,77 "/>
 76 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 932,473 "/>
 77 | <text x="87" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 78 | 0
 79 | </text>
 80 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 87,478 "/>
 81 | <text x="192" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 82 | 50
 83 | </text>
 84 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="192,473 192,478 "/>
 85 | <text x="298" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 86 | 100
 87 | </text>
 88 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="298,473 298,478 "/>
 89 | <text x="403" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 90 | 150
 91 | </text>
 92 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="403,473 403,478 "/>
 93 | <text x="509" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 94 | 200
 95 | </text>
 96 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="509,473 509,478 "/>
 97 | <text x="615" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 98 | 250
 99 | </text>
100 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="615,473 615,478 "/>
101 | <text x="720" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
102 | 300
103 | </text>
104 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="720,473 720,478 "/>
105 | <text x="826" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
106 | 350
107 | </text>
108 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="826,473 826,478 "/>
109 | <text x="932" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
110 | 400
111 | </text>
112 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="932,473 932,478 "/>
113 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="1" points="87,472 932,75 "/>
114 | <polygon opacity="0.25" fill="#E31A1C" points="87,472 932,83 932,65 "/>
115 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="87,472 932,53 "/>
116 | <polygon opacity="0.25" fill="#1F78B4" points="87,472 932,63 932,53 "/>
117 | <text x="132" y="68" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
118 | Base Sample
119 | </text>
120 | <text x="132" y="83" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
121 | New Sample
122 | </text>
123 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="2" points="102,73 122,73 "/>
124 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="102,88 122,88 "/>
125 | </svg>
126 | 
```

--------------------------------------------------------------------------------
/benchmarks/push-zero-opcode/report/pdf_small.svg:
--------------------------------------------------------------------------------

```
 1 | <svg width="450" height="300" viewBox="0 0 450 300" xmlns="http://www.w3.org/2000/svg">
 2 | <text x="15" y="130" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 15, 130)">
 3 | Density (a.u.)
 4 | </text>
 5 | <text x="255" y="285" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 6 | Average Time (µs)
 7 | </text>
 8 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="74,15 74,244 "/>
 9 | <text x="65" y="244" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
10 | 0
11 | </text>
12 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,244 74,244 "/>
13 | <text x="65" y="221" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
14 | 0.02
15 | </text>
16 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,221 74,221 "/>
17 | <text x="65" y="197" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
18 | 0.04
19 | </text>
20 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,197 74,197 "/>
21 | <text x="65" y="174" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
22 | 0.06
23 | </text>
24 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,174 74,174 "/>
25 | <text x="65" y="150" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
26 | 0.08
27 | </text>
28 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,150 74,150 "/>
29 | <text x="65" y="127" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
30 | 0.1
31 | </text>
32 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,127 74,127 "/>
33 | <text x="65" y="103" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
34 | 0.12
35 | </text>
36 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,103 74,103 "/>
37 | <text x="65" y="80" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
38 | 0.14
39 | </text>
40 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,80 74,80 "/>
41 | <text x="65" y="56" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
42 | 0.16
43 | </text>
44 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,56 74,56 "/>
45 | <text x="65" y="32" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
46 | 0.18
47 | </text>
48 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,32 74,32 "/>
49 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="75,245 434,245 "/>
50 | <text x="125" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
51 | 40
52 | </text>
53 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="125,245 125,250 "/>
54 | <text x="188" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
55 | 45
56 | </text>
57 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="188,245 188,250 "/>
58 | <text x="252" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
59 | 50
60 | </text>
61 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="252,245 252,250 "/>
62 | <text x="316" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
63 | 55
64 | </text>
65 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="316,245 316,250 "/>
66 | <text x="380" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
67 | 60
68 | </text>
69 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="380,245 380,250 "/>
70 | <polygon opacity="0.25" fill="#1F78B4" points="75,244 75,244 76,244 77,244 77,244 78,244 79,244 80,244 80,244 81,244 82,244 82,244 83,243 84,243 85,243 85,243 86,243 87,242 87,242 88,242 89,242 90,241 90,241 91,240 92,240 92,239 93,239 94,238 95,238 95,237 96,236 97,235 98,234 98,233 99,232 100,231 100,230 101,229 102,228 103,226 103,225 104,223 105,222 105,220 106,218 107,216 108,214 108,212 109,210 110,207 110,205 111,203 112,200 113,197 113,195 114,192 115,189 116,186 116,183 117,180 118,176 118,173 119,170 120,166 121,163 121,159 122,156 123,152 123,148 124,145 125,141 126,138 126,134 127,130 128,127 128,123 129,119 130,116 131,112 131,109 132,106 133,102 133,99 134,96 135,93 136,90 136,87 137,84 138,81 139,78 139,76 140,73 141,71 141,69 142,67 143,65 144,63 144,61 145,59 146,58 146,56 147,55 148,53 149,52 149,51 150,49 151,48 151,47 152,46 153,45 154,45 154,44 155,43 156,42 157,41 157,41 158,40 159,39 159,39 160,38 161,38 162,37 162,37 163,37 164,37 164,36 165,36 166,36 167,36 167,37 168,37 169,37 169,38 170,39 171,40 172,41 172,42 173,43 174,45 175,46 175,48 176,50 177,52 177,55 178,57 179,60 180,63 180,66 181,70 182,73 182,77 183,80 184,84 185,88 185,92 186,97 187,101 187,105 188,110 189,114 190,119 190,123 191,127 192,132 192,136 193,141 194,145 195,149 195,154 196,158 197,162 198,166 198,170 199,173 200,177 200,180 201,184 202,187 203,190 203,193 204,196 205,199 205,201 206,204 207,206 208,208 208,211 209,213 210,215 210,216 211,218 212,220 213,221 213,223 214,224 215,225 216,226 216,228 217,229 218,230 218,231 219,232 220,232 221,233 221,234 222,235 223,235 223,236 224,236 225,237 226,238 226,238 227,238 228,239 228,239 229,240 230,240 231,240 231,241 232,241 233,241 233,241 234,242 235,242 236,242 236,242 237,243 238,243 239,243 239,243 240,243 241,243 241,243 242,243 243,243 244,243 244,244 245,244 246,244 246,244 247,244 248,244 249,244 249,244 250,244 251,244 251,244 252,244 253,244 254,243 254,243 255,243 256,243 257,243 257,243 258,243 259,243 259,243 260,243 261,243 262,243 262,242 263,242 264,242 264,242 265,242 266,242 267,242 267,242 268,242 269,241 269,241 270,241 271,241 272,241 272,241 273,241 274,241 275,241 275,240 276,240 277,240 277,240 278,240 279,240 280,240 280,240 281,240 282,240 282,240 283,240 284,240 285,240 285,240 286,240 287,240 287,240 288,240 289,240 290,240 290,240 291,240 292,240 292,240 293,240 294,240 295,240 295,240 296,240 297,240 298,240 298,240 299,240 300,240 300,240 301,240 302,240 303,240 303,240 304,240 305,240 305,240 306,240 307,240 308,240 308,240 309,240 310,240 310,240 311,240 312,240 313,240 313,240 314,240 315,240 316,240 316,241 317,241 318,241 318,241 319,241 320,241 321,241 321,241 322,241 323,241 323,242 324,242 325,242 326,242 326,242 327,242 328,242 328,242 329,243 330,243 331,243 331,243 332,243 333,243 333,243 334,243 335,243 336,243 336,244 337,244 338,244 339,244 339,244 340,244 341,244 341,244 342,244 343,244 344,244 344,244 345,244 346,244 346,244 347,244 348,244 349,244 349,244 350,244 351,244 351,244 352,244 353,244 354,244 354,244 355,244 356,244 357,244 357,244 358,244 359,244 359,244 360,244 361,244 362,244 362,244 363,243 364,243 364,243 365,243 366,243 367,243 367,243 368,243 369,243 369,243 370,243 371,242 372,242 372,242 373,242 374,242 375,242 375,242 376,242 377,242 377,241 378,241 379,241 380,241 380,241 381,241 382,241 382,241 383,241 384,241 385,241 385,241 386,241 387,241 387,241 388,241 389,241 390,241 390,241 391,241 392,241 392,241 393,241 394,241 395,241 395,241 396,241 397,241 398,241 398,241 399,241 400,242 400,242 401,242 402,242 403,242 403,242 404,242 405,242 405,242 406,243 407,243 408,243 408,243 409,243 410,243 410,243 411,243 412,243 413,243 413,244 414,244 415,244 416,244 416,244 417,244 418,244 418,244 419,244 420,244 421,244 421,244 422,244 423,244 423,244 424,244 425,244 426,244 426,244 427,244 428,244 428,244 429,244 430,244 431,244 431,244 432,244 433,244 434,244 434,244 75,244 "/>
71 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="164,244 164,36 "/>
72 | </svg>
73 | 
```

--------------------------------------------------------------------------------
/benchmarks/inconsistent-type-names/report/both/regression.svg:
--------------------------------------------------------------------------------

```
  1 | <svg width="960" height="540" viewBox="0 0 960 540" xmlns="http://www.w3.org/2000/svg">
  2 | <text x="480" y="32" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="16.129032258064516" opacity="1" fill="#000000">
  3 | inconsistent-type-names
  4 | </text>
  5 | <text x="27" y="263" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 27, 263)">
  6 | Total sample time (ms)
  7 | </text>
  8 | <text x="510" y="513" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
  9 | Iterations
 10 | </text>
 11 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="472" x2="87" y2="53"/>
 12 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="171" y1="472" x2="171" y2="53"/>
 13 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="256" y1="472" x2="256" y2="53"/>
 14 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="340" y1="472" x2="340" y2="53"/>
 15 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="425" y1="472" x2="425" y2="53"/>
 16 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="509" y1="472" x2="509" y2="53"/>
 17 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="594" y1="472" x2="594" y2="53"/>
 18 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="678" y1="472" x2="678" y2="53"/>
 19 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="763" y1="472" x2="763" y2="53"/>
 20 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="847" y1="472" x2="847" y2="53"/>
 21 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="932" y1="472" x2="932" y2="53"/>
 22 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="472" x2="932" y2="472"/>
 23 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="422" x2="932" y2="422"/>
 24 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="371" x2="932" y2="371"/>
 25 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="321" x2="932" y2="321"/>
 26 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="270" x2="932" y2="270"/>
 27 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="220" x2="932" y2="220"/>
 28 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="169" x2="932" y2="169"/>
 29 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="119" x2="932" y2="119"/>
 30 | <line opacity="0.2" stroke="#000000" stroke-width="1" x1="87" y1="68" x2="932" y2="68"/>
 31 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="86,53 86,472 "/>
 32 | <text x="77" y="472" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 33 | 0.0
 34 | </text>
 35 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,472 86,472 "/>
 36 | <text x="77" y="422" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 37 | 20.0
 38 | </text>
 39 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,422 86,422 "/>
 40 | <text x="77" y="371" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 41 | 40.0
 42 | </text>
 43 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,371 86,371 "/>
 44 | <text x="77" y="321" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 45 | 60.0
 46 | </text>
 47 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,321 86,321 "/>
 48 | <text x="77" y="270" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 49 | 80.0
 50 | </text>
 51 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,270 86,270 "/>
 52 | <text x="77" y="220" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 53 | 100.0
 54 | </text>
 55 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,220 86,220 "/>
 56 | <text x="77" y="169" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 57 | 120.0
 58 | </text>
 59 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,169 86,169 "/>
 60 | <text x="77" y="119" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 61 | 140.0
 62 | </text>
 63 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,119 86,119 "/>
 64 | <text x="77" y="68" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 65 | 160.0
 66 | </text>
 67 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,68 86,68 "/>
 68 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 932,473 "/>
 69 | <text x="87" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 70 | 0
 71 | </text>
 72 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 87,478 "/>
 73 | <text x="171" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 74 | 10
 75 | </text>
 76 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="171,473 171,478 "/>
 77 | <text x="256" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 78 | 20
 79 | </text>
 80 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="256,473 256,478 "/>
 81 | <text x="340" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 82 | 30
 83 | </text>
 84 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="340,473 340,478 "/>
 85 | <text x="425" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 86 | 40
 87 | </text>
 88 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="425,473 425,478 "/>
 89 | <text x="509" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 90 | 50
 91 | </text>
 92 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="509,473 509,478 "/>
 93 | <text x="594" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 94 | 60
 95 | </text>
 96 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="594,473 594,478 "/>
 97 | <text x="678" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 98 | 70
 99 | </text>
100 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="678,473 678,478 "/>
101 | <text x="763" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
102 | 80
103 | </text>
104 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="763,473 763,478 "/>
105 | <text x="847" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
106 | 90
107 | </text>
108 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="847,473 847,478 "/>
109 | <text x="932" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
110 | 100
111 | </text>
112 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="932,473 932,478 "/>
113 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="1" points="87,472 932,143 "/>
114 | <polygon opacity="0.25" fill="#E31A1C" points="87,472 932,151 932,134 "/>
115 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="87,472 932,53 "/>
116 | <polygon opacity="0.25" fill="#1F78B4" points="87,472 932,69 932,53 "/>
117 | <text x="132" y="68" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
118 | Base Sample
119 | </text>
120 | <text x="132" y="83" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
121 | New Sample
122 | </text>
123 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="2" points="102,73 122,73 "/>
124 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="102,88 122,88 "/>
125 | </svg>
126 | 
```

--------------------------------------------------------------------------------
/tests/ast/address_payable.json:
--------------------------------------------------------------------------------

```json
1 | {"absolutePath":"a","exportedSymbols":{"C":[39]},"id":40,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":39,"linearizedBaseContracts":[39],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"97682884","id":4,"mutability":"mutable","name":"m","nameLocation":"60:1:1","nodeType":"VariableDeclaration","scope":39,"src":"17:44:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_payable_$","typeString":"mapping(address => address payable)"},"typeName":{"id":3,"keyType":{"id":1,"name":"address","nodeType":"ElementaryTypeName","src":"25:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"17:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_payable_$","typeString":"mapping(address => address payable)"},"valueType":{"id":2,"name":"address","nodeType":"ElementaryTypeName","src":"36:15:1","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},"visibility":"public"},{"body":{"id":37,"nodeType":"Block","src":"134:122:1","statements":[{"assignments":[12],"declarations":[{"constant":false,"id":12,"mutability":"mutable","name":"a","nameLocation":"160:1:1","nodeType":"VariableDeclaration","scope":37,"src":"144:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"144:15:1","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"id":16,"initialValue":{"baseExpression":{"id":13,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4,"src":"164:1:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_payable_$","typeString":"mapping(address => address payable)"}},"id":15,"indexExpression":{"id":14,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"166:3:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"164:6:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"144:26:1"},{"expression":{"id":19,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"180:1:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"184:3:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"180:7:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":20,"nodeType":"ExpressionStatement","src":"180:7:1"},{"assignments":[22],"declarations":[{"constant":false,"id":22,"mutability":"mutable","name":"c","nameLocation":"205:1:1","nodeType":"VariableDeclaration","scope":37,"src":"197:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21,"name":"address","nodeType":"ElementaryTypeName","src":"197:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":27,"initialValue":{"arguments":[{"id":25,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"217:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_C_$39","typeString":"contract C"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_C_$39","typeString":"contract C"}],"id":24,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"209:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"209:7:1","typeDescriptions":{}}},"id":26,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"209:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"197:25:1"},{"expression":{"id":35,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":28,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4,"src":"232:1:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_payable_$","typeString":"mapping(address => address payable)"}},"id":30,"indexExpression":{"id":29,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"234:1:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"232:4:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":33,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"247:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":32,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"239:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":31,"name":"address","nodeType":"ElementaryTypeName","src":"239:8:1","stateMutability":"payable","typeDescriptions":{}}},"id":34,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"239:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"232:17:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":36,"nodeType":"ExpressionStatement","src":"232:17:1"}]},"functionSelector":"fc68521a","id":38,"implemented":true,"kind":"function","modifiers":[],"name":"f","nameLocation":"76:1:1","nodeType":"FunctionDefinition","parameters":{"id":7,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6,"mutability":"mutable","name":"arg","nameLocation":"94:3:1","nodeType":"VariableDeclaration","scope":38,"src":"78:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5,"name":"address","nodeType":"ElementaryTypeName","src":"78:15:1","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"77:21:1"},"returnParameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"mutability":"mutable","name":"r","nameLocation":"131:1:1","nodeType":"VariableDeclaration","scope":38,"src":"115:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":8,"name":"address","nodeType":"ElementaryTypeName","src":"115:15:1","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"114:19:1"},"scope":39,"src":"67:189:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":40,"src":"0:258:1","usedErrors":[]}],"src":"0:259:1"}
2 | 
```

--------------------------------------------------------------------------------
/aderyn_core/src/detect/high/state_variable_shadowing.rs:
--------------------------------------------------------------------------------

```rust
  1 | use std::{
  2 |     collections::{BTreeMap, HashMap},
  3 |     error::Error,
  4 | };
  5 | 
  6 | use crate::ast::{
  7 |     ContractDefinition, Mutability, NodeID, NodeType, UserDefinedTypeNameOrIdentifierPath,
  8 |     VariableDeclaration,
  9 | };
 10 | 
 11 | use crate::{
 12 |     capture,
 13 |     context::{
 14 |         browser::{
 15 |             ExtractPragmaDirectives, ExtractVariableDeclarations, GetClosestAncestorOfTypeX,
 16 |         },
 17 |         workspace::{ASTNode, WorkspaceContext},
 18 |     },
 19 |     detect::{
 20 |         detector::{IssueDetector, IssueDetectorNamePool, IssueSeverity},
 21 |         helpers::pragma_directive_to_semver,
 22 |     },
 23 | };
 24 | use eyre::Result;
 25 | use semver::VersionReq;
 26 | 
 27 | // This detector catches an issue that is only present on contracts that can be compiled
 28 | // with Solidity version < 0.6.0. In Solidity 0.6.0, the `override` keyword was introduced
 29 | // to override state variables from contracts that are inherited and extended.
 30 | 
 31 | // Preprocessing that would make this detector more efficient:
 32 | // 1. Inheritance/Extension Tree
 33 | // 2. Solc version based detector assignment (if solc version < 0.6.0, run this detector on the
 34 | //    workspace context)
 35 | 
 36 | #[derive(Default)]
 37 | pub struct StateVariableShadowingDetector {
 38 |     // Keys are: [0] source file name, [1] line number, [2] character location of node.
 39 |     // Do not add items manually, use `capture!` to add nodes to this BTreeMap.
 40 |     found_instances: BTreeMap<(String, usize, String), NodeID>,
 41 | }
 42 | 
 43 | fn are_duplicate_names_in_inherited_contracts(
 44 |     context: &WorkspaceContext,
 45 |     variable_name: &str, // Use &str directly for comparison efficiency
 46 |     contract_definition: &ContractDefinition, // Use reference to avoid cloning
 47 | ) -> bool {
 48 |     // Check for duplicate variable names in the current contract
 49 |     if ExtractVariableDeclarations::from(contract_definition).extracted.iter().any(|vd| {
 50 |         vd.state_variable
 51 |             && vd.mutability() != Some(&Mutability::Constant)
 52 |             && vd.name == variable_name
 53 |     }) {
 54 |         return true; // Return immediately if a duplicate is found
 55 |     }
 56 | 
 57 |     // Recursively check base contracts
 58 |     for base_contract in &contract_definition.base_contracts {
 59 |         match &base_contract.base_name {
 60 |             UserDefinedTypeNameOrIdentifierPath::UserDefinedTypeName(base_name) => {
 61 |                 if let Some(ASTNode::ContractDefinition(contract)) =
 62 |                     context.nodes.get(&base_name.referenced_declaration)
 63 |                     && are_duplicate_names_in_inherited_contracts(context, variable_name, contract)
 64 |                 {
 65 |                     return true; // Return immediately if a duplicate is found
 66 |                 }
 67 |             }
 68 |             UserDefinedTypeNameOrIdentifierPath::IdentifierPath(identifier_path) => {
 69 |                 if let Some(ASTNode::ContractDefinition(contract)) =
 70 |                     context.nodes.get(&(identifier_path.referenced_declaration))
 71 |                     && are_duplicate_names_in_inherited_contracts(context, variable_name, contract)
 72 |                 {
 73 |                     return true; // Return immediately if a duplicate is found
 74 |                 }
 75 |             }
 76 |         }
 77 |     }
 78 | 
 79 |     false // Return false if no duplicates found
 80 | }
 81 | 
 82 | fn source_unit_can_compile_below_0_6_0(context: &WorkspaceContext, child_node_id: NodeID) -> bool {
 83 |     let source_unit_ast = context.get_closest_ancestor(child_node_id, NodeType::SourceUnit);
 84 | 
 85 |     if let Some(ASTNode::SourceUnit(source_unit)) = source_unit_ast {
 86 |         // Store the extracted directives in a variable to extend its lifetime
 87 |         let extracted_directives = ExtractPragmaDirectives::from(source_unit).extracted;
 88 |         let pragma_directive = extracted_directives.first();
 89 | 
 90 |         if let Some(pragma_directive) = pragma_directive {
 91 |             let version_req = pragma_directive_to_semver(pragma_directive);
 92 |             if let Ok(version_req) = version_req {
 93 |                 return allows_below_0_6_0(&version_req);
 94 |             }
 95 |         }
 96 |     }
 97 |     false
 98 | }
 99 | 
100 | fn allows_below_0_6_0(version_req: &VersionReq) -> bool {
101 |     if version_req.comparators.is_empty() {
102 |         return false; // Return false or handle as needed if there are no comparators
103 |     }
104 | 
105 |     let comparator = &version_req.comparators[0];
106 |     comparator.major == 0 && comparator.minor.is_some_and(|m| m < 6)
107 | }
108 | 
109 | impl IssueDetector for StateVariableShadowingDetector {
110 |     fn detect(&mut self, context: &WorkspaceContext) -> Result<bool, Box<dyn Error>> {
111 |         let mut temp_map: HashMap<String, Vec<&VariableDeclaration>> = context
112 |             .variable_declarations()
113 |             .into_iter()
114 |             .filter(|vd| {
115 |                 vd.state_variable
116 |                     && !vd.constant
117 |                     && source_unit_can_compile_below_0_6_0(context, vd.id)
118 |             })
119 |             .fold(HashMap::new(), |mut acc, var| {
120 |                 acc.entry(var.name.clone()).or_default().push(var);
121 |                 acc
122 |             });
123 | 
124 |         // Filter the map to only include entries with more than one variable
125 |         temp_map.retain(|_, v| v.len() > 1);
126 | 
127 |         for (_, variables) in temp_map {
128 |             for variable in variables {
129 |                 // Recurse up the inheritance tree
130 |                 let contract_ast =
131 |                     variable.closest_ancestor_of_type(context, NodeType::ContractDefinition);
132 |                 if let Some(ASTNode::ContractDefinition(contract)) = contract_ast {
133 |                     for base_contract in &contract.base_contracts {
134 |                         match &base_contract.base_name {
135 |                             UserDefinedTypeNameOrIdentifierPath::UserDefinedTypeName(base_name) => {
136 |                                 if let Some(ASTNode::ContractDefinition(contract)) =
137 |                                     context.nodes.get(&base_name.referenced_declaration)
138 |                                     && are_duplicate_names_in_inherited_contracts(
139 |                                         context,
140 |                                         &variable.name,
141 |                                         contract,
142 |                                     )
143 |                                 {
144 |                                     capture!(self, context, variable);
145 |                                 }
146 |                             }
147 |                             UserDefinedTypeNameOrIdentifierPath::IdentifierPath(
148 |                                 identifier_path,
149 |                             ) => {
150 |                                 if let Some(ASTNode::ContractDefinition(contract)) =
151 |                                     context.nodes.get(&(identifier_path.referenced_declaration))
152 |                                     && are_duplicate_names_in_inherited_contracts(
153 |                                         context,
154 |                                         &variable.name,
155 |                                         contract,
156 |                                     )
157 |                                 {
158 |                                     capture!(self, context, variable);
159 |                                 }
160 |                             }
161 |                         };
162 |                     }
163 |                 }
164 |             }
165 |         }
166 | 
167 |         Ok(!self.found_instances.is_empty())
168 |     }
169 | 
170 |     fn severity(&self) -> IssueSeverity {
171 |         IssueSeverity::High
172 |     }
173 | 
174 |     fn title(&self) -> String {
175 |         String::from("Shadowed State Variable")
176 |     }
177 | 
178 |     fn description(&self) -> String {
179 |         String::from(
180 |             "This vulnerability arises when a derived contract unintentionally shadows a state variable from \
181 |             a parent contract by declaring a variable with the same name. This can be misleading. \
182 |             To prevent this, ensure variable names \
183 |             are unique across the inheritance hierarchy or use proper visibility and scope controls.",
184 |         )
185 |     }
186 | 
187 |     fn instances(&self) -> BTreeMap<(String, usize, String), NodeID> {
188 |         self.found_instances.clone()
189 |     }
190 | 
191 |     fn name(&self) -> String {
192 |         IssueDetectorNamePool::StateVariableShadowing.to_string()
193 |     }
194 | }
195 | 
196 | #[cfg(test)]
197 | mod state_variable_shadowing_detector_tests {
198 | 
199 |     use crate::detect::{detector::IssueDetector, high::StateVariableShadowingDetector};
200 | 
201 |     #[test]
202 | 
203 |     fn test_state_variable_shadowing_detector() {
204 |         let context = crate::detect::test_utils::load_solidity_source_unit(
205 |             "../tests/contract-playground/src/StateShadowing.sol",
206 |         );
207 | 
208 |         let mut detector = StateVariableShadowingDetector::default();
209 |         let found = detector.detect(&context).unwrap();
210 |         assert!(found);
211 |         assert_eq!(detector.instances().len(), 1);
212 |     }
213 | }
214 | 
```

--------------------------------------------------------------------------------
/aderyn_core/src/context/flow/utils.rs:
--------------------------------------------------------------------------------

```rust
  1 | use std::collections::HashSet;
  2 | 
  3 | use super::{ASTNode, Cfg, CfgNode, CfgNodeDescriptor, CfgNodeId, Statement, voids::CfgEndNode};
  4 | use crate::context::workspace::WorkspaceContext;
  5 | 
  6 | impl Cfg {
  7 |     pub fn add_statement_node(&mut self, stmt: &Statement) -> CfgNodeId {
  8 |         match stmt {
  9 |             Statement::TryStatement(n) => self.add_try_statement(n),
 10 |             Statement::UncheckedBlock(n) => self.add_unchecked_block_node(n),
 11 |             Statement::DoWhileStatement(n) => self.add_do_while_statement(n),
 12 |             Statement::ForStatement(n) => self.add_for_statement(n),
 13 |             Statement::EmitStatement(n) => self.add_emit_statement(n),
 14 |             Statement::WhileStatement(n) => self.add_while_statement(n),
 15 |             Statement::IfStatement(n) => self.add_if_statement(n),
 16 |             Statement::PlaceholderStatement(n) => self.add_placeholder_statement(n),
 17 |             Statement::RevertStatement(n) => self.add_revert_statement(n),
 18 |             Statement::Return(n) => self.add_return_statement(n),
 19 |             Statement::InlineAssembly(n) => self.add_inline_assembly_statement(n),
 20 |             Statement::Continue(n) => self.add_continue_statement(n),
 21 |             Statement::Break(n) => self.add_break_statement(n),
 22 |             Statement::Block(n) => self.add_block_node(n),
 23 |             Statement::VariableDeclarationStatement(n) => {
 24 |                 self.add_variable_declaration_statement(n)
 25 |             }
 26 |             Statement::ExpressionStatement(n) => self.add_expression_statement(n),
 27 |         }
 28 |     }
 29 | }
 30 | 
 31 | pub(crate) fn discover_jump_sources(
 32 |     cfg: &Cfg,
 33 |     curr_node: CfgNodeId,
 34 |     visited: &mut HashSet<CfgNodeId>,
 35 |     continue_statements: &mut Vec<CfgNodeId>,
 36 |     break_statements: &mut Vec<CfgNodeId>,
 37 |     return_statements: &mut Vec<CfgNodeId>,
 38 | ) {
 39 |     if visited.contains(&curr_node) {
 40 |         return;
 41 |     }
 42 | 
 43 |     visited.insert(curr_node);
 44 | 
 45 |     let curr_node = cfg.nodes.get(&curr_node).expect("Invalid Cfg Node ID passed in");
 46 | 
 47 |     match &curr_node.nd {
 48 |         CfgNodeDescriptor::Continue(_) => {
 49 |             continue_statements.push(curr_node.id);
 50 |         }
 51 |         CfgNodeDescriptor::Break(_) => {
 52 |             break_statements.push(curr_node.id);
 53 |         }
 54 |         CfgNodeDescriptor::Return(_) => {
 55 |             return_statements.push(curr_node.id);
 56 |         }
 57 |         _ => {}
 58 |     };
 59 | 
 60 |     let children = cfg.raw_successors(curr_node.id);
 61 | 
 62 |     for child in children {
 63 |         discover_jump_sources(
 64 |             cfg,
 65 |             child,
 66 |             visited,
 67 |             continue_statements,
 68 |             break_statements,
 69 |             return_statements,
 70 |         );
 71 |     }
 72 | }
 73 | 
 74 | pub(crate) fn find_jump_dest(
 75 |     cfg: &Cfg,
 76 |     curr_node: CfgNodeId,
 77 |     visited: &mut HashSet<CfgNodeId>,
 78 | ) -> Option<JumpDestination> {
 79 |     if visited.contains(&curr_node) {
 80 |         return None;
 81 |     }
 82 | 
 83 |     visited.insert(curr_node);
 84 | 
 85 |     // Ensure that `curr_node` is continue, break or return. It may work otherwise but that is not
 86 |     // intended behavior
 87 |     let curr_node = cfg.nodes.get(&curr_node).expect("Invalid Cfg Node ID passed in");
 88 | 
 89 |     if let CfgNodeDescriptor::End(end) = &curr_node.nd {
 90 |         match end.as_ref() {
 91 |             CfgEndNode::EndWhileCond => {
 92 |                 return Some(JumpDestination::While(
 93 |                     *cfg.cond_start_pairs.get(&curr_node.id).expect("Unfilled!"),
 94 |                 ));
 95 |             }
 96 |             CfgEndNode::EndDoWhileCond => {
 97 |                 return Some(JumpDestination::DoWhile(
 98 |                     *cfg.cond_start_pairs.get(&curr_node.id).expect("Unfilled!"),
 99 |                 ));
100 |             }
101 |             CfgEndNode::EndForLoopExp => {
102 |                 return Some(JumpDestination::For(
103 |                     *cfg.loop_expr_start.get(&curr_node.id).expect("Unfilled!"),
104 |                 ));
105 |             }
106 |             _ => {}
107 |         };
108 |     }
109 | 
110 |     let children: Vec<CfgNodeId> = match &curr_node.nd {
111 |         CfgNodeDescriptor::Start(_) => {
112 |             vec![*cfg.start_end_pairs.get(&curr_node.id).expect("Unfilled!")]
113 |         }
114 |         _ => cfg.raw_successors(curr_node.id),
115 |     };
116 | 
117 |     for child in children {
118 |         if let Some(jump_dest) = find_jump_dest(cfg, child, visited) {
119 |             return Some(jump_dest);
120 |         }
121 |     }
122 | 
123 |     None
124 | }
125 | 
126 | #[derive(Clone, Copy, Debug, Default)]
127 | pub enum JumpDestination {
128 |     /// If there is no parent loop, i.e the parent loop is outside the scope covered by
129 |     /// `start_node`, then the break and continue statements should flow to the default
130 |     /// site which is the `end_node`
131 |     #[default]
132 |     DefaultSite,
133 | 
134 |     For(CfgNodeId),
135 |     DoWhile(CfgNodeId),
136 |     While(CfgNodeId),
137 | }
138 | 
139 | pub enum Calibration {
140 |     ContinueShouldFlowTo(CfgNodeId, JumpDestination),
141 |     BreakShouldFlowTo(CfgNodeId, JumpDestination),
142 |     ReturnShouldFlowToEndNode(CfgNodeId),
143 | }
144 | 
145 | impl Cfg {
146 |     pub(crate) fn calibrate(
147 |         &mut self,
148 |         proposed_calibrations: Vec<Calibration>,
149 |         end_node: CfgNodeId,
150 |     ) {
151 |         for proposed_calibration in proposed_calibrations {
152 |             let (target, calibrated_dest) = match proposed_calibration {
153 |                 Calibration::ContinueShouldFlowTo(c, JumpDestination::For(for_node)) => {
154 |                     (c, self.find_loop_expression_node(for_node))
155 |                 }
156 |                 Calibration::ContinueShouldFlowTo(c, JumpDestination::While(while_node)) => {
157 |                     (c, self.find_condition_node(while_node))
158 |                 }
159 |                 Calibration::ContinueShouldFlowTo(c, JumpDestination::DoWhile(do_while_node)) => {
160 |                     (c, self.find_condition_node(do_while_node))
161 |                 }
162 |                 Calibration::ContinueShouldFlowTo(c, JumpDestination::DefaultSite) => (c, end_node),
163 |                 Calibration::BreakShouldFlowTo(b, JumpDestination::For(for_node)) => {
164 |                     (b, self.find_ending_counter_part(for_node))
165 |                 }
166 |                 Calibration::BreakShouldFlowTo(b, JumpDestination::While(while_node)) => {
167 |                     (b, self.find_ending_counter_part(while_node))
168 |                 }
169 |                 Calibration::BreakShouldFlowTo(b, JumpDestination::DoWhile(do_while_node)) => {
170 |                     (b, self.find_ending_counter_part(do_while_node))
171 |                 }
172 |                 Calibration::BreakShouldFlowTo(b, JumpDestination::DefaultSite) => (b, end_node),
173 |                 Calibration::ReturnShouldFlowToEndNode(r) => (r, end_node),
174 |             };
175 |             self.reset_raw_successors(target, calibrated_dest);
176 |         }
177 |     }
178 | }
179 | 
180 | impl CfgNodeDescriptor {
181 |     pub fn reflect<'a>(&self, context: &'a WorkspaceContext) -> Option<&'a ASTNode> {
182 |         let ast_node_id = match self {
183 |             CfgNodeDescriptor::Start(_) => None,
184 |             CfgNodeDescriptor::End(_) => None,
185 |             CfgNodeDescriptor::VariableDeclarationStatement(n) => {
186 |                 Some(n.variable_declaration_statement)
187 |             }
188 |             CfgNodeDescriptor::ExpressionStatement(n) => Some(n.expression_statement),
189 |             CfgNodeDescriptor::PlaceholderStatement(n) => Some(n.placeholder_statement),
190 |             CfgNodeDescriptor::Break(n) => Some(n.break_statement),
191 |             CfgNodeDescriptor::Continue(n) => Some(n.continue_statement),
192 |             CfgNodeDescriptor::Return(n) => Some(n.return_statement),
193 |             CfgNodeDescriptor::EmitStatement(n) => Some(n.emit_statement),
194 |             CfgNodeDescriptor::RevertStatement(n) => Some(n.revert_statement),
195 |             CfgNodeDescriptor::InlineAssembly(n) => Some(n.inline_assembly_statement),
196 |             CfgNodeDescriptor::IfStatementCondition(n) => n.if_stmt_condition,
197 |             CfgNodeDescriptor::WhileStatementCondition(n) => n.while_stmt_condition,
198 |             CfgNodeDescriptor::ForStatementCondition(n) => n.for_stmt_condition,
199 |             CfgNodeDescriptor::DoWhileStatementCondition(n) => n.do_while_stmt_condition,
200 |             CfgNodeDescriptor::Block(n) => Some(n.block),
201 |             CfgNodeDescriptor::UncheckedBlock(n) => Some(n.unchecked_block),
202 |             CfgNodeDescriptor::IfStatement(n) => Some(n.if_statement),
203 |             CfgNodeDescriptor::WhileStatement(n) => Some(n.while_statement),
204 |             CfgNodeDescriptor::ForStatement(n) => Some(n.for_statement),
205 |             CfgNodeDescriptor::DoWhileStatement(n) => Some(n.do_while_statement),
206 |             CfgNodeDescriptor::TryStatement(n) => Some(n.try_statement),
207 |         };
208 |         context.nodes.get(&ast_node_id?)
209 |     }
210 | }
211 | 
212 | impl CfgNode {
213 |     pub fn reflect<'a>(&self, context: &'a WorkspaceContext) -> Option<&'a ASTNode> {
214 |         self.nd.reflect(context)
215 |     }
216 | }
217 | 
```

--------------------------------------------------------------------------------
/benchmarks/ecrecover/report/pdf_small.svg:
--------------------------------------------------------------------------------

```
 1 | <svg width="450" height="300" viewBox="0 0 450 300" xmlns="http://www.w3.org/2000/svg">
 2 | <text x="15" y="130" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 15, 130)">
 3 | Density (a.u.)
 4 | </text>
 5 | <text x="255" y="285" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
 6 | Average Time (µs)
 7 | </text>
 8 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="74,15 74,244 "/>
 9 | <text x="65" y="244" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
10 | 0
11 | </text>
12 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,244 74,244 "/>
13 | <text x="65" y="223" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
14 | 0.1
15 | </text>
16 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,223 74,223 "/>
17 | <text x="65" y="202" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
18 | 0.2
19 | </text>
20 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,202 74,202 "/>
21 | <text x="65" y="180" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
22 | 0.3
23 | </text>
24 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,180 74,180 "/>
25 | <text x="65" y="159" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
26 | 0.4
27 | </text>
28 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,159 74,159 "/>
29 | <text x="65" y="138" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
30 | 0.5
31 | </text>
32 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,138 74,138 "/>
33 | <text x="65" y="116" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
34 | 0.6
35 | </text>
36 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,116 74,116 "/>
37 | <text x="65" y="95" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
38 | 0.7
39 | </text>
40 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,95 74,95 "/>
41 | <text x="65" y="73" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
42 | 0.8
43 | </text>
44 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,73 74,73 "/>
45 | <text x="65" y="52" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
46 | 0.9
47 | </text>
48 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,52 74,52 "/>
49 | <text x="65" y="31" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
50 | 1
51 | </text>
52 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,31 74,31 "/>
53 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="75,245 434,245 "/>
54 | <text x="89" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
55 | 4
56 | </text>
57 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="89,245 89,250 "/>
58 | <text x="165" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
59 | 6
60 | </text>
61 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="165,245 165,250 "/>
62 | <text x="242" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
63 | 8
64 | </text>
65 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="242,245 242,250 "/>
66 | <text x="319" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
67 | 10
68 | </text>
69 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="319,245 319,250 "/>
70 | <text x="396" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
71 | 12
72 | </text>
73 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="396,245 396,250 "/>
74 | <polygon opacity="0.25" fill="#1F78B4" points="75,244 75,244 76,244 77,244 77,244 78,244 79,244 80,244 80,244 81,243 82,243 82,243 83,243 84,243 85,242 85,242 86,241 87,241 87,240 88,240 89,239 90,238 90,237 91,237 92,235 92,234 93,233 94,231 95,230 95,228 96,226 97,224 98,222 98,219 99,216 100,213 100,210 101,207 102,203 103,200 103,195 104,191 105,187 105,182 106,177 107,172 108,167 108,161 109,156 110,150 110,144 111,138 112,132 113,126 113,119 114,113 115,107 116,101 116,95 117,89 118,83 118,78 119,73 120,68 121,63 121,58 122,54 123,51 123,47 124,44 125,42 126,40 126,38 127,37 128,36 128,36 129,37 130,37 131,39 131,40 132,42 133,45 133,48 134,51 135,55 136,59 136,63 137,68 138,73 139,78 139,83 140,88 141,94 141,99 142,105 143,111 144,116 144,122 145,128 146,133 146,139 147,144 148,150 149,155 149,160 150,165 151,170 151,174 152,178 153,183 154,187 154,190 155,194 156,198 157,201 157,204 158,207 159,209 159,212 160,214 161,217 162,219 162,221 163,222 164,224 164,226 165,227 166,228 167,230 167,231 168,232 169,233 169,234 170,234 171,235 172,236 172,236 173,237 174,237 175,238 175,238 176,239 177,239 177,240 178,240 179,240 180,240 180,241 181,241 182,241 182,241 183,242 184,242 185,242 185,242 186,242 187,243 187,243 188,243 189,243 190,243 190,243 191,243 192,243 192,243 193,244 194,244 195,244 195,244 196,244 197,244 198,244 198,244 199,244 200,244 200,244 201,244 202,244 203,244 203,244 204,244 205,244 205,244 206,244 207,244 208,244 208,244 209,244 210,244 210,244 211,244 212,244 213,244 213,244 214,244 215,244 216,244 216,244 217,244 218,244 218,244 219,244 220,244 221,244 221,244 222,244 223,244 223,244 224,244 225,244 226,244 226,244 227,244 228,244 228,244 229,244 230,244 231,244 231,244 232,244 233,244 233,244 234,244 235,244 236,244 236,244 237,244 238,244 239,244 239,244 240,244 241,244 241,244 242,244 243,244 244,244 244,244 245,244 246,244 246,244 247,244 248,243 249,243 249,243 250,243 251,243 251,243 252,243 253,243 254,243 254,243 255,243 256,243 257,242 257,242 258,242 259,242 259,242 260,242 261,242 262,242 262,242 263,242 264,242 264,242 265,242 266,242 267,242 267,242 268,242 269,242 269,242 270,242 271,242 272,242 272,242 273,242 274,242 275,243 275,243 276,243 277,243 277,243 278,243 279,243 280,243 280,243 281,243 282,243 282,243 283,244 284,244 285,244 285,244 286,244 287,244 287,244 288,244 289,244 290,244 290,244 291,244 292,244 292,244 293,244 294,244 295,244 295,244 296,244 297,244 298,244 298,244 299,244 300,244 300,244 301,244 302,244 303,244 303,244 304,244 305,244 305,244 306,244 307,244 308,244 308,244 309,244 310,244 310,244 311,244 312,244 313,244 313,244 314,244 315,244 316,244 316,244 317,244 318,244 318,244 319,244 320,244 321,244 321,244 322,244 323,244 323,244 324,244 325,244 326,244 326,244 327,244 328,244 328,244 329,244 330,244 331,244 331,244 332,244 333,244 333,244 334,244 335,244 336,244 336,244 337,244 338,244 339,244 339,244 340,244 341,244 341,244 342,244 343,244 344,244 344,244 345,244 346,244 346,244 347,244 348,244 349,244 349,244 350,244 351,244 351,244 352,244 353,244 354,244 354,244 355,244 356,244 357,244 357,244 358,244 359,244 359,244 360,244 361,244 362,244 362,244 363,244 364,244 364,244 365,244 366,244 367,244 367,244 368,244 369,244 369,244 370,244 371,244 372,244 372,244 373,244 374,244 375,244 375,244 376,244 377,243 377,243 378,243 379,243 380,243 380,243 381,243 382,243 382,243 383,243 384,243 385,243 385,243 386,242 387,242 387,242 388,242 389,242 390,242 390,242 391,242 392,242 392,242 393,242 394,242 395,242 395,242 396,242 397,242 398,242 398,242 399,242 400,242 400,242 401,242 402,242 403,242 403,243 404,243 405,243 405,243 406,243 407,243 408,243 408,243 409,243 410,243 410,243 411,243 412,243 413,244 413,244 414,244 415,244 416,244 416,244 417,244 418,244 418,244 419,244 420,244 421,244 421,244 422,244 423,244 423,244 424,244 425,244 426,244 426,244 427,244 428,244 428,244 429,244 430,244 431,244 431,244 432,244 433,244 434,244 434,244 75,244 "/>
75 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="134,244 134,49 "/>
76 | </svg>
77 | 
```
Page 19/103FirstPrevNextLast