This is page 28 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/useless-modifier/report/relative_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="212" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
10 | 0.05
11 | </text>
12 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,212 74,212 "/>
13 | <text x="65" y="180" 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,180 74,180 "/>
17 | <text x="65" y="148" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
18 | 0.15
19 | </text>
20 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,148 74,148 "/>
21 | <text x="65" y="116" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
22 | 0.2
23 | </text>
24 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,116 74,116 "/>
25 | <text x="65" y="83" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
26 | 0.25
27 | </text>
28 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,83 74,83 "/>
29 | <text x="65" y="51" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
30 | 0.3
31 | </text>
32 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,51 74,51 "/>
33 | <text x="65" y="19" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
34 | 0.35
35 | </text>
36 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,19 74,19 "/>
37 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="75,245 434,245 "/>
38 | <text x="92" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
39 | 20
40 | </text>
41 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="92,245 92,250 "/>
42 | <text x="219" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
43 | 40
44 | </text>
45 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="219,245 219,250 "/>
46 | <text x="346" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
47 | 60
48 | </text>
49 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="346,245 346,250 "/>
50 | <polygon opacity="0.5" fill="#E31A1C" 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,243 87,243 87,243 88,243 89,243 90,243 90,243 91,242 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,239 101,238 102,238 103,237 103,237 104,236 105,235 105,235 106,234 107,234 108,233 108,232 109,231 110,231 110,230 111,229 112,228 113,227 113,226 114,225 115,224 116,223 116,222 117,221 118,220 118,219 119,218 120,217 121,215 121,214 122,213 123,212 123,211 124,209 125,208 126,207 126,206 127,205 128,203 128,202 129,201 130,200 131,199 131,198 132,196 133,195 133,194 134,193 135,192 136,192 136,191 137,190 138,189 139,188 139,188 140,187 141,186 141,186 142,185 143,185 144,185 144,184 145,184 146,184 146,184 147,184 148,184 149,184 149,184 150,184 151,185 151,185 152,185 153,186 154,186 154,187 155,187 156,188 157,189 157,189 158,190 159,191 159,192 160,193 161,194 162,195 162,195 163,196 164,197 164,198 165,199 166,200 167,201 167,202 168,203 169,205 169,206 170,207 171,208 172,209 172,210 173,211 174,212 175,213 175,214 176,215 177,215 177,216 178,217 179,218 180,219 180,220 181,221 182,221 182,222 183,223 184,224 185,224 185,225 186,226 187,226 187,227 188,228 189,228 190,229 190,229 191,230 192,230 192,231 193,231 194,232 195,232 195,233 196,233 197,233 198,234 198,234 199,234 200,235 200,235 201,235 202,235 203,236 203,236 204,236 205,236 205,237 206,237 207,237 208,237 208,237 209,237 210,238 210,238 211,238 212,238 213,238 213,238 214,238 215,239 216,239 216,239 217,239 218,239 218,239 219,239 220,239 221,239 221,239 222,239 223,239 223,240 224,240 225,240 226,240 226,240 227,240 228,240 228,240 229,240 230,240 231,240 231,240 232,240 233,240 233,240 234,240 235,241 236,241 236,241 237,241 238,241 239,241 239,241 240,241 241,241 241,241 242,241 243,241 244,241 244,241 245,241 246,241 246,241 247,241 248,241 249,242 249,242 250,242 251,242 251,242 252,242 253,242 254,242 254,242 255,242 256,242 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,242 275,242 276,242 277,242 277,242 278,242 279,242 280,242 280,242 281,242 282,242 282,242 283,242 284,242 285,242 285,242 286,242 287,242 287,242 288,242 289,242 290,242 290,241 291,241 292,241 292,241 293,241 294,241 295,241 295,241 296,241 297,241 298,241 298,241 299,241 300,241 300,241 301,241 302,241 303,241 303,241 304,241 305,241 305,241 306,241 307,241 308,241 308,241 309,241 310,241 310,241 311,241 312,241 313,241 313,241 314,241 315,241 316,241 316,241 317,241 318,241 318,241 319,241 320,241 321,241 321,241 322,241 323,241 323,241 324,241 325,241 326,241 326,241 327,241 328,241 328,241 329,241 330,241 331,242 331,242 332,242 333,242 333,242 334,242 335,242 336,242 336,242 337,242 338,242 339,242 339,242 340,242 341,242 341,242 342,242 343,242 344,242 344,242 345,242 346,242 346,242 347,242 348,243 349,243 349,243 350,243 351,243 351,243 352,243 353,243 354,243 354,243 355,243 356,243 357,243 357,243 358,243 359,243 359,243 360,243 361,243 362,243 362,243 363,243 364,243 364,243 365,243 366,243 367,243 367,243 368,243 369,243 369,243 370,243 371,243 372,243 372,243 373,243 374,243 375,244 375,244 376,244 377,244 377,244 378,244 379,244 380,244 380,244 381,244 382,244 382,244 383,244 384,244 385,244 385,244 386,244 387,244 387,244 388,244 389,244 390,244 390,244 391,244 392,244 392,244 393,244 394,244 395,244 395,244 396,244 397,244 398,244 398,244 399,244 400,244 400,244 401,244 402,244 403,244 403,244 404,244 405,244 405,244 406,244 407,244 408,244 408,244 409,244 410,244 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 "/>
51 | <polygon opacity="0.5" fill="#1F78B4" points="104,244 104,244 104,244 104,244 104,244 105,244 105,244 105,244 105,244 105,244 105,243 106,243 106,243 106,243 106,243 106,242 106,242 107,242 107,242 107,241 107,241 107,240 108,240 108,239 108,239 108,238 108,237 108,236 109,235 109,235 109,233 109,232 109,231 109,230 110,229 110,227 110,226 110,224 110,222 110,220 111,218 111,216 111,214 111,212 111,209 111,207 112,204 112,202 112,199 112,196 112,193 112,190 113,187 113,184 113,180 113,177 113,174 113,170 114,167 114,163 114,159 114,156 114,152 114,148 115,145 115,141 115,137 115,134 115,130 115,126 116,123 116,119 116,116 116,112 116,109 116,106 117,103 117,100 117,97 117,94 117,91 117,88 118,85 118,83 118,80 118,78 118,76 118,74 119,72 119,70 119,68 119,66 119,64 119,62 120,61 120,59 120,58 120,56 120,55 120,53 121,52 121,51 121,49 121,48 121,47 121,45 122,44 122,43 122,41 122,40 122,39 122,37 123,36 123,35 123,33 123,32 123,31 123,29 124,28 124,27 124,26 124,25 124,23 124,22 125,21 125,20 125,19 125,18 125,18 125,17 126,17 126,16 126,16 126,16 126,15 126,16 127,16 127,16 127,17 127,17 127,18 127,19 128,21 128,22 128,24 128,25 128,27 128,30 129,32 129,35 129,37 129,40 129,43 129,47 130,50 130,54 130,58 130,62 130,66 130,70 131,75 131,79 131,84 131,88 131,93 131,98 132,102 132,107 132,112 132,117 132,122 132,126 133,131 133,136 133,140 133,145 133,149 133,153 134,158 134,162 134,166 134,169 134,173 134,177 135,180 135,183 135,186 135,189 135,192 135,195 136,197 136,199 136,202 136,204 136,206 136,208 137,209 137,211 137,213 137,214 137,215 138,217 138,218 138,219 138,220 138,221 138,222 139,223 139,223 139,224 139,225 139,226 139,226 140,227 140,227 140,228 140,228 140,229 140,229 141,230 141,230 141,231 141,231 141,231 141,232 142,232 142,233 142,233 142,233 142,234 142,234 143,235 143,235 143,235 143,236 143,236 143,236 144,237 144,237 144,237 144,238 144,238 144,238 145,239 145,239 145,239 145,240 145,240 145,240 146,240 146,241 146,241 146,241 146,241 146,242 147,242 147,242 147,242 147,242 147,243 147,243 148,243 148,243 148,243 148,243 148,243 148,243 149,244 149,244 149,244 149,244 149,244 149,244 150,244 150,244 150,244 150,244 150,244 150,244 151,244 151,244 151,244 151,244 151,244 151,244 152,244 152,244 152,244 152,244 152,244 152,244 153,244 153,244 153,244 153,244 153,244 153,244 154,244 154,244 154,244 154,244 154,244 154,244 155,244 155,244 155,244 155,244 155,244 155,244 156,244 156,244 156,244 156,244 156,244 156,244 157,244 157,244 157,244 157,244 157,244 157,244 158,244 158,244 158,244 158,244 158,244 158,244 159,244 159,244 159,244 159,244 159,244 159,244 160,244 160,244 160,244 160,244 160,244 160,244 161,244 161,244 161,244 161,244 161,244 161,244 162,244 162,244 162,244 162,244 162,244 162,244 163,244 163,244 163,244 163,244 163,244 163,244 164,244 164,244 164,244 164,244 164,244 164,244 165,244 165,244 165,244 165,244 165,244 165,244 166,244 166,244 166,244 166,244 166,244 166,244 167,244 167,244 167,244 167,244 167,244 168,244 168,244 168,244 168,244 168,244 168,244 169,244 169,244 169,244 169,244 169,244 169,244 170,244 170,244 170,244 170,244 170,244 170,244 171,244 171,244 171,244 171,244 171,244 171,244 172,244 172,243 172,243 172,243 172,243 172,243 173,243 173,243 173,243 173,242 173,242 173,242 174,242 174,242 174,242 174,242 174,241 174,241 175,241 175,241 175,241 175,241 175,241 175,240 176,240 176,240 176,240 176,240 176,240 176,240 177,240 177,240 177,240 177,240 177,240 177,240 178,240 178,240 178,240 178,240 178,240 178,240 179,240 179,240 179,240 179,240 179,240 179,240 180,240 180,241 180,241 180,241 180,241 180,241 181,241 181,241 181,242 181,242 181,242 181,242 182,242 182,242 182,242 182,243 182,243 182,243 183,243 183,243 183,243 183,243 183,243 183,244 184,244 184,244 184,244 184,244 184,244 184,244 185,244 185,244 185,244 185,244 185,244 185,244 186,244 186,244 186,244 186,244 186,244 186,244 187,244 187,244 187,244 187,244 187,244 187,244 187,244 104,244 "/>
52 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="2" points="167,244 167,202 "/>
53 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="125,244 125,19 "/>
54 | </svg>
55 |
```
--------------------------------------------------------------------------------
/benchmarks/useless-internal-function/report/relative_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="205" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
10 | 0.05
11 | </text>
12 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,205 74,205 "/>
13 | <text x="65" y="165" 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,165 74,165 "/>
17 | <text x="65" y="125" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
18 | 0.15
19 | </text>
20 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,125 74,125 "/>
21 | <text x="65" y="85" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
22 | 0.2
23 | </text>
24 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,85 74,85 "/>
25 | <text x="65" y="45" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
26 | 0.25
27 | </text>
28 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,45 74,45 "/>
29 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="75,245 434,245 "/>
30 | <text x="135" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
31 | 15
32 | </text>
33 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="135,245 135,250 "/>
34 | <text x="197" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
35 | 20
36 | </text>
37 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="197,245 197,250 "/>
38 | <text x="259" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
39 | 25
40 | </text>
41 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="259,245 259,250 "/>
42 | <text x="320" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
43 | 30
44 | </text>
45 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="320,245 320,250 "/>
46 | <text x="382" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
47 | 35
48 | </text>
49 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="382,245 382,250 "/>
50 | <polygon opacity="0.5" fill="#E31A1C" points="75,244 75,244 76,244 77,244 77,244 78,244 79,244 80,244 80,243 81,243 82,243 82,243 83,243 84,242 85,242 85,242 86,242 87,241 87,241 88,240 89,240 90,240 90,239 91,238 92,238 92,237 93,236 94,236 95,235 95,234 96,233 97,232 98,231 98,229 99,228 100,227 100,225 101,224 102,222 103,220 103,218 104,217 105,214 105,212 106,210 107,208 108,205 108,203 109,200 110,197 110,194 111,191 112,188 113,185 113,182 114,179 115,175 116,172 116,168 117,165 118,161 118,157 119,154 120,150 121,146 121,142 122,138 123,135 123,131 124,127 125,123 126,120 126,116 127,113 128,109 128,106 129,103 130,100 131,97 131,94 132,91 133,89 133,86 134,84 135,82 136,80 136,79 137,77 138,76 139,75 139,74 140,73 141,73 141,73 142,73 143,73 144,73 144,74 145,75 146,76 146,77 147,79 148,81 149,83 149,85 150,87 151,89 151,92 152,94 153,97 154,100 154,103 155,106 156,110 157,113 157,116 158,120 159,123 159,127 160,130 161,134 162,137 162,141 163,145 164,148 164,152 165,155 166,158 167,162 167,165 168,168 169,172 169,175 170,178 171,181 172,183 172,186 173,189 174,191 175,194 175,196 176,198 177,200 177,203 178,204 179,206 180,208 180,210 181,211 182,213 182,214 183,216 184,217 185,218 185,219 186,220 187,221 187,222 188,223 189,223 190,224 190,225 191,225 192,226 192,226 193,227 194,227 195,228 195,228 196,228 197,229 198,229 198,229 199,230 200,230 200,230 201,230 202,231 203,231 203,231 204,231 205,231 205,231 206,232 207,232 208,232 208,232 209,232 210,233 210,233 211,233 212,233 213,233 213,233 214,234 215,234 216,234 216,234 217,234 218,234 218,235 219,235 220,235 221,235 221,235 222,236 223,236 223,236 224,236 225,236 226,236 226,236 227,237 228,237 228,237 229,237 230,237 231,237 231,237 232,237 233,237 233,238 234,238 235,238 236,238 236,238 237,238 238,238 239,238 239,238 240,238 241,238 241,238 242,238 243,238 244,238 244,238 245,238 246,238 246,238 247,238 248,238 249,238 249,238 250,238 251,238 251,238 252,238 253,238 254,237 254,237 255,237 256,237 257,237 257,237 258,237 259,237 259,237 260,237 261,237 262,237 262,237 263,237 264,237 264,237 265,237 266,237 267,237 267,237 268,238 269,238 269,238 270,238 271,238 272,238 272,238 273,238 274,238 275,238 275,238 276,238 277,238 277,239 278,239 279,239 280,239 280,239 281,239 282,239 282,239 283,239 284,240 285,240 285,240 286,240 287,240 287,240 288,240 289,240 290,240 290,241 291,241 292,241 292,241 293,241 294,241 295,241 295,241 296,241 297,241 298,241 298,242 299,242 300,242 300,242 301,242 302,242 303,242 303,242 304,242 305,242 305,242 306,242 307,242 308,242 308,242 309,242 310,242 310,242 311,242 312,242 313,242 313,242 314,242 315,242 316,242 316,242 317,242 318,242 318,242 319,242 320,242 321,242 321,242 322,242 323,242 323,242 324,242 325,242 326,242 326,242 327,242 328,242 328,243 329,243 330,243 331,243 331,243 332,243 333,243 333,243 334,243 335,243 336,243 336,243 337,243 338,243 339,243 339,243 340,243 341,243 341,243 342,243 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,243 359,243 360,243 361,243 362,243 362,243 363,243 364,243 364,243 365,243 366,243 367,243 367,243 368,243 369,243 369,243 370,243 371,243 372,243 372,243 373,243 374,242 375,242 375,242 376,242 377,242 377,242 378,242 379,242 380,242 380,242 381,242 382,242 382,242 383,242 384,242 385,242 385,242 386,242 387,242 387,242 388,242 389,242 390,242 390,242 391,243 392,243 392,243 393,243 394,243 395,243 395,243 396,243 397,243 398,243 398,243 399,243 400,243 400,243 401,243 402,243 403,243 403,243 404,244 405,244 405,244 406,244 407,244 408,244 408,244 409,244 410,244 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 "/>
51 | <polygon opacity="0.5" fill="#1F78B4" points="95,244 96,244 96,244 97,244 97,244 98,244 99,244 99,244 100,243 100,243 101,243 102,243 102,243 103,242 103,242 104,242 105,242 105,241 106,241 106,240 107,240 108,239 108,238 109,238 109,237 110,236 111,235 111,234 112,233 112,232 113,230 114,229 114,227 115,226 115,224 116,222 117,220 117,217 118,215 118,212 119,210 120,207 120,204 121,201 121,197 122,194 123,190 123,186 124,182 124,177 125,173 126,168 126,164 127,159 127,154 128,148 129,143 129,138 130,132 130,127 131,121 131,115 132,110 133,104 133,98 134,93 134,87 135,81 136,76 136,71 137,65 137,60 138,55 139,51 139,46 140,42 140,38 141,34 142,31 142,28 143,25 143,23 144,21 145,19 145,18 146,16 146,16 147,15 148,16 148,16 149,17 149,18 150,19 151,21 151,23 152,25 152,28 153,31 154,34 154,38 155,41 155,45 156,49 157,54 157,58 158,63 158,67 159,72 160,77 160,82 161,86 161,91 162,96 163,101 163,106 164,111 164,116 165,120 166,125 166,129 167,134 167,138 168,142 168,147 169,151 170,154 170,158 171,162 171,165 172,169 173,172 173,175 174,178 174,181 175,184 176,186 176,189 177,191 177,193 178,195 179,198 179,200 180,201 180,203 181,205 182,206 182,208 183,209 183,211 184,212 185,213 185,215 186,216 186,217 187,218 188,219 188,220 189,221 189,221 190,222 191,223 191,224 192,224 192,225 193,226 194,226 194,227 195,227 195,228 196,229 197,229 197,230 198,230 198,230 199,231 200,231 200,232 201,232 201,232 202,233 203,233 203,234 204,234 204,234 205,235 205,235 206,235 207,235 207,236 208,236 208,236 209,237 210,237 210,237 211,237 211,238 212,238 213,238 213,238 214,238 214,239 215,239 216,239 216,239 217,239 217,239 218,239 219,239 219,240 220,240 220,240 221,240 222,240 222,240 223,240 223,240 224,240 225,240 225,240 226,240 226,240 227,240 228,240 228,240 229,239 229,239 230,239 231,239 231,239 232,239 232,239 233,239 234,239 234,239 235,239 235,238 236,238 237,238 237,238 238,238 238,238 239,238 240,238 240,238 241,238 241,237 242,237 242,237 243,237 244,237 244,237 245,237 245,237 246,237 247,237 247,237 248,237 248,237 249,237 250,237 250,237 251,237 251,237 252,237 253,237 253,237 254,237 254,237 255,237 256,237 256,237 257,237 257,237 258,237 259,237 259,237 260,238 260,238 261,238 262,238 262,238 263,238 263,238 264,238 265,238 265,238 266,239 266,239 267,239 268,239 268,239 269,239 269,239 270,239 271,239 271,240 272,240 272,240 273,240 274,240 274,240 275,240 275,240 276,240 277,241 277,241 278,241 278,241 279,241 279,241 280,241 281,241 281,242 282,242 282,242 283,242 284,242 284,242 285,242 285,242 286,242 287,243 287,243 288,243 288,243 289,243 290,243 290,243 291,243 291,243 292,243 293,243 293,244 294,244 294,244 295,244 296,244 296,244 297,244 297,244 298,244 299,244 299,244 300,244 300,244 301,244 302,244 302,244 303,244 303,244 304,244 305,244 305,244 306,244 306,244 307,244 308,244 308,244 309,244 309,244 310,244 311,244 311,244 312,244 312,244 313,244 314,244 314,244 315,244 315,244 316,244 316,244 317,244 318,244 318,244 319,244 319,244 320,244 321,244 321,244 322,244 322,244 323,244 324,244 324,244 325,244 325,244 326,244 327,244 327,244 328,244 328,244 329,244 330,244 330,244 331,244 331,244 332,244 333,244 333,244 334,244 334,244 335,243 336,243 336,243 337,243 337,243 338,243 339,243 339,243 340,243 340,243 341,243 342,243 342,242 343,242 343,242 344,242 345,242 345,242 346,242 346,242 347,242 348,242 348,242 349,242 349,242 350,242 351,242 351,242 352,242 352,242 353,242 353,242 354,242 355,242 355,242 356,242 356,242 357,242 358,242 358,242 359,242 359,242 360,242 361,242 361,242 362,242 362,242 363,242 364,242 364,242 365,242 365,243 366,243 367,243 367,243 368,243 368,243 369,243 370,243 370,243 371,243 371,243 372,243 373,243 373,244 374,244 374,244 375,244 376,244 376,244 377,244 377,244 378,244 379,244 379,244 380,244 380,244 381,244 382,244 382,244 383,244 383,244 384,244 385,244 385,244 386,244 386,244 387,244 388,244 388,244 389,244 389,244 390,244 390,244 391,244 392,244 392,244 393,244 393,244 95,244 "/>
52 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="2" points="155,245 155,105 "/>
53 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="157,245 157,58 "/>
54 | </svg>
55 |
```
--------------------------------------------------------------------------------
/benchmarks/deprecated-oz-functions/report/relative_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="206" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
10 | 0.005
11 | </text>
12 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,206 74,206 "/>
13 | <text x="65" y="167" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
14 | 0.01
15 | </text>
16 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,167 74,167 "/>
17 | <text x="65" y="128" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
18 | 0.015
19 | </text>
20 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,128 74,128 "/>
21 | <text x="65" y="89" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
22 | 0.02
23 | </text>
24 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,89 74,89 "/>
25 | <text x="65" y="51" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
26 | 0.025
27 | </text>
28 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,51 74,51 "/>
29 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="75,245 434,245 "/>
30 | <text x="89" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
31 | 200
32 | </text>
33 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="89,245 89,250 "/>
34 | <text x="160" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
35 | 300
36 | </text>
37 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="160,245 160,250 "/>
38 | <text x="231" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
39 | 400
40 | </text>
41 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="231,245 231,250 "/>
42 | <text x="303" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
43 | 500
44 | </text>
45 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="303,245 303,250 "/>
46 | <text x="374" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
47 | 600
48 | </text>
49 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="374,245 374,250 "/>
50 | <polygon opacity="0.5" fill="#E31A1C" points="95,244 95,244 95,244 96,244 96,243 96,243 97,243 97,243 97,243 98,242 98,242 98,242 98,241 99,241 99,241 99,240 100,240 100,239 100,238 100,238 101,237 101,236 101,235 102,234 102,233 102,231 103,230 103,229 103,227 103,225 104,224 104,222 104,220 105,217 105,215 105,212 106,210 106,207 106,204 106,201 107,197 107,194 107,190 108,186 108,182 108,178 109,174 109,169 109,165 109,160 110,155 110,150 110,145 111,140 111,134 111,129 112,124 112,118 112,113 112,107 113,101 113,96 113,91 114,85 114,80 114,75 114,69 115,65 115,60 115,55 116,51 116,46 116,42 117,39 117,35 117,32 117,29 118,26 118,24 118,22 119,20 119,18 119,17 120,16 120,16 120,15 120,16 121,16 121,17 121,18 122,19 122,21 122,23 123,25 123,27 123,30 123,32 124,35 124,39 124,42 125,45 125,49 125,53 126,57 126,61 126,65 126,69 127,73 127,77 127,81 128,86 128,90 128,94 128,98 129,102 129,106 129,110 130,114 130,118 130,122 131,126 131,129 131,133 131,136 132,140 132,143 132,146 133,149 133,152 133,155 134,158 134,160 134,163 134,165 135,167 135,170 135,172 136,174 136,176 136,177 137,179 137,181 137,182 137,184 138,185 138,187 138,188 139,189 139,191 139,192 140,193 140,194 140,195 140,196 141,197 141,198 141,199 142,200 142,201 142,202 142,203 143,204 143,205 143,205 144,206 144,207 144,208 145,209 145,210 145,210 145,211 146,212 146,213 146,214 147,214 147,215 147,216 148,217 148,217 148,218 148,219 149,220 149,220 149,221 150,222 150,223 150,223 151,224 151,225 151,225 151,226 152,227 152,227 152,228 153,228 153,229 153,229 154,230 154,230 154,231 154,231 155,232 155,232 155,233 156,233 156,233 156,234 156,234 157,234 157,235 157,235 158,235 158,235 158,236 159,236 159,236 159,236 159,236 160,236 160,237 160,237 161,237 161,237 161,237 162,237 162,237 162,237 162,237 163,237 163,237 163,238 164,238 164,238 164,238 165,238 165,238 165,238 165,238 166,238 166,238 166,238 167,238 167,238 167,238 168,239 168,239 168,239 168,239 169,239 169,239 169,239 170,239 170,239 170,239 170,240 171,240 171,240 171,240 172,240 172,240 172,240 173,241 173,241 173,241 173,241 174,241 174,241 174,241 175,242 175,242 175,242 176,242 176,242 176,242 176,242 177,242 177,243 177,243 178,243 178,243 178,243 179,243 179,243 179,243 179,243 180,243 180,243 180,244 181,244 181,244 181,244 182,244 182,244 182,244 182,244 183,244 183,244 183,244 184,244 184,244 184,244 184,244 185,244 185,244 185,244 186,244 186,244 186,244 187,244 187,244 187,244 187,244 188,244 188,244 188,244 189,244 189,243 189,243 190,243 190,243 190,243 190,243 191,243 191,243 191,243 192,243 192,243 192,243 193,243 193,242 193,242 193,242 194,242 194,242 194,242 195,242 195,242 195,242 196,242 196,242 196,242 196,242 197,241 197,241 197,241 198,241 198,241 198,241 198,241 199,241 199,241 199,241 200,241 200,241 200,241 201,241 201,241 201,241 201,241 202,241 202,241 202,242 203,242 203,242 203,242 204,242 204,242 204,242 204,242 205,242 205,242 205,242 206,242 206,242 206,242 207,243 207,243 207,243 207,243 208,243 208,243 208,243 209,243 209,243 209,243 210,243 210,243 210,243 210,243 211,243 211,243 211,243 212,243 212,243 212,243 212,243 213,243 213,243 213,243 214,243 214,243 214,243 215,243 215,243 215,243 215,243 216,243 216,242 216,242 217,242 217,242 217,242 218,242 218,242 218,242 218,242 219,242 219,242 219,242 220,242 220,242 220,242 221,241 221,241 221,241 221,241 222,241 222,241 222,241 223,241 223,241 223,241 224,241 224,241 224,241 224,241 225,241 225,241 225,241 226,241 226,241 226,242 226,242 227,242 227,242 227,242 228,242 228,242 228,242 229,242 229,242 229,242 229,242 230,242 230,243 230,243 231,243 231,243 231,243 232,243 232,243 232,243 232,243 233,243 233,243 233,243 234,244 234,244 234,244 235,244 235,244 235,244 235,244 236,244 236,244 236,244 237,244 237,244 237,244 237,244 238,244 238,244 238,244 239,244 239,244 239,244 240,244 240,244 240,244 240,244 241,244 241,244 241,244 242,244 242,244 242,244 243,244 243,244 243,244 243,244 243,244 95,244 "/>
51 | <polygon opacity="0.5" 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,243 83,243 84,243 85,243 85,243 86,242 87,242 87,242 88,242 89,241 90,241 90,240 91,240 92,239 92,239 93,238 94,237 95,236 95,235 96,234 97,233 98,232 98,231 99,230 100,228 100,227 101,225 102,224 103,222 103,220 104,218 105,216 105,214 106,211 107,209 108,206 108,204 109,201 110,198 110,196 111,193 112,190 113,187 113,184 114,180 115,177 116,174 116,171 117,168 118,165 118,162 119,159 120,156 121,153 121,150 122,148 123,145 123,143 124,140 125,138 126,136 126,134 127,133 128,131 128,130 129,129 130,128 131,128 131,127 132,127 133,127 133,127 134,128 135,129 136,129 136,130 137,132 138,133 139,135 139,136 140,138 141,140 141,143 142,145 143,147 144,150 144,152 145,155 146,158 146,160 147,163 148,166 149,169 149,171 150,174 151,177 151,180 152,182 153,185 154,187 154,190 155,192 156,195 157,197 157,199 158,202 159,204 159,206 160,208 161,210 162,211 162,213 163,215 164,216 164,218 165,219 166,220 167,222 167,223 168,224 169,225 169,226 170,227 171,228 172,229 172,229 173,230 174,231 175,231 175,232 176,233 177,233 177,234 178,234 179,234 180,235 180,235 181,235 182,236 182,236 183,236 184,236 185,237 185,237 186,237 187,237 187,237 188,237 189,237 190,237 190,237 191,238 192,238 192,238 193,238 194,238 195,238 195,238 196,238 197,238 198,238 198,238 199,238 200,238 200,238 201,238 202,238 203,238 203,238 204,238 205,238 205,239 206,239 207,239 208,239 208,239 209,239 210,239 210,239 211,239 212,239 213,240 213,240 214,240 215,240 216,240 216,240 217,240 218,240 218,241 219,241 220,241 221,241 221,241 222,241 223,241 223,242 224,242 225,242 226,242 226,242 227,242 228,242 228,243 229,243 230,243 231,243 231,243 232,243 233,243 233,243 234,243 235,243 236,243 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,244 249,244 249,244 250,244 251,244 251,244 252,244 253,244 254,244 254,244 255,244 256,244 257,244 257,244 258,244 259,244 259,244 260,244 261,244 262,244 262,244 263,244 264,244 264,244 265,244 266,244 267,244 267,244 268,244 269,244 269,244 270,244 271,244 272,244 272,244 273,244 274,244 275,244 275,244 276,244 277,244 277,244 278,244 279,244 280,244 280,244 281,244 282,244 282,244 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,243 319,243 320,243 321,243 321,243 322,243 323,243 323,243 324,243 325,243 326,243 326,243 327,243 328,243 328,243 329,243 330,243 331,243 331,243 332,243 333,243 333,243 334,243 335,243 336,243 336,243 337,243 338,243 339,243 339,243 340,243 341,243 341,243 342,243 343,243 344,243 344,243 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,243 375,243 376,243 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,243 387,243 387,243 388,243 389,243 390,243 390,243 391,243 392,243 392,243 393,243 394,243 395,243 395,243 396,243 397,243 398,243 398,243 399,243 400,243 400,243 401,244 402,244 403,244 403,244 404,244 405,244 405,244 406,244 407,244 408,244 408,244 409,244 410,244 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 "/>
52 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="2" points="126,245 126,68 "/>
53 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="142,245 142,145 "/>
54 | </svg>
55 |
```
--------------------------------------------------------------------------------
/benchmarks/non-reentrant-before-others/report/pdf.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 | non-reentrant-before-others
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 | Iterations (x 10^3)
7 | </text>
8 | <text x="480" y="513" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
9 | Average Time (µs)
10 | </text>
11 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="86,53 86,472 "/>
12 | <text x="77" y="472" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
13 | 0
14 | </text>
15 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,472 86,472 "/>
16 | <text x="77" y="398" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
17 | 5
18 | </text>
19 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,398 86,398 "/>
20 | <text x="77" y="323" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
21 | 10
22 | </text>
23 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,323 86,323 "/>
24 | <text x="77" y="248" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
25 | 15
26 | </text>
27 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,248 86,248 "/>
28 | <text x="77" y="173" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
29 | 20
30 | </text>
31 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,173 86,173 "/>
32 | <text x="77" y="98" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
33 | 25
34 | </text>
35 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,98 86,98 "/>
36 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 872,473 "/>
37 | <text x="113" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
38 | 3
39 | </text>
40 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="113,473 113,478 "/>
41 | <text x="227" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
42 | 3.2
43 | </text>
44 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="227,473 227,478 "/>
45 | <text x="342" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
46 | 3.4
47 | </text>
48 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="342,473 342,478 "/>
49 | <text x="456" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
50 | 3.6
51 | </text>
52 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="456,473 456,478 "/>
53 | <text x="570" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
54 | 3.8
55 | </text>
56 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="570,473 570,478 "/>
57 | <text x="685" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
58 | 4
59 | </text>
60 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="685,473 685,478 "/>
61 | <text x="799" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
62 | 4.2
63 | </text>
64 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="799,473 799,478 "/>
65 | <text x="933" y="263" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(90, 933, 263)">
66 | Density (a.u.)
67 | </text>
68 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="873,53 873,473 "/>
69 | <text x="883" y="473" dy="0.5ex" text-anchor="start" 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="873,473 878,473 "/>
73 | <text x="883" y="388" dy="0.5ex" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
74 | 0.5
75 | </text>
76 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="873,388 878,388 "/>
77 | <text x="883" y="303" dy="0.5ex" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
78 | 1
79 | </text>
80 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="873,303 878,303 "/>
81 | <text x="883" y="217" dy="0.5ex" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
82 | 1.5
83 | </text>
84 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="873,217 878,217 "/>
85 | <text x="883" y="132" dy="0.5ex" text-anchor="start" 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="873,132 878,132 "/>
89 | <polygon opacity="0.5" fill="#1F78B4" points="87,473 88,472 90,472 91,472 93,472 94,472 96,471 98,471 99,471 101,470 102,470 104,470 105,469 107,469 109,468 110,467 112,467 113,466 115,465 116,464 118,463 120,462 121,460 123,459 124,458 126,456 127,454 129,452 131,450 132,448 134,446 135,443 137,441 138,438 140,435 142,432 143,428 145,425 146,421 148,417 150,413 151,409 153,404 154,399 156,394 157,389 159,383 161,378 162,372 164,366 165,360 167,353 168,347 170,340 172,333 173,326 175,319 176,312 178,304 179,297 181,289 183,282 184,274 186,267 187,259 189,251 190,244 192,236 194,229 195,222 197,214 198,207 200,200 201,193 203,187 205,180 206,174 208,168 209,162 211,156 213,151 214,146 216,141 217,136 219,132 220,127 222,123 224,120 225,116 227,113 228,110 230,107 231,104 233,102 235,99 236,97 238,95 239,94 241,92 242,90 244,89 246,88 247,87 249,85 250,84 252,83 253,82 255,81 257,80 258,79 260,78 261,77 263,76 264,75 266,74 268,73 269,72 271,71 272,70 274,69 276,68 277,67 279,66 280,65 282,63 283,62 285,61 287,60 288,59 290,58 291,57 293,57 294,56 296,55 298,55 299,54 301,54 302,54 304,53 305,54 307,54 309,54 310,55 312,55 313,56 315,57 316,58 318,60 320,61 321,63 323,65 324,67 326,69 327,71 329,73 331,76 332,79 334,82 335,85 337,88 339,91 340,95 342,98 343,102 345,106 346,110 348,114 350,118 351,122 353,126 354,130 356,135 357,139 359,143 361,148 362,152 364,156 365,161 367,165 368,169 370,174 372,178 373,182 375,186 376,190 378,194 379,198 381,202 383,206 384,210 386,214 387,217 389,221 391,224 392,227 394,231 395,234 397,237 398,240 400,243 402,246 403,249 405,252 406,255 408,257 409,260 411,263 413,265 414,268 416,270 417,273 419,276 420,278 422,281 424,283 425,286 427,288 428,291 430,294 431,296 433,299 435,302 436,305 438,307 439,310 441,313 442,316 444,319 446,322 447,325 449,328 450,331 452,334 454,337 455,340 457,343 458,346 460,349 461,352 463,355 465,359 466,362 468,365 469,368 471,371 472,374 474,377 476,379 477,382 479,385 480,388 482,391 483,393 485,396 487,399 488,401 490,404 491,406 493,409 494,411 496,414 498,416 499,418 501,420 502,422 504,424 505,427 507,429 509,430 510,432 512,434 513,436 515,438 517,439 518,441 520,443 521,444 523,446 524,447 526,448 528,450 529,451 531,452 532,454 534,455 535,456 537,457 539,458 540,459 542,460 543,461 545,461 546,462 548,463 550,464 551,464 553,465 554,466 556,466 557,467 559,467 561,468 562,468 564,469 565,469 567,469 568,470 570,470 572,470 573,471 575,471 576,471 578,471 580,472 581,472 583,472 584,472 586,472 587,472 589,472 591,473 592,473 594,473 595,473 597,473 598,473 600,473 602,473 603,473 605,473 606,473 608,473 609,473 611,473 613,473 614,473 616,473 617,473 619,473 620,473 622,473 624,473 625,473 627,473 628,473 630,473 632,473 633,473 635,473 636,473 638,473 639,473 641,473 643,473 644,473 646,473 647,473 649,473 650,473 652,473 654,473 655,473 657,473 658,473 660,473 661,473 663,473 665,473 666,473 668,473 669,473 671,473 672,473 674,473 676,473 677,473 679,472 680,472 682,472 683,472 685,472 687,472 688,472 690,472 691,471 693,471 695,471 696,471 698,471 699,471 701,470 702,470 704,470 706,470 707,470 709,469 710,469 712,469 713,469 715,468 717,468 718,468 720,468 721,467 723,467 724,467 726,467 728,466 729,466 731,466 732,466 734,465 735,465 737,465 739,465 740,464 742,464 743,464 745,464 746,464 748,464 750,463 751,463 753,463 754,463 756,463 758,463 759,463 761,463 762,463 764,463 765,463 767,463 769,463 770,464 772,464 773,464 775,464 776,464 778,464 780,464 781,465 783,465 784,465 786,465 787,466 789,466 791,466 792,466 794,467 795,467 797,467 798,467 800,468 802,468 803,468 805,468 806,469 808,469 809,469 811,469 813,470 814,470 816,470 817,470 819,471 821,471 822,471 824,471 825,471 827,471 828,472 830,472 832,472 833,472 835,472 836,472 838,472 839,472 841,472 843,473 844,473 846,473 847,473 849,473 850,473 852,473 854,473 855,473 857,473 858,473 860,473 861,473 863,473 865,473 866,473 868,473 869,473 871,473 873,473 873,473 87,473 "/>
90 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="314,472 314,53 "/>
91 | <polyline fill="none" opacity="1" stroke="#FF7F00" stroke-width="1" points="90,472 90,53 "/>
92 | <polyline fill="none" opacity="1" stroke="#FF7F00" stroke-width="1" points="513,472 513,53 "/>
93 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="1" points="87,472 87,53 "/>
94 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="1" points="672,472 672,53 "/>
95 | <circle cx="759" cy="460" r="3" opacity="1" fill="#1F78B4" stroke="none" stroke-width="1"/>
96 | <circle cx="759" cy="460" r="3" opacity="1" fill="#E31A1C" stroke="none" stroke-width="1"/>
97 | <text x="776" y="228" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
98 | PDF
99 | </text>
100 | <text x="776" y="243" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
101 | Mean
102 | </text>
103 | <text x="776" y="258" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
104 | "Clean" sample
105 | </text>
106 | <text x="776" y="273" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
107 | Mild outliers
108 | </text>
109 | <text x="776" y="288" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
110 | Severe outliers
111 | </text>
112 | <rect x="746" y="228" width="20" height="10" opacity="0.5" fill="#1F78B4" stroke="none"/>
113 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="746,248 766,248 "/>
114 | <circle cx="756" cy="263" r="3" opacity="1" fill="#1F78B4" stroke="none" stroke-width="1"/>
115 | <circle cx="756" cy="278" r="3" opacity="1" fill="#FF7F00" stroke="none" stroke-width="1"/>
116 | <circle cx="756" cy="293" r="3" opacity="1" fill="#E31A1C" stroke="none" stroke-width="1"/>
117 | </svg>
118 |
```
--------------------------------------------------------------------------------
/aderyn_core/src/context/flow/tests.rs:
--------------------------------------------------------------------------------
```rust
1 | #[cfg(test)]
2 | mod control_flow_tests {
3 | use crate::{
4 | context::{
5 | flow::{
6 | Block, Cfg, CfgNode, CfgNodeDescriptor, CfgNodeId,
7 | visualizer::control_flow_tests::output_graph,
8 | },
9 | workspace::WorkspaceContext,
10 | },
11 | detect::test_utils::load_solidity_source_unit,
12 | };
13 |
14 | // Sample use of CFG
15 | impl Cfg {
16 | pub fn accept_block(&mut self, context: &WorkspaceContext, block: &Block) {
17 | let start = self.add_start_node();
18 | let end = self.add_end_node();
19 | let block = self.add_block_node(block);
20 |
21 | self.add_flow_edge(start, block);
22 | self.add_flow_edge(block, end);
23 |
24 | while let Some(reduction_candidate) = self.reduction_queue.pop_front() {
25 | self.reduce(context, reduction_candidate);
26 | }
27 | }
28 | }
29 |
30 | // Accept block (Pre calibration checks)
31 | #[test]
32 |
33 | fn simple_program_function1() {
34 | /*
35 |
36 | First example
37 | --------------
38 | Consider
39 | ../tests/contract-playground/src/control_flow/SimpleProgram.sol
40 | SimpleProgram : function1
41 |
42 | Deconstruct the function step by step until we have a graph with only
43 | Every function has a body Block so we start with the following graph and reduce it to primitives
44 |
45 | Step 1:
46 |
47 | Let 'a be the ID node the CfgNode(Block b)
48 |
49 | reduction_queue : [ 'a ]
50 |
51 | Sn(Block) -> CfgNode(Block b) 'a -> En(Block)
52 |
53 | Short form:
54 | Sn -> CfgStartNode
55 | En -> CfgEndNode
56 |
57 | Step 2:
58 |
59 | reduction_queue: [ ]
60 |
61 | Sn ->
62 | Sn -> CfgNode(VariableDeclarationStatement v) -> En ->
63 | Sn -> CfgNode(ExpressionStatement e) -> En ->
64 | Sn -> CfgNode(ExpressionStatement e) -> En ->
65 | En
66 |
67 | */
68 |
69 | let context = load_solidity_source_unit(
70 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
71 | );
72 | let contract = context.find_contract_by_name("SimpleProgram");
73 | let function = contract.find_function_by_name("function1");
74 | let mut cfg = Cfg::new();
75 |
76 | cfg.accept_block(&context, function.body.as_ref().expect("function1 not to be defined"));
77 |
78 | assert_eq!(cfg.nodes.len(), 7);
79 |
80 | assert!(matches!(
81 | cfg.nodes.get(&CfgNodeId(3)).unwrap(),
82 | CfgNode { id: _, nd: CfgNodeDescriptor::Start(_) }
83 | ));
84 |
85 | assert!(matches!(
86 | cfg.nodes.get(&CfgNodeId(4)).unwrap(),
87 | CfgNode { id: _, nd: CfgNodeDescriptor::End(_) }
88 | ));
89 |
90 | output_graph(&context, &cfg, "SimpleProgram_function1");
91 | }
92 |
93 | #[test]
94 |
95 | fn simple_program_function2() {
96 | let context = load_solidity_source_unit(
97 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
98 | );
99 | let contract = context.find_contract_by_name("SimpleProgram");
100 | let function = contract.find_function_by_name("function2");
101 | let mut cfg = Cfg::new();
102 |
103 | cfg.accept_block(&context, function.body.as_ref().expect("function2 not to be defined"));
104 |
105 | output_graph(&context, &cfg, "SimpleProgram_function2");
106 | assert_eq!(cfg.nodes.len(), 14);
107 | }
108 |
109 | #[test]
110 |
111 | fn simple_program_function3() {
112 | let context = load_solidity_source_unit(
113 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
114 | );
115 | let contract = context.find_contract_by_name("SimpleProgram");
116 | let function = contract.find_function_by_name("function3");
117 | let mut cfg = Cfg::new();
118 |
119 | cfg.accept_block(&context, function.body.as_ref().expect("function3 not to be defined"));
120 |
121 | output_graph(&context, &cfg, "SimpleProgram_function3");
122 | assert_eq!(cfg.nodes.len(), 12);
123 | }
124 |
125 | #[test]
126 |
127 | fn simple_program_function4() {
128 | let context = load_solidity_source_unit(
129 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
130 | );
131 | let contract = context.find_contract_by_name("SimpleProgram");
132 | let function = contract.find_function_by_name("function4");
133 | let mut cfg = Cfg::new();
134 |
135 | cfg.accept_block(&context, function.body.as_ref().expect("function4 not to be defined"));
136 |
137 | output_graph(&context, &cfg, "SimpleProgram_function4");
138 | assert_eq!(cfg.nodes.len(), 48);
139 | }
140 |
141 | #[test]
142 |
143 | fn simple_program_function5() {
144 | let context = load_solidity_source_unit(
145 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
146 | );
147 | let contract = context.find_contract_by_name("SimpleProgram");
148 | let function = contract.find_function_by_name("function5");
149 | let mut cfg = Cfg::new();
150 |
151 | cfg.accept_block(&context, function.body.as_ref().expect("function5 not to be defined"));
152 |
153 | output_graph(&context, &cfg, "SimpleProgram_function5");
154 | assert_eq!(cfg.nodes.len(), 25);
155 | }
156 |
157 | #[test]
158 |
159 | fn simple_program_function6() {
160 | let context = load_solidity_source_unit(
161 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
162 | );
163 | let contract = context.find_contract_by_name("SimpleProgram");
164 | let function = contract.find_function_by_name("function6");
165 | let mut cfg = Cfg::new();
166 |
167 | cfg.accept_block(&context, function.body.as_ref().expect("function6 not to be defined"));
168 |
169 | output_graph(&context, &cfg, "SimpleProgram_function6");
170 | assert_eq!(cfg.nodes.len(), 31);
171 | }
172 |
173 | #[test]
174 |
175 | fn simple_program_function7() {
176 | let context = load_solidity_source_unit(
177 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
178 | );
179 | let contract = context.find_contract_by_name("SimpleProgram");
180 | let function = contract.find_function_by_name("function7");
181 | let mut cfg = Cfg::new();
182 |
183 | cfg.accept_block(&context, function.body.as_ref().expect("function7 not to be defined"));
184 |
185 | output_graph(&context, &cfg, "SimpleProgram_function7");
186 | assert_eq!(cfg.nodes.len(), 22);
187 | }
188 |
189 | #[test]
190 |
191 | fn simple_program_function8() {
192 | let context = load_solidity_source_unit(
193 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
194 | );
195 | let contract = context.find_contract_by_name("SimpleProgram");
196 | let function = contract.find_function_by_name("function8");
197 | let mut cfg = Cfg::new();
198 |
199 | cfg.accept_block(&context, function.body.as_ref().expect("function8 not to be defined"));
200 |
201 | output_graph(&context, &cfg, "SimpleProgram_function8");
202 | assert_eq!(cfg.nodes.len(), 48);
203 | }
204 |
205 | #[test]
206 |
207 | fn simple_program_function9() {
208 | let context = load_solidity_source_unit(
209 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
210 | );
211 | let contract = context.find_contract_by_name("SimpleProgram");
212 | let function = contract.find_function_by_name("function9");
213 | let mut cfg = Cfg::new();
214 |
215 | cfg.accept_block(&context, function.body.as_ref().expect("function9 not to be defined"));
216 |
217 | output_graph(&context, &cfg, "SimpleProgram_function9");
218 | assert_eq!(cfg.nodes.len(), 15);
219 | }
220 |
221 | #[test]
222 |
223 | fn simple_program_function10() {
224 | let context = load_solidity_source_unit(
225 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
226 | );
227 | let contract = context.find_contract_by_name("SimpleProgram");
228 | let function = contract.find_function_by_name("function10");
229 | let mut cfg = Cfg::new();
230 |
231 | cfg.accept_block(&context, function.body.as_ref().expect("function10 not to be defined"));
232 |
233 | output_graph(&context, &cfg, "SimpleProgram_function10");
234 | assert_eq!(cfg.nodes.len(), 9);
235 | }
236 |
237 | // Accept-Function-Body (Post calibration checks)
238 |
239 | #[test]
240 |
241 | fn simple_program_function11() {
242 | let context = load_solidity_source_unit(
243 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
244 | );
245 | let contract = context.find_contract_by_name("SimpleProgram");
246 | let function = contract.find_function_by_name("function11");
247 | let (cfg, _, _) = Cfg::from_function_body(&context, function).unwrap();
248 |
249 | output_graph(&context, &cfg, "SimpleProgram_function11");
250 | assert_eq!(cfg.nodes.len(), 26);
251 | assert_eq!(cfg.total_edges(), 27);
252 | }
253 |
254 | #[test]
255 |
256 | fn simple_program_function12() {
257 | let context = load_solidity_source_unit(
258 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
259 | );
260 | let contract = context.find_contract_by_name("SimpleProgram");
261 | let function = contract.find_function_by_name("function12");
262 | let (cfg, _, _) = Cfg::from_function_body(&context, function).unwrap();
263 |
264 | output_graph(&context, &cfg, "SimpleProgram_function12");
265 | assert_eq!(cfg.nodes.len(), 42);
266 | assert_eq!(cfg.total_edges(), 44);
267 | }
268 |
269 | #[test]
270 |
271 | fn simple_program_function13() {
272 | let context = load_solidity_source_unit(
273 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
274 | );
275 | let contract = context.find_contract_by_name("SimpleProgram");
276 | let function = contract.find_function_by_name("function13");
277 | let (cfg, _, _) = Cfg::from_function_body(&context, function).unwrap();
278 |
279 | output_graph(&context, &cfg, "SimpleProgram_function13");
280 | assert_eq!(cfg.nodes.len(), 36);
281 | assert_eq!(cfg.total_edges(), 38);
282 | }
283 |
284 | #[test]
285 |
286 | fn simple_program_function14() {
287 | let context = load_solidity_source_unit(
288 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
289 | );
290 | let contract = context.find_contract_by_name("SimpleProgram");
291 | let function = contract.find_function_by_name("function14");
292 | let (cfg, _, _) = Cfg::from_function_body(&context, function).unwrap();
293 |
294 | output_graph(&context, &cfg, "SimpleProgram_function14");
295 | assert_eq!(cfg.nodes.len(), 46);
296 | assert_eq!(cfg.total_edges(), 49);
297 | }
298 |
299 | #[test]
300 |
301 | fn simple_program_function15() {
302 | let context = load_solidity_source_unit(
303 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
304 | );
305 | let contract = context.find_contract_by_name("SimpleProgram");
306 | let function = contract.find_function_by_name("function15");
307 | let (cfg, _, _) = Cfg::from_function_body(&context, function).unwrap();
308 |
309 | output_graph(&context, &cfg, "SimpleProgram_function15");
310 | assert_eq!(cfg.nodes.len(), 70);
311 | assert_eq!(cfg.total_edges(), 75);
312 | }
313 |
314 | #[test]
315 |
316 | fn simple_program_function16() {
317 | let context = load_solidity_source_unit(
318 | "../tests/contract-playground/src/control_flow/SimpleProgram.sol",
319 | );
320 | let contract = context.find_contract_by_name("SimpleProgram");
321 | let function = contract.find_function_by_name("function16");
322 | let (cfg, _, _) = Cfg::from_function_body(&context, function).unwrap();
323 |
324 | output_graph(&context, &cfg, "SimpleProgram_function16");
325 | assert_eq!(cfg.nodes.len(), 82);
326 | assert_eq!(cfg.total_edges(), 88);
327 | }
328 | }
329 |
```
--------------------------------------------------------------------------------
/benchmarks/unindexed-events/report/relative_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="218" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
10 | 0.05
11 | </text>
12 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,218 74,218 "/>
13 | <text x="65" y="192" 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,192 74,192 "/>
17 | <text x="65" y="166" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
18 | 0.15
19 | </text>
20 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,166 74,166 "/>
21 | <text x="65" y="140" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
22 | 0.2
23 | </text>
24 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,140 74,140 "/>
25 | <text x="65" y="113" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
26 | 0.25
27 | </text>
28 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,113 74,113 "/>
29 | <text x="65" y="87" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
30 | 0.3
31 | </text>
32 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,87 74,87 "/>
33 | <text x="65" y="61" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
34 | 0.35
35 | </text>
36 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,61 74,61 "/>
37 | <text x="65" y="35" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
38 | 0.4
39 | </text>
40 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="69,35 74,35 "/>
41 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="75,245 434,245 "/>
42 | <text x="167" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
43 | 25
44 | </text>
45 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="167,245 167,250 "/>
46 | <text x="262" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
47 | 30
48 | </text>
49 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="262,245 262,250 "/>
50 | <text x="357" y="255" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
51 | 35
52 | </text>
53 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="357,245 357,250 "/>
54 | <polygon opacity="0.5" fill="#E31A1C" points="75,244 75,244 75,244 76,244 76,244 77,244 77,244 78,244 78,244 79,243 79,243 80,243 80,243 80,243 81,243 81,242 82,242 82,242 83,241 83,241 84,241 84,240 85,240 85,239 85,238 86,238 86,237 87,236 87,235 88,234 88,233 89,232 89,231 90,230 90,228 91,227 91,225 91,223 92,221 92,219 93,217 93,215 94,213 94,210 95,208 95,205 96,202 96,199 96,196 97,192 97,189 98,185 98,181 99,178 99,174 100,169 100,165 101,161 101,156 101,152 102,147 102,142 103,137 103,132 104,127 104,122 105,117 105,112 106,107 106,102 107,97 107,92 107,87 108,82 108,77 109,72 109,68 110,63 110,59 111,55 111,51 112,47 112,43 112,39 113,36 113,33 114,30 114,28 115,25 115,23 116,21 116,20 117,18 117,17 117,16 118,16 118,16 119,15 119,16 120,16 120,17 121,18 121,19 122,20 122,22 123,24 123,26 123,28 124,30 124,33 125,35 125,38 126,41 126,44 127,47 127,51 128,54 128,57 128,61 129,64 129,68 130,71 130,75 131,79 131,82 132,86 132,89 133,93 133,96 134,100 134,103 134,106 135,109 135,113 136,116 136,119 137,122 137,125 138,127 138,130 139,133 139,135 139,138 140,140 140,142 141,144 141,146 142,148 142,150 143,152 143,154 144,156 144,157 144,159 145,160 145,162 146,163 146,164 147,166 147,167 148,168 148,169 149,170 149,171 150,172 150,173 150,174 151,175 151,176 152,177 152,177 153,178 153,179 154,180 154,181 155,181 155,182 155,183 156,184 156,185 157,185 157,186 158,187 158,188 159,189 159,189 160,190 160,191 160,192 161,193 161,193 162,194 162,195 163,196 163,197 164,198 164,199 165,199 165,200 166,201 166,202 166,203 167,204 167,205 168,206 168,207 169,207 169,208 170,209 170,210 171,211 171,212 171,212 172,213 172,214 173,215 173,216 174,216 174,217 175,218 175,219 176,219 176,220 177,221 177,221 177,222 178,223 178,223 179,224 179,224 180,225 180,225 181,226 181,227 182,227 182,228 182,228 183,229 183,229 184,229 184,230 185,230 185,231 186,231 186,232 187,232 187,233 187,233 188,233 188,234 189,234 189,234 190,235 190,235 191,236 191,236 192,236 192,237 193,237 193,237 193,237 194,238 194,238 195,238 195,239 196,239 196,239 197,239 197,240 198,240 198,240 198,240 199,240 199,241 200,241 200,241 201,241 201,241 202,241 202,241 203,241 203,242 203,242 204,242 204,242 205,242 205,242 206,242 206,242 207,242 207,242 208,242 208,242 209,242 209,242 209,242 210,242 210,242 211,242 211,241 212,241 212,241 213,241 213,241 214,241 214,241 214,241 215,241 215,241 216,241 216,241 217,241 217,241 218,241 218,241 219,241 219,241 219,241 220,241 220,241 221,241 221,241 222,241 222,241 223,241 223,241 224,241 224,241 225,241 225,241 225,241 226,241 226,241 227,241 227,242 228,242 228,242 229,242 229,242 230,242 230,242 230,242 231,242 231,242 232,242 232,243 233,243 233,243 234,243 234,243 235,243 235,243 236,243 236,243 236,243 237,243 237,244 238,244 238,244 239,244 239,244 240,244 240,244 241,244 241,244 241,244 242,244 242,244 243,244 243,244 244,244 244,244 245,244 245,244 246,244 246,244 246,244 247,244 247,244 248,244 248,244 249,244 249,244 250,244 250,244 251,244 251,244 252,244 252,244 252,244 253,244 253,244 254,244 254,243 255,243 255,243 256,243 256,243 257,243 257,243 257,243 258,243 258,243 259,243 259,243 260,242 260,242 261,242 261,242 262,242 262,242 262,242 263,242 263,242 264,242 264,241 265,241 265,241 266,241 266,241 267,241 267,241 268,241 268,241 268,241 269,241 269,241 270,241 270,241 271,241 271,241 272,241 272,241 273,241 273,241 273,241 274,241 274,241 275,241 275,241 276,241 276,241 277,241 277,241 278,241 278,241 279,242 279,242 279,242 280,242 280,242 281,242 281,242 282,242 282,242 283,242 283,243 284,243 284,243 284,243 285,243 285,243 286,243 286,243 287,243 287,243 288,243 288,243 289,244 289,244 289,244 290,244 290,244 291,244 291,244 292,244 292,244 293,244 293,244 294,244 294,244 295,244 295,244 295,244 296,244 296,244 297,244 297,244 298,244 298,244 299,244 299,244 300,244 300,244 300,244 301,244 301,244 302,244 302,244 303,244 303,244 75,244 "/>
55 | <polygon opacity="0.5" fill="#1F78B4" points="168,244 168,244 169,244 169,244 170,244 170,244 171,244 171,244 172,244 172,244 173,244 173,244 174,244 175,244 175,243 176,243 176,243 177,243 177,243 178,243 178,242 179,242 179,242 180,242 180,241 181,241 181,240 182,240 183,240 183,239 184,239 184,238 185,237 185,237 186,236 186,235 187,234 187,233 188,232 188,231 189,230 189,229 190,228 190,227 191,225 192,224 192,222 193,221 193,219 194,217 194,215 195,213 195,211 196,209 196,207 197,204 197,202 198,199 198,197 199,194 200,191 200,188 201,185 201,182 202,179 202,176 203,172 203,169 204,165 204,162 205,158 205,154 206,151 206,147 207,143 208,139 208,135 209,131 209,127 210,123 210,119 211,115 211,111 212,107 212,103 213,100 213,96 214,92 214,88 215,85 216,81 216,78 217,74 217,71 218,68 218,65 219,62 219,59 220,56 220,54 221,52 221,49 222,47 222,46 223,44 224,43 224,41 225,40 225,40 226,39 226,39 227,38 227,39 228,39 228,39 229,40 229,41 230,42 230,43 231,44 232,46 232,48 233,50 233,52 234,54 234,57 235,60 235,62 236,65 236,68 237,71 237,75 238,78 238,81 239,85 240,88 240,92 241,95 241,99 242,103 242,106 243,110 243,114 244,117 244,121 245,125 245,128 246,132 246,135 247,138 248,142 248,145 249,148 249,151 250,154 250,157 251,160 251,163 252,165 252,168 253,170 253,173 254,175 254,177 255,180 256,182 256,184 257,186 257,187 258,189 258,191 259,193 259,194 260,196 260,197 261,198 261,200 262,201 262,202 263,203 264,205 264,206 265,207 265,208 266,209 266,209 267,210 267,211 268,212 268,213 269,213 269,214 270,215 270,216 271,216 271,217 272,217 273,218 273,218 274,219 274,219 275,220 275,220 276,221 276,221 277,222 277,222 278,222 278,223 279,223 279,224 280,224 281,224 281,224 282,225 282,225 283,225 283,226 284,226 284,226 285,226 285,227 286,227 286,227 287,227 287,227 288,228 289,228 289,228 290,228 290,229 291,229 291,229 292,229 292,229 293,230 293,230 294,230 294,230 295,231 295,231 296,231 297,231 297,232 298,232 298,232 299,232 299,232 300,233 300,233 301,233 301,233 302,234 302,234 303,234 303,234 304,235 305,235 305,235 306,235 306,236 307,236 307,236 308,236 308,236 309,237 309,237 310,237 310,237 311,237 311,238 312,238 313,238 313,238 314,238 314,238 315,238 315,239 316,239 316,239 317,239 317,239 318,239 318,239 319,239 319,240 320,240 321,240 321,240 322,240 322,240 323,240 323,240 324,240 324,240 325,240 325,241 326,241 326,241 327,241 327,241 328,241 329,241 329,241 330,241 330,241 331,241 331,242 332,242 332,242 333,242 333,242 334,242 334,242 335,242 335,242 336,242 337,243 337,243 338,243 338,243 339,243 339,243 340,243 340,243 341,243 341,243 342,243 342,243 343,243 343,244 344,244 345,244 345,244 346,244 346,244 347,244 347,244 348,244 348,244 349,244 349,244 350,244 350,244 351,244 351,244 352,244 353,244 353,244 354,244 354,244 355,244 355,244 356,244 356,244 357,244 357,244 358,244 358,244 359,244 359,244 360,244 360,244 361,244 362,244 362,244 363,244 363,244 364,244 364,244 365,244 365,243 366,243 366,243 367,243 367,243 368,243 368,243 369,243 370,243 370,243 371,243 371,242 372,242 372,242 373,242 373,242 374,242 374,242 375,242 375,241 376,241 376,241 377,241 378,241 378,241 379,241 379,240 380,240 380,240 381,240 381,240 382,240 382,240 383,240 383,239 384,239 384,239 385,239 386,239 386,239 387,239 387,239 388,239 388,239 389,239 389,239 390,239 390,239 391,239 391,239 392,239 392,239 393,239 394,239 394,239 395,239 395,239 396,239 396,239 397,239 397,239 398,239 398,240 399,240 399,240 400,240 400,240 401,240 402,240 402,240 403,241 403,241 404,241 404,241 405,241 405,241 406,241 406,242 407,242 407,242 408,242 408,242 409,242 410,242 410,242 411,243 411,243 412,243 412,243 413,243 413,243 414,243 414,243 415,243 415,243 416,244 416,244 417,244 418,244 418,244 419,244 419,244 420,244 420,244 421,244 421,244 422,244 422,244 423,244 423,244 424,244 424,244 425,244 426,244 426,244 427,244 427,244 428,244 428,244 429,244 429,244 430,244 430,244 431,244 431,244 432,244 432,244 433,244 434,244 434,244 168,244 "/>
56 | <polyline fill="none" opacity="1" stroke="#E31A1C" stroke-width="2" points="131,245 131,77 "/>
57 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="237,245 237,70 "/>
58 | </svg>
59 |
```