This is page 4 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/unsafe-erc20-functions/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[24.0,48.0,72.0,96.0,120.0,144.0,168.0,192.0,216.0,240.0,264.0,288.0,312.0,336.0,360.0,384.0,408.0,432.0,456.0,480.0,504.0,528.0,552.0,576.0,600.0,624.0,648.0,672.0,696.0,720.0,744.0,768.0,792.0,816.0,840.0,864.0,888.0,912.0,936.0,960.0,984.0,1008.0,1032.0,1056.0,1080.0,1104.0,1128.0,1152.0,1176.0,1200.0,1224.0,1248.0,1272.0,1296.0,1320.0,1344.0,1368.0,1392.0,1416.0,1440.0,1464.0,1488.0,1512.0,1536.0,1560.0,1584.0,1608.0,1632.0,1656.0,1680.0,1704.0,1728.0,1752.0,1776.0,1800.0,1824.0,1848.0,1872.0,1896.0,1920.0,1944.0,1968.0,1992.0,2016.0,2040.0,2064.0,2088.0,2112.0,2136.0,2160.0,2184.0,2208.0,2232.0,2256.0,2280.0,2304.0,2328.0,2352.0,2376.0,2400.0],"times":[929925.0,2093737.0,2864412.0,4194411.0,4977021.0,5854662.0,6748239.0,7771009.0,8602381.0,9543903.0,10557953.0,12221008.0,14037438.0,14314033.0,14623265.0,15818586.0,17111159.0,18124388.0,19196431.0,19595067.0,21371561.0,24027938.0,41242219.0,35626455.0,33739004.0,25221273.0,26276578.0,27449298.0,33544788.0,30940337.0,31695670.0,30819319.0,32660674.0,34143345.0,35598315.0,37167398.0,38533699.0,38869075.0,39397942.0,41776063.0,43826327.0,43276354.0,43470099.0,44803377.0,47095595.0,50421068.0,48034482.0,49591431.0,49826823.0,49573432.0,50697645.0,52586705.0,53413817.0,54290984.0,55049895.0,65334728.0,63676702.0,58025098.0,58125584.0,59523592.0,60518922.0,62137699.0,62909172.0,63291780.0,65209807.0,91391270.0,75435165.0,70094066.0,103715111.0,77988954.0,73005449.0,73838773.0,76449486.0,75685707.0,97839547.0,87786092.0,84866911.0,82393965.0,82521273.0,84013978.0,92519354.0,92500671.0,93136186.0,90570069.0,89249987.0,90230854.0,91571489.0,90837107.0,92469954.0,94330707.0,95790286.0,96494179.0,97237940.0,97778998.0,97828431.0,98832285.0,100458356.0,106407352.0,107601737.0,105280155.0]}
```
--------------------------------------------------------------------------------
/benchmarks/unsafe-erc20-functions/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[24.0,48.0,72.0,96.0,120.0,144.0,168.0,192.0,216.0,240.0,264.0,288.0,312.0,336.0,360.0,384.0,408.0,432.0,456.0,480.0,504.0,528.0,552.0,576.0,600.0,624.0,648.0,672.0,696.0,720.0,744.0,768.0,792.0,816.0,840.0,864.0,888.0,912.0,936.0,960.0,984.0,1008.0,1032.0,1056.0,1080.0,1104.0,1128.0,1152.0,1176.0,1200.0,1224.0,1248.0,1272.0,1296.0,1320.0,1344.0,1368.0,1392.0,1416.0,1440.0,1464.0,1488.0,1512.0,1536.0,1560.0,1584.0,1608.0,1632.0,1656.0,1680.0,1704.0,1728.0,1752.0,1776.0,1800.0,1824.0,1848.0,1872.0,1896.0,1920.0,1944.0,1968.0,1992.0,2016.0,2040.0,2064.0,2088.0,2112.0,2136.0,2160.0,2184.0,2208.0,2232.0,2256.0,2280.0,2304.0,2328.0,2352.0,2376.0,2400.0],"times":[929925.0,2093737.0,2864412.0,4194411.0,4977021.0,5854662.0,6748239.0,7771009.0,8602381.0,9543903.0,10557953.0,12221008.0,14037438.0,14314033.0,14623265.0,15818586.0,17111159.0,18124388.0,19196431.0,19595067.0,21371561.0,24027938.0,41242219.0,35626455.0,33739004.0,25221273.0,26276578.0,27449298.0,33544788.0,30940337.0,31695670.0,30819319.0,32660674.0,34143345.0,35598315.0,37167398.0,38533699.0,38869075.0,39397942.0,41776063.0,43826327.0,43276354.0,43470099.0,44803377.0,47095595.0,50421068.0,48034482.0,49591431.0,49826823.0,49573432.0,50697645.0,52586705.0,53413817.0,54290984.0,55049895.0,65334728.0,63676702.0,58025098.0,58125584.0,59523592.0,60518922.0,62137699.0,62909172.0,63291780.0,65209807.0,91391270.0,75435165.0,70094066.0,103715111.0,77988954.0,73005449.0,73838773.0,76449486.0,75685707.0,97839547.0,87786092.0,84866911.0,82393965.0,82521273.0,84013978.0,92519354.0,92500671.0,93136186.0,90570069.0,89249987.0,90230854.0,91571489.0,90837107.0,92469954.0,94330707.0,95790286.0,96494179.0,97237940.0,97778998.0,97828431.0,98832285.0,100458356.0,106407352.0,107601737.0,105280155.0]}
```
--------------------------------------------------------------------------------
/benchmarks/require-with-string/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[28.0,56.0,84.0,112.0,140.0,168.0,196.0,224.0,252.0,280.0,308.0,336.0,364.0,392.0,420.0,448.0,476.0,504.0,532.0,560.0,588.0,616.0,644.0,672.0,700.0,728.0,756.0,784.0,812.0,840.0,868.0,896.0,924.0,952.0,980.0,1008.0,1036.0,1064.0,1092.0,1120.0,1148.0,1176.0,1204.0,1232.0,1260.0,1288.0,1316.0,1344.0,1372.0,1400.0,1428.0,1456.0,1484.0,1512.0,1540.0,1568.0,1596.0,1624.0,1652.0,1680.0,1708.0,1736.0,1764.0,1792.0,1820.0,1848.0,1876.0,1904.0,1932.0,1960.0,1988.0,2016.0,2044.0,2072.0,2100.0,2128.0,2156.0,2184.0,2212.0,2240.0,2268.0,2296.0,2324.0,2352.0,2380.0,2408.0,2436.0,2464.0,2492.0,2520.0,2548.0,2576.0,2604.0,2632.0,2660.0,2688.0,2716.0,2744.0,2772.0,2800.0],"times":[870813.0,1760565.0,3389167.0,3606131.0,4527295.0,5373690.0,6835794.0,7446854.0,7872217.0,8765069.0,9536346.0,14432168.0,11449746.0,12147980.0,13053849.0,14065756.0,14606836.0,15578358.0,16734206.0,17436011.0,18262915.0,19307190.0,19830348.0,20955022.0,21667118.0,22789983.0,23424531.0,24449869.0,24942586.0,26211075.0,26819094.0,28020674.0,28768906.0,29404621.0,30621998.0,31404234.0,31809719.0,32701500.0,32549816.0,33510502.0,34006577.0,34890840.0,35667876.0,36514964.0,37329220.0,38235349.0,38969524.0,39827096.0,40636421.0,41408847.0,41234248.0,41804631.0,42595951.0,43671180.0,44515702.0,45340092.0,46031190.0,46918044.0,47206351.0,46834678.0,47862596.0,48609972.0,74365689.0,49870459.0,50636606.0,51736946.0,52657908.0,53496631.0,53740980.0,54529480.0,55479854.0,56574213.0,57567029.0,57620232.0,58398330.0,59245494.0,58597903.0,59256134.0,60047750.0,61360261.0,61747286.0,61654445.0,62215905.0,62882875.0,62684865.0,63299227.0,63889593.0,64542526.0,65264340.0,66002763.0,66768310.0,67497971.0,68208988.0,68894183.0,70138132.0,71416927.0,71093454.0,71512993.0,70617408.0,71117513.0]}
```
--------------------------------------------------------------------------------
/benchmarks/require-with-string/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[28.0,56.0,84.0,112.0,140.0,168.0,196.0,224.0,252.0,280.0,308.0,336.0,364.0,392.0,420.0,448.0,476.0,504.0,532.0,560.0,588.0,616.0,644.0,672.0,700.0,728.0,756.0,784.0,812.0,840.0,868.0,896.0,924.0,952.0,980.0,1008.0,1036.0,1064.0,1092.0,1120.0,1148.0,1176.0,1204.0,1232.0,1260.0,1288.0,1316.0,1344.0,1372.0,1400.0,1428.0,1456.0,1484.0,1512.0,1540.0,1568.0,1596.0,1624.0,1652.0,1680.0,1708.0,1736.0,1764.0,1792.0,1820.0,1848.0,1876.0,1904.0,1932.0,1960.0,1988.0,2016.0,2044.0,2072.0,2100.0,2128.0,2156.0,2184.0,2212.0,2240.0,2268.0,2296.0,2324.0,2352.0,2380.0,2408.0,2436.0,2464.0,2492.0,2520.0,2548.0,2576.0,2604.0,2632.0,2660.0,2688.0,2716.0,2744.0,2772.0,2800.0],"times":[870813.0,1760565.0,3389167.0,3606131.0,4527295.0,5373690.0,6835794.0,7446854.0,7872217.0,8765069.0,9536346.0,14432168.0,11449746.0,12147980.0,13053849.0,14065756.0,14606836.0,15578358.0,16734206.0,17436011.0,18262915.0,19307190.0,19830348.0,20955022.0,21667118.0,22789983.0,23424531.0,24449869.0,24942586.0,26211075.0,26819094.0,28020674.0,28768906.0,29404621.0,30621998.0,31404234.0,31809719.0,32701500.0,32549816.0,33510502.0,34006577.0,34890840.0,35667876.0,36514964.0,37329220.0,38235349.0,38969524.0,39827096.0,40636421.0,41408847.0,41234248.0,41804631.0,42595951.0,43671180.0,44515702.0,45340092.0,46031190.0,46918044.0,47206351.0,46834678.0,47862596.0,48609972.0,74365689.0,49870459.0,50636606.0,51736946.0,52657908.0,53496631.0,53740980.0,54529480.0,55479854.0,56574213.0,57567029.0,57620232.0,58398330.0,59245494.0,58597903.0,59256134.0,60047750.0,61360261.0,61747286.0,61654445.0,62215905.0,62882875.0,62684865.0,63299227.0,63889593.0,64542526.0,65264340.0,66002763.0,66768310.0,67497971.0,68208988.0,68894183.0,70138132.0,71416927.0,71093454.0,71512993.0,70617408.0,71117513.0]}
```
--------------------------------------------------------------------------------
/benchmarks/unprotected-initializer/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[28.0,56.0,84.0,112.0,140.0,168.0,196.0,224.0,252.0,280.0,308.0,336.0,364.0,392.0,420.0,448.0,476.0,504.0,532.0,560.0,588.0,616.0,644.0,672.0,700.0,728.0,756.0,784.0,812.0,840.0,868.0,896.0,924.0,952.0,980.0,1008.0,1036.0,1064.0,1092.0,1120.0,1148.0,1176.0,1204.0,1232.0,1260.0,1288.0,1316.0,1344.0,1372.0,1400.0,1428.0,1456.0,1484.0,1512.0,1540.0,1568.0,1596.0,1624.0,1652.0,1680.0,1708.0,1736.0,1764.0,1792.0,1820.0,1848.0,1876.0,1904.0,1932.0,1960.0,1988.0,2016.0,2044.0,2072.0,2100.0,2128.0,2156.0,2184.0,2212.0,2240.0,2268.0,2296.0,2324.0,2352.0,2380.0,2408.0,2436.0,2464.0,2492.0,2520.0,2548.0,2576.0,2604.0,2632.0,2660.0,2688.0,2716.0,2744.0,2772.0,2800.0],"times":[908821.0,1815806.0,4081615.0,4197224.0,4879906.0,5629976.0,6947133.0,7274569.0,8187997.0,9066644.0,10671319.0,12204946.0,12173524.0,14135027.0,14337931.0,15500387.0,15825067.0,17137899.0,17662780.0,18338251.0,19112292.0,19960486.0,20756119.0,21764780.0,22444127.0,23255341.0,24577727.0,25251682.0,25942556.0,27988154.0,28770655.0,28728922.0,30196579.0,30967421.0,31373543.0,32991890.0,33852487.0,34705800.0,36005677.0,39949371.0,42643657.0,42091536.0,42990021.0,41210378.0,42339067.0,43302004.0,44355634.0,47730627.0,48375438.0,47019774.0,49614727.0,50272495.0,53125068.0,51800540.0,54127752.0,53879477.0,52994997.0,56050281.0,57244885.0,56434229.0,56629303.0,57292157.0,55487985.0,56056212.0,57692878.0,59458082.0,63054675.0,64044783.0,62361334.0,76653749.0,70135044.0,64266473.0,67121954.0,64375936.0,68310913.0,67531109.0,79274298.0,72378925.0,67560177.0,70500775.0,70732523.0,87519567.0,81579462.0,78620645.0,85601614.0,75997868.0,75985925.0,78749252.0,79483815.0,81271664.0,84356569.0,82997539.0,82321589.0,80451884.0,80191041.0,80634887.0,81512775.0,83619433.0,84087921.0,84512625.0]}
```
--------------------------------------------------------------------------------
/benchmarks/unprotected-initializer/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[28.0,56.0,84.0,112.0,140.0,168.0,196.0,224.0,252.0,280.0,308.0,336.0,364.0,392.0,420.0,448.0,476.0,504.0,532.0,560.0,588.0,616.0,644.0,672.0,700.0,728.0,756.0,784.0,812.0,840.0,868.0,896.0,924.0,952.0,980.0,1008.0,1036.0,1064.0,1092.0,1120.0,1148.0,1176.0,1204.0,1232.0,1260.0,1288.0,1316.0,1344.0,1372.0,1400.0,1428.0,1456.0,1484.0,1512.0,1540.0,1568.0,1596.0,1624.0,1652.0,1680.0,1708.0,1736.0,1764.0,1792.0,1820.0,1848.0,1876.0,1904.0,1932.0,1960.0,1988.0,2016.0,2044.0,2072.0,2100.0,2128.0,2156.0,2184.0,2212.0,2240.0,2268.0,2296.0,2324.0,2352.0,2380.0,2408.0,2436.0,2464.0,2492.0,2520.0,2548.0,2576.0,2604.0,2632.0,2660.0,2688.0,2716.0,2744.0,2772.0,2800.0],"times":[908821.0,1815806.0,4081615.0,4197224.0,4879906.0,5629976.0,6947133.0,7274569.0,8187997.0,9066644.0,10671319.0,12204946.0,12173524.0,14135027.0,14337931.0,15500387.0,15825067.0,17137899.0,17662780.0,18338251.0,19112292.0,19960486.0,20756119.0,21764780.0,22444127.0,23255341.0,24577727.0,25251682.0,25942556.0,27988154.0,28770655.0,28728922.0,30196579.0,30967421.0,31373543.0,32991890.0,33852487.0,34705800.0,36005677.0,39949371.0,42643657.0,42091536.0,42990021.0,41210378.0,42339067.0,43302004.0,44355634.0,47730627.0,48375438.0,47019774.0,49614727.0,50272495.0,53125068.0,51800540.0,54127752.0,53879477.0,52994997.0,56050281.0,57244885.0,56434229.0,56629303.0,57292157.0,55487985.0,56056212.0,57692878.0,59458082.0,63054675.0,64044783.0,62361334.0,76653749.0,70135044.0,64266473.0,67121954.0,64375936.0,68310913.0,67531109.0,79274298.0,72378925.0,67560177.0,70500775.0,70732523.0,87519567.0,81579462.0,78620645.0,85601614.0,75997868.0,75985925.0,78749252.0,79483815.0,81271664.0,84356569.0,82997539.0,82321589.0,80451884.0,80191041.0,80634887.0,81512775.0,83619433.0,84087921.0,84512625.0]}
```
--------------------------------------------------------------------------------
/benchmarks/unindexed-events/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[35.0,70.0,105.0,140.0,175.0,210.0,245.0,280.0,315.0,350.0,385.0,420.0,455.0,490.0,525.0,560.0,595.0,630.0,665.0,700.0,735.0,770.0,805.0,840.0,875.0,910.0,945.0,980.0,1015.0,1050.0,1085.0,1120.0,1155.0,1190.0,1225.0,1260.0,1295.0,1330.0,1365.0,1400.0,1435.0,1470.0,1505.0,1540.0,1575.0,1610.0,1645.0,1680.0,1715.0,1750.0,1785.0,1820.0,1855.0,1890.0,1925.0,1960.0,1995.0,2030.0,2065.0,2100.0,2135.0,2170.0,2205.0,2240.0,2275.0,2310.0,2345.0,2380.0,2415.0,2450.0,2485.0,2520.0,2555.0,2590.0,2625.0,2660.0,2695.0,2730.0,2765.0,2800.0,2835.0,2870.0,2905.0,2940.0,2975.0,3010.0,3045.0,3080.0,3115.0,3150.0,3185.0,3220.0,3255.0,3290.0,3325.0,3360.0,3395.0,3430.0,3465.0,3500.0],"times":[958335.0,2077426.0,3185363.0,3839540.0,4855470.0,5856547.0,6714552.0,7576985.0,8559158.0,9553609.0,10622951.0,11455098.0,12529987.0,13416241.0,14583937.0,15384722.0,16321950.0,17913793.0,18412333.0,19231434.0,20250361.0,22821402.0,24593994.0,26958507.0,32381082.0,30267709.0,29684783.0,31159819.0,37094826.0,32347334.0,30708464.0,31204500.0,32415451.0,33346885.0,34281517.0,35289356.0,36515392.0,37937713.0,38106612.0,39073310.0,40506831.0,41577082.0,42658594.0,43221904.0,44146137.0,45349290.0,45957451.0,46804776.0,47353263.0,48082385.0,48741371.0,50405094.0,55101631.0,59154211.0,56297585.0,57477327.0,57770775.0,57550305.0,58493162.0,60235349.0,60649002.0,61349300.0,62516997.0,63602039.0,64428546.0,65850670.0,67249640.0,68171330.0,69333895.0,69085150.0,69950527.0,71762058.0,72558434.0,72911579.0,73791099.0,75564498.0,74437068.0,74052743.0,77328712.0,84143392.0,84322928.0,86386410.0,85114453.0,82962388.0,84264234.0,86357109.0,87040842.0,86911194.0,88239181.0,89365611.0,90769515.0,91082767.0,92247865.0,96152200.0,94705760.0,95865387.0,96702121.0,98328359.0,99600925.0,101679150.0]}
```
--------------------------------------------------------------------------------
/benchmarks/unindexed-events/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[35.0,70.0,105.0,140.0,175.0,210.0,245.0,280.0,315.0,350.0,385.0,420.0,455.0,490.0,525.0,560.0,595.0,630.0,665.0,700.0,735.0,770.0,805.0,840.0,875.0,910.0,945.0,980.0,1015.0,1050.0,1085.0,1120.0,1155.0,1190.0,1225.0,1260.0,1295.0,1330.0,1365.0,1400.0,1435.0,1470.0,1505.0,1540.0,1575.0,1610.0,1645.0,1680.0,1715.0,1750.0,1785.0,1820.0,1855.0,1890.0,1925.0,1960.0,1995.0,2030.0,2065.0,2100.0,2135.0,2170.0,2205.0,2240.0,2275.0,2310.0,2345.0,2380.0,2415.0,2450.0,2485.0,2520.0,2555.0,2590.0,2625.0,2660.0,2695.0,2730.0,2765.0,2800.0,2835.0,2870.0,2905.0,2940.0,2975.0,3010.0,3045.0,3080.0,3115.0,3150.0,3185.0,3220.0,3255.0,3290.0,3325.0,3360.0,3395.0,3430.0,3465.0,3500.0],"times":[958335.0,2077426.0,3185363.0,3839540.0,4855470.0,5856547.0,6714552.0,7576985.0,8559158.0,9553609.0,10622951.0,11455098.0,12529987.0,13416241.0,14583937.0,15384722.0,16321950.0,17913793.0,18412333.0,19231434.0,20250361.0,22821402.0,24593994.0,26958507.0,32381082.0,30267709.0,29684783.0,31159819.0,37094826.0,32347334.0,30708464.0,31204500.0,32415451.0,33346885.0,34281517.0,35289356.0,36515392.0,37937713.0,38106612.0,39073310.0,40506831.0,41577082.0,42658594.0,43221904.0,44146137.0,45349290.0,45957451.0,46804776.0,47353263.0,48082385.0,48741371.0,50405094.0,55101631.0,59154211.0,56297585.0,57477327.0,57770775.0,57550305.0,58493162.0,60235349.0,60649002.0,61349300.0,62516997.0,63602039.0,64428546.0,65850670.0,67249640.0,68171330.0,69333895.0,69085150.0,69950527.0,71762058.0,72558434.0,72911579.0,73791099.0,75564498.0,74437068.0,74052743.0,77328712.0,84143392.0,84322928.0,86386410.0,85114453.0,82962388.0,84264234.0,86357109.0,87040842.0,86911194.0,88239181.0,89365611.0,90769515.0,91082767.0,92247865.0,96152200.0,94705760.0,95865387.0,96702121.0,98328359.0,99600925.0,101679150.0]}
```
--------------------------------------------------------------------------------
/benchmarks/useless-modifier/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[38.0,76.0,114.0,152.0,190.0,228.0,266.0,304.0,342.0,380.0,418.0,456.0,494.0,532.0,570.0,608.0,646.0,684.0,722.0,760.0,798.0,836.0,874.0,912.0,950.0,988.0,1026.0,1064.0,1102.0,1140.0,1178.0,1216.0,1254.0,1292.0,1330.0,1368.0,1406.0,1444.0,1482.0,1520.0,1558.0,1596.0,1634.0,1672.0,1710.0,1748.0,1786.0,1824.0,1862.0,1900.0,1938.0,1976.0,2014.0,2052.0,2090.0,2128.0,2166.0,2204.0,2242.0,2280.0,2318.0,2356.0,2394.0,2432.0,2470.0,2508.0,2546.0,2584.0,2622.0,2660.0,2698.0,2736.0,2774.0,2812.0,2850.0,2888.0,2926.0,2964.0,3002.0,3040.0,3078.0,3116.0,3154.0,3192.0,3230.0,3268.0,3306.0,3344.0,3382.0,3420.0,3458.0,3496.0,3534.0,3572.0,3610.0,3648.0,3686.0,3724.0,3762.0,3800.0],"times":[1000898.0,2000658.0,3807676.0,4091968.0,5206770.0,6350277.0,6859289.0,7841732.0,8817467.0,9799552.0,10779046.0,11759737.0,12733736.0,13758813.0,14704430.0,15680763.0,16659286.0,17640217.0,18625698.0,19629828.0,20592056.0,21599075.0,22666452.0,23909303.0,24932891.0,25895033.0,27572095.0,26676194.0,27622190.0,28563879.0,29557504.0,30507407.0,31437487.0,32594366.0,34333954.0,35380791.0,36235845.0,36859005.0,38093053.0,38454785.0,39468062.0,40914708.0,42229769.0,43156227.0,43457740.0,44458366.0,44308156.0,45653806.0,46398753.0,47565302.0,48569982.0,49212044.0,50313290.0,51570394.0,52407741.0,51777198.0,52736932.0,53669727.0,54607475.0,55546355.0,57049228.0,59755668.0,60082371.0,61267901.0,62096520.0,62598997.0,62979669.0,64034286.0,64981992.0,66508255.0,66074139.0,66681259.0,67597767.0,68264472.0,68592499.0,69514326.0,71079081.0,71982434.0,72176626.0,73020188.0,73861073.0,74895962.0,76078298.0,77085484.0,76528190.0,78570632.0,79045423.0,79948318.0,79543362.0,80751638.0,83012160.0,82077868.0,83052316.0,83754813.0,84337927.0,86710827.0,87147209.0,87471193.0,95634828.0,91797079.0]}
```
--------------------------------------------------------------------------------
/benchmarks/useless-modifier/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[38.0,76.0,114.0,152.0,190.0,228.0,266.0,304.0,342.0,380.0,418.0,456.0,494.0,532.0,570.0,608.0,646.0,684.0,722.0,760.0,798.0,836.0,874.0,912.0,950.0,988.0,1026.0,1064.0,1102.0,1140.0,1178.0,1216.0,1254.0,1292.0,1330.0,1368.0,1406.0,1444.0,1482.0,1520.0,1558.0,1596.0,1634.0,1672.0,1710.0,1748.0,1786.0,1824.0,1862.0,1900.0,1938.0,1976.0,2014.0,2052.0,2090.0,2128.0,2166.0,2204.0,2242.0,2280.0,2318.0,2356.0,2394.0,2432.0,2470.0,2508.0,2546.0,2584.0,2622.0,2660.0,2698.0,2736.0,2774.0,2812.0,2850.0,2888.0,2926.0,2964.0,3002.0,3040.0,3078.0,3116.0,3154.0,3192.0,3230.0,3268.0,3306.0,3344.0,3382.0,3420.0,3458.0,3496.0,3534.0,3572.0,3610.0,3648.0,3686.0,3724.0,3762.0,3800.0],"times":[1000898.0,2000658.0,3807676.0,4091968.0,5206770.0,6350277.0,6859289.0,7841732.0,8817467.0,9799552.0,10779046.0,11759737.0,12733736.0,13758813.0,14704430.0,15680763.0,16659286.0,17640217.0,18625698.0,19629828.0,20592056.0,21599075.0,22666452.0,23909303.0,24932891.0,25895033.0,27572095.0,26676194.0,27622190.0,28563879.0,29557504.0,30507407.0,31437487.0,32594366.0,34333954.0,35380791.0,36235845.0,36859005.0,38093053.0,38454785.0,39468062.0,40914708.0,42229769.0,43156227.0,43457740.0,44458366.0,44308156.0,45653806.0,46398753.0,47565302.0,48569982.0,49212044.0,50313290.0,51570394.0,52407741.0,51777198.0,52736932.0,53669727.0,54607475.0,55546355.0,57049228.0,59755668.0,60082371.0,61267901.0,62096520.0,62598997.0,62979669.0,64034286.0,64981992.0,66508255.0,66074139.0,66681259.0,67597767.0,68264472.0,68592499.0,69514326.0,71079081.0,71982434.0,72176626.0,73020188.0,73861073.0,74895962.0,76078298.0,77085484.0,76528190.0,78570632.0,79045423.0,79948318.0,79543362.0,80751638.0,83012160.0,82077868.0,83052316.0,83754813.0,84337927.0,86710827.0,87147209.0,87471193.0,95634828.0,91797079.0]}
```
--------------------------------------------------------------------------------
/benchmarks/unspecific-solidity-pragma/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[53.0,106.0,159.0,212.0,265.0,318.0,371.0,424.0,477.0,530.0,583.0,636.0,689.0,742.0,795.0,848.0,901.0,954.0,1007.0,1060.0,1113.0,1166.0,1219.0,1272.0,1325.0,1378.0,1431.0,1484.0,1537.0,1590.0,1643.0,1696.0,1749.0,1802.0,1855.0,1908.0,1961.0,2014.0,2067.0,2120.0,2173.0,2226.0,2279.0,2332.0,2385.0,2438.0,2491.0,2544.0,2597.0,2650.0,2703.0,2756.0,2809.0,2862.0,2915.0,2968.0,3021.0,3074.0,3127.0,3180.0,3233.0,3286.0,3339.0,3392.0,3445.0,3498.0,3551.0,3604.0,3657.0,3710.0,3763.0,3816.0,3869.0,3922.0,3975.0,4028.0,4081.0,4134.0,4187.0,4240.0,4293.0,4346.0,4399.0,4452.0,4505.0,4558.0,4611.0,4664.0,4717.0,4770.0,4823.0,4876.0,4929.0,4982.0,5035.0,5088.0,5141.0,5194.0,5247.0,5300.0],"times":[918834.0,1852480.0,2996435.0,4132180.0,4595080.0,5723924.0,6722419.0,7287233.0,8278345.0,9157781.0,10155316.0,10923867.0,11832236.0,12740926.0,13645597.0,14579025.0,15436148.0,16387191.0,17233012.0,18754542.0,19119635.0,20067286.0,21004521.0,21891510.0,22806932.0,23730338.0,24674678.0,25648729.0,26577903.0,27461031.0,28424755.0,29294696.0,30033986.0,30977758.0,31961496.0,32798474.0,33714089.0,34612951.0,35415106.0,36316492.0,37614638.0,37061009.0,37944063.0,38858009.0,39718991.0,40606307.0,41496007.0,42353922.0,43219605.0,44281096.0,45717044.0,46156764.0,47013014.0,47846901.0,48770392.0,49714805.0,50555226.0,51678122.0,52212427.0,53207353.0,52670411.0,53527699.0,54307191.0,55339663.0,55848705.0,56676879.0,57696391.0,58523317.0,59470874.0,60418049.0,60979588.0,61893794.0,62870569.0,63486628.0,64447694.0,65529124.0,66443721.0,67112766.0,68005413.0,68906600.0,69761024.0,68706263.0,69337822.0,70138378.0,71732450.0,72395860.0,73098787.0,73796647.0,74354277.0,74992398.0,76087141.0,76956329.0,81579865.0,81058214.0,79610490.0,80493712.0,80988092.0,81445238.0,81430030.0,82047878.0]}
```
--------------------------------------------------------------------------------
/benchmarks/unspecific-solidity-pragma/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[53.0,106.0,159.0,212.0,265.0,318.0,371.0,424.0,477.0,530.0,583.0,636.0,689.0,742.0,795.0,848.0,901.0,954.0,1007.0,1060.0,1113.0,1166.0,1219.0,1272.0,1325.0,1378.0,1431.0,1484.0,1537.0,1590.0,1643.0,1696.0,1749.0,1802.0,1855.0,1908.0,1961.0,2014.0,2067.0,2120.0,2173.0,2226.0,2279.0,2332.0,2385.0,2438.0,2491.0,2544.0,2597.0,2650.0,2703.0,2756.0,2809.0,2862.0,2915.0,2968.0,3021.0,3074.0,3127.0,3180.0,3233.0,3286.0,3339.0,3392.0,3445.0,3498.0,3551.0,3604.0,3657.0,3710.0,3763.0,3816.0,3869.0,3922.0,3975.0,4028.0,4081.0,4134.0,4187.0,4240.0,4293.0,4346.0,4399.0,4452.0,4505.0,4558.0,4611.0,4664.0,4717.0,4770.0,4823.0,4876.0,4929.0,4982.0,5035.0,5088.0,5141.0,5194.0,5247.0,5300.0],"times":[918834.0,1852480.0,2996435.0,4132180.0,4595080.0,5723924.0,6722419.0,7287233.0,8278345.0,9157781.0,10155316.0,10923867.0,11832236.0,12740926.0,13645597.0,14579025.0,15436148.0,16387191.0,17233012.0,18754542.0,19119635.0,20067286.0,21004521.0,21891510.0,22806932.0,23730338.0,24674678.0,25648729.0,26577903.0,27461031.0,28424755.0,29294696.0,30033986.0,30977758.0,31961496.0,32798474.0,33714089.0,34612951.0,35415106.0,36316492.0,37614638.0,37061009.0,37944063.0,38858009.0,39718991.0,40606307.0,41496007.0,42353922.0,43219605.0,44281096.0,45717044.0,46156764.0,47013014.0,47846901.0,48770392.0,49714805.0,50555226.0,51678122.0,52212427.0,53207353.0,52670411.0,53527699.0,54307191.0,55339663.0,55848705.0,56676879.0,57696391.0,58523317.0,59470874.0,60418049.0,60979588.0,61893794.0,62870569.0,63486628.0,64447694.0,65529124.0,66443721.0,67112766.0,68005413.0,68906600.0,69761024.0,68706263.0,69337822.0,70138378.0,71732450.0,72395860.0,73098787.0,73796647.0,74354277.0,74992398.0,76087141.0,76956329.0,81579865.0,81058214.0,79610490.0,80493712.0,80988092.0,81445238.0,81430030.0,82047878.0]}
```
--------------------------------------------------------------------------------
/benchmarks/useless-internal-function/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[61.0,122.0,183.0,244.0,305.0,366.0,427.0,488.0,549.0,610.0,671.0,732.0,793.0,854.0,915.0,976.0,1037.0,1098.0,1159.0,1220.0,1281.0,1342.0,1403.0,1464.0,1525.0,1586.0,1647.0,1708.0,1769.0,1830.0,1891.0,1952.0,2013.0,2074.0,2135.0,2196.0,2257.0,2318.0,2379.0,2440.0,2501.0,2562.0,2623.0,2684.0,2745.0,2806.0,2867.0,2928.0,2989.0,3050.0,3111.0,3172.0,3233.0,3294.0,3355.0,3416.0,3477.0,3538.0,3599.0,3660.0,3721.0,3782.0,3843.0,3904.0,3965.0,4026.0,4087.0,4148.0,4209.0,4270.0,4331.0,4392.0,4453.0,4514.0,4575.0,4636.0,4697.0,4758.0,4819.0,4880.0,4941.0,5002.0,5063.0,5124.0,5185.0,5246.0,5307.0,5368.0,5429.0,5490.0,5551.0,5612.0,5673.0,5734.0,5795.0,5856.0,5917.0,5978.0,6039.0,6100.0],"times":[1106324.0,2955651.0,3561764.0,3791536.0,5324088.0,6576151.0,6647921.0,8093746.0,8880572.0,9808345.0,10523661.0,11701426.0,12659951.0,13300781.0,14687248.0,25577164.0,17801656.0,22534121.0,26591468.0,19922210.0,20322329.0,21428098.0,23164558.0,27500038.0,26103106.0,25546526.0,26816491.0,27654232.0,27860667.0,31509264.0,30202932.0,30821871.0,32124397.0,33541227.0,33862561.0,54006890.0,73763683.0,47095375.0,44314294.0,41085445.0,40780640.0,46220237.0,41356765.0,43490445.0,43623754.0,43565436.0,45915791.0,50367970.0,52553018.0,50254706.0,48368677.0,48708848.0,49712003.0,50569905.0,51800569.0,52311116.0,54345111.0,59900823.0,60277667.0,62487439.0,58287770.0,61357512.0,60828734.0,62025285.0,67277017.0,67566559.0,64856922.0,66749895.0,66689603.0,67237138.0,68159746.0,71572084.0,71203773.0,73545138.0,74335896.0,74292464.0,73923607.0,74133306.0,77138090.0,78059182.0,77970348.0,77650109.0,78891611.0,79309867.0,78226524.0,80183753.0,80194510.0,80297152.0,81024033.0,81972347.0,83415575.0,88217848.0,93150590.0,91186773.0,93009667.0,92135593.0,93042140.0,110885086.0,97433476.0,95970244.0]}
```
--------------------------------------------------------------------------------
/benchmarks/useless-internal-function/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[61.0,122.0,183.0,244.0,305.0,366.0,427.0,488.0,549.0,610.0,671.0,732.0,793.0,854.0,915.0,976.0,1037.0,1098.0,1159.0,1220.0,1281.0,1342.0,1403.0,1464.0,1525.0,1586.0,1647.0,1708.0,1769.0,1830.0,1891.0,1952.0,2013.0,2074.0,2135.0,2196.0,2257.0,2318.0,2379.0,2440.0,2501.0,2562.0,2623.0,2684.0,2745.0,2806.0,2867.0,2928.0,2989.0,3050.0,3111.0,3172.0,3233.0,3294.0,3355.0,3416.0,3477.0,3538.0,3599.0,3660.0,3721.0,3782.0,3843.0,3904.0,3965.0,4026.0,4087.0,4148.0,4209.0,4270.0,4331.0,4392.0,4453.0,4514.0,4575.0,4636.0,4697.0,4758.0,4819.0,4880.0,4941.0,5002.0,5063.0,5124.0,5185.0,5246.0,5307.0,5368.0,5429.0,5490.0,5551.0,5612.0,5673.0,5734.0,5795.0,5856.0,5917.0,5978.0,6039.0,6100.0],"times":[1106324.0,2955651.0,3561764.0,3791536.0,5324088.0,6576151.0,6647921.0,8093746.0,8880572.0,9808345.0,10523661.0,11701426.0,12659951.0,13300781.0,14687248.0,25577164.0,17801656.0,22534121.0,26591468.0,19922210.0,20322329.0,21428098.0,23164558.0,27500038.0,26103106.0,25546526.0,26816491.0,27654232.0,27860667.0,31509264.0,30202932.0,30821871.0,32124397.0,33541227.0,33862561.0,54006890.0,73763683.0,47095375.0,44314294.0,41085445.0,40780640.0,46220237.0,41356765.0,43490445.0,43623754.0,43565436.0,45915791.0,50367970.0,52553018.0,50254706.0,48368677.0,48708848.0,49712003.0,50569905.0,51800569.0,52311116.0,54345111.0,59900823.0,60277667.0,62487439.0,58287770.0,61357512.0,60828734.0,62025285.0,67277017.0,67566559.0,64856922.0,66749895.0,66689603.0,67237138.0,68159746.0,71572084.0,71203773.0,73545138.0,74335896.0,74292464.0,73923607.0,74133306.0,77138090.0,78059182.0,77970348.0,77650109.0,78891611.0,79309867.0,78226524.0,80183753.0,80194510.0,80297152.0,81024033.0,81972347.0,83415575.0,88217848.0,93150590.0,91186773.0,93009667.0,92135593.0,93042140.0,110885086.0,97433476.0,95970244.0]}
```
--------------------------------------------------------------------------------
/benchmarks/avoid-abi-encode-packed/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[69.0,138.0,207.0,276.0,345.0,414.0,483.0,552.0,621.0,690.0,759.0,828.0,897.0,966.0,1035.0,1104.0,1173.0,1242.0,1311.0,1380.0,1449.0,1518.0,1587.0,1656.0,1725.0,1794.0,1863.0,1932.0,2001.0,2070.0,2139.0,2208.0,2277.0,2346.0,2415.0,2484.0,2553.0,2622.0,2691.0,2760.0,2829.0,2898.0,2967.0,3036.0,3105.0,3174.0,3243.0,3312.0,3381.0,3450.0,3519.0,3588.0,3657.0,3726.0,3795.0,3864.0,3933.0,4002.0,4071.0,4140.0,4209.0,4278.0,4347.0,4416.0,4485.0,4554.0,4623.0,4692.0,4761.0,4830.0,4899.0,4968.0,5037.0,5106.0,5175.0,5244.0,5313.0,5382.0,5451.0,5520.0,5589.0,5658.0,5727.0,5796.0,5865.0,5934.0,6003.0,6072.0,6141.0,6210.0,6279.0,6348.0,6417.0,6486.0,6555.0,6624.0,6693.0,6762.0,6831.0,6900.0],"times":[1084378.0,2032039.0,3694575.0,4167388.0,5028346.0,5994926.0,7135730.0,7689896.0,12543816.0,9485979.0,10662187.0,11732832.0,12713132.0,13686539.0,14775636.0,15678255.0,16769466.0,17578766.0,18668854.0,19380352.0,20704674.0,21826828.0,22895883.0,23912441.0,24389877.0,25094718.0,26731678.0,27925574.0,28929232.0,30086890.0,31134752.0,32228606.0,33100803.0,33959602.0,35113877.0,36264727.0,37369174.0,38180461.0,39283418.0,40038629.0,41134841.0,42238151.0,43138747.0,43969893.0,45138390.0,46074006.0,47574662.0,51911726.0,50671362.0,50265757.0,48825172.0,50220442.0,51846084.0,52107184.0,54364355.0,55725096.0,54959777.0,56507796.0,57809268.0,57150033.0,59145496.0,60153915.0,61162558.0,61861115.0,63481526.0,63935768.0,66398512.0,67510402.0,67481631.0,69489239.0,70637957.0,71623143.0,72595907.0,73503955.0,74461359.0,72558000.0,74888292.0,75582974.0,77065549.0,77327161.0,78678466.0,79765119.0,80226076.0,81061697.0,82554576.0,87411524.0,91533805.0,87488803.0,87442585.0,88185668.0,87766634.0,89132543.0,90035691.0,89968953.0,93712004.0,95112285.0,96318855.0,94983974.0,97664635.0,98201279.0]}
```
--------------------------------------------------------------------------------
/benchmarks/avoid-abi-encode-packed/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[69.0,138.0,207.0,276.0,345.0,414.0,483.0,552.0,621.0,690.0,759.0,828.0,897.0,966.0,1035.0,1104.0,1173.0,1242.0,1311.0,1380.0,1449.0,1518.0,1587.0,1656.0,1725.0,1794.0,1863.0,1932.0,2001.0,2070.0,2139.0,2208.0,2277.0,2346.0,2415.0,2484.0,2553.0,2622.0,2691.0,2760.0,2829.0,2898.0,2967.0,3036.0,3105.0,3174.0,3243.0,3312.0,3381.0,3450.0,3519.0,3588.0,3657.0,3726.0,3795.0,3864.0,3933.0,4002.0,4071.0,4140.0,4209.0,4278.0,4347.0,4416.0,4485.0,4554.0,4623.0,4692.0,4761.0,4830.0,4899.0,4968.0,5037.0,5106.0,5175.0,5244.0,5313.0,5382.0,5451.0,5520.0,5589.0,5658.0,5727.0,5796.0,5865.0,5934.0,6003.0,6072.0,6141.0,6210.0,6279.0,6348.0,6417.0,6486.0,6555.0,6624.0,6693.0,6762.0,6831.0,6900.0],"times":[1084378.0,2032039.0,3694575.0,4167388.0,5028346.0,5994926.0,7135730.0,7689896.0,12543816.0,9485979.0,10662187.0,11732832.0,12713132.0,13686539.0,14775636.0,15678255.0,16769466.0,17578766.0,18668854.0,19380352.0,20704674.0,21826828.0,22895883.0,23912441.0,24389877.0,25094718.0,26731678.0,27925574.0,28929232.0,30086890.0,31134752.0,32228606.0,33100803.0,33959602.0,35113877.0,36264727.0,37369174.0,38180461.0,39283418.0,40038629.0,41134841.0,42238151.0,43138747.0,43969893.0,45138390.0,46074006.0,47574662.0,51911726.0,50671362.0,50265757.0,48825172.0,50220442.0,51846084.0,52107184.0,54364355.0,55725096.0,54959777.0,56507796.0,57809268.0,57150033.0,59145496.0,60153915.0,61162558.0,61861115.0,63481526.0,63935768.0,66398512.0,67510402.0,67481631.0,69489239.0,70637957.0,71623143.0,72595907.0,73503955.0,74461359.0,72558000.0,74888292.0,75582974.0,77065549.0,77327161.0,78678466.0,79765119.0,80226076.0,81061697.0,82554576.0,87411524.0,91533805.0,87488803.0,87442585.0,88185668.0,87766634.0,89132543.0,90035691.0,89968953.0,93712004.0,95112285.0,96318855.0,94983974.0,97664635.0,98201279.0]}
```
--------------------------------------------------------------------------------
/benchmarks/centralization-risk/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[78.0,156.0,234.0,312.0,390.0,468.0,546.0,624.0,702.0,780.0,858.0,936.0,1014.0,1092.0,1170.0,1248.0,1326.0,1404.0,1482.0,1560.0,1638.0,1716.0,1794.0,1872.0,1950.0,2028.0,2106.0,2184.0,2262.0,2340.0,2418.0,2496.0,2574.0,2652.0,2730.0,2808.0,2886.0,2964.0,3042.0,3120.0,3198.0,3276.0,3354.0,3432.0,3510.0,3588.0,3666.0,3744.0,3822.0,3900.0,3978.0,4056.0,4134.0,4212.0,4290.0,4368.0,4446.0,4524.0,4602.0,4680.0,4758.0,4836.0,4914.0,4992.0,5070.0,5148.0,5226.0,5304.0,5382.0,5460.0,5538.0,5616.0,5694.0,5772.0,5850.0,5928.0,6006.0,6084.0,6162.0,6240.0,6318.0,6396.0,6474.0,6552.0,6630.0,6708.0,6786.0,6864.0,6942.0,7020.0,7098.0,7176.0,7254.0,7332.0,7410.0,7488.0,7566.0,7644.0,7722.0,7800.0],"times":[987055.0,2093861.0,2937619.0,3808127.0,4956181.0,6055950.0,6872682.0,7721892.0,8704057.0,9410808.0,11464734.0,12922383.0,12665349.0,13213119.0,14339480.0,14880369.0,16474944.0,16807275.0,18291717.0,18472924.0,19539450.0,20542319.0,21679577.0,23165032.0,24401838.0,25290057.0,26280944.0,27104561.0,27805016.0,29763263.0,31348525.0,35568935.0,34741515.0,34769500.0,33198529.0,33359769.0,34486437.0,35926461.0,37165649.0,36950351.0,37477991.0,39672574.0,43242288.0,46399734.0,41445801.0,43086913.0,45221995.0,45739283.0,57081842.0,58958000.0,49085825.0,49961845.0,50784920.0,52040308.0,53171710.0,55493511.0,55024148.0,56039385.0,57334770.0,57751704.0,60500632.0,59522244.0,60143584.0,64446976.0,75452508.0,65682613.0,64019245.0,63825358.0,63619073.0,64995774.0,67069981.0,69488575.0,70599246.0,71358306.0,72313495.0,71915161.0,72241195.0,71712852.0,74412353.0,75415507.0,79996139.0,83074779.0,83819318.0,84496021.0,86466493.0,82864954.0,82623038.0,81589749.0,84102738.0,84489430.0,84887958.0,85218632.0,91951625.0,94914921.0,97304200.0,93474904.0,90235290.0,93990606.0,95548745.0,96489954.0]}
```
--------------------------------------------------------------------------------
/benchmarks/centralization-risk/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[78.0,156.0,234.0,312.0,390.0,468.0,546.0,624.0,702.0,780.0,858.0,936.0,1014.0,1092.0,1170.0,1248.0,1326.0,1404.0,1482.0,1560.0,1638.0,1716.0,1794.0,1872.0,1950.0,2028.0,2106.0,2184.0,2262.0,2340.0,2418.0,2496.0,2574.0,2652.0,2730.0,2808.0,2886.0,2964.0,3042.0,3120.0,3198.0,3276.0,3354.0,3432.0,3510.0,3588.0,3666.0,3744.0,3822.0,3900.0,3978.0,4056.0,4134.0,4212.0,4290.0,4368.0,4446.0,4524.0,4602.0,4680.0,4758.0,4836.0,4914.0,4992.0,5070.0,5148.0,5226.0,5304.0,5382.0,5460.0,5538.0,5616.0,5694.0,5772.0,5850.0,5928.0,6006.0,6084.0,6162.0,6240.0,6318.0,6396.0,6474.0,6552.0,6630.0,6708.0,6786.0,6864.0,6942.0,7020.0,7098.0,7176.0,7254.0,7332.0,7410.0,7488.0,7566.0,7644.0,7722.0,7800.0],"times":[987055.0,2093861.0,2937619.0,3808127.0,4956181.0,6055950.0,6872682.0,7721892.0,8704057.0,9410808.0,11464734.0,12922383.0,12665349.0,13213119.0,14339480.0,14880369.0,16474944.0,16807275.0,18291717.0,18472924.0,19539450.0,20542319.0,21679577.0,23165032.0,24401838.0,25290057.0,26280944.0,27104561.0,27805016.0,29763263.0,31348525.0,35568935.0,34741515.0,34769500.0,33198529.0,33359769.0,34486437.0,35926461.0,37165649.0,36950351.0,37477991.0,39672574.0,43242288.0,46399734.0,41445801.0,43086913.0,45221995.0,45739283.0,57081842.0,58958000.0,49085825.0,49961845.0,50784920.0,52040308.0,53171710.0,55493511.0,55024148.0,56039385.0,57334770.0,57751704.0,60500632.0,59522244.0,60143584.0,64446976.0,75452508.0,65682613.0,64019245.0,63825358.0,63619073.0,64995774.0,67069981.0,69488575.0,70599246.0,71358306.0,72313495.0,71915161.0,72241195.0,71712852.0,74412353.0,75415507.0,79996139.0,83074779.0,83819318.0,84496021.0,86466493.0,82864954.0,82623038.0,81589749.0,84102738.0,84489430.0,84887958.0,85218632.0,91951625.0,94914921.0,97304200.0,93474904.0,90235290.0,93990606.0,95548745.0,96489954.0]}
```
--------------------------------------------------------------------------------
/benchmarks/delegate-call-in-loop/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[81.0,162.0,243.0,324.0,405.0,486.0,567.0,648.0,729.0,810.0,891.0,972.0,1053.0,1134.0,1215.0,1296.0,1377.0,1458.0,1539.0,1620.0,1701.0,1782.0,1863.0,1944.0,2025.0,2106.0,2187.0,2268.0,2349.0,2430.0,2511.0,2592.0,2673.0,2754.0,2835.0,2916.0,2997.0,3078.0,3159.0,3240.0,3321.0,3402.0,3483.0,3564.0,3645.0,3726.0,3807.0,3888.0,3969.0,4050.0,4131.0,4212.0,4293.0,4374.0,4455.0,4536.0,4617.0,4698.0,4779.0,4860.0,4941.0,5022.0,5103.0,5184.0,5265.0,5346.0,5427.0,5508.0,5589.0,5670.0,5751.0,5832.0,5913.0,5994.0,6075.0,6156.0,6237.0,6318.0,6399.0,6480.0,6561.0,6642.0,6723.0,6804.0,6885.0,6966.0,7047.0,7128.0,7209.0,7290.0,7371.0,7452.0,7533.0,7614.0,7695.0,7776.0,7857.0,7938.0,8019.0,8100.0],"times":[1020768.0,2642230.0,2889233.0,3593105.0,4830174.0,5416648.0,6714019.0,7193325.0,8098053.0,9120656.0,9740612.0,10791630.0,11626654.0,12881773.0,14200909.0,15555966.0,16393434.0,19243333.0,18603790.0,20774496.0,19130540.0,20617074.0,21040471.0,21220515.0,22255267.0,23391487.0,24550882.0,25096607.0,26402965.0,28033173.0,28989210.0,29055646.0,30372636.0,31401847.0,32167316.0,33212597.0,34144492.0,35086367.0,35966056.0,37066675.0,37892736.0,38724086.0,39630160.0,40553309.0,43578054.0,42176907.0,42689625.0,43963409.0,45091835.0,46197204.0,47457494.0,46258496.0,46677261.0,47876674.0,48614770.0,52108626.0,51091086.0,52500558.0,53814379.0,55152656.0,56187671.0,56851415.0,58002204.0,58808334.0,60564034.0,58976723.0,60441055.0,61757482.0,62666497.0,63484270.0,63049373.0,63815135.0,66864661.0,66898326.0,67850190.0,68847747.0,71010410.0,72684515.0,78366275.0,75103099.0,73954713.0,74405633.0,74043898.0,76780800.0,77799980.0,79658578.0,81505885.0,80303902.0,81953960.0,82799929.0,83802480.0,84541479.0,85228406.0,83657186.0,85122804.0,87744970.0,89254125.0,91274121.0,90040754.0,91405716.0]}
```
--------------------------------------------------------------------------------
/benchmarks/delegate-call-in-loop/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[81.0,162.0,243.0,324.0,405.0,486.0,567.0,648.0,729.0,810.0,891.0,972.0,1053.0,1134.0,1215.0,1296.0,1377.0,1458.0,1539.0,1620.0,1701.0,1782.0,1863.0,1944.0,2025.0,2106.0,2187.0,2268.0,2349.0,2430.0,2511.0,2592.0,2673.0,2754.0,2835.0,2916.0,2997.0,3078.0,3159.0,3240.0,3321.0,3402.0,3483.0,3564.0,3645.0,3726.0,3807.0,3888.0,3969.0,4050.0,4131.0,4212.0,4293.0,4374.0,4455.0,4536.0,4617.0,4698.0,4779.0,4860.0,4941.0,5022.0,5103.0,5184.0,5265.0,5346.0,5427.0,5508.0,5589.0,5670.0,5751.0,5832.0,5913.0,5994.0,6075.0,6156.0,6237.0,6318.0,6399.0,6480.0,6561.0,6642.0,6723.0,6804.0,6885.0,6966.0,7047.0,7128.0,7209.0,7290.0,7371.0,7452.0,7533.0,7614.0,7695.0,7776.0,7857.0,7938.0,8019.0,8100.0],"times":[1020768.0,2642230.0,2889233.0,3593105.0,4830174.0,5416648.0,6714019.0,7193325.0,8098053.0,9120656.0,9740612.0,10791630.0,11626654.0,12881773.0,14200909.0,15555966.0,16393434.0,19243333.0,18603790.0,20774496.0,19130540.0,20617074.0,21040471.0,21220515.0,22255267.0,23391487.0,24550882.0,25096607.0,26402965.0,28033173.0,28989210.0,29055646.0,30372636.0,31401847.0,32167316.0,33212597.0,34144492.0,35086367.0,35966056.0,37066675.0,37892736.0,38724086.0,39630160.0,40553309.0,43578054.0,42176907.0,42689625.0,43963409.0,45091835.0,46197204.0,47457494.0,46258496.0,46677261.0,47876674.0,48614770.0,52108626.0,51091086.0,52500558.0,53814379.0,55152656.0,56187671.0,56851415.0,58002204.0,58808334.0,60564034.0,58976723.0,60441055.0,61757482.0,62666497.0,63484270.0,63049373.0,63815135.0,66864661.0,66898326.0,67850190.0,68847747.0,71010410.0,72684515.0,78366275.0,75103099.0,73954713.0,74405633.0,74043898.0,76780800.0,77799980.0,79658578.0,81505885.0,80303902.0,81953960.0,82799929.0,83802480.0,84541479.0,85228406.0,83657186.0,85122804.0,87744970.0,89254125.0,91274121.0,90040754.0,91405716.0]}
```
--------------------------------------------------------------------------------
/tests/ast/string.json:
--------------------------------------------------------------------------------
```json
1 | {"absolutePath":"a","exportedSymbols":{"C":[9]},"id":10,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9,"linearizedBaseContracts":[9],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":7,"nodeType":"Block","src":"33:36:1","statements":[{"assignments":[4],"declarations":[{"constant":false,"id":4,"mutability":"mutable","name":"x","nameLocation":"49:1:1","nodeType":"VariableDeclaration","scope":7,"src":"35:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3,"name":"string","nodeType":"ElementaryTypeName","src":"35:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":6,"initialValue":{"hexValue":"48656c6c6f20576f726c64","id":5,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53:13:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba","typeString":"literal_string \"Hello World\""},"value":"Hello World"},"nodeType":"VariableDeclarationStatement","src":"35:31:1"}]},"functionSelector":"26121ff0","id":8,"implemented":true,"kind":"function","modifiers":[],"name":"f","nameLocation":"22:1:1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"23:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"33:0:1"},"scope":9,"src":"13:56:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":10,"src":"0:71:1","usedErrors":[]}],"src":"0:72:1"}
2 |
```
--------------------------------------------------------------------------------
/aderyn_core/tests/common/sibling.rs:
--------------------------------------------------------------------------------
```rust
1 | use std::{collections::BTreeMap, error::Error};
2 |
3 | use aderyn_core::{
4 | ast::NodeID,
5 | capture,
6 | context::{
7 | browser::{
8 | GetImmediateChildren, GetNextSibling, GetPreviousSibling, SortNodeReferencesToSequence,
9 | },
10 | workspace::WorkspaceContext,
11 | },
12 | detect::detector::{IssueDetector, IssueDetectorNamePool, IssueSeverity},
13 | };
14 | use eyre::Result;
15 |
16 | #[derive(Default)]
17 | pub struct SiblingDemonstrator {
18 | // Keys are: [0] source file name, [1] line number, [2] character location of node.
19 | // Do not add items manually, use `capture!` to add nodes to this BTreeMap.
20 | found_instances: BTreeMap<(String, usize, String), NodeID>,
21 | }
22 |
23 | impl IssueDetector for SiblingDemonstrator {
24 | fn detect(&mut self, context: &WorkspaceContext) -> Result<bool, Box<dyn Error>> {
25 | for contract in context.contract_definitions() {
26 | if let Some(children) = contract.children(context)
27 | && let Some(sorted) = children.sort_by_src_position(context)
28 | {
29 | assert!(sorted.len() >= 2);
30 | assert!(sorted[1].previous_sibling(context).unwrap() == sorted[0]);
31 | assert!(sorted[0].next_sibling(context).unwrap() == sorted[1]);
32 | capture!(self, context, sorted[1]);
33 | }
34 | }
35 |
36 | Ok(!self.found_instances.is_empty())
37 | }
38 |
39 | fn severity(&self) -> IssueSeverity {
40 | IssueSeverity::High
41 | }
42 |
43 | fn title(&self) -> String {
44 | String::from("Sibling Demonstration")
45 | }
46 |
47 | fn description(&self) -> String {
48 | String::from("Sibling Demonstration")
49 | }
50 |
51 | fn instances(&self) -> BTreeMap<(String, usize, String), NodeID> {
52 | self.found_instances.clone()
53 | }
54 |
55 | fn name(&self) -> String {
56 | format!("{}", IssueDetectorNamePool::CentralizationRisk)
57 | }
58 | }
59 |
```
--------------------------------------------------------------------------------
/tests/ast/unicode.json:
--------------------------------------------------------------------------------
```json
1 | {"absolutePath":"a","exportedSymbols":{"C":[9]},"id":10,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9,"linearizedBaseContracts":[9],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":7,"nodeType":"Block","src":"33:42:1","statements":[{"assignments":[4],"declarations":[{"constant":false,"id":4,"mutability":"mutable","name":"x","nameLocation":"49:1:1","nodeType":"VariableDeclaration","scope":7,"src":"35:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3,"name":"string","nodeType":"ElementaryTypeName","src":"35:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":6,"initialValue":{"hexValue":"48656c6c6f20f09f9883","id":5,"isConstant":false,"isLValue":false,"isPure":true,"kind":"unicodeString","lValueRequested":false,"nodeType":"Literal","src":"53:19:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_cd7a99177cebb3d14b8cc54e313dbf76867c71cd6fbb9a33ce3870dc80e9992b","typeString":"literal_string hex\"48656c6c6f20f09f9883\""},"value":"Hello 😃"},"nodeType":"VariableDeclarationStatement","src":"35:37:1"}]},"functionSelector":"26121ff0","id":8,"implemented":true,"kind":"function","modifiers":[],"name":"f","nameLocation":"22:1:1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"23:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"33:0:1"},"scope":9,"src":"13:62:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":10,"src":"0:77:1","usedErrors":[]}],"src":"0:78:1"}
2 |
```
--------------------------------------------------------------------------------
/tests/ast/short_type_name_ref.json:
--------------------------------------------------------------------------------
```json
1 | {"absolutePath":"a","exportedSymbols":{"c":[12]},"id":13,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"c","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":12,"linearizedBaseContracts":[12],"name":"c","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":10,"nodeType":"Block","src":"33:25:1","statements":[{"assignments":[8],"declarations":[{"constant":false,"id":8,"mutability":"mutable","name":"rows","nameLocation":"51:4:1","nodeType":"VariableDeclaration","scope":10,"src":"35:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":5,"name":"uint","nodeType":"ElementaryTypeName","src":"35:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6,"nodeType":"ArrayTypeName","src":"35:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":7,"nodeType":"ArrayTypeName","src":"35:8:1","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"id":9,"nodeType":"VariableDeclarationStatement","src":"35:20:1"}]},"functionSelector":"26121ff0","id":11,"implemented":true,"kind":"function","modifiers":[],"name":"f","nameLocation":"22:1:1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"23:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"33:0:1"},"scope":12,"src":"13:45:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":13,"src":"0:60:1","usedErrors":[]}],"src":"0:61:1"}
2 |
```
--------------------------------------------------------------------------------
/tests/ast/loop.json:
--------------------------------------------------------------------------------
```json
1 | {"absolutePath":"a","exportedSymbols":{"C":[6]},"id":7,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":6,"linearizedBaseContracts":[6],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":4,"nodeType":"Block","src":"42:74:1","statements":[{"AST":{"nodeType":"YulBlock","src":"61:49:1","statements":[{"body":{"nodeType":"YulBlock","src":"90:18:1","statements":[{"nodeType":"YulBreak","src":"92:5:1"},{"nodeType":"YulContinue","src":"98:8:1"}]},"condition":{"kind":"number","nodeType":"YulLiteral","src":"70:1:1","type":"","value":"1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"72:17:1","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"84:1:1","type":"","value":"0"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"78:5:1"},"nodeType":"YulFunctionCall","src":"78:8:1"}],"functionName":{"name":"pop","nodeType":"YulIdentifier","src":"74:3:1"},"nodeType":"YulFunctionCall","src":"74:13:1"},"nodeType":"YulExpressionStatement","src":"74:13:1"}]},"pre":{"nodeType":"YulBlock","src":"67:2:1","statements":[]},"src":"63:45:1"}]},"evmVersion":"london","externalReferences":[],"id":3,"nodeType":"InlineAssembly","src":"52:58:1"}]},"functionSelector":"e2179b8e","id":5,"implemented":true,"kind":"function","modifiers":[],"name":"g","nameLocation":"26:1:1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"27:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"42:0:1"},"scope":6,"src":"17:99:1","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7,"src":"0:118:1","usedErrors":[]}],"src":"0:119:1"}
2 |
```
--------------------------------------------------------------------------------
/tests/ast/var_access.json:
--------------------------------------------------------------------------------
```json
1 | {"absolutePath":"a","exportedSymbols":{"C":[9]},"id":10,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9,"linearizedBaseContracts":[9],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":7,"nodeType":"Block","src":"42:51:1","statements":[{"assignments":[4],"declarations":[{"constant":false,"id":4,"mutability":"mutable","name":"x","nameLocation":"57:1:1","nodeType":"VariableDeclaration","scope":7,"src":"52:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3,"name":"uint","nodeType":"ElementaryTypeName","src":"52:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5,"nodeType":"VariableDeclarationStatement","src":"52:6:1"},{"AST":{"nodeType":"YulBlock","src":"77:10:1","statements":[{"nodeType":"YulAssignment","src":"79:6:1","value":{"kind":"number","nodeType":"YulLiteral","src":"84:1:1","type":"","value":"7"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"79:1:1"}]}]},"evmVersion":"london","externalReferences":[{"declaration":4,"isOffset":false,"isSlot":false,"src":"79:1:1","valueSize":1}],"id":6,"nodeType":"InlineAssembly","src":"68:19:1"}]},"functionSelector":"26121ff0","id":8,"implemented":true,"kind":"function","modifiers":[],"name":"f","nameLocation":"26:1:1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"27:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"42:0:1"},"scope":9,"src":"17:76:1","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":10,"src":"0:95:1","usedErrors":[]}],"src":"0:96:1"}
2 |
```
--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/types.rs:
--------------------------------------------------------------------------------
```rust
1 | use crate::ast::*;
2 |
3 | use std::fmt::Display;
4 |
5 | impl Display for TypeName {
6 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7 | match self {
8 | TypeName::ElementaryTypeName(elementary_type_name) => elementary_type_name.fmt(f),
9 | TypeName::UserDefinedTypeName(user_defined_type_name) => user_defined_type_name.fmt(f),
10 | TypeName::ArrayTypeName(array_type_name) => array_type_name.fmt(f),
11 | TypeName::Mapping(mapping) => mapping.fmt(f),
12 | TypeName::Raw(string) => string.fmt(f),
13 | _ => unimplemented!(),
14 | }
15 | }
16 | }
17 |
18 | impl Display for ElementaryTypeName {
19 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20 | f.write_str(self.name.as_str())?;
21 |
22 | if let Some(state_mutability) = self.state_mutability
23 | && state_mutability != StateMutability::NonPayable
24 | {
25 | f.write_fmt(format_args!(" {state_mutability}"))?;
26 | }
27 |
28 | Ok(())
29 | }
30 | }
31 |
32 | impl Display for UserDefinedTypeName {
33 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
34 | if let Some(path_node) = self.path_node.as_ref() {
35 | f.write_fmt(format_args!("{path_node}"))
36 | } else {
37 | f.write_fmt(format_args!("{}", self.name.as_deref().unwrap_or("")))
38 | }
39 | }
40 | }
41 |
42 | impl Display for ArrayTypeName {
43 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
44 | f.write_fmt(format_args!("{}", self.base_type))?;
45 | f.write_str("[")?;
46 |
47 | if let Some(length) = self.length.as_ref() {
48 | f.write_fmt(format_args!("{length}"))?;
49 | }
50 |
51 | f.write_str("]")
52 | }
53 | }
54 |
55 | impl Display for Mapping {
56 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
57 | f.write_fmt(format_args!("mapping({} => {})", self.key_type, self.value_type))
58 | }
59 | }
60 |
```
--------------------------------------------------------------------------------
/benchmarks/ecrecover/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[196.0,392.0,588.0,784.0,980.0,1176.0,1372.0,1568.0,1764.0,1960.0,2156.0,2352.0,2548.0,2744.0,2940.0,3136.0,3332.0,3528.0,3724.0,3920.0,4116.0,4312.0,4508.0,4704.0,4900.0,5096.0,5292.0,5488.0,5684.0,5880.0,6076.0,6272.0,6468.0,6664.0,6860.0,7056.0,7252.0,7448.0,7644.0,7840.0,8036.0,8232.0,8428.0,8624.0,8820.0,9016.0,9212.0,9408.0,9604.0,9800.0,9996.0,10192.0,10388.0,10584.0,10780.0,10976.0,11172.0,11368.0,11564.0,11760.0,11956.0,12152.0,12348.0,12544.0,12740.0,12936.0,13132.0,13328.0,13524.0,13720.0,13916.0,14112.0,14308.0,14504.0,14700.0,14896.0,15092.0,15288.0,15484.0,15680.0,15876.0,16072.0,16268.0,16464.0,16660.0,16856.0,17052.0,17248.0,17444.0,17640.0,17836.0,18032.0,18228.0,18424.0,18620.0,18816.0,19012.0,19208.0,19404.0,19600.0],"times":[965823.0,1923636.0,3654335.0,3971633.0,4862187.0,5831083.0,7166431.0,7298507.0,8663246.0,9524429.0,10704844.0,11588694.0,12533494.0,13475184.0,14369003.0,15007931.0,15862014.0,17062009.0,17987696.0,18844638.0,20035179.0,21050521.0,22029871.0,22950291.0,23945739.0,24887002.0,25821748.0,26728340.0,27931858.0,27923831.0,29646204.0,30665202.0,31093513.0,32145642.0,33842974.0,36137962.0,34849654.0,36056140.0,36521017.0,36884227.0,39388046.0,40998857.0,42187180.0,43527315.0,46813211.0,49896281.0,50281805.0,51055901.0,51801733.0,56402222.0,51053778.0,51998039.0,52654217.0,53479425.0,54153620.0,56322039.0,57726825.0,59638869.0,60658449.0,61624604.0,60707845.0,62693191.0,63863093.0,63997253.0,65611924.0,66538580.0,67661341.0,68574493.0,69953256.0,70399964.0,119679349.0,68713189.0,74510852.0,72920546.0,74655489.0,77338020.0,81484810.0,80582622.0,79992020.0,80146074.0,81661450.0,78689999.0,82245555.0,83328823.0,85756953.0,85907651.0,87177165.0,88525775.0,89301553.0,87729205.0,92398157.0,99749810.0,218113082.0,97901158.0,93848388.0,94935089.0,102275549.0,110374249.0,106070988.0,100299809.0]}
```
--------------------------------------------------------------------------------
/benchmarks/ecrecover/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[196.0,392.0,588.0,784.0,980.0,1176.0,1372.0,1568.0,1764.0,1960.0,2156.0,2352.0,2548.0,2744.0,2940.0,3136.0,3332.0,3528.0,3724.0,3920.0,4116.0,4312.0,4508.0,4704.0,4900.0,5096.0,5292.0,5488.0,5684.0,5880.0,6076.0,6272.0,6468.0,6664.0,6860.0,7056.0,7252.0,7448.0,7644.0,7840.0,8036.0,8232.0,8428.0,8624.0,8820.0,9016.0,9212.0,9408.0,9604.0,9800.0,9996.0,10192.0,10388.0,10584.0,10780.0,10976.0,11172.0,11368.0,11564.0,11760.0,11956.0,12152.0,12348.0,12544.0,12740.0,12936.0,13132.0,13328.0,13524.0,13720.0,13916.0,14112.0,14308.0,14504.0,14700.0,14896.0,15092.0,15288.0,15484.0,15680.0,15876.0,16072.0,16268.0,16464.0,16660.0,16856.0,17052.0,17248.0,17444.0,17640.0,17836.0,18032.0,18228.0,18424.0,18620.0,18816.0,19012.0,19208.0,19404.0,19600.0],"times":[965823.0,1923636.0,3654335.0,3971633.0,4862187.0,5831083.0,7166431.0,7298507.0,8663246.0,9524429.0,10704844.0,11588694.0,12533494.0,13475184.0,14369003.0,15007931.0,15862014.0,17062009.0,17987696.0,18844638.0,20035179.0,21050521.0,22029871.0,22950291.0,23945739.0,24887002.0,25821748.0,26728340.0,27931858.0,27923831.0,29646204.0,30665202.0,31093513.0,32145642.0,33842974.0,36137962.0,34849654.0,36056140.0,36521017.0,36884227.0,39388046.0,40998857.0,42187180.0,43527315.0,46813211.0,49896281.0,50281805.0,51055901.0,51801733.0,56402222.0,51053778.0,51998039.0,52654217.0,53479425.0,54153620.0,56322039.0,57726825.0,59638869.0,60658449.0,61624604.0,60707845.0,62693191.0,63863093.0,63997253.0,65611924.0,66538580.0,67661341.0,68574493.0,69953256.0,70399964.0,119679349.0,68713189.0,74510852.0,72920546.0,74655489.0,77338020.0,81484810.0,80582622.0,79992020.0,80146074.0,81661450.0,78689999.0,82245555.0,83328823.0,85756953.0,85907651.0,87177165.0,88525775.0,89301553.0,87729205.0,92398157.0,99749810.0,218113082.0,97901158.0,93848388.0,94935089.0,102275549.0,110374249.0,106070988.0,100299809.0]}
```
--------------------------------------------------------------------------------
/aderyn_core/src/context/flow/visualizer.rs:
--------------------------------------------------------------------------------
```rust
1 | #[cfg(test)]
2 | pub mod control_flow_tests {
3 |
4 | use std::{collections::HashMap, fmt::Debug, path::Path, process::Command};
5 |
6 | use crate::context::{flow::Cfg, workspace::WorkspaceContext};
7 | use petgraph::{dot::Dot, prelude::Graph};
8 |
9 | struct CustomString {
10 | string: String,
11 | }
12 |
13 | impl Debug for CustomString {
14 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
15 | writeln!(f, "{}", self.string)
16 | }
17 | }
18 |
19 | impl From<String> for CustomString {
20 | fn from(value: String) -> Self {
21 | Self { string: value }
22 | }
23 | }
24 |
25 | pub fn output_graph(context: &WorkspaceContext, cfg: &Cfg, output: &str) {
26 | let dot_file_path = format!("../tests/contract-playground/dot/{}.dot", output);
27 | let svg_file_path = format!("../tests/contract-playground/dot/{}.svg", output);
28 |
29 | let mut graph: Graph<CustomString, CustomString> = Graph::new();
30 | let mut node_indices = HashMap::new();
31 |
32 | for (node, value) in cfg.nodes.clone() {
33 | let node_index = graph.add_node(value.nd.display(context).into());
34 | node_indices.insert(node, node_index);
35 | }
36 |
37 | for (from, to_list) in &cfg.adj_list {
38 | let f = node_indices.get(from).unwrap();
39 | for to in to_list {
40 | let t = node_indices.get(to).unwrap();
41 | graph.add_edge(*f, *t, format!(" {}-->{}", from.peek(), to.peek()).into());
42 | }
43 | }
44 |
45 | let dot = Dot::new(&graph);
46 | _ = std::fs::write(Path::new(&dot_file_path), format!("{:?}", dot));
47 |
48 | let mut cmd = Command::new("dot");
49 | cmd.args(["-Tsvg", &dot_file_path]);
50 | if let Ok(raw_output) = cmd.output()
51 | && let Ok(output_svg) = String::from_utf8(raw_output.stdout)
52 | {
53 | _ = std::fs::write(Path::new(&svg_file_path), output_svg);
54 | }
55 | }
56 | }
57 |
```
--------------------------------------------------------------------------------
/aderyn_core/src/context/browser/peek_under.rs:
--------------------------------------------------------------------------------
```rust
1 | use crate::{
2 | ast::NodeID,
3 | context::{browser::GetNextSibling, workspace::WorkspaceContext},
4 | visitor::ast_visitor::{ASTConstVisitor, Node},
5 | };
6 |
7 | pub trait PeekUnder {
8 | /// Peek for text outside the node and just above until previous sibling is reached
9 | fn peek_under(&self, context: &WorkspaceContext) -> Option<String>;
10 | }
11 |
12 | #[derive(Default)]
13 | struct NodeIDReceiver {
14 | id: Option<NodeID>,
15 | }
16 |
17 | impl ASTConstVisitor for NodeIDReceiver {
18 | fn visit_node_id(&mut self, node_id: Option<NodeID>) -> eyre::Result<()> {
19 | self.id = node_id;
20 | Ok(())
21 | }
22 | }
23 |
24 | impl<T: Node + ?Sized> PeekUnder for T {
25 | fn peek_under(&self, context: &WorkspaceContext) -> Option<String> {
26 | // Setup a Node ID receiver
27 | let mut node_id_receiver = NodeIDReceiver::default();
28 |
29 | // Find the ID of the node this method is called upon
30 | self.accept_id(&mut node_id_receiver).ok()?;
31 | let current_node_id = node_id_receiver.id?;
32 |
33 | let source_unit =
34 | context.get_source_unit_from_child_node(context.nodes.get(¤t_node_id)?)?;
35 |
36 | let content = source_unit.source.as_ref()?;
37 | let (curr_offset, curr_len) = context.get_offset_and_length_of_node(current_node_id)?;
38 |
39 | if let Some(next_sibling) = self.next_sibling(context) {
40 | let (next_offset, _) = context.get_offset_and_length_of_node(next_sibling.id()?)?;
41 | if curr_offset + curr_len < next_offset && next_offset < content.len() {
42 | let required_content = &content[curr_offset + curr_len..next_offset];
43 | return Some(required_content.to_string());
44 | } else {
45 | return None;
46 | }
47 | }
48 |
49 | // If there is no next sibling we must content til the bottom of the file
50 | let required_content = &content[curr_offset + curr_len..];
51 | Some(required_content.to_string())
52 | }
53 | }
54 |
```
--------------------------------------------------------------------------------
/cli/reportgen.sh:
--------------------------------------------------------------------------------
```bash
1 | #!/bin/bash
2 |
3 | #### MARKDOWN REPORTS ######
4 |
5 | # Basic report.md
6 | cargo run -- -i src/ -x lib/ ./tests/contract-playground -o ./reports/report.md --skip-update-check &
7 |
8 | # Adhoc sol files report.md
9 | cargo run -- ./tests/adhoc-sol-files -o ./reports/adhoc-sol-files-report.md --skip-update-check &
10 |
11 | # Aderyn.toml with nested root
12 | cargo run -- ./tests/2024-05-Sablier -o ./reports/sablier-aderyn-toml-nested-root.md --skip-update-check &
13 |
14 | # nft-report.md (Handle remappings)
15 | cd tests/foundry-nft-f23 && forge install && cd ../.. &&
16 | cargo run -- ./tests/foundry-nft-f23 -i src/ -x lib/ -o ./reports/nft-report.md --skip-update-check &
17 |
18 | # ccip-functions-report.md (Handle remappings)
19 | cargo run -- tests/ccip-contracts/contracts --src src/v0.8/functions/ -x "tests/,test/,mocks/" -o ./reports/ccip-functions-report.md &
20 |
21 | # Extract src, scope and exclude from foundry profile in case of foundry project
22 | FOUNDRY_PROFILE=uniswap cargo run tests/contract-playground/ -o ./reports/uniswap_profile.md &
23 |
24 | # PRB Math (uses new solidity features)
25 | cargo run -- tests/prb-math -o reports/prb-math-report.md --skip-update-check &
26 |
27 | # TempleGold
28 | cargo run -- tests/2024-07-templegold/protocol -o reports/templegold-report.md --skip-update-check &
29 |
30 | cargo run -- tests/hardhat-js-playground -o reports/hardhat-playground-report.md --skip-update-check &
31 |
32 | cargo run -- ./tests/foundry-nft-f23-icm -o ./reports/nft-report-icm.md --skip-update-check &
33 |
34 | ##### JSON REPORTS ########
35 |
36 | # Basic report.json
37 | cargo run -- -i src/ -x lib/ -o ./reports/report.json ./tests/contract-playground --skip-update-check &
38 |
39 | # Adhoc sol files Highs only JSON report
40 | cargo run -- ./tests/adhoc-sol-files -o ./reports/adhoc-sol-files-highs-only-report.json --skip-update-check --highs-only &
41 |
42 |
43 | ##### SARIF REPORTS ########
44 |
45 | # Basic report.sarif
46 | cargo run -- ./tests/contract-playground -o ./reports/report.sarif --skip-update-check &
47 |
48 | wait
49 |
50 |
```
--------------------------------------------------------------------------------
/benchmarks/non-reentrant-before-others/base/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[280.0,560.0,840.0,1120.0,1400.0,1680.0,1960.0,2240.0,2520.0,2800.0,3080.0,3360.0,3640.0,3920.0,4200.0,4480.0,4760.0,5040.0,5320.0,5600.0,5880.0,6160.0,6440.0,6720.0,7000.0,7280.0,7560.0,7840.0,8120.0,8400.0,8680.0,8960.0,9240.0,9520.0,9800.0,10080.0,10360.0,10640.0,10920.0,11200.0,11480.0,11760.0,12040.0,12320.0,12600.0,12880.0,13160.0,13440.0,13720.0,14000.0,14280.0,14560.0,14840.0,15120.0,15400.0,15680.0,15960.0,16240.0,16520.0,16800.0,17080.0,17360.0,17640.0,17920.0,18200.0,18480.0,18760.0,19040.0,19320.0,19600.0,19880.0,20160.0,20440.0,20720.0,21000.0,21280.0,21560.0,21840.0,22120.0,22400.0,22680.0,22960.0,23240.0,23520.0,23800.0,24080.0,24360.0,24640.0,24920.0,25200.0,25480.0,25760.0,26040.0,26320.0,26600.0,26880.0,27160.0,27440.0,27720.0,28000.0],"times":[992448.0,1993724.0,3468342.0,4068648.0,5058810.0,6025398.0,7144451.0,7970411.0,8946879.0,9978087.0,10899445.0,11821586.0,12845673.0,13814965.0,14797816.0,15786528.0,16767623.0,17626822.0,18189134.0,19146111.0,20141704.0,21072560.0,22008522.0,22974795.0,23932135.0,24874800.0,25836572.0,26831926.0,27781449.0,28757982.0,29728215.0,30594609.0,31483069.0,32837845.0,33533220.0,34562466.0,35511599.0,35484401.0,36482063.0,37279442.0,38278599.0,39212921.0,40252955.0,41281345.0,42214760.0,42997012.0,43865567.0,44846477.0,45610824.0,46533256.0,47520730.0,48372950.0,49428205.0,50331484.0,51284090.0,51970821.0,53477078.0,54022599.0,54967053.0,55897022.0,56846464.0,57837644.0,58981513.0,58005788.0,58947567.0,60026727.0,61023062.0,61754293.0,62522852.0,63404235.0,64451853.0,65318374.0,66260633.0,67496800.0,68055483.0,68912603.0,69853490.0,70423322.0,71002720.0,71171570.0,72180804.0,72822744.0,73757593.0,74591398.0,75450994.0,76434970.0,77287596.0,78734287.0,79081920.0,79413062.0,80748503.0,81542201.0,82432608.0,83441995.0,84439378.0,85667682.0,85802616.0,86770949.0,87825918.0,103000615.0]}
```
--------------------------------------------------------------------------------
/benchmarks/non-reentrant-before-others/new/sample.json:
--------------------------------------------------------------------------------
```json
1 | {"sampling_mode":"Linear","iters":[280.0,560.0,840.0,1120.0,1400.0,1680.0,1960.0,2240.0,2520.0,2800.0,3080.0,3360.0,3640.0,3920.0,4200.0,4480.0,4760.0,5040.0,5320.0,5600.0,5880.0,6160.0,6440.0,6720.0,7000.0,7280.0,7560.0,7840.0,8120.0,8400.0,8680.0,8960.0,9240.0,9520.0,9800.0,10080.0,10360.0,10640.0,10920.0,11200.0,11480.0,11760.0,12040.0,12320.0,12600.0,12880.0,13160.0,13440.0,13720.0,14000.0,14280.0,14560.0,14840.0,15120.0,15400.0,15680.0,15960.0,16240.0,16520.0,16800.0,17080.0,17360.0,17640.0,17920.0,18200.0,18480.0,18760.0,19040.0,19320.0,19600.0,19880.0,20160.0,20440.0,20720.0,21000.0,21280.0,21560.0,21840.0,22120.0,22400.0,22680.0,22960.0,23240.0,23520.0,23800.0,24080.0,24360.0,24640.0,24920.0,25200.0,25480.0,25760.0,26040.0,26320.0,26600.0,26880.0,27160.0,27440.0,27720.0,28000.0],"times":[992448.0,1993724.0,3468342.0,4068648.0,5058810.0,6025398.0,7144451.0,7970411.0,8946879.0,9978087.0,10899445.0,11821586.0,12845673.0,13814965.0,14797816.0,15786528.0,16767623.0,17626822.0,18189134.0,19146111.0,20141704.0,21072560.0,22008522.0,22974795.0,23932135.0,24874800.0,25836572.0,26831926.0,27781449.0,28757982.0,29728215.0,30594609.0,31483069.0,32837845.0,33533220.0,34562466.0,35511599.0,35484401.0,36482063.0,37279442.0,38278599.0,39212921.0,40252955.0,41281345.0,42214760.0,42997012.0,43865567.0,44846477.0,45610824.0,46533256.0,47520730.0,48372950.0,49428205.0,50331484.0,51284090.0,51970821.0,53477078.0,54022599.0,54967053.0,55897022.0,56846464.0,57837644.0,58981513.0,58005788.0,58947567.0,60026727.0,61023062.0,61754293.0,62522852.0,63404235.0,64451853.0,65318374.0,66260633.0,67496800.0,68055483.0,68912603.0,69853490.0,70423322.0,71002720.0,71171570.0,72180804.0,72822744.0,73757593.0,74591398.0,75450994.0,76434970.0,77287596.0,78734287.0,79081920.0,79413062.0,80748503.0,81542201.0,82432608.0,83441995.0,84439378.0,85667682.0,85802616.0,86770949.0,87825918.0,103000615.0]}
```