This is page 94 of 94. Use http://codebase.md/cyfrin/aderyn?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
--------------------------------------------------------------------------------
/reports/templegold-report.md:
--------------------------------------------------------------------------------
```markdown
# Aderyn Analysis Report
This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.
# Table of Contents
- [Summary](#summary)
- [Files Summary](#files-summary)
- [Files Details](#files-details)
- [Issue Summary](#issue-summary)
- [High Issues](#high-issues)
- [H-1: Unsafe Casting of integers](#h-1-unsafe-casting-of-integers)
- [H-2: Contract Name Reused in Different Files](#h-2-contract-name-reused-in-different-files)
- [H-3: ETH transferred without address checks](#h-3-eth-transferred-without-address-checks)
- [H-4: Weak Randomness](#h-4-weak-randomness)
- [H-5: Deletion from a nested mapping](#h-5-deletion-from-a-nested-mapping)
- [H-6: Contract locks Ether without a withdraw function](#h-6-contract-locks-ether-without-a-withdraw-function)
- [H-7: Reentrancy: State change after external call](#h-7-reentrancy-state-change-after-external-call)
- [Low Issues](#low-issues)
- [L-1: Centralization Risk](#l-1-centralization-risk)
- [L-2: `ecrecover` Signature Malleability](#l-2-ecrecover-signature-malleability)
- [L-3: Unsafe ERC20 Operation](#l-3-unsafe-erc20-operation)
- [L-4: Unspecific Solidity Pragma](#l-4-unspecific-solidity-pragma)
- [L-5: Address State Variable Set Without Checks](#l-5-address-state-variable-set-without-checks)
- [L-6: Public Function Not Used Internally](#l-6-public-function-not-used-internally)
- [L-7: Literal Instead of Constant](#l-7-literal-instead-of-constant)
- [L-8: Empty `require()` / `revert()` Statement](#l-8-empty-require--revert-statement)
- [L-9: Modifier Invoked Only Once](#l-9-modifier-invoked-only-once)
- [L-10: Empty Block](#l-10-empty-block)
- [L-11: Large Numeric Literal](#l-11-large-numeric-literal)
- [L-12: Internal Function Used Only Once](#l-12-internal-function-used-only-once)
- [L-13: Inconsistent uint256/uint (or) int256/int types](#l-13-inconsistent-uint256uint-or-int256int-types)
- [L-14: Unused Error](#l-14-unused-error)
- [L-15: Loop Contains `require`/`revert`](#l-15-loop-contains-requirerevert)
- [L-16: Incorrect Order of Division and Multiplication](#l-16-incorrect-order-of-division-and-multiplication)
- [L-17: Redundant Statement](#l-17-redundant-statement)
- [L-18: Unused State Variable](#l-18-unused-state-variable)
- [L-19: Boolean equality is not required](#l-19-boolean-equality-is-not-required)
- [L-20: Local Variable Shadows State Variable](#l-20-local-variable-shadows-state-variable)
- [L-21: Uninitialized Local Variable](#l-21-uninitialized-local-variable)
- [L-22: Costly operations inside loop](#l-22-costly-operations-inside-loop)
- [L-23: Missing Inheritance](#l-23-missing-inheritance)
- [L-24: Unused Import](#l-24-unused-import)
- [L-25: State Change Without Event](#l-25-state-change-without-event)
- [L-26: State Variable Could Be Immutable](#l-26-state-variable-could-be-immutable)
- [L-27: Unchecked Return](#l-27-unchecked-return)
# Summary
## Files Summary
| Key | Value |
| --- | --- |
| .sol Files | 129 |
| Total nSLOC | 10226 |
## Files Details
| Filepath | nSLOC |
| --- | --- |
| contracts/admin/TempleTeamPayments.sol | 81 |
| contracts/admin/TempleTeamPaymentsFactory.sol | 113 |
| contracts/admin/TempleTeamPaymentsV2.sol | 68 |
| contracts/amm/TempleStableAMMRouter.sol | 174 |
| contracts/amm/TempleUniswapV2Pair.sol | 146 |
| contracts/amm/TreasuryIV.sol | 17 |
| contracts/amo/AuraStaking.sol | 99 |
| contracts/amo/Ramos.sol | 350 |
| contracts/amo/helpers/AMOCommon.sol | 17 |
| contracts/amo/helpers/BalancerPoolHelper.sol | 329 |
| contracts/amo/test/RamosTestnetAuraStaking.sol | 79 |
| contracts/amo/test/RamosTestnetTempleTokenVault.sol | 28 |
| contracts/amo/test/external/IAuraStakingProxy.sol | 6 |
| contracts/amo/test/external/IAuraToken.sol | 4 |
| contracts/amo/test/external/IBalancerAuthorizer.sol | 13 |
| contracts/amo/test/external/IBalancerAuthorizerAdapter.sol | 7 |
| contracts/amo/test/external/IBalancerHelpers.sol | 27 |
| contracts/amo/test/external/IBalancerVotingEscrow.sol | 4 |
| contracts/amo/test/external/IGaugeAdder.sol | 4 |
| contracts/amo/test/external/IGaugeController.sol | 7 |
| contracts/amo/test/external/ILiquidityGaugeFactory.sol | 4 |
| contracts/amo/test/external/IPoolManagerProxy.sol | 4 |
| contracts/amo/test/external/IPoolManagerV3.sol | 5 |
| contracts/amo/test/external/IStashRewards.sol | 7 |
| contracts/amo/test/external/IWeightPool2Tokens.sol | 4 |
| contracts/amo/test/external/goerli/Goerli_ILiquidityGaugeFactory.sol | 5 |
| contracts/common/CommonEventsAndErrors.sol | 11 |
| contracts/common/SafeCast.sol | 10 |
| contracts/common/TempleMath.sol | 10 |
| contracts/core/Exposure.sol | 68 |
| contracts/core/JoiningFee.sol | 30 |
| contracts/core/MultiOtcOffer.sol | 163 |
| contracts/core/OpsManager.sol | 110 |
| contracts/core/OpsManagerLib.sol | 76 |
| contracts/core/OtcOffer.sol | 91 |
| contracts/core/Rational.sol | 5 |
| contracts/core/RebasingERC20.sol | 45 |
| contracts/core/TempleERC20Token.sol | 23 |
| contracts/core/TreasuryFarmingRevenue.sol | 44 |
| contracts/core/Vault.sol | 117 |
| contracts/core/VaultEarlyWithdraw.sol | 49 |
| contracts/core/VaultProxy.sol | 84 |
| contracts/core/VaultedTemple.sol | 26 |
| contracts/deprecated/Faith.sol | 41 |
| contracts/deprecated/IExitQueue.sol | 4 |
| contracts/deprecated/InstantExitQueue.sol | 20 |
| contracts/deprecated/LockedOGTemple.sol | 61 |
| contracts/deprecated/OGTemple.sol | 13 |
| contracts/deprecated/TempleStaking.sol | 98 |
| contracts/fakes/FakeERC20.sol | 20 |
| contracts/fakes/FakeERC20CustomDecimals.sol | 26 |
| contracts/fakes/NoopLiquidator.sol | 13 |
| contracts/fakes/NoopVaultedTempleLiquidator.sol | 16 |
| contracts/fakes/UniswapV2Factory.sol | 2 |
| contracts/fakes/UniswapV2Router02NoEth.sol | 354 |
| contracts/fakes/governance/DummyTimelockController.sol | 28 |
| contracts/fakes/templegold/TempleGoldMock.sol | 78 |
| contracts/fakes/templegold/TempleGoldStakingMock.sol | 436 |
| contracts/fakes/templegold/TempleTokenMock.sol | 21 |
| contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol | 45 |
| contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol | 116 |
| contracts/governance/ElderElection.sol | 109 |
| contracts/governance/Templar.sol | 49 |
| contracts/governance/TemplarMetadata.sol | 23 |
| contracts/interfaces/amo/IAuraStaking.sol | 40 |
| contracts/interfaces/amo/IRamos.sol | 106 |
| contracts/interfaces/amo/helpers/IBalancerPoolHelper.sol | 86 |
| contracts/interfaces/amo/helpers/IRamosTokenVault.sol | 7 |
| contracts/interfaces/core/IMultiOtcOffer.sol | 60 |
| contracts/interfaces/core/ITempleERC20Token.sol | 7 |
| contracts/interfaces/external/aura/IAuraBaseRewardPool.sol | 15 |
| contracts/interfaces/external/aura/IAuraBooster.sol | 21 |
| contracts/interfaces/external/balancer/IBalancerBptToken.sol | 5 |
| contracts/interfaces/external/balancer/IBalancerHelpers.sol | 16 |
| contracts/interfaces/external/balancer/IBalancerVault.sol | 66 |
| contracts/interfaces/external/makerDao/IMakerDaoDaiJoinLike.sol | 7 |
| contracts/interfaces/external/makerDao/IMakerDaoPotLike.sol | 10 |
| contracts/interfaces/external/makerDao/IMakerDaoVatLike.sol | 5 |
| contracts/interfaces/templegold/IAuctionBase.sol | 26 |
| contracts/interfaces/templegold/IDaiGoldAuction.sol | 33 |
| contracts/interfaces/templegold/ISpiceAuction.sol | 37 |
| contracts/interfaces/templegold/ISpiceAuctionFactory.sol | 10 |
| contracts/interfaces/templegold/ITempleGold.sol | 57 |
| contracts/interfaces/templegold/ITempleGoldAdmin.sol | 19 |
| contracts/interfaces/templegold/ITempleGoldStaking.sol | 86 |
| contracts/interfaces/templegold/ITempleTeleporter.sol | 24 |
| contracts/interfaces/v2/ITempleDebtToken.sol | 60 |
| contracts/interfaces/v2/ITreasuryPriceIndexOracle.sol | 20 |
| contracts/interfaces/v2/ITreasuryReservesVault.sol | 118 |
| contracts/interfaces/v2/access/ITempleElevatedAccess.sol | 23 |
| contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreaker.sol | 5 |
| contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreakerProxy.sol | 27 |
| contracts/interfaces/v2/interestRate/IInterestRateModel.sol | 6 |
| contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol | 16 |
| contracts/interfaces/v2/strategies/ITempleBaseStrategy.sol | 8 |
| contracts/interfaces/v2/strategies/ITempleStrategy.sol | 35 |
| contracts/interfaces/v2/strategies/ITlcStrategy.sol | 5 |
| contracts/interfaces/v2/templeLineOfCredit/ITempleLineOfCredit.sol | 54 |
| contracts/interfaces/v2/templeLineOfCredit/ITlcDataTypes.sol | 38 |
| contracts/interfaces/v2/templeLineOfCredit/ITlcEventsAndErrors.sol | 19 |
| contracts/templegold/AuctionBase.sol | 10 |
| contracts/templegold/DaiGoldAuction.sol | 162 |
| contracts/templegold/EpochLib.sol | 13 |
| contracts/templegold/SpiceAuction.sol | 197 |
| contracts/templegold/SpiceAuctionFactory.sol | 42 |
| contracts/templegold/TempleGold.sol | 172 |
| contracts/templegold/TempleGoldAdmin.sol | 50 |
| contracts/templegold/TempleGoldStaking.sol | 355 |
| contracts/templegold/TempleTeleporter.sol | 58 |
| contracts/util/ABDKMath64x64.sol | 478 |
| contracts/util/ABDKMathQuad.sol | 793 |
| contracts/v2/TempleDebtToken.sol | 421 |
| contracts/v2/TreasuryPriceIndexOracle.sol | 58 |
| contracts/v2/TreasuryReservesVault.sol | 448 |
| contracts/v2/access/TempleElevatedAccess.sol | 78 |
| contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol | 96 |
| contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol | 49 |
| contracts/v2/interestRate/BaseInterestRateModel.sol | 16 |
| contracts/v2/interestRate/CompoundedInterest.sol | 15 |
| contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol | 97 |
| contracts/v2/safeGuards/SafeForked.sol | 65 |
| contracts/v2/safeGuards/ThresholdSafeGuard.sol | 124 |
| contracts/v2/strategies/AbstractStrategy.sol | 106 |
| contracts/v2/strategies/DsrBaseStrategy.sol | 163 |
| contracts/v2/strategies/GnosisStrategy.sol | 104 |
| contracts/v2/strategies/RamosStrategy.sol | 156 |
| contracts/v2/strategies/TempleTokenBaseStrategy.sol | 62 |
| contracts/v2/strategies/TlcStrategy.sol | 56 |
| contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol | 468 |
| **Total** | **10226** |
## Issue Summary
| Category | No. of Issues |
| --- | --- |
| High | 7 |
| Low | 27 |
# High Issues
## H-1: Unsafe Casting of integers
Downcasting int/uints in Solidity can be unsafe due to the potential for data loss and unintended behavior.When downcasting a larger integer type to a smaller one (e.g., uint256 to uint128), the value may exceed the range of the target type,leading to truncation and loss of significant digits. Use OpenZeppelin's SafeCast library to safely downcast integers.
<details><summary>2 Found Instances</summary>
- Found in contracts/util/ABDKMath64x64.sol [Line: 483](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L483)
```solidity
return int128 (result);
```
- Found in contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol [Line: 140](../tests/2024-07-templegold/protocol/contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol#L140)
```solidity
return uint96(interestRate);
```
</details>
## H-2: Contract Name Reused in Different Files
When compiling contracts with certain development frameworks (for example: Truffle), having contracts with the same name across different files can lead to one being overwritten.
<details><summary>4 Found Instances</summary>
- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 13](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L13)
```solidity
interface IWeightPool2Tokens {
```
- Found in contracts/amo/test/external/IBalancerHelpers.sol [Line: 5](../tests/2024-07-templegold/protocol/contracts/amo/test/external/IBalancerHelpers.sol#L5)
```solidity
interface IBalancerHelpers {
```
- Found in contracts/amo/test/external/IWeightPool2Tokens.sol [Line: 5](../tests/2024-07-templegold/protocol/contracts/amo/test/external/IWeightPool2Tokens.sol#L5)
```solidity
interface IWeightPool2Tokens {
```
- Found in contracts/interfaces/external/balancer/IBalancerHelpers.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/interfaces/external/balancer/IBalancerHelpers.sol#L7)
```solidity
interface IBalancerHelpers {
```
</details>
## H-3: ETH transferred without address checks
Consider introducing checks for `msg.sender` to ensure the recipient of the money is as intended.
<details><summary>29 Found Instances</summary>
- Found in contracts/admin/TempleTeamPayments.sol [Line: 74](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L74)
```solidity
function claim() external addressExists(msg.sender) {
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 74](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L74)
```solidity
function claim(uint256 _claimAmount) external {
```
- Found in contracts/amo/test/RamosTestnetTempleTokenVault.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/amo/test/RamosTestnetTempleTokenVault.sol#L27)
```solidity
function borrowQuoteToken(uint256 amount, address recipient) external {
```
- Found in contracts/amo/test/RamosTestnetTempleTokenVault.sol [Line: 31](../tests/2024-07-templegold/protocol/contracts/amo/test/RamosTestnetTempleTokenVault.sol#L31)
```solidity
function repayProtocolToken(uint256 amount) external {
```
- Found in contracts/amo/test/RamosTestnetTempleTokenVault.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/amo/test/RamosTestnetTempleTokenVault.sol#L36)
```solidity
function repayQuoteToken(uint256 amount) external {
```
- Found in contracts/core/MultiOtcOffer.sol [Line: 156](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L156)
```solidity
function swap(bytes32 marketId, uint256 sellTokenAmount) external override whenNotPaused returns (uint256) {
```
- Found in contracts/core/MultiOtcOffer.sol [Line: 168](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L168)
```solidity
function swap(
```
- Found in contracts/core/OtcOffer.sol [Line: 131](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L131)
```solidity
function swap(uint256 sellTokenAmount) external whenNotPaused returns (uint256 buyTokenAmount) {
```
- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L57)
```solidity
function withdraw(address _vault, uint256 _templeAmount) external whenNotPaused {
```
- Found in contracts/core/VaultProxy.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L58)
```solidity
function depositTempleWithFaith(uint256 _amountTemple, uint112 _amountFaith, Vault vault) public {
```
- Found in contracts/core/VaultProxy.sol [Line: 71](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L71)
```solidity
function unstakeAndDepositTempleWithFaith(uint256 _amountOGT, uint112 _amountFaith, Vault vault) external {
```
- Found in contracts/core/VaultProxy.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L83)
```solidity
function unstakeAndDepositIntoVault(uint256 _amountOGT, Vault vault) external {
```
- Found in contracts/core/VaultProxy.sol [Line: 109](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L109)
```solidity
function depositTempleFor(uint256 _amount, Vault vault) public {
```
- Found in contracts/deprecated/LockedOGTemple.sol [Line: 35](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L35)
```solidity
function lockFor(
```
- Found in contracts/deprecated/LockedOGTemple.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L55)
```solidity
function lock(uint256 _amountOGTemple, uint256 _lockedUntilTimestamp)
```
- Found in contracts/deprecated/LockedOGTemple.sol [Line: 62](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L62)
```solidity
function withdrawFor(address _staker, uint256 _idx) public {
```
- Found in contracts/deprecated/LockedOGTemple.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L83)
```solidity
function withdraw(uint256 _idx) external {
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L123)
```solidity
function stakeFor(address _staker, uint256 _amountTemple) public returns(uint256 amountOgTemple) {
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 139](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L139)
```solidity
function stake(uint256 _amountTemple) external returns(uint256 amountOgTemple) {
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 144](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L144)
```solidity
function unstake(uint256 _amountOgTemple) external {
```
- Found in contracts/templegold/DaiGoldAuction.sol [Line: 132](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L132)
```solidity
function bid(uint256 amount) external virtual override onlyWhenLive {
```
- Found in contracts/templegold/DaiGoldAuction.sol [Line: 150](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L150)
```solidity
function claim(uint256 epochId) external virtual override {
```
- Found in contracts/templegold/SpiceAuction.sol [Line: 183](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L183)
```solidity
function bid(uint256 amount) external virtual override {
```
- Found in contracts/templegold/SpiceAuction.sol [Line: 209](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L209)
```solidity
function claim(uint256 epochId) external virtual override {
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 145](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L145)
```solidity
function addCollateral(uint128 collateralAmount, address onBehalfOf) external override notInRescueMode {
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 166](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166)
```solidity
function removeCollateral(uint128 amount, address recipient) external override notInRescueMode {
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 253](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L253)
```solidity
function repay(uint128 repayAmount, address onBehalfOf) external override notInRescueMode {
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 287](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L287)
```solidity
function repayAll(address onBehalfOf) external override notInRescueMode {
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 318](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318)
```solidity
function batchLiquidate(
```
</details>
## H-4: Weak Randomness
The use of keccak256 hash functions on predictable values like block.timestamp, block.number, or similar data, including modulo operations on these values, should be avoided for generating randomness, as they are easily predictable and manipulable. The `PREVRANDAO` opcode also should not be used as a source of randomness. Instead, utilize Chainlink VRF for cryptographically secure and provably random values to ensure protocol integrity.
<details><summary>1 Found Instances</summary>
- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 82](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L82)
```solidity
uint32 blockTimestamp = uint32(block.timestamp % 2**32);
```
</details>
## H-5: Deletion from a nested mapping
A deletion in a structure containing a mapping will not delete the mapping. The remaining data may be used to compromise the contract.
<details><summary>1 Found Instances</summary>
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 317](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L317)
```solidity
delete strategies[strategy];
```
</details>
## H-6: Contract locks Ether without a withdraw function
It appears that the contract includes a payable function to accept Ether but lacks a corresponding function to withdraw it, which leads to the Ether being locked in the contract. To resolve this issue, please implement a public or external function that allows for the withdrawal of Ether from the contract.
<details><summary>1 Found Instances</summary>
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L21)
```solidity
contract UniswapV2Router02NoEth is IUniswapV2Router02 {
```
</details>
## H-7: Reentrancy: State change after external call
Changing state after an external call can lead to re-entrancy attacks.Use the checks-effects-interactions pattern to avoid this issue.
<details><summary>23 Found Instances</summary>
- Found in contracts/amo/Ramos.sol [Line: 195](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L195)
State is changed at: `tokenVault = IRamosTokenVault(vault)`
```solidity
protocolToken.approve(previousVault, 0);
```
- Found in contracts/amo/Ramos.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L196)
State is changed at: `tokenVault = IRamosTokenVault(vault)`
```solidity
quoteToken.approve(previousVault, 0);
```
- Found in contracts/core/MultiOtcOffer.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L68)
State is changed at: `marketInfo.scalar = 10 ** scaleDecimals`
```solidity
uint256 scaleDecimals = marketInfo.offerPricingToken == OfferPricingToken.UserBuyToken
```
- Found in contracts/core/OpsManager.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L36)
State is changed at: `vaultedTemple = new VaultedTemple(_templeToken, address(templeExposure))`
```solidity
templeExposure.setMinterState(address(this), true);
```
- Found in contracts/core/OtcOffer.sol [Line: 91](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L91)
State is changed at: `scalar = 10 ** scaleDecimals`
```solidity
uint256 scaleDecimals = offerPricingToken == OfferPricingToken.UserBuyToken
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 158](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L158)
State is changed at: `_accountLastStakeIndex[msg.sender] = ++_lastIndex`
```solidity
uint256 amount = previousStaking.migrateWithdraw(msg.sender, index);
```
- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L52)
State is changed at: `daiSavingsRate = _newRate`
```solidity
_checkpointDaiBalance(daiToken.balanceOf(address(this)));
```
- Found in contracts/governance/ElderElection.sol [Line: 74](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L74)
State is changed at: `candidates[discordId] = true`, `numCandidates += 1`
```solidity
templars.checkExists(discordId);
```
- Found in contracts/governance/ElderElection.sol [Line: 87](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L87)
State is changed at: `candidates[discordId] = false`, `numCandidates -= 1`
```solidity
templars.checkExists(discordId);
```
- Found in contracts/governance/TemplarMetadata.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L32)
State is changed at: `templeRole[discordId] = _templeRole`
```solidity
templars.checkExists(discordId);
```
- Found in contracts/templegold/SpiceAuction.sol [Line: 159](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L159)
State is changed at: `uint128 startTime = info.startTime = uint128(block.timestamp) + config.startCooldown`, `uint128 endTime = info.endTime = startTime + config.duration`, `info.totalAuctionTokenAmount = epochAuctionTokenAmount`, `_totalAuctionTokenAllocation[auctionToken] = totalAuctionTokenAllocation + epochAuctionTokenAmount`
```solidity
uint256 balance = IERC20(auctionToken).balanceOf(address(this));
```
- Found in contracts/templegold/SpiceAuction.sol [Line: 194](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L194)
State is changed at: `info.totalBidTokenAmount += amount`
```solidity
uint256 _bidTokenAmountBefore = IERC20(bidToken).balanceOf(_recipient);
```
- Found in contracts/templegold/SpiceAuction.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L196)
State is changed at: `info.totalBidTokenAmount += amount`
```solidity
uint256 _bidTokenAmountAfter = IERC20(bidToken).balanceOf(_recipient);
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 148](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L148)
State is changed at: `tpiOracle = _tpiOracle`
```solidity
if (_tpiOracle.treasuryPriceIndex() == 0) revert CommonEventsAndErrors.InvalidParam();
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 296](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L296)
State is changed at: `delete strategies[strategy]`, `delete _strategyConfig.debtCeiling[_token]`, `delete _strategyConfig.enabledBorrowTokens[_token]`, `delete credits[_token]`
```solidity
_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy);
```
- Found in contracts/v2/strategies/DsrBaseStrategy.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/v2/strategies/DsrBaseStrategy.sol#L55)
State is changed at: `pot = IMakerDaoPotLike(_pot)`, `daiToken = IERC20(_daiToken)`
```solidity
IMakerDaoVatLike vat = IMakerDaoVatLike(daiJoin.vat());
```
- Found in contracts/v2/strategies/DsrBaseStrategy.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/v2/strategies/DsrBaseStrategy.sol#L57)
State is changed at: `daiToken = IERC20(_daiToken)`
```solidity
vat.hope(address(daiJoin));
```
- Found in contracts/v2/strategies/DsrBaseStrategy.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/v2/strategies/DsrBaseStrategy.sol#L58)
State is changed at: `daiToken = IERC20(_daiToken)`
```solidity
vat.hope(address(pot));
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 173](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L173)
State is changed at: `_accountData.collateral = _collateral - amount`, `totalCollateral -= amount`
```solidity
circuitBreakerProxy.preCheck(
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 213](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L213)
State is changed at: `_accountData.debtCheckpoint = _totalDebt`, `_accountData.interestAccumulator = _cache.interestAccumulator`, `debtTokenData.totalDebt = _cache.totalDebt = _cache.totalDebt + amount`
```solidity
circuitBreakerProxy.preCheck(
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 351](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L351)
State is changed at: `totalCollateral -= totalCollateralClaimed`
```solidity
treasuryReservesVault.repay(templeToken, totalCollateralClaimed, address(tlcStrategy));
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 394](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)
State is changed at: `treasuryReservesVault = ITreasuryReservesVault(_trv)`
```solidity
daiToken.approve(previousTrv, 0);
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 397](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L397)
State is changed at: `treasuryReservesVault = ITreasuryReservesVault(_trv)`
```solidity
address _trv = address(tlcStrategy.treasuryReservesVault());
```
</details>
# Low Issues
## L-1: Centralization Risk
Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds.
<details><summary>91 Found Instances</summary>
- Found in contracts/admin/TempleTeamPayments.sol [Line: 8](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L8)
```solidity
contract TempleTeamPayments is Ownable {
```
- Found in contracts/admin/TempleTeamPayments.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L32)
```solidity
) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPayments.sol [Line: 44](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L44)
```solidity
function setAllocation(address _address, uint256 _amount) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPayments.sol [Line: 51](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L51)
```solidity
onlyOwner
```
- Found in contracts/admin/TempleTeamPayments.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L83)
```solidity
function adhocPayment(address _to, uint256 _amount) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPayments.sol [Line: 92](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L92)
```solidity
onlyOwner
```
- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 9](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L9)
```solidity
contract TempleTeamPaymentsFactory is Ownable {
```
- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L58)
```solidity
function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 66](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L66)
```solidity
) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 84](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L84)
```solidity
) external onlyOwner returns (TempleTeamPaymentsV2) {
```
- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L123)
```solidity
) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 39](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L39)
```solidity
) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 46](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L46)
```solidity
) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 59](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L59)
```solidity
function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 65](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L65)
```solidity
function toggleMember(address _address) external onlyOwner {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 22](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L22)
```solidity
contract TempleStableAMMRouter is Ownable {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 48](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L48)
```solidity
function addPair(address _token, address _pair) external onlyOwner {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L52)
```solidity
function setTreasury(ITreasuryIV _templeTreasury) external onlyOwner {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L56)
```solidity
function setDefendStable(address _defendStable) external onlyOwner {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 226](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L226)
```solidity
function withdraw(address token, address to, uint256 amount) external onlyOwner {
```
- Found in contracts/amm/TreasuryIV.sol [Line: 9](../tests/2024-07-templegold/protocol/contracts/amm/TreasuryIV.sol#L9)
```solidity
contract TreasuryIV is Ownable {
```
- Found in contracts/amm/TreasuryIV.sol [Line: 23](../tests/2024-07-templegold/protocol/contracts/amm/TreasuryIV.sol#L23)
```solidity
function setIV(uint256 frax, uint256 temple) external onlyOwner {
```
- Found in contracts/core/Exposure.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L15)
```solidity
contract Exposure is Ownable, RebasingERC20 {
```
- Found in contracts/core/Exposure.sol [Line: 47](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L47)
```solidity
function increaseReval(uint256 amount) external onlyOwner {
```
- Found in contracts/core/Exposure.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L57)
```solidity
function decreaseReval(uint256 amount) external onlyOwner {
```
- Found in contracts/core/Exposure.sol [Line: 67](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L67)
```solidity
function setLiqidator(ILiquidator _liquidator) external onlyOwner {
```
- Found in contracts/core/Exposure.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L76)
```solidity
function setMinterState(address account, bool state) external onlyOwner {
```
- Found in contracts/core/JoiningFee.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/core/JoiningFee.sol#L16)
```solidity
contract JoiningFee is Ownable {
```
- Found in contracts/core/JoiningFee.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/core/JoiningFee.sol#L41)
```solidity
function setHourlyJoiningFeeFor(address vault, uint256 amount) external onlyOwner {
```
- Found in contracts/core/OpsManager.sol [Line: 17](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L17)
```solidity
contract OpsManager is Ownable {
```
- Found in contracts/core/OpsManager.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L49)
```solidity
) external onlyOwner {
```
- Found in contracts/core/OpsManager.sol [Line: 70](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L70)
```solidity
) external onlyOwner {
```
- Found in contracts/core/OpsManager.sol [Line: 110](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L110)
```solidity
function addRevenue(IERC20[] memory exposureTokens, uint256[] memory amounts) external onlyOwner {
```
- Found in contracts/core/OpsManager.sol [Line: 121](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L121)
```solidity
function updateExposureReval(IERC20[] memory exposureTokens, uint256[] memory revals) external onlyOwner {
```
- Found in contracts/core/OpsManager.sol [Line: 130](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L130)
```solidity
function increaseVaultTemple(Vault[] memory vaults, uint256[] memory amountsTemple) external onlyOwner {
```
- Found in contracts/core/OpsManager.sol [Line: 144](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L144)
```solidity
function liquidateExposures(Vault[] memory vaults, IERC20[] memory exposureTokens) external onlyOwner {
```
- Found in contracts/core/OpsManager.sol [Line: 170](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L170)
```solidity
function setExposureLiquidator(IERC20 exposureToken, ILiquidator _liquidator) external onlyOwner {
```
- Found in contracts/core/OpsManager.sol [Line: 178](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L178)
```solidity
function setExposureMinterState(IERC20 exposureToken, address account, bool state) external onlyOwner {
```
- Found in contracts/core/OtcOffer.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L19)
```solidity
contract OtcOffer is Pausable, Ownable {
```
- Found in contracts/core/OtcOffer.sol [Line: 98](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L98)
```solidity
function pause() external onlyOwner {
```
- Found in contracts/core/OtcOffer.sol [Line: 103](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L103)
```solidity
function unpause() external onlyOwner {
```
- Found in contracts/core/OtcOffer.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L108)
```solidity
function setFundsOwner(address _fundsOwner) external onlyOwner {
```
- Found in contracts/core/OtcOffer.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L116)
```solidity
function setOfferPrice(uint256 _offerPrice) external onlyOwner {
```
- Found in contracts/core/OtcOffer.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L123)
```solidity
function setOfferPriceRange(uint128 _minValidOfferPrice, uint128 _maxValidOfferPrice) external onlyOwner {
```
- Found in contracts/core/TempleERC20Token.sol [Line: 11](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L11)
```solidity
contract TempleERC20Token is ERC20, ERC20Burnable, Ownable, AccessControl {
```
- Found in contracts/core/TempleERC20Token.sol [Line: 23](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L23)
```solidity
function addMinter(address account) external onlyOwner {
```
- Found in contracts/core/TempleERC20Token.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L27)
```solidity
function removeMinter(address account) external onlyOwner {
```
- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 17](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L17)
```solidity
contract TreasuryFarmingRevenue is Ownable {
```
- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 48](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L48)
```solidity
function addRevenue(uint256 revenueEarned) onlyOwner public {
```
- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L56)
```solidity
function increaseShares(address account, uint256 amount) onlyOwner external {
```
- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 69](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L69)
```solidity
function decreaseShares(address account, uint256 amount) onlyOwner external {
```
- Found in contracts/core/Vault.sol [Line: 29](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L29)
```solidity
contract Vault is Nonces, EIP712, Ownable, RebasingERC20 {
```
- Found in contracts/core/Vault.sol [Line: 113](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L113)
```solidity
function redeemExposures(Exposure[] memory exposures) external onlyOwner {
```
- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L15)
```solidity
contract VaultEarlyWithdraw is Pausable, Ownable {
```
- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L41)
```solidity
function pause() external onlyOwner {
```
- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 45](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L45)
```solidity
function unpause() external onlyOwner {
```
- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L49)
```solidity
function setMinWithdrawAmount(uint256 amount) external onlyOwner {
```
- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 73](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L73)
```solidity
function recoverToken(address token, address to, uint256 amount) external onlyOwner {
```
- Found in contracts/core/VaultProxy.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L16)
```solidity
contract VaultProxy is Ownable {
```
- Found in contracts/core/VaultProxy.sol [Line: 118](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L118)
```solidity
function toggleFaithClaimEnabled() external onlyOwner {
```
- Found in contracts/core/VaultProxy.sol [Line: 125](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L125)
```solidity
function withdraw(address token, address to, uint256 amount) external onlyOwner {
```
- Found in contracts/core/VaultedTemple.sol [Line: 35](../tests/2024-07-templegold/protocol/contracts/core/VaultedTemple.sol#L35)
```solidity
contract VaultedTemple is ILiquidator, Ownable {
```
- Found in contracts/core/VaultedTemple.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/core/VaultedTemple.sol#L52)
```solidity
function withdraw(address token, address to, uint256 amount) external onlyOwner {
```
- Found in contracts/deprecated/Faith.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L6)
```solidity
contract Faith is Ownable {
```
- Found in contracts/deprecated/Faith.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L50)
```solidity
function addManager(address account) external onlyOwner {
```
- Found in contracts/deprecated/Faith.sol [Line: 54](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L54)
```solidity
function removeManager(address account) external onlyOwner {
```
- Found in contracts/deprecated/OGTemple.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L16)
```solidity
contract OGTemple is ERC20, ERC20Burnable, Ownable {
```
- Found in contracts/deprecated/OGTemple.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L19)
```solidity
function mint(address to, uint256 amount) external onlyOwner {
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L18)
```solidity
contract TempleStaking is Ownable {
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 67](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L67)
```solidity
function setExitQueue(IExitQueue _EXIT_QUEUE) external onlyOwner {
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 72](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L72)
```solidity
function setEpy(uint256 _numerator, uint256 _denominator) external onlyOwner {
```
- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L58)
```solidity
function authorizeContract(address _contract, bool _whitelist) external onlyOwner {
```
- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 9](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L9)
```solidity
contract TempleTokenMock is ERC20, ERC20Burnable, Ownable, AccessControl {
```
- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L21)
```solidity
function addMinter(address account) external onlyOwner {
```
- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 25](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L25)
```solidity
function removeMinter(address account) external onlyOwner {
```
- Found in contracts/governance/ElderElection.sol [Line: 24](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L24)
```solidity
contract ElderElection is Nonces, AccessControl {
```
- Found in contracts/governance/ElderElection.sol [Line: 73](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L73)
```solidity
function nominate(uint256 discordId) external onlyRole(CAN_NOMINATE) {
```
- Found in contracts/governance/ElderElection.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L86)
```solidity
function resign(uint256 discordId) external onlyRole(CAN_NOMINATE) {
```
- Found in contracts/governance/Templar.sol [Line: 12](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L12)
```solidity
contract Templar is ERC721, AccessControl {
```
- Found in contracts/governance/Templar.sol [Line: 35](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L35)
```solidity
function setBaseUri(string calldata _baseUri) external onlyRole(OWNER) {
```
- Found in contracts/governance/Templar.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L49)
```solidity
) external onlyRole(CAN_ASSIGN) {
```
- Found in contracts/governance/TemplarMetadata.sol [Line: 10](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L10)
```solidity
contract TemplarMetadata is AccessControl {
```
- Found in contracts/governance/TemplarMetadata.sol [Line: 31](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L31)
```solidity
) external onlyRole(CAN_UPDATE) {
```
- Found in contracts/templegold/TempleGold.sol [Line: 79](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L79)
```solidity
function setStaking(address _staking) external override onlyOwner {
```
- Found in contracts/templegold/TempleGold.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L89)
```solidity
function setEscrow(address _escrow) external override onlyOwner {
```
- Found in contracts/templegold/TempleGold.sol [Line: 99](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L99)
```solidity
function setTeamGnosis(address _gnosis) external override onlyOwner {
```
- Found in contracts/templegold/TempleGold.sol [Line: 110](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L110)
```solidity
function authorizeContract(address _contract, bool _whitelist) external override onlyOwner {
```
- Found in contracts/templegold/TempleGold.sol [Line: 120](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L120)
```solidity
function setDistributionParams(DistributionParams calldata _params) external override onlyOwner {
```
- Found in contracts/templegold/TempleGold.sol [Line: 130](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L130)
```solidity
function setVestingFactor(VestingFactor calldata _factor) external override onlyOwner {
```
</details>
## L-2: `ecrecover` Signature Malleability
The `ecrecover` function is susceptible to signature malleability. This means that the same message can be signed in multiple ways, allowing an attacker to change the message signature without invalidating it. This can lead to unexpected behavior in smart contracts, such as the loss of funds or the ability to bypass access control. Consider using OpenZeppelin's ECDSA library instead of the built-in function.
<details><summary>2 Found Instances</summary>
- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 120](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L120)
```solidity
currentOwner = ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", dataHash)), v - 4, r, s);
```
- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 124](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L124)
```solidity
currentOwner = ecrecover(dataHash, v, r, s);
```
</details>
## L-3: Unsafe ERC20 Operation
ERC20 functions may not behave as expected. For example: return values are not always meaningful. It is recommended to use OpenZeppelin's SafeERC20 library.
<details><summary>4 Found Instances</summary>
- Found in contracts/amo/Ramos.sol [Line: 195](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L195)
```solidity
protocolToken.approve(previousVault, 0);
```
- Found in contracts/amo/Ramos.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L196)
```solidity
quoteToken.approve(previousVault, 0);
```
- Found in contracts/amo/Ramos.sol [Line: 489](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L489)
```solidity
quoteToken.approve(address(balancerVault), 0);
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 394](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)
```solidity
daiToken.approve(previousTrv, 0);
```
</details>
## L-4: Unspecific Solidity Pragma
Consider using a specific version of Solidity in your contracts instead of a wide version. For example, instead of `pragma solidity ^0.8.0;`, use `pragma solidity 0.8.0;`
<details><summary>71 Found Instances</summary>
- Found in contracts/admin/TempleTeamPayments.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L2)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L2)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/amm/TreasuryIV.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/amm/TreasuryIV.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/amo/AuraStaking.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/amo/Ramos.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/core/Exposure.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/JoiningFee.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/JoiningFee.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/MultiOtcOffer.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/core/OpsManager.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/OtcOffer.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/core/Rational.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/Rational.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/RebasingERC20.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/RebasingERC20.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/TempleERC20Token.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/Vault.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/VaultProxy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/core/VaultedTemple.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/VaultedTemple.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/deprecated/Faith.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/deprecated/IExitQueue.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/IExitQueue.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/deprecated/InstantExitQueue.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/deprecated/LockedOGTemple.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/deprecated/OGTemple.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/fakes/FakeERC20.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/FakeERC20.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/fakes/FakeERC20CustomDecimals.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/FakeERC20CustomDecimals.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/fakes/NoopLiquidator.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/NoopLiquidator.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L1)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/governance/ElderElection.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L2)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/governance/Templar.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L2)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/governance/TemplarMetadata.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L2)
```solidity
pragma solidity ^0.8.4;
```
- Found in contracts/interfaces/core/ITempleERC20Token.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/core/ITempleERC20Token.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/interfaces/templegold/IAuctionBase.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/IAuctionBase.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/interfaces/templegold/IDaiGoldAuction.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/IDaiGoldAuction.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/interfaces/templegold/ISpiceAuction.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ISpiceAuction.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/interfaces/templegold/ISpiceAuctionFactory.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ISpiceAuctionFactory.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/interfaces/templegold/ITempleGold.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleGold.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/interfaces/templegold/ITempleGoldAdmin.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleGoldAdmin.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/interfaces/templegold/ITempleGoldStaking.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleGoldStaking.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/interfaces/templegold/ITempleTeleporter.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleTeleporter.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/templegold/AuctionBase.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/AuctionBase.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/templegold/DaiGoldAuction.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/templegold/SpiceAuction.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/templegold/SpiceAuctionFactory.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuctionFactory.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/templegold/TempleGold.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/templegold/TempleGoldAdmin.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldAdmin.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/templegold/TempleTeleporter.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/TempleTeleporter.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/TreasuryPriceIndexOracle.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryPriceIndexOracle.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/access/TempleElevatedAccess.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/access/TempleElevatedAccess.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/interestRate/BaseInterestRateModel.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/interestRate/BaseInterestRateModel.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/safeGuards/ThresholdSafeGuard.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/ThresholdSafeGuard.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/strategies/DsrBaseStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/DsrBaseStrategy.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/strategies/GnosisStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/GnosisStrategy.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/strategies/RamosStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/RamosStrategy.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/strategies/TempleTokenBaseStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/strategies/TlcStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/TlcStrategy.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L1)
```solidity
pragma solidity ^0.8.20;
```
</details>
## L-5: Address State Variable Set Without Checks
Check for `address(0)` when assigning values to address state variables.
<details><summary>43 Found Instances</summary>
- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L41)
```solidity
templeTeamPaymentsImplementation = _implementation;
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L27)
```solidity
temple = _temple;
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 44](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L44)
```solidity
templeTreasury = _templeTreasury;
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 45](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L45)
```solidity
defendStable = _defendStable;
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 53](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L53)
```solidity
templeTreasury = _templeTreasury;
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L57)
```solidity
defendStable = _defendStable;
```
- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L68)
```solidity
owner = _owner;
```
- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 69](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L69)
```solidity
token0 = _token0;
```
- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 70](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L70)
```solidity
token1 = _token1;
```
- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L76)
```solidity
router = _router;
```
- Found in contracts/amo/AuraStaking.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L49)
```solidity
rewardsRecipient = _recipient;
```
- Found in contracts/amo/Ramos.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L123)
```solidity
feeCollector = _feeCollector;
```
- Found in contracts/amo/Ramos.sol [Line: 135](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L135)
```solidity
poolHelper = IBalancerPoolHelper(_poolHelper);
```
- Found in contracts/amo/Ramos.sol [Line: 183](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L183)
```solidity
tpiOracle = ITreasuryPriceIndexOracle(newTpiOracle);
```
- Found in contracts/amo/Ramos.sol [Line: 199](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L199)
```solidity
tokenVault = IRamosTokenVault(vault);
```
- Found in contracts/core/Exposure.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L41)
```solidity
revalToken = _revalToken;
```
- Found in contracts/core/Exposure.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L68)
```solidity
liquidator = _liquidator;
```
- Found in contracts/core/OpsManager.sol [Line: 35](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L35)
```solidity
templeExposure = new Exposure("vaulted temple", "V_TEMPLE", _templeToken);
```
- Found in contracts/core/OpsManager.sol [Line: 37](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L37)
```solidity
vaultedTemple = new VaultedTemple(_templeToken, address(templeExposure));
```
- Found in contracts/core/OtcOffer.sol [Line: 80](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L80)
```solidity
fundsOwner = _fundsOwner;
```
- Found in contracts/deprecated/InstantExitQueue.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L18)
```solidity
templeStaking = _templeStaking;
```
- Found in contracts/deprecated/InstantExitQueue.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L19)
```solidity
templeToken = _templeToken;
```
- Found in contracts/deprecated/LockedOGTemple.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L27)
```solidity
OG_TEMPLE = _OG_TEMPLE;
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L55)
```solidity
EXIT_QUEUE = _EXIT_QUEUE;
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L68)
```solidity
EXIT_QUEUE = _EXIT_QUEUE;
```
- Found in contracts/fakes/NoopLiquidator.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/fakes/NoopLiquidator.sol#L16)
```solidity
templeToken = _templeToken;
```
- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L18)
```solidity
templeToken = _templeToken;
```
- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L19)
```solidity
vaultedTemple = _vaultedTemple;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 143](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L143)
```solidity
previousStaking = ITempleGoldStaking(_previousStaking);
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 192](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L192)
```solidity
distributionStarter = _starter;
```
- Found in contracts/governance/ElderElection.sol [Line: 60](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L60)
```solidity
templars = _templars;
```
- Found in contracts/governance/TemplarMetadata.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L21)
```solidity
templars = _templars;
```
- Found in contracts/templegold/DaiGoldAuction.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L56)
```solidity
bidToken = IERC20(_bidToken);
```
- Found in contracts/templegold/DaiGoldAuction.sol [Line: 81](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L81)
```solidity
auctionStarter = _starter;
```
- Found in contracts/templegold/SpiceAuction.sol [Line: 63](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L63)
```solidity
daoExecutor = _daoExecutor;
```
- Found in contracts/templegold/TempleGold.sol [Line: 69](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L69)
```solidity
staking = ITempleGoldStaking(_initArgs.staking);
```
- Found in contracts/templegold/TempleGold.sol [Line: 70](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L70)
```solidity
escrow = IDaiGoldAuction(_initArgs.escrow);
```
- Found in contracts/templegold/TempleGold.sol [Line: 71](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L71)
```solidity
teamGnosis = _initArgs.gnosis;
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 127](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L127)
```solidity
distributionStarter = _starter;
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 101](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L101)
```solidity
tpiOracle = ITreasuryPriceIndexOracle(_tpiOracle);
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 120](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L120)
```solidity
borrowTokens[token] = BorrowTokenConfig({
```
- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 46](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L46)
```solidity
treasuryReservesVault = ITreasuryReservesVault(_treasuryReservesVault);
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 389](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L389)
```solidity
tlcStrategy = ITlcStrategy(newTlcStrategy);
```
</details>
## L-6: Public Function Not Used Internally
If a function is marked public but is not used internally, consider marking it as `external`.
<details><summary>17 Found Instances</summary>
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 25](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L25)
```solidity
function initialize(IERC20 _temple) public initializer {
```
- Found in contracts/core/OpsManagerLib.sol [Line: 12](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L12)
```solidity
function createExposure(
```
- Found in contracts/core/OpsManagerLib.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L32)
```solidity
function setExposureLiquidator(
```
- Found in contracts/core/OpsManagerLib.sol [Line: 45](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L45)
```solidity
function setExposureMinterState(
```
- Found in contracts/core/OpsManagerLib.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L55)
```solidity
function rebalance(
```
- Found in contracts/core/OpsManagerLib.sol [Line: 79](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L79)
```solidity
function requiresRebalance(
```
- Found in contracts/core/OpsManagerLib.sol [Line: 97](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L97)
```solidity
function updateExposureReval(IERC20[] memory exposureTokens, uint256[] memory revals, mapping(IERC20 => TreasuryFarmingRevenue) storage pools) public {
```
- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 48](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L48)
```solidity
function addRevenue(uint256 revenueEarned) onlyOwner public {
```
- Found in contracts/core/Vault.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L86)
```solidity
function withdraw(uint256 amount) public {
```
- Found in contracts/core/Vault.sol [Line: 96](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L96)
```solidity
function withdrawFor(address owner, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {
```
- Found in contracts/core/Vault.sol [Line: 167](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L167)
```solidity
function deposit(uint256 amount) public {
```
- Found in contracts/core/VaultProxy.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L58)
```solidity
function depositTempleWithFaith(uint256 _amountTemple, uint112 _amountFaith, Vault vault) public {
```
- Found in contracts/core/VaultProxy.sol [Line: 109](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L109)
```solidity
function depositTempleFor(uint256 _amount, Vault vault) public {
```
- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 77](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L77)
```solidity
function circulatingSupply() public view returns (uint256) {
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 431](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L431)
```solidity
function balanceOf(address account) public view returns (uint256) {
```
- Found in contracts/governance/Templar.sol [Line: 65](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L65)
```solidity
function checkExists(uint256 discordId) public view {
```
- Found in contracts/templegold/TempleGoldAdmin.sol [Line: 107](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldAdmin.sol#L107)
```solidity
function setDelegate(address _delegate) public onlyElevatedAccess {
```
</details>
## L-7: Literal Instead of Constant
Define and use `constant` variables instead of using literals. If the same constant literal value is used multiple times, create a constant state variable and reference it throughout the contract.
<details><summary>712 Found Instances</summary>
- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 163](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L163)
```solidity
uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
```
- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 164](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L164)
```solidity
uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
```
- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 165](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L165)
```solidity
require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L52)
```solidity
require(_startTimestamp > (block.timestamp - (24 * 2 * 60 * 60)), "Start timestamp can't be more than 2 days in the past");
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L100)
```solidity
ABDKMath64x64.divu(amountOgTemple, 1e18).mul(_accumulationFactorAt(currentEpoch()))
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 129](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L129)
```solidity
amountOgTemple = _overflowSafeMul1e18(ABDKMath64x64.divu(_amountTemple, 1e18).div(accumulationFactor));
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 159](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L159)
```solidity
uint256 fractionalDigits = amountFixedPoint.sub(ABDKMath64x64.fromUInt(integralDigits)).mul(ABDKMath64x64.fromUInt(1e18)).toUInt();
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 160](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L160)
```solidity
return (integralDigits * 1e18) + fractionalDigits;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 537](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L537)
```solidity
vestingRate = 1e18;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 539](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L539)
```solidity
vestingRate = (block.timestamp - _stakeInfo.stakeTime) * 1e18 / vestingPeriod;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 542](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L542)
```solidity
if (vestingRate == 1e18) {
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 545](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L545)
```solidity
_perTokenReward = _rewardPerToken() * vestingRate / 1e18;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 549](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L549)
```solidity
(_balance * (_perTokenReward - userRewardPerTokenPaid[_account][_index])) / 1e18 +
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 558](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L558)
```solidity
vestingRate = 1e18;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 560](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L560)
```solidity
vestingRate = (block.timestamp - _stakeInfo.stakeTime) * 1e18 / vestingPeriod;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 580](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L580)
```solidity
rewardData.rewardRate * 1e18)
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 680](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L680)
```solidity
userRewardPerTokenPaid[_account][_index] = vestingRate * uint256(rewardData.rewardPerTokenStored) / 1e18;
```
- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L76)
```solidity
return existingBalance * (1e18 + (daiSavingsRate * elapsed / 365 days)) / 1e18;
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 473](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L473)
```solidity
if (vestingRate == 1e18) {
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 476](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L476)
```solidity
_perTokenReward = _rewardPerToken() * vestingRate / 1e18;
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 480](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L480)
```solidity
(_stakeInfo.amount * (_perTokenReward - userRewardPerTokenPaid[_account][_index])) / 1e18 +
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 489](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L489)
```solidity
vestingRate = 1e18;
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 491](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L491)
```solidity
vestingRate = (block.timestamp - _stakeInfo.stakeTime) * 1e18 / vestingPeriod;
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 511](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L511)
```solidity
rewardData.rewardRate * 1e18)
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 598](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L598)
```solidity
userRewardPerTokenPaid[_account][_index] = vestingRate * uint256(rewardData.rewardPerTokenStored) / 1e18;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L36)
```solidity
require (x >= -0x8000000000000000 && x <= 0x7FFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 37](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L37)
```solidity
return int128 (x << 64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L50)
```solidity
return int64 (x >> 64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 63](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L63)
```solidity
require (x <= 0x7FFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 64](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L64)
```solidity
return int128 (int256 (x << 64));
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 78](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L78)
```solidity
return uint64 (uint128 (x >> 64));
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 91](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L91)
```solidity
int256 result = x >> 64;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 106](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L106)
```solidity
return int256 (x) << 64;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 149](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L149)
```solidity
int256 result = int256(x) * y >> 64;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 166](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L166)
```solidity
require (y >= -0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF &&
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 168](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L168)
```solidity
return -y << 63;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 207](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L207)
```solidity
uint256 lo = (uint256 (int256 (x)) * (y & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) >> 64;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 208](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L208)
```solidity
uint256 hi = uint256 (int256 (x)) * (y >> 128);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 210](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L210)
```solidity
require (hi <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 211](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L211)
```solidity
hi <<= 64;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 230](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L230)
```solidity
int256 result = (int256 (x) << 64) / y;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 259](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L259)
```solidity
require (absoluteResult <= 0x80000000000000000000000000000000);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 321](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L321)
```solidity
int256 result = int256 (0x100000000000000000000000000000000) / x;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 372](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L372)
```solidity
absResult = 0x100000000000000000000000000000000;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 374](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L374)
```solidity
if (absX <= 0x10000000000000000) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 375](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L375)
```solidity
absX <<= 63;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 377](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L377)
```solidity
if (y & 0x1 != 0) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 378](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L378)
```solidity
absResult = absResult * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 380](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L380)
```solidity
absX = absX * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 382](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L382)
```solidity
if (y & 0x2 != 0) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 383](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L383)
```solidity
absResult = absResult * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 385](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L385)
```solidity
absX = absX * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 387](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L387)
```solidity
if (y & 0x4 != 0) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 388](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L388)
```solidity
absResult = absResult * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 390](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L390)
```solidity
absX = absX * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 392](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L392)
```solidity
if (y & 0x8 != 0) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 393](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L393)
```solidity
absResult = absResult * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 395](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L395)
```solidity
absX = absX * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 397](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L397)
```solidity
y >>= 4;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 400](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L400)
```solidity
absResult >>= 64;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 402](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L402)
```solidity
uint256 absXShift = 63;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 403](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L403)
```solidity
if (absX < 0x1000000000000000000000000) { absX <<= 32; absXShift -= 32; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 404](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L404)
```solidity
if (absX < 0x10000000000000000000000000000) { absX <<= 16; absXShift -= 16; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 405](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L405)
```solidity
if (absX < 0x1000000000000000000000000000000) { absX <<= 8; absXShift -= 8; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 406](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L406)
```solidity
if (absX < 0x10000000000000000000000000000000) { absX <<= 4; absXShift -= 4; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 408](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L408)
```solidity
if (absX < 0x80000000000000000000000000000000) { absX <<= 1; absXShift -= 1; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 412](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L412)
```solidity
require (absXShift < 64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 414](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L414)
```solidity
if (y & 0x1 != 0) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 415](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L415)
```solidity
absResult = absResult * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 417](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L417)
```solidity
if (absResult > 0x100000000000000000000000000000000) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 422](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L422)
```solidity
absX = absX * absX >> 127;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 424](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L424)
```solidity
if (absX >= 0x100000000000000000000000000000000) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 432](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L432)
```solidity
require (resultShift < 64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 433](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L433)
```solidity
absResult >>= 64 - resultShift;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 450](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L450)
```solidity
return int128 (sqrtu (uint256 (int256 (x)) << 64));
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 466](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L466)
```solidity
if (xc >= 0x10000000000000000) { xc >>= 64; msb += 64; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 467](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L467)
```solidity
if (xc >= 0x100000000) { xc >>= 32; msb += 32; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 468](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L468)
```solidity
if (xc >= 0x10000) { xc >>= 16; msb += 16; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 469](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L469)
```solidity
if (xc >= 0x100) { xc >>= 8; msb += 8; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 470](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L470)
```solidity
if (xc >= 0x10) { xc >>= 4; msb += 4; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 471](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L471)
```solidity
if (xc >= 0x4) { xc >>= 2; msb += 2; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 472](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L472)
```solidity
if (xc >= 0x2) msb += 1; // No need to shift xc anymore
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 474](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L474)
```solidity
int256 result = msb - 64 << 64;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 475](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L475)
```solidity
uint256 ux = uint256 (int256 (x)) << uint256 (127 - msb);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 476](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L476)
```solidity
for (int256 bit = 0x8000000000000000; bit > 0; bit >>= 1) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 478](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L478)
```solidity
uint256 b = ux >> 255;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 479](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L479)
```solidity
ux >>= 127 + b;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 498](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L498)
```solidity
uint256 (int256 (log_2 (x))) * 0xB17217F7D1CF79ABC9E3B39803F2F6AF >> 128));
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 510](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L510)
```solidity
require (x < 0x400000000000000000); // Overflow
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 512](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L512)
```solidity
if (x < -0x400000000000000000) return 0; // Underflow
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 514](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L514)
```solidity
uint256 result = 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 516](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L516)
```solidity
if (x & 0x8000000000000000 > 0)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 517](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L517)
```solidity
result = result * 0x16A09E667F3BCC908B2FB1366EA957D3E >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 519](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L519)
```solidity
result = result * 0x1306FE0A31B7152DE8D5A46305C85EDEC >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 521](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L521)
```solidity
result = result * 0x1172B83C7D517ADCDF7C8C50EB14A791F >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 523](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L523)
```solidity
result = result * 0x10B5586CF9890F6298B92B71842A98363 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 525](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L525)
```solidity
result = result * 0x1059B0D31585743AE7C548EB68CA417FD >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 527](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L527)
```solidity
result = result * 0x102C9A3E778060EE6F7CACA4F7A29BDE8 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 529](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L529)
```solidity
result = result * 0x10163DA9FB33356D84A66AE336DCDFA3F >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 531](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L531)
```solidity
result = result * 0x100B1AFA5ABCBED6129AB13EC11DC9543 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 533](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L533)
```solidity
result = result * 0x10058C86DA1C09EA1FF19D294CF2F679B >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 535](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L535)
```solidity
result = result * 0x1002C605E2E8CEC506D21BFC89A23A00F >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 537](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L537)
```solidity
result = result * 0x100162F3904051FA128BCA9C55C31E5DF >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 539](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L539)
```solidity
result = result * 0x1000B175EFFDC76BA38E31671CA939725 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 541](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L541)
```solidity
result = result * 0x100058BA01FB9F96D6CACD4B180917C3D >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 543](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L543)
```solidity
result = result * 0x10002C5CC37DA9491D0985C348C68E7B3 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 545](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L545)
```solidity
result = result * 0x1000162E525EE054754457D5995292026 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 547](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L547)
```solidity
result = result * 0x10000B17255775C040618BF4A4ADE83FC >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 549](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L549)
```solidity
result = result * 0x1000058B91B5BC9AE2EED81E9B7D4CFAB >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 551](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L551)
```solidity
result = result * 0x100002C5C89D5EC6CA4D7C8ACC017B7C9 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 553](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L553)
```solidity
result = result * 0x10000162E43F4F831060E02D839A9D16D >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 555](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L555)
```solidity
result = result * 0x100000B1721BCFC99D9F890EA06911763 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 557](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L557)
```solidity
result = result * 0x10000058B90CF1E6D97F9CA14DBCC1628 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 559](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L559)
```solidity
result = result * 0x1000002C5C863B73F016468F6BAC5CA2B >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 561](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L561)
```solidity
result = result * 0x100000162E430E5A18F6119E3C02282A5 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 563](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L563)
```solidity
result = result * 0x1000000B1721835514B86E6D96EFD1BFE >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 565](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L565)
```solidity
result = result * 0x100000058B90C0B48C6BE5DF846C5B2EF >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 567](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L567)
```solidity
result = result * 0x10000002C5C8601CC6B9E94213C72737A >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 569](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L569)
```solidity
result = result * 0x1000000162E42FFF037DF38AA2B219F06 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 571](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L571)
```solidity
result = result * 0x10000000B17217FBA9C739AA5819F44F9 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 573](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L573)
```solidity
result = result * 0x1000000058B90BFCDEE5ACD3C1CEDC823 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 575](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L575)
```solidity
result = result * 0x100000002C5C85FE31F35A6A30DA1BE50 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 577](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L577)
```solidity
result = result * 0x10000000162E42FF0999CE3541B9FFFCF >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 578](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L578)
```solidity
if (x & 0x100000000 > 0)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 579](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L579)
```solidity
result = result * 0x100000000B17217F80F4EF5AADDA45554 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 581](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L581)
```solidity
result = result * 0x10000000058B90BFBF8479BD5A81B51AD >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 583](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L583)
```solidity
result = result * 0x1000000002C5C85FDF84BD62AE30A74CC >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 585](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L585)
```solidity
result = result * 0x100000000162E42FEFB2FED257559BDAA >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 587](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L587)
```solidity
result = result * 0x1000000000B17217F7D5A7716BBA4A9AE >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 589](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L589)
```solidity
result = result * 0x100000000058B90BFBE9DDBAC5E109CCE >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 591](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L591)
```solidity
result = result * 0x10000000002C5C85FDF4B15DE6F17EB0D >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 593](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L593)
```solidity
result = result * 0x1000000000162E42FEFA494F1478FDE05 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 595](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L595)
```solidity
result = result * 0x10000000000B17217F7D20CF927C8E94C >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 597](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L597)
```solidity
result = result * 0x1000000000058B90BFBE8F71CB4E4B33D >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 599](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L599)
```solidity
result = result * 0x100000000002C5C85FDF477B662B26945 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 601](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L601)
```solidity
result = result * 0x10000000000162E42FEFA3AE53369388C >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 603](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L603)
```solidity
result = result * 0x100000000000B17217F7D1D351A389D40 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 605](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L605)
```solidity
result = result * 0x10000000000058B90BFBE8E8B2D3D4EDE >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 607](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L607)
```solidity
result = result * 0x1000000000002C5C85FDF4741BEA6E77E >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 609](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L609)
```solidity
result = result * 0x100000000000162E42FEFA39FE95583C2 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 610](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L610)
```solidity
if (x & 0x10000 > 0)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 611](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L611)
```solidity
result = result * 0x1000000000000B17217F7D1CFB72B45E1 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 613](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L613)
```solidity
result = result * 0x100000000000058B90BFBE8E7CC35C3F0 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 615](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L615)
```solidity
result = result * 0x10000000000002C5C85FDF473E242EA38 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 617](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L617)
```solidity
result = result * 0x1000000000000162E42FEFA39F02B772C >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 619](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L619)
```solidity
result = result * 0x10000000000000B17217F7D1CF7D83C1A >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 621](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L621)
```solidity
result = result * 0x1000000000000058B90BFBE8E7BDCBE2E >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 623](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L623)
```solidity
result = result * 0x100000000000002C5C85FDF473DEA871F >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 625](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L625)
```solidity
result = result * 0x10000000000000162E42FEFA39EF44D91 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 626](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L626)
```solidity
if (x & 0x100 > 0)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 627](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L627)
```solidity
result = result * 0x100000000000000B17217F7D1CF79E949 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 629](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L629)
```solidity
result = result * 0x10000000000000058B90BFBE8E7BCE544 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 631](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L631)
```solidity
result = result * 0x1000000000000002C5C85FDF473DE6ECA >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 633](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L633)
```solidity
result = result * 0x100000000000000162E42FEFA39EF366F >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 634](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L634)
```solidity
if (x & 0x10 > 0)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 635](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L635)
```solidity
result = result * 0x1000000000000000B17217F7D1CF79AFA >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 636](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L636)
```solidity
if (x & 0x8 > 0)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 637](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L637)
```solidity
result = result * 0x100000000000000058B90BFBE8E7BCD6D >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 638](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L638)
```solidity
if (x & 0x4 > 0)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 639](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L639)
```solidity
result = result * 0x10000000000000002C5C85FDF473DE6B2 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 640](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L640)
```solidity
if (x & 0x2 > 0)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 641](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L641)
```solidity
result = result * 0x1000000000000000162E42FEFA39EF358 >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 642](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L642)
```solidity
if (x & 0x1 > 0)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 643](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L643)
```solidity
result = result * 0x10000000000000000B17217F7D1CF79AB >> 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 645](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L645)
```solidity
result >>= uint256 (int256 (63 - (x >> 64)));
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 660](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L660)
```solidity
require (x < 0x400000000000000000); // Overflow
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 662](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L662)
```solidity
if (x < -0x400000000000000000) return 0; // Underflow
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 665](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L665)
```solidity
int128 (int256 (x) * 0x171547652B82FE1777D0FFDA0D23A7D12 >> 128));
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 683](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L683)
```solidity
if (x <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 684](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L684)
```solidity
result = (x << 64) / y;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 686](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L686)
```solidity
uint256 msb = 192;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 687](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L687)
```solidity
uint256 xc = x >> 192;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 688](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L688)
```solidity
if (xc >= 0x100000000) { xc >>= 32; msb += 32; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 689](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L689)
```solidity
if (xc >= 0x10000) { xc >>= 16; msb += 16; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 690](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L690)
```solidity
if (xc >= 0x100) { xc >>= 8; msb += 8; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 691](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L691)
```solidity
if (xc >= 0x10) { xc >>= 4; msb += 4; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 692](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L692)
```solidity
if (xc >= 0x4) { xc >>= 2; msb += 2; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 693](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L693)
```solidity
if (xc >= 0x2) msb += 1; // No need to shift xc anymore
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 695](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L695)
```solidity
result = (x << 255 - msb) / ((y - 1 >> msb - 191) + 1);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 696](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L696)
```solidity
require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 698](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L698)
```solidity
uint256 hi = result * (y >> 128);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 699](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L699)
```solidity
uint256 lo = result * (y & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 701](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L701)
```solidity
uint256 xh = x >> 192;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 702](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L702)
```solidity
uint256 xl = x << 64;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 706](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L706)
```solidity
lo = hi << 128;
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 710](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L710)
```solidity
assert (xh == hi >> 128);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 715](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L715)
```solidity
require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 733](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L733)
```solidity
if (xx >= 0x100000000000000000000000000000000) { xx >>= 128; r <<= 64; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 734](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L734)
```solidity
if (xx >= 0x10000000000000000) { xx >>= 64; r <<= 32; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 735](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L735)
```solidity
if (xx >= 0x100000000) { xx >>= 32; r <<= 16; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 736](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L736)
```solidity
if (xx >= 0x10000) { xx >>= 16; r <<= 8; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 737](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L737)
```solidity
if (xx >= 0x100) { xx >>= 8; r <<= 4; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 738](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L738)
```solidity
if (xx >= 0x10) { xx >>= 4; r <<= 2; }
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 739](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L739)
```solidity
if (xx >= 0x8) { r <<= 1; }
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 54](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L54)
```solidity
if (msb < 112) result <<= 112 - msb;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L55)
```solidity
else if (msb > 112) result >>= msb - 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L57)
```solidity
result = result & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF | 16383 + msb << 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L58)
```solidity
if (x < 0) result |= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 74](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L74)
```solidity
uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L76)
```solidity
require (exponent <= 16638); // Overflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 77](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L77)
```solidity
if (exponent < 16383) return 0; // Underflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 79](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L79)
```solidity
uint256 result = uint256 (uint128 (x)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 80](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L80)
```solidity
0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 82](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L82)
```solidity
if (exponent < 16495) result >>= 16495 - exponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L83)
```solidity
else if (exponent > 16495) result <<= exponent - 16495;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 85](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L85)
```solidity
if (uint128 (x) >= 0x80000000000000000000000000000000) { // Negative
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L86)
```solidity
require (result <= 0x8000000000000000000000000000000000000000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L89)
```solidity
require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L108)
```solidity
if (msb < 112) result <<= 112 - msb;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 109](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L109)
```solidity
else if (msb > 112) result >>= msb - 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 111](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L111)
```solidity
result = result & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF | 16383 + msb << 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 129](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L129)
```solidity
uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 131](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L131)
```solidity
if (exponent < 16383) return 0; // Underflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L133)
```solidity
require (uint128 (x) < 0x80000000000000000000000000000000); // Negative
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 135](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L135)
```solidity
require (exponent <= 16638); // Overflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 136](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L136)
```solidity
uint256 result = uint256 (uint128 (x)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 137](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L137)
```solidity
0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 139](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L139)
```solidity
if (exponent < 16495) result >>= 16495 - exponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 140](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L140)
```solidity
else if (exponent > 16495) result <<= exponent - 16495;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 161](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L161)
```solidity
if (msb < 112) result <<= 112 - msb;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 162](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L162)
```solidity
else if (msb > 112) result >>= msb - 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 164](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L164)
```solidity
result = result & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF | 16255 + msb << 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 165](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L165)
```solidity
if (x < 0) result |= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 181](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L181)
```solidity
uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 184](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L184)
```solidity
if (exponent < 16255) return 0; // Underflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 186](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L186)
```solidity
uint256 result = uint256 (uint128 (x)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 187](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L187)
```solidity
0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 189](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L189)
```solidity
if (exponent < 16367) result >>= 16367 - exponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 190](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L190)
```solidity
else if (exponent > 16367) result <<= exponent - 16367;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 192](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L192)
```solidity
if (uint128 (x) >= 0x80000000000000000000000000000000) { // Negative
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 193](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L193)
```solidity
require (result <= 0x8000000000000000000000000000000000000000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L196)
```solidity
require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 217](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L217)
```solidity
if (msb < 112) result <<= 112 - msb;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 218](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L218)
```solidity
else if (msb > 112) result >>= msb - 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 220](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L220)
```solidity
result = result & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF | 16319 + msb << 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 221](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L221)
```solidity
if (x < 0) result |= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 237](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L237)
```solidity
uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 240](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L240)
```solidity
if (exponent < 16319) return 0; // Underflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 242](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L242)
```solidity
uint256 result = uint256 (uint128 (x)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 243](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L243)
```solidity
0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 245](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L245)
```solidity
if (exponent < 16431) result >>= 16431 - exponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 246](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L246)
```solidity
else if (exponent > 16431) result <<= exponent - 16431;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 248](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L248)
```solidity
if (uint128 (x) >= 0x80000000000000000000000000000000) { // Negative
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 249](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L249)
```solidity
require (result <= 0x80000000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 252](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L252)
```solidity
require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 266](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L266)
```solidity
bool negative = x & 0x8000000000000000000000000000000000000000000000000000000000000000 > 0;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 268](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L268)
```solidity
uint256 exponent = uint256 (x) >> 236 & 0x7FFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 269](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L269)
```solidity
uint256 significand = uint256 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 271](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L271)
```solidity
if (exponent == 0x7FFFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 278](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L278)
```solidity
else if (exponent < 245649)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 284](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L284)
```solidity
significand >>= 124;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 285](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L285)
```solidity
exponent -= 245760;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 288](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L288)
```solidity
uint128 result = uint128 (significand | exponent << 112);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 289](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L289)
```solidity
if (negative) result |= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 303](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L303)
```solidity
uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 305](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L305)
```solidity
uint256 result = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 307](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L307)
```solidity
if (exponent == 0x7FFF) exponent = 0x7FFFF; // Infinity or NaN
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 311](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L311)
```solidity
result = result << 236 - msb & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 312](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L312)
```solidity
exponent = 245649 + msb;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 315](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L315)
```solidity
result <<= 124;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 316](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L316)
```solidity
exponent += 245760;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 319](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L319)
```solidity
result |= exponent << 236;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 320](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L320)
```solidity
if (uint128 (x) >= 0x80000000000000000000000000000000)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 321](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L321)
```solidity
result |= 0x8000000000000000000000000000000000000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 335](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L335)
```solidity
uint256 exponent = uint64 (x) >> 52 & 0x7FF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 339](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L339)
```solidity
if (exponent == 0x7FF) exponent = 0x7FFF; // Infinity or NaN
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 343](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L343)
```solidity
result = result << 112 - msb & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 344](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L344)
```solidity
exponent = 15309 + msb;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 347](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L347)
```solidity
result <<= 60;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 348](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L348)
```solidity
exponent += 15360;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 351](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L351)
```solidity
result |= exponent << 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 352](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L352)
```solidity
if (x & 0x8000000000000000 > 0)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 353](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L353)
```solidity
result |= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 367](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L367)
```solidity
bool negative = uint128 (x) >= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 369](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L369)
```solidity
uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 370](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L370)
```solidity
uint256 significand = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 372](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L372)
```solidity
if (exponent == 0x7FFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 375](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L375)
```solidity
bytes8 (0xFFF0000000000000) : // -Infinity
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 376](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L376)
```solidity
bytes8 (0x7FF0000000000000); // Infinity
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 381](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L381)
```solidity
bytes8 (0xFFF0000000000000) : // -Infinity
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 382](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L382)
```solidity
bytes8 (0x7FF0000000000000); // Infinity
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 383](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L383)
```solidity
else if (exponent < 15309)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 385](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L385)
```solidity
bytes8 (0x8000000000000000) : // -0
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 388](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L388)
```solidity
significand = (significand | 0x10000000000000000000000000000) >> 15421 - exponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 391](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L391)
```solidity
significand >>= 60;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 392](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L392)
```solidity
exponent -= 15360;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 395](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L395)
```solidity
uint64 result = uint64 (significand | exponent << 52);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 396](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L396)
```solidity
if (negative) result |= 0x8000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 410](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L410)
```solidity
return uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 411](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L411)
```solidity
0x7FFF0000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 424](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L424)
```solidity
return uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ==
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 425](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L425)
```solidity
0x7FFF0000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 438](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L438)
```solidity
uint128 absoluteX = uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 440](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L440)
```solidity
require (absoluteX <= 0x7FFF0000000000000000000000000000); // Not NaN
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 443](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L443)
```solidity
else if (uint128 (x) >= 0x80000000000000000000000000000000) return -1;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 458](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L458)
```solidity
uint128 absoluteX = uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 460](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L460)
```solidity
require (absoluteX <= 0x7FFF0000000000000000000000000000); // Not NaN
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 462](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L462)
```solidity
uint128 absoluteY = uint128 (y) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 464](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L464)
```solidity
require (absoluteY <= 0x7FFF0000000000000000000000000000); // Not NaN
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 467](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L467)
```solidity
require (x != y || absoluteX < 0x7FFF0000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 471](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L471)
```solidity
bool negativeX = uint128 (x) >= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 472](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L472)
```solidity
bool negativeY = uint128 (y) >= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 496](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L496)
```solidity
return uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF <
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 497](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L497)
```solidity
0x7FFF0000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 518](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L518)
```solidity
uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 519](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L519)
```solidity
uint256 yExponent = uint128 (y) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 521](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L521)
```solidity
if (xExponent == 0x7FFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 522](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L522)
```solidity
if (yExponent == 0x7FFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 526](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L526)
```solidity
} else if (yExponent == 0x7FFF) return y;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 528](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L528)
```solidity
bool xSign = uint128 (x) >= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 529](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L529)
```solidity
uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 531](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L531)
```solidity
else xSignifier |= 0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 533](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L533)
```solidity
bool ySign = uint128 (y) >= 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 534](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L534)
```solidity
uint256 ySignifier = uint128 (y) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 536](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L536)
```solidity
else ySignifier |= 0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 544](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L544)
```solidity
if (delta > 112) return x;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 546](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L546)
```solidity
else if (delta < -112) return y;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 554](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L554)
```solidity
if (xSignifier >= 0x20000000000000000000000000000) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 559](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L559)
```solidity
if (xExponent == 0x7FFF)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 562](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L562)
```solidity
if (xSignifier < 0x10000000000000000000000000000) xExponent = 0;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 563](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L563)
```solidity
else xSignifier &= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 566](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L566)
```solidity
(xSign ? 0x80000000000000000000000000000000 : 0) |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 567](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L567)
```solidity
(xExponent << 112) |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 579](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L579)
```solidity
if (delta > 112) ySignifier = 1;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 581](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L581)
```solidity
else if (delta < -112) xSignifier = 1;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 595](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L595)
```solidity
if (msb == 113) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 596](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L596)
```solidity
xSignifier = xSignifier >> 1 & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 598](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L598)
```solidity
} else if (msb < 112) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 599](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L599)
```solidity
uint256 shift = 112 - msb;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 601](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L601)
```solidity
xSignifier = xSignifier << shift & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 607](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L607)
```solidity
} else xSignifier &= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 609](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L609)
```solidity
if (xExponent == 0x7FFF)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 612](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L612)
```solidity
(xSign ? 0x80000000000000000000000000000000 : 0) |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 613](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L613)
```solidity
(xExponent << 112) |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 637](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L637)
```solidity
return add (x, y ^ 0x80000000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 662](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L662)
```solidity
uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 663](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L663)
```solidity
uint256 yExponent = uint128 (y) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 665](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L665)
```solidity
if (xExponent == 0x7FFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 666](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L666)
```solidity
if (yExponent == 0x7FFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 667](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L667)
```solidity
if (x == y) return x ^ y & 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 668](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L668)
```solidity
else if (x ^ y == 0x80000000000000000000000000000000) return x | y;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 671](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L671)
```solidity
if (y & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == 0) return NaN;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 672](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L672)
```solidity
else return x ^ y & 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 674](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L674)
```solidity
} else if (yExponent == 0x7FFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 675](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L675)
```solidity
if (x & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == 0) return NaN;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 676](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L676)
```solidity
else return y ^ x & 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 678](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L678)
```solidity
uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 680](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L680)
```solidity
else xSignifier |= 0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 682](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L682)
```solidity
uint256 ySignifier = uint128 (y) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 684](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L684)
```solidity
else ySignifier |= 0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 688](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L688)
```solidity
return (x ^ y) & 0x80000000000000000000000000000000 > 0 ?
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 694](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L694)
```solidity
xSignifier >= 0x200000000000000000000000000000000000000000000000000000000 ? 225 :
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 698](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L698)
```solidity
if (xExponent + msb < 16496) { // Underflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 702](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L702)
```solidity
if (xExponent < 16496)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 703](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L703)
```solidity
xSignifier >>= 16496 - xExponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 704](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L704)
```solidity
else if (xExponent > 16496)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 705](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L705)
```solidity
xSignifier <<= xExponent - 16496;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 708](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L708)
```solidity
xExponent = 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 711](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L711)
```solidity
if (msb > 112)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 712](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L712)
```solidity
xSignifier >>= msb - 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 713](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L713)
```solidity
else if (msb < 112)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 714](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L714)
```solidity
xSignifier <<= 112 - msb;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 716](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L716)
```solidity
xSignifier &= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 721](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L721)
```solidity
return bytes16 (uint128 (uint128 ((x ^ y) & 0x80000000000000000000000000000000) |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 722](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L722)
```solidity
xExponent << 112 | xSignifier));
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 763](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L763)
```solidity
uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 764](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L764)
```solidity
uint256 yExponent = uint128 (y) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 766](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L766)
```solidity
if (xExponent == 0x7FFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 767](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L767)
```solidity
if (yExponent == 0x7FFF) return NaN;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 768](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L768)
```solidity
else return x ^ y & 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 769](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L769)
```solidity
} else if (yExponent == 0x7FFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 771](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L771)
```solidity
else return POSITIVE_ZERO | (x ^ y) & 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 772](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L772)
```solidity
} else if (y & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == 0) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 773](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L773)
```solidity
if (x & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == 0) return NaN;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 774](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L774)
```solidity
else return POSITIVE_INFINITY | (x ^ y) & 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 776](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L776)
```solidity
uint256 ySignifier = uint128 (y) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 778](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L778)
```solidity
else ySignifier |= 0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 780](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L780)
```solidity
uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 783](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L783)
```solidity
uint shift = 226 - mostSignificantBit (xSignifier);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 788](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L788)
```solidity
yExponent += shift - 114;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 792](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L792)
```solidity
xSignifier = (xSignifier | 0x10000000000000000000000000000) << 114;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 797](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L797)
```solidity
return (x ^ y) & 0x80000000000000000000000000000000 > 0 ?
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 800](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L800)
```solidity
assert (xSignifier >= 0x1000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 803](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L803)
```solidity
xSignifier >= 0x80000000000000000000000000000 ? mostSignificantBit (xSignifier) :
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 804](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L804)
```solidity
xSignifier >= 0x40000000000000000000000000000 ? 114 :
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 805](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L805)
```solidity
xSignifier >= 0x20000000000000000000000000000 ? 113 : 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 808](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L808)
```solidity
xExponent = 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 810](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L810)
```solidity
} else if (xExponent + msb + 16380 < yExponent) { // Underflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 814](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L814)
```solidity
if (xExponent + 16380 > yExponent)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 815](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L815)
```solidity
xSignifier <<= xExponent + 16380 - yExponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 816](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L816)
```solidity
else if (xExponent + 16380 < yExponent)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 817](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L817)
```solidity
xSignifier >>= yExponent - xExponent - 16380;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 821](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L821)
```solidity
if (msb > 112)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 822](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L822)
```solidity
xSignifier >>= msb - 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 824](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L824)
```solidity
xSignifier &= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 829](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L829)
```solidity
return bytes16 (uint128 (uint128 ((x ^ y) & 0x80000000000000000000000000000000) |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 830](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L830)
```solidity
xExponent << 112 | xSignifier));
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 843](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L843)
```solidity
return x ^ 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 855](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L855)
```solidity
return x & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 867](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L867)
```solidity
if (uint128 (x) > 0x80000000000000000000000000000000) return NaN;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 869](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L869)
```solidity
uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 870](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L870)
```solidity
if (xExponent == 0x7FFF) return x;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 872](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L872)
```solidity
uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 874](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L874)
```solidity
else xSignifier |= 0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 879](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L879)
```solidity
xExponent = xExponent + 16383 >> 1;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 882](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L882)
```solidity
if (xSignifier >= 0x10000000000000000000000000000)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 883](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L883)
```solidity
xSignifier <<= 113;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 886](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L886)
```solidity
uint256 shift = (226 - msb) & 0xFE;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 888](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L888)
```solidity
xExponent -= shift - 112 >> 1;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 891](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L891)
```solidity
if (xSignifier >= 0x10000000000000000000000000000)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 892](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L892)
```solidity
xSignifier <<= 112;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 895](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L895)
```solidity
uint256 shift = (225 - msb) & 0xFE;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 897](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L897)
```solidity
xExponent -= shift - 112 >> 1;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 901](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L901)
```solidity
uint256 r = 0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 912](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L912)
```solidity
return bytes16 (uint128 (xExponent << 112 | r & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF));
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 926](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L926)
```solidity
if (uint128 (x) > 0x80000000000000000000000000000000) return NaN;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 927](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L927)
```solidity
else if (x == 0x3FFF0000000000000000000000000000) return POSITIVE_ZERO;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 929](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L929)
```solidity
uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 930](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L930)
```solidity
if (xExponent == 0x7FFF) return x;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 932](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L932)
```solidity
uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 934](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L934)
```solidity
else xSignifier |= 0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 939](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L939)
```solidity
uint256 resultExponent = 16495;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 942](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L942)
```solidity
if (xExponent >= 0x3FFF) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 944](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L944)
```solidity
resultSignifier = xExponent - 0x3FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 945](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L945)
```solidity
xSignifier <<= 15;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 948](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L948)
```solidity
if (xSignifier >= 0x10000000000000000000000000000) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 949](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L949)
```solidity
resultSignifier = 0x3FFE - xExponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 950](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L950)
```solidity
xSignifier <<= 15;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 954](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L954)
```solidity
xSignifier <<= 127 - msb;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 958](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L958)
```solidity
if (xSignifier == 0x80000000000000000000000000000000) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 960](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L960)
```solidity
uint256 shift = 112 - mostSignificantBit (resultSignifier);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 965](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L965)
```solidity
while (resultSignifier < 0x10000000000000000000000000000) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 972](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L972)
```solidity
xSignifier >>= 127 + b;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 976](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L976)
```solidity
return bytes16 (uint128 ((resultNegative ? 0x80000000000000000000000000000000 : 0) |
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 977](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L977)
```solidity
resultExponent << 112 | resultSignifier & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF));
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1003](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1003)
```solidity
bool xNegative = uint128 (x) > 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1004](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1004)
```solidity
uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1005](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1005)
```solidity
uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1007](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1007)
```solidity
if (xExponent == 0x7FFF && xSignifier != 0) return NaN;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1010](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1010)
```solidity
else if (xExponent < 16255)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1011](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1011)
```solidity
return 0x3FFF0000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1014](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1014)
```solidity
else xSignifier |= 0x10000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1016](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1016)
```solidity
if (xExponent > 16367)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1017](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1017)
```solidity
xSignifier <<= xExponent - 16367;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1018](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1018)
```solidity
else if (xExponent < 16367)
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1019](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1019)
```solidity
xSignifier >>= 16367 - xExponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1027](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1027)
```solidity
uint256 resultExponent = xSignifier >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1034](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1034)
```solidity
uint256 resultSignifier = 0x80000000000000000000000000000000;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1035](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1035)
```solidity
if (xSignifier & 0x80000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x16A09E667F3BCC908B2FB1366EA957D3E >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1036](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1036)
```solidity
if (xSignifier & 0x40000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1306FE0A31B7152DE8D5A46305C85EDEC >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1037](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1037)
```solidity
if (xSignifier & 0x20000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1172B83C7D517ADCDF7C8C50EB14A791F >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1038](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1038)
```solidity
if (xSignifier & 0x10000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10B5586CF9890F6298B92B71842A98363 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1039](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1039)
```solidity
if (xSignifier & 0x8000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1059B0D31585743AE7C548EB68CA417FD >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1040](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1040)
```solidity
if (xSignifier & 0x4000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x102C9A3E778060EE6F7CACA4F7A29BDE8 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1041](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1041)
```solidity
if (xSignifier & 0x2000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10163DA9FB33356D84A66AE336DCDFA3F >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1042](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1042)
```solidity
if (xSignifier & 0x1000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100B1AFA5ABCBED6129AB13EC11DC9543 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1043](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1043)
```solidity
if (xSignifier & 0x800000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10058C86DA1C09EA1FF19D294CF2F679B >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1044](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1044)
```solidity
if (xSignifier & 0x400000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1002C605E2E8CEC506D21BFC89A23A00F >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1045](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1045)
```solidity
if (xSignifier & 0x200000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100162F3904051FA128BCA9C55C31E5DF >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1046](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1046)
```solidity
if (xSignifier & 0x100000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000B175EFFDC76BA38E31671CA939725 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1047](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1047)
```solidity
if (xSignifier & 0x80000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100058BA01FB9F96D6CACD4B180917C3D >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1048](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1048)
```solidity
if (xSignifier & 0x40000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10002C5CC37DA9491D0985C348C68E7B3 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1049](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1049)
```solidity
if (xSignifier & 0x20000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000162E525EE054754457D5995292026 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1050](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1050)
```solidity
if (xSignifier & 0x10000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000B17255775C040618BF4A4ADE83FC >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1051](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1051)
```solidity
if (xSignifier & 0x8000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000058B91B5BC9AE2EED81E9B7D4CFAB >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1052](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1052)
```solidity
if (xSignifier & 0x4000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100002C5C89D5EC6CA4D7C8ACC017B7C9 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1053](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1053)
```solidity
if (xSignifier & 0x2000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000162E43F4F831060E02D839A9D16D >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1054](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1054)
```solidity
if (xSignifier & 0x1000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000B1721BCFC99D9F890EA06911763 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1055](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1055)
```solidity
if (xSignifier & 0x800000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000058B90CF1E6D97F9CA14DBCC1628 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1056](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1056)
```solidity
if (xSignifier & 0x400000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000002C5C863B73F016468F6BAC5CA2B >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1057](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1057)
```solidity
if (xSignifier & 0x200000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000162E430E5A18F6119E3C02282A5 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1058](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1058)
```solidity
if (xSignifier & 0x100000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000B1721835514B86E6D96EFD1BFE >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1059](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1059)
```solidity
if (xSignifier & 0x80000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000058B90C0B48C6BE5DF846C5B2EF >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1060](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1060)
```solidity
if (xSignifier & 0x40000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000002C5C8601CC6B9E94213C72737A >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1061](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1061)
```solidity
if (xSignifier & 0x20000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000162E42FFF037DF38AA2B219F06 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1062](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1062)
```solidity
if (xSignifier & 0x10000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000B17217FBA9C739AA5819F44F9 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1063](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1063)
```solidity
if (xSignifier & 0x8000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000058B90BFCDEE5ACD3C1CEDC823 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1064](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1064)
```solidity
if (xSignifier & 0x4000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000002C5C85FE31F35A6A30DA1BE50 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1065](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1065)
```solidity
if (xSignifier & 0x2000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000162E42FF0999CE3541B9FFFCF >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1066](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1066)
```solidity
if (xSignifier & 0x1000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000B17217F80F4EF5AADDA45554 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1067](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1067)
```solidity
if (xSignifier & 0x800000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000058B90BFBF8479BD5A81B51AD >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1068](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1068)
```solidity
if (xSignifier & 0x400000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000002C5C85FDF84BD62AE30A74CC >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1069](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1069)
```solidity
if (xSignifier & 0x200000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000162E42FEFB2FED257559BDAA >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1070](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1070)
```solidity
if (xSignifier & 0x100000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000B17217F7D5A7716BBA4A9AE >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1071](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1071)
```solidity
if (xSignifier & 0x80000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000058B90BFBE9DDBAC5E109CCE >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1072](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1072)
```solidity
if (xSignifier & 0x40000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000002C5C85FDF4B15DE6F17EB0D >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1073](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1073)
```solidity
if (xSignifier & 0x20000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000162E42FEFA494F1478FDE05 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1074](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1074)
```solidity
if (xSignifier & 0x10000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000B17217F7D20CF927C8E94C >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1075](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1075)
```solidity
if (xSignifier & 0x8000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000058B90BFBE8F71CB4E4B33D >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1076](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1076)
```solidity
if (xSignifier & 0x4000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000002C5C85FDF477B662B26945 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1077](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1077)
```solidity
if (xSignifier & 0x2000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000162E42FEFA3AE53369388C >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1078](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1078)
```solidity
if (xSignifier & 0x1000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000B17217F7D1D351A389D40 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1079](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1079)
```solidity
if (xSignifier & 0x800000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000058B90BFBE8E8B2D3D4EDE >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1080](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1080)
```solidity
if (xSignifier & 0x400000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000002C5C85FDF4741BEA6E77E >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1081](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1081)
```solidity
if (xSignifier & 0x200000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000162E42FEFA39FE95583C2 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1082](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1082)
```solidity
if (xSignifier & 0x100000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000B17217F7D1CFB72B45E1 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1083](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1083)
```solidity
if (xSignifier & 0x80000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000058B90BFBE8E7CC35C3F0 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1084](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1084)
```solidity
if (xSignifier & 0x40000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000002C5C85FDF473E242EA38 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1085](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1085)
```solidity
if (xSignifier & 0x20000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000162E42FEFA39F02B772C >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1086](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1086)
```solidity
if (xSignifier & 0x10000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000B17217F7D1CF7D83C1A >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1087](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1087)
```solidity
if (xSignifier & 0x8000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000058B90BFBE8E7BDCBE2E >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1088](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1088)
```solidity
if (xSignifier & 0x4000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000002C5C85FDF473DEA871F >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1089](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1089)
```solidity
if (xSignifier & 0x2000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000162E42FEFA39EF44D91 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1090](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1090)
```solidity
if (xSignifier & 0x1000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000B17217F7D1CF79E949 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1091](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1091)
```solidity
if (xSignifier & 0x800000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000058B90BFBE8E7BCE544 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1092](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1092)
```solidity
if (xSignifier & 0x400000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000002C5C85FDF473DE6ECA >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1093](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1093)
```solidity
if (xSignifier & 0x200000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000162E42FEFA39EF366F >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1094](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1094)
```solidity
if (xSignifier & 0x100000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000B17217F7D1CF79AFA >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1095](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1095)
```solidity
if (xSignifier & 0x80000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000058B90BFBE8E7BCD6D >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1096](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1096)
```solidity
if (xSignifier & 0x40000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000002C5C85FDF473DE6B2 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1097](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1097)
```solidity
if (xSignifier & 0x20000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000162E42FEFA39EF358 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1098](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1098)
```solidity
if (xSignifier & 0x10000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000B17217F7D1CF79AB >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1099](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1099)
```solidity
if (xSignifier & 0x8000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000058B90BFBE8E7BCD5 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1100](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1100)
```solidity
if (xSignifier & 0x4000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000002C5C85FDF473DE6A >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1101](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1101)
```solidity
if (xSignifier & 0x2000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000162E42FEFA39EF34 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1102](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1102)
```solidity
if (xSignifier & 0x1000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000B17217F7D1CF799 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1103](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1103)
```solidity
if (xSignifier & 0x800000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000058B90BFBE8E7BCC >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1104](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1104)
```solidity
if (xSignifier & 0x400000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000002C5C85FDF473DE5 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1105](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1105)
```solidity
if (xSignifier & 0x200000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000162E42FEFA39EF2 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1106](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1106)
```solidity
if (xSignifier & 0x100000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000B17217F7D1CF78 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1107](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1107)
```solidity
if (xSignifier & 0x80000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000058B90BFBE8E7BB >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1108](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1108)
```solidity
if (xSignifier & 0x40000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000002C5C85FDF473DD >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1109](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1109)
```solidity
if (xSignifier & 0x20000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000162E42FEFA39EE >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1110](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1110)
```solidity
if (xSignifier & 0x10000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000B17217F7D1CF6 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1111](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1111)
```solidity
if (xSignifier & 0x8000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000058B90BFBE8E7A >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1112](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1112)
```solidity
if (xSignifier & 0x4000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000002C5C85FDF473C >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1113](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1113)
```solidity
if (xSignifier & 0x2000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000162E42FEFA39D >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1114](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1114)
```solidity
if (xSignifier & 0x1000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000B17217F7D1CE >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1115](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1115)
```solidity
if (xSignifier & 0x800000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000058B90BFBE8E6 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1116](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1116)
```solidity
if (xSignifier & 0x400000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000002C5C85FDF472 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1117](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1117)
```solidity
if (xSignifier & 0x200000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000162E42FEFA38 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1118](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1118)
```solidity
if (xSignifier & 0x100000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000B17217F7D1B >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1119](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1119)
```solidity
if (xSignifier & 0x80000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000058B90BFBE8D >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1120](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1120)
```solidity
if (xSignifier & 0x40000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000002C5C85FDF46 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1121](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1121)
```solidity
if (xSignifier & 0x20000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000162E42FEFA2 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1122](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1122)
```solidity
if (xSignifier & 0x10000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000B17217F7D0 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1123](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1123)
```solidity
if (xSignifier & 0x8000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000058B90BFBE7 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1124](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1124)
```solidity
if (xSignifier & 0x4000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000002C5C85FDF3 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1125](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1125)
```solidity
if (xSignifier & 0x2000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000162E42FEF9 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1126](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1126)
```solidity
if (xSignifier & 0x1000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000B17217F7C >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1127](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1127)
```solidity
if (xSignifier & 0x800000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000058B90BFBD >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1128](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1128)
```solidity
if (xSignifier & 0x400000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000002C5C85FDE >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1129](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1129)
```solidity
if (xSignifier & 0x200000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000162E42FEE >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1130](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1130)
```solidity
if (xSignifier & 0x100000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000B17217F6 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1131](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1131)
```solidity
if (xSignifier & 0x80000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000058B90BFA >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1132](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1132)
```solidity
if (xSignifier & 0x40000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000002C5C85FC >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1133](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1133)
```solidity
if (xSignifier & 0x20000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000162E42FD >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1134](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1134)
```solidity
if (xSignifier & 0x10000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000B17217E >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1135](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1135)
```solidity
if (xSignifier & 0x8000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000058B90BE >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1136](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1136)
```solidity
if (xSignifier & 0x4000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000002C5C85E >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1137](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1137)
```solidity
if (xSignifier & 0x2000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000162E42E >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1138](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1138)
```solidity
if (xSignifier & 0x1000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000B17216 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1139](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1139)
```solidity
if (xSignifier & 0x800000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000058B90A >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1140](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1140)
```solidity
if (xSignifier & 0x400000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000002C5C84 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1141](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1141)
```solidity
if (xSignifier & 0x200000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000162E41 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1142](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1142)
```solidity
if (xSignifier & 0x100000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000B1720 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1143](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1143)
```solidity
if (xSignifier & 0x80000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000058B8F >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1144](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1144)
```solidity
if (xSignifier & 0x40000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000002C5C7 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1145](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1145)
```solidity
if (xSignifier & 0x20000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000162E3 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1146](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1146)
```solidity
if (xSignifier & 0x10000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000B171 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1147](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1147)
```solidity
if (xSignifier & 0x8000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000058B8 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1148](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1148)
```solidity
if (xSignifier & 0x4000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000002C5B >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1149](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1149)
```solidity
if (xSignifier & 0x2000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000162D >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1150](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1150)
```solidity
if (xSignifier & 0x1000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000B16 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1151](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1151)
```solidity
if (xSignifier & 0x800 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000058A >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1152](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1152)
```solidity
if (xSignifier & 0x400 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000002C4 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1153](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1153)
```solidity
if (xSignifier & 0x200 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000161 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1154](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1154)
```solidity
if (xSignifier & 0x100 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000000B0 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1155](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1155)
```solidity
if (xSignifier & 0x80 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000057 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1156](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1156)
```solidity
if (xSignifier & 0x40 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000002B >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1157](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1157)
```solidity
if (xSignifier & 0x20 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000015 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1158](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1158)
```solidity
if (xSignifier & 0x10 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000000A >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1159](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1159)
```solidity
if (xSignifier & 0x8 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000004 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1160](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1160)
```solidity
if (xSignifier & 0x4 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000001 >> 128;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1163](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1163)
```solidity
resultSignifier = resultSignifier >> 15 & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1164](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1164)
```solidity
resultExponent += 0x3FFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1165](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1165)
```solidity
} else if (resultExponent <= 0x3FFE) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1166](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1166)
```solidity
resultSignifier = resultSignifier >> 15 & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1167](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1167)
```solidity
resultExponent = 0x3FFF - resultExponent;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1169](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1169)
```solidity
resultSignifier = resultSignifier >> resultExponent - 16367;
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1173](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1173)
```solidity
return bytes16 (uint128 (resultExponent << 112 | resultSignifier));
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1203](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1203)
```solidity
if (x >= 0x100000000000000000000000000000000) { x >>= 128; result += 128; }
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1204](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1204)
```solidity
if (x >= 0x10000000000000000) { x >>= 64; result += 64; }
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1205](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1205)
```solidity
if (x >= 0x100000000) { x >>= 32; result += 32; }
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1206](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1206)
```solidity
if (x >= 0x10000) { x >>= 16; result += 16; }
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1207](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1207)
```solidity
if (x >= 0x100) { x >>= 8; result += 8; }
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1208](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1208)
```solidity
if (x >= 0x10) { x >>= 4; result += 4; }
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1209](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1209)
```solidity
if (x >= 0x4) { x >>= 2; result += 2; }
```
- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 69](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L69)
```solidity
require(signatures.length >= requiredSignatures * 65, "!Dynamic Signature Threshold");
```
- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 88](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L88)
```solidity
require(uint256(s) >= (requiredSignatures * 65), "GS021");
```
- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 91](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L91)
```solidity
require((uint256(s) + 32) <= signatures.length, "GS022");
```
- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L100)
```solidity
require((uint256(s) + 32 + contractSignatureLen) <= signatures.length, "GS023");
```
</details>
## L-8: Empty `require()` / `revert()` Statement
Use descriptive reason strings or custom errors for revert paths.
<details><summary>55 Found Instances</summary>
- Found in contracts/core/OpsManager.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L50)
```solidity
require(address(pools[revalToken]) == address(0));
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L36)
```solidity
require (x >= -0x8000000000000000 && x <= 0x7FFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 63](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L63)
```solidity
require (x <= 0x7FFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 77](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L77)
```solidity
require (x >= 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 92](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L92)
```solidity
require (result >= MIN_64x64 && result <= MAX_64x64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 120](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L120)
```solidity
require (result >= MIN_64x64 && result <= MAX_64x64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 135](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L135)
```solidity
require (result >= MIN_64x64 && result <= MAX_64x64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 150](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L150)
```solidity
require (result >= MIN_64x64 && result <= MAX_64x64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 166](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L166)
```solidity
require (y >= -0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF &&
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 181](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L181)
```solidity
require (absoluteResult <=
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 185](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L185)
```solidity
require (absoluteResult <=
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 205](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L205)
```solidity
require (x >= 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 210](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L210)
```solidity
require (hi <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 213](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L213)
```solidity
require (hi <=
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 229](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L229)
```solidity
require (y != 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 231](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L231)
```solidity
require (result >= MIN_64x64 && result <= MAX_64x64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 246](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L246)
```solidity
require (y != 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 259](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L259)
```solidity
require (absoluteResult <= 0x80000000000000000000000000000000);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 262](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L262)
```solidity
require (absoluteResult <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 278](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L278)
```solidity
require (y != 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 280](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L280)
```solidity
require (result <= uint128 (MAX_64x64));
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 293](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L293)
```solidity
require (x != MIN_64x64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 306](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L306)
```solidity
require (x != MIN_64x64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 320](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L320)
```solidity
require (x != 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 322](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L322)
```solidity
require (result >= MIN_64x64 && result <= MAX_64x64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 351](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L351)
```solidity
require (m >= 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 352](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L352)
```solidity
require (m <
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 412](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L412)
```solidity
require (absXShift < 64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 432](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L432)
```solidity
require (resultShift < 64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 436](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L436)
```solidity
require (result >= MIN_64x64 && result <= MAX_64x64);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 449](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L449)
```solidity
require (x >= 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 462](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L462)
```solidity
require (x > 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 495](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L495)
```solidity
require (x > 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 510](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L510)
```solidity
require (x < 0x400000000000000000); // Overflow
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 646](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L646)
```solidity
require (result <= uint256 (int256 (MAX_64x64)));
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 660](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L660)
```solidity
require (x < 0x400000000000000000); // Overflow
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 679](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L679)
```solidity
require (y != 0);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 696](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L696)
```solidity
require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 715](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L715)
```solidity
require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L76)
```solidity
require (exponent <= 16638); // Overflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L86)
```solidity
require (result <= 0x8000000000000000000000000000000000000000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L89)
```solidity
require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L133)
```solidity
require (uint128 (x) < 0x80000000000000000000000000000000); // Negative
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 135](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L135)
```solidity
require (exponent <= 16638); // Overflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 183](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L183)
```solidity
require (exponent <= 16510); // Overflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 193](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L193)
```solidity
require (result <= 0x8000000000000000000000000000000000000000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L196)
```solidity
require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 239](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L239)
```solidity
require (exponent <= 16446); // Overflow
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 249](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L249)
```solidity
require (result <= 0x80000000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 252](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L252)
```solidity
require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 440](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L440)
```solidity
require (absoluteX <= 0x7FFF0000000000000000000000000000); // Not NaN
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 460](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L460)
```solidity
require (absoluteX <= 0x7FFF0000000000000000000000000000); // Not NaN
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 464](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L464)
```solidity
require (absoluteY <= 0x7FFF0000000000000000000000000000); // Not NaN
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 467](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L467)
```solidity
require (x != y || absoluteX < 0x7FFF0000000000000000000000000000);
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1199](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1199)
```solidity
require (x > 0);
```
</details>
## L-9: Modifier Invoked Only Once
Consider removing the modifier or inlining the logic into the calling function.
<details><summary>5 Found Instances</summary>
- Found in contracts/core/Exposure.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L133)
```solidity
modifier onlyMinter() {
```
- Found in contracts/templegold/DaiGoldAuction.sol [Line: 308](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L308)
```solidity
modifier onlyWhenLive() {
```
- Found in contracts/templegold/TempleGold.sol [Line: 343](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L343)
```solidity
modifier onlyArbitrum() {
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 604](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L604)
```solidity
modifier onlyMigrator() {
```
- Found in contracts/v2/access/TempleElevatedAccess.sol [Line: 146](../tests/2024-07-templegold/protocol/contracts/v2/access/TempleElevatedAccess.sol#L146)
```solidity
modifier onlyInRescueMode() {
```
</details>
## L-10: Empty Block
Consider removing empty blocks.
<details><summary>7 Found Instances</summary>
- Found in contracts/amo/test/RamosTestnetAuraStaking.sol [Line: 70](../tests/2024-07-templegold/protocol/contracts/amo/test/RamosTestnetAuraStaking.sol#L70)
```solidity
function depositAndStake(uint256 /*amount*/) external override {
```
- Found in contracts/v2/safeGuards/ThresholdSafeGuard.sol [Line: 247](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/ThresholdSafeGuard.sol#L247)
```solidity
function checkAfterExecution(bytes32, bool) external view {}
```
- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 146](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L146)
```solidity
function populateShutdownData(
```
- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 228](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L228)
```solidity
function _debtCeilingUpdated(IERC20 /*token*/, uint256 /*newDebtCeiling*/) internal virtual {}
```
- Found in contracts/v2/strategies/GnosisStrategy.sol [Line: 51](../tests/2024-07-templegold/protocol/contracts/v2/strategies/GnosisStrategy.sol#L51)
```solidity
function _updateTrvApprovals(
```
- Found in contracts/v2/strategies/TempleTokenBaseStrategy.sol [Line: 42](../tests/2024-07-templegold/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol#L42)
```solidity
function _updateTrvApprovals(
```
- Found in contracts/v2/strategies/TlcStrategy.sol [Line: 43](../tests/2024-07-templegold/protocol/contracts/v2/strategies/TlcStrategy.sol#L43)
```solidity
function _updateTrvApprovals(
```
</details>
## L-11: Large Numeric Literal
Large literal values multiples of 10000 can be replaced with scientific notation.Use `e` notation, for example: `1e18`, instead of its full numeric value.
<details><summary>6 Found Instances</summary>
- Found in contracts/amo/Ramos.sol [Line: 72](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L72)
```solidity
uint256 public constant override BPS_PRECISION = 10_000;
```
- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L27)
```solidity
uint256 public constant override BPS_PRECISION = 10_000;
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 119](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L119)
```solidity
emit AccumulationFactorUpdated(_nUnupdatedEpochs, _currentEpoch, accumulationFactor.mul(10000).toUInt());
```
- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L36)
```solidity
uint256 public constant MAX_SUPPLY = 1_000_000_000 ether; // 1B
```
- Found in contracts/templegold/TempleGold.sol [Line: 47](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L47)
```solidity
uint256 public constant MAX_SUPPLY = 1_000_000_000 ether; // 1B
```
- Found in contracts/templegold/TempleGold.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L49)
```solidity
uint256 public constant MINIMUM_MINT = 10_000 ether;
```
</details>
## L-12: Internal Function Used Only Once
Instead of separating the logic into a separate function, consider inlining the logic into the calling function. This can reduce the number of function calls and improve readability.
<details><summary>17 Found Instances</summary>
- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 172](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L172)
```solidity
function createPoolExitRequest(
```
- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 190](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L190)
```solidity
function createPoolJoinRequest(
```
- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 283](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L283)
```solidity
function validateProtocolTokenJoin(
```
- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 298](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L298)
```solidity
function validateProtocolTokenExit(
```
- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 316](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L316)
```solidity
function validateQuoteTokenJoin(
```
- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 331](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L331)
```solidity
function validateQuoteTokenExit(
```
- Found in contracts/governance/ElderElection.sol [Line: 139](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L139)
```solidity
function hash(EIP712Domain memory _input) internal pure returns (bytes32) {
```
- Found in contracts/governance/ElderElection.sol [Line: 157](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L157)
```solidity
function hash(EndorsementReq memory _input) internal pure returns (bytes32) {
```
- Found in contracts/governance/ElderElection.sol [Line: 167](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L167)
```solidity
function hash(uint256[] memory _input) internal pure returns (bytes32) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 201](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L201)
```solidity
function mulu (int128 x, uint256 y) internal pure returns (uint256) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 460](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L460)
```solidity
function log_2 (int128 x) internal pure returns (int128) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 508](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L508)
```solidity
function exp_2 (int128 x) internal pure returns (int128) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 516](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L516)
```solidity
function add (bytes16 x, bytes16 y) internal pure returns (bytes16) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 924](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L924)
```solidity
function log_2 (bytes16 x) internal pure returns (bytes16) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 1001](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1001)
```solidity
function pow_2 (bytes16 x) internal pure returns (bytes16) {
```
- Found in contracts/v2/interestRate/BaseInterestRateModel.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/v2/interestRate/BaseInterestRateModel.sol#L19)
```solidity
function computeInterestRateImpl(uint256) internal virtual view returns (uint96);
```
- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 22](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L22)
```solidity
function signatureSplit(bytes memory signatures, uint256 pos)
```
</details>
## L-13: Inconsistent uint256/uint (or) int256/int types
Inconsistency in declaring uint256/uint (or) int256/int variables within a contract. Use explicit size declarations (uint256 or int256). Consider keeping the naming convention consistent in a given contract. Explicit size declarations are preferred (uint256, int256) over implicit ones (uint, int) to avoid confusion.
<details><summary>58 Found Instances</summary>
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L32)
```solidity
modifier ensure(uint deadline) {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 62](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L62)
```solidity
uint amountADesired,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 63](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L63)
```solidity
uint amountBDesired,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 64](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L64)
```solidity
uint amountAMin,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 65](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L65)
```solidity
uint amountBMin,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 67](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L67)
```solidity
) internal virtual returns (uint amountA, uint amountB) {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L68)
```solidity
(uint reserveA, uint reserveB,) = pair.getReserves();
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 72](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L72)
```solidity
uint amountBOptimal = quote(amountADesired, reserveA, reserveB);
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 77](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L77)
```solidity
uint amountAOptimal = quote(amountBDesired, reserveB, reserveA);
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L86)
```solidity
uint amountADesired,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 87](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L87)
```solidity
uint amountBDesired,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 88](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L88)
```solidity
uint amountAMin,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L89)
```solidity
uint amountBMin,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 92](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L92)
```solidity
uint deadline
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 93](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L93)
```solidity
) external virtual ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 106](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L106)
```solidity
uint liquidity,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 107](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L107)
```solidity
uint amountAMin,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L108)
```solidity
uint amountBMin,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 111](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L111)
```solidity
uint deadline
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 112](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L112)
```solidity
) public virtual ensure(deadline) returns (uint amountA, uint amountB) {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L123)
```solidity
uint amountIn,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 124](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L124)
```solidity
uint amountOutMin,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 127](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L127)
```solidity
uint deadline
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 128](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L128)
```solidity
) external virtual ensure(deadline) returns (uint amountOut) {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L133)
```solidity
uint amountOut = swapExactStableForTempleQuote(pair, amountIn);
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 143](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L143)
```solidity
uint amountIn,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 144](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L144)
```solidity
uint amountOutMin,
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 147](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L147)
```solidity
uint deadline
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 148](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L148)
```solidity
) external virtual ensure(deadline) returns (uint) {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 154](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L154)
```solidity
(bool priceBelowIV, uint amountOut) = swapExactTempleForStableQuote(pair, amountIn);
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 177](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L177)
```solidity
function quote(uint amountA, uint reserveA, uint reserveB) public pure returns (uint amountB) {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 189](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L189)
```solidity
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 192](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L192)
```solidity
returns (uint amountOut)
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L196)
```solidity
uint amountInWithFee = amountIn * 995;
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 197](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L197)
```solidity
uint numerator = amountInWithFee * reserveOut;
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 198](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L198)
```solidity
uint denominator = (reserveIn * 1000) + amountInWithFee;
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 202](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L202)
```solidity
function swapExactStableForTempleQuote(address pair, uint amountIn) public view returns (uint amountOut ) {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 203](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L203)
```solidity
(uint reserveTemple, uint reserveFrax,) = IUniswapV2Pair(pair).getReserves();
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 207](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L207)
```solidity
function swapExactTempleForStableQuote(address pair, uint amountIn) public view returns (bool priceBelowIV, uint amountOut) {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 208](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L208)
```solidity
(uint reserveTemple, uint reserveFrax,) = IUniswapV2Pair(pair).getReserves();
```
- Found in contracts/amo/AuraStaking.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L116)
```solidity
for (uint i; i < length; ++i) {
```
- Found in contracts/core/RebasingERC20.sol [Line: 84](../tests/2024-07-templegold/protocol/contracts/core/RebasingERC20.sol#L84)
```solidity
function toTokenAmount(uint sharesAmount) public view returns (uint256 tokenAmount) {
```
- Found in contracts/core/RebasingERC20.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/core/RebasingERC20.sol#L89)
```solidity
function toSharesAmount(uint tokenAmount) public view returns (uint256 sharesAmount) {
```
- Found in contracts/util/ABDKMathQuad.sol [Line: 783](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L783)
```solidity
uint shift = 226 - mostSignificantBit (xSignifier);
```
</details>
## L-14: Unused Error
Consider using or removing the unused error.
<details><summary>12 Found Instances</summary>
- Found in contracts/amo/helpers/AMOCommon.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/amo/helpers/AMOCommon.sol#L6)
```solidity
error NotOperator();
```
- Found in contracts/amo/helpers/AMOCommon.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/amo/helpers/AMOCommon.sol#L7)
```solidity
error NotOperatorOrOwner();
```
- Found in contracts/amo/helpers/AMOCommon.sol [Line: 11](../tests/2024-07-templegold/protocol/contracts/amo/helpers/AMOCommon.sol#L11)
```solidity
error InsufficientBPTAmount(uint256 amount);
```
- Found in contracts/amo/helpers/AMOCommon.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/amo/helpers/AMOCommon.sol#L19)
```solidity
error Paused();
```
- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 31](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L31)
```solidity
error SendFailed();
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L108)
```solidity
error InvalidDelegate();
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 111](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L111)
```solidity
error MinimumStakePeriod();
```
- Found in contracts/governance/ElderElection.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L49)
```solidity
error NotFromTemplar(address account, uint256 discordId);
```
- Found in contracts/governance/ElderElection.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L50)
```solidity
error NotCandidate(uint256 discordId);
```
- Found in contracts/interfaces/templegold/ISpiceAuction.sol [Line: 14](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ISpiceAuction.sol#L14)
```solidity
error NoConfig();
```
- Found in contracts/interfaces/templegold/ITempleGoldStaking.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleGoldStaking.sol#L21)
```solidity
error CannotDelegate();
```
- Found in contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol#L16)
```solidity
error DynamicSignatureThresholdNotMet(uint256 required, uint256 found);
```
</details>
## L-15: Loop Contains `require`/`revert`
Avoid `require` / `revert` statements in a loop because a single bad item can cause the whole transaction to fail. It's better to forgive on fail and return failed elements post processing of the loop
<details><summary>18 Found Instances</summary>
- Found in contracts/admin/TempleTeamPayments.sol [Line: 38](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L38)
```solidity
for (uint256 i = 0; i < _addresses.length; i++) {
```
- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 128](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L128)
```solidity
for (uint256 i; i < _dests.length; ) {
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L50)
```solidity
for (uint256 i; i < _addresses.length; ) {
```
- Found in contracts/amo/AuraStaking.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L116)
```solidity
for (uint i; i < length; ++i) {
```
- Found in contracts/core/OpsManager.sol [Line: 97](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L97)
```solidity
for (uint256 i = 0; i < vaults.length; i++) {
```
- Found in contracts/core/OpsManager.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L133)
```solidity
for (uint256 i = 0; i < vaults.length; i++) {
```
- Found in contracts/core/OpsManager.sol [Line: 151](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L151)
```solidity
for (uint256 i = 0; i < vaults.length; i++) {
```
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 178](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L178)
```solidity
for (uint i; i < path.length - 1; i++) {
```
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 259](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L259)
```solidity
for (uint i; i < path.length - 1; i++) {
```
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 362](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L362)
```solidity
for (uint i; i < path.length - 1; i++) {
```
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 378](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L378)
```solidity
for (uint i = path.length - 1; i > 0; i--) {
```
- Found in contracts/util/ABDKMath64x64.sol [Line: 411](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L411)
```solidity
while (y != 0) {
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 454](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L454)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 507](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L507)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 187](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L187)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 216](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L216)
```solidity
for (; i < _length; ++i) {
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 330](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L330)
```solidity
for (uint256 i; i < _numAccounts; ++i) {
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 528](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L528)
```solidity
for (uint256 i; i < _numAccounts; ++i) {
```
</details>
## L-16: Incorrect Order of Division and Multiplication
Division operations followed directly by multiplication operations can lead to precision loss due to the way integer arithmetic is handled in Solidity./
Consider Multiplication before Division.
<details><summary>1 Found Instances</summary>
- Found in contracts/core/JoiningFee.sol [Line: 38](../tests/2024-07-templegold/protocol/contracts/core/JoiningFee.sol#L38)
```solidity
return (block.timestamp - (numCycles * periodDuration) - firstPeriodStartTimestamp) / 3600 * feePerHour;
```
</details>
## L-17: Redundant Statement
Remove the redundant statement.
<details><summary>1 Found Instances</summary>
- Found in contracts/deprecated/InstantExitQueue.sol [Line: 28](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L28)
```solidity
_exiter;
```
</details>
## L-18: Unused State Variable
State variable appears to be unused. No analysis has been performed to see if any inline assembly references it. Consider removing this unused variable.
<details><summary>2 Found Instances</summary>
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 71](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L71)
```solidity
mapping(address delegate => uint256 balance) private _delegateBalances;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 79](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L79)
```solidity
mapping(address account => EnumerableSet.UintSet indexes) private _accountStakes;
```
</details>
## L-19: Boolean equality is not required
If `x` is a boolean, use `if(x)` and `if(!x)` instead of `if(x == true)` or `if(x == false)`.
<details><summary>2 Found Instances</summary>
- Found in contracts/deprecated/Faith.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L32)
```solidity
require(canManageFaith[msg.sender] == true, "Faith: caller cannot manage faith");
```
- Found in contracts/deprecated/Faith.sol [Line: 40](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L40)
```solidity
require(canManageFaith[msg.sender] == true, "Faith: caller cannot manage faith");
```
</details>
## L-20: Local Variable Shadows State Variable
Rename the local variable that shadows another state variable.
<details><summary>12 Found Instances</summary>
- Found in contracts/core/Exposure.sol [Line: 40](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L40)
```solidity
constructor(string memory _name, string memory _symbol, IERC20 _revalToken) ERC20(_name, _symbol) Ownable(msg.sender) {
```
- Found in contracts/core/Vault.sol [Line: 61](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L61)
```solidity
string memory _name,
```
- Found in contracts/core/Vault.sol [Line: 62](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L62)
```solidity
string memory _symbol,
```
- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L49)
```solidity
string memory _name,
```
- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L50)
```solidity
string memory _symbol
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L116)
```solidity
uint40 periodFinish;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 118](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L118)
```solidity
uint40 lastUpdateTime;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 119](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L119)
```solidity
uint216 rewardPerTokenStored;
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 588](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L588)
```solidity
uint96 baseRate;
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 591](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L591)
```solidity
uint128 baseShares;
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 654](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L654)
```solidity
uint128 baseShares;
```
</details>
## L-21: Uninitialized Local Variable
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
<details><summary>13 Found Instances</summary>
- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 128](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L128)
```solidity
for (uint256 i; i < _dests.length; ) {
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L50)
```solidity
for (uint256 i; i < _addresses.length; ) {
```
- Found in contracts/amo/AuraStaking.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L116)
```solidity
for (uint i; i < length; ++i) {
```
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 178](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L178)
```solidity
for (uint i; i < path.length - 1; i++) {
```
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 259](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L259)
```solidity
for (uint i; i < path.length - 1; i++) {
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 454](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L454)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 187](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L187)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 294](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L294)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/access/TempleElevatedAccess.sol [Line: 112](../tests/2024-07-templegold/protocol/contracts/v2/access/TempleElevatedAccess.sol#L112)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 174](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L174)
```solidity
for (uint256 i; i < _nBuckets; ++i) {
```
- Found in contracts/v2/safeGuards/ThresholdSafeGuard.sol [Line: 126](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/ThresholdSafeGuard.sol#L126)
```solidity
for (uint256 i; i < length; ++i) {
```
- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L100)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 330](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L330)
```solidity
for (uint256 i; i < _numAccounts; ++i) {
```
</details>
## L-22: Costly operations inside loop
Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.
<details><summary>13 Found Instances</summary>
- Found in contracts/admin/TempleTeamPayments.sol [Line: 38](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L38)
```solidity
for (uint256 i = 0; i < _addresses.length; i++) {
```
- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L50)
```solidity
for (uint256 i; i < _addresses.length; ) {
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 454](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L454)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 187](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L187)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 216](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L216)
```solidity
for (; i < _length; ++i) {
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 223](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L223)
```solidity
for (i = 0; i < _length; ++i) {
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 294](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L294)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/access/TempleElevatedAccess.sol [Line: 112](../tests/2024-07-templegold/protocol/contracts/v2/access/TempleElevatedAccess.sol#L112)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L100)
```solidity
for (; _minBucketResetIndex < _nextBucketIndex; ++_minBucketResetIndex) {
```
- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 197](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L197)
```solidity
for (uint256 i = 0; i < _nBuckets; ++i) {
```
- Found in contracts/v2/safeGuards/ThresholdSafeGuard.sol [Line: 126](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/ThresholdSafeGuard.sol#L126)
```solidity
for (uint256 i; i < length; ++i) {
```
- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L100)
```solidity
for (uint256 i; i < _length; ++i) {
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 330](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L330)
```solidity
for (uint256 i; i < _numAccounts; ++i) {
```
</details>
## L-23: Missing Inheritance
There is an interface / abstract contract that is potentially missing (not included in) the inheritance of this contract.
<details><summary>1 Found Instances</summary>
- Found in contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol#L7)
Is this contract supposed to implement an interface? Consider extending one of the following: AMO_IAuraToken
```solidity
contract TempleDebtTokenTestnetAdmin {
```
</details>
## L-24: Unused Import
Redundant import statement. Consider removing it.
<details><summary>14 Found Instances</summary>
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 8](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L8)
```solidity
import "@openzeppelin/contracts/access/AccessControl.sol";
```
- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 4](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L4)
```solidity
import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol';
```
- Found in contracts/core/TempleERC20Token.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L7)
```solidity
import "@openzeppelin/contracts/utils/Pausable.sol";
```
- Found in contracts/deprecated/OGTemple.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L7)
```solidity
import "@openzeppelin/contracts/utils/Pausable.sol";
```
- Found in contracts/deprecated/OGTemple.sol [Line: 9](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L9)
```solidity
import "@openzeppelin/contracts/access/AccessControl.sol";
```
- Found in contracts/fakes/NoopLiquidator.sol [Line: 4](../tests/2024-07-templegold/protocol/contracts/fakes/NoopLiquidator.sol#L4)
```solidity
import "@openzeppelin/contracts/access/Ownable.sol";
```
- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 4](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L4)
```solidity
import "@openzeppelin/contracts/access/Ownable.sol";
```
- Found in contracts/fakes/UniswapV2Factory.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Factory.sol#L6)
```solidity
import '@uniswap/v2-core/contracts/UniswapV2Factory.sol';
```
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 17](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L17)
```solidity
import '@uniswap/v2-periphery/contracts/interfaces/IWETH.sol';
```
- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 10](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L10)
```solidity
import { IDaiGoldAuction } from "contracts/interfaces/templegold/IDaiGoldAuction.sol";
```
- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 13](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L13)
```solidity
import { ITempleGoldStaking} from "contracts/interfaces/templegold/ITempleGoldStaking.sol";
```
- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 17](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L17)
```solidity
import { TempleMath } from "contracts/common/TempleMath.sol";
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L6)
```solidity
import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L6)
```solidity
import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
```
</details>
## L-25: State Change Without Event
There are state variable changes in this function but no event is emitted. Consider emitting an event to enable offchain indexers to track the changes.
<details><summary>18 Found Instances</summary>
- Found in contracts/admin/TempleTeamPayments.sol [Line: 29](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L29)
```solidity
function setAllocations(
```
- Found in contracts/admin/TempleTeamPayments.sol [Line: 44](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L44)
```solidity
function setAllocation(address _address, uint256 _amount) external onlyOwner {
```
- Found in contracts/admin/TempleTeamPayments.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L49)
```solidity
function pauseMember(address _address)
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 48](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L48)
```solidity
function addPair(address _token, address _pair) external onlyOwner {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L52)
```solidity
function setTreasury(ITreasuryIV _templeTreasury) external onlyOwner {
```
- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L56)
```solidity
function setDefendStable(address _defendStable) external onlyOwner {
```
- Found in contracts/amm/TreasuryIV.sol [Line: 23](../tests/2024-07-templegold/protocol/contracts/amm/TreasuryIV.sol#L23)
```solidity
function setIV(uint256 frax, uint256 temple) external onlyOwner {
```
- Found in contracts/core/VaultProxy.sol [Line: 118](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L118)
```solidity
function toggleFaithClaimEnabled() external onlyOwner {
```
- Found in contracts/deprecated/Faith.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L50)
```solidity
function addManager(address account) external onlyOwner {
```
- Found in contracts/deprecated/Faith.sol [Line: 54](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L54)
```solidity
function removeManager(address account) external onlyOwner {
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 67](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L67)
```solidity
function setExitQueue(IExitQueue _EXIT_QUEUE) external onlyOwner {
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 268](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L268)
```solidity
function distributeRewards() updateReward(address(0), 0) external {
```
- Found in contracts/templegold/TempleGoldStaking.sol [Line: 180](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L180)
```solidity
function distributeRewards() updateReward(address(0), 0) external {
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 423](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L423)
```solidity
function checkpointBaseInterest() external override returns (uint256) {
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 431](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L431)
```solidity
function checkpointDebtorInterest(address debtor) external override returns (uint256) {
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 445](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L445)
```solidity
function checkpointDebtorsInterest(address[] calldata _debtors) external override {
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 206](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L206)
```solidity
function updateStrategyEnabledBorrowTokens(
```
- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L89)
```solidity
function preCheck(address /*onBehalfOf*/, uint256 amount) external override onlyElevatedAccess {
```
</details>
## L-26: State Variable Could Be Immutable
State variables that are only changed in the constructor should be declared immutable to save gas. Add the `immutable` attribute to state variables that are only changed in the constructor
<details><summary>15 Found Instances</summary>
- Found in contracts/core/Exposure.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L18)
```solidity
IERC20 public revalToken;
```
- Found in contracts/core/OpsManager.sol [Line: 25](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L25)
```solidity
Exposure public templeExposure;
```
- Found in contracts/core/OpsManager.sol [Line: 26](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L26)
```solidity
VaultedTemple public vaultedTemple;
```
- Found in contracts/deprecated/InstantExitQueue.sol [Line: 14](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L14)
```solidity
TempleStaking templeStaking;
```
- Found in contracts/deprecated/InstantExitQueue.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L15)
```solidity
IERC20 templeToken;
```
- Found in contracts/deprecated/LockedOGTemple.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L21)
```solidity
OGTemple public OG_TEMPLE; // The token being staked, for which TEMPLE rewards are generated
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 29](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L29)
```solidity
uint256 public epochSizeSeconds;
```
- Found in contracts/deprecated/TempleStaking.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L32)
```solidity
uint256 public startTimestamp;
```
- Found in contracts/fakes/NoopLiquidator.sol [Line: 13](../tests/2024-07-templegold/protocol/contracts/fakes/NoopLiquidator.sol#L13)
```solidity
TempleERC20Token templeToken;
```
- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 14](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L14)
```solidity
TempleERC20Token templeToken;
```
- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L15)
```solidity
VaultedTemple vaultedTemple;
```
- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 31](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L31)
```solidity
ITempleGoldStaking public previousStaking;
```
- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 24](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L24)
```solidity
uint256 public lastUpdatedAt;
```
- Found in contracts/governance/ElderElection.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L41)
```solidity
Templar public templars;
```
- Found in contracts/governance/TemplarMetadata.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L18)
```solidity
Templar public templars;
```
</details>
## L-27: Unchecked Return
Function returns a value but it is ignored. Consider checking the return value.
<details><summary>30 Found Instances</summary>
- Found in contracts/amo/AuraStaking.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L83)
```solidity
booster.deposit(auraPoolInfo.pId, amount, true);
```
- Found in contracts/amo/AuraStaking.sol [Line: 93](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L93)
```solidity
IAuraBaseRewardPool(auraPoolInfo.rewards).withdrawAndUnwrap(toUnstake, claim);
```
- Found in contracts/amo/AuraStaking.sol [Line: 111](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L111)
```solidity
IAuraBaseRewardPool(auraPoolInfo.rewards).getReward(address(this), claimExtras);
```
- Found in contracts/amo/Ramos.sol [Line: 195](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L195)
```solidity
protocolToken.approve(previousVault, 0);
```
- Found in contracts/amo/Ramos.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L196)
```solidity
quoteToken.approve(previousVault, 0);
```
- Found in contracts/amo/Ramos.sol [Line: 489](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L489)
```solidity
quoteToken.approve(address(balancerVault), 0);
```
- Found in contracts/core/MultiOtcOffer.sol [Line: 84](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L84)
```solidity
_otcMarketIds.remove(_marketId);
```
- Found in contracts/core/TempleERC20Token.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L15)
```solidity
_grantRole(DEFAULT_ADMIN_ROLE, owner());
```
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L52)
```solidity
IUniswapV2Factory(factory).createPair(tokenA, tokenB);
```
- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L108)
```solidity
IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
```
- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 13](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L13)
```solidity
_grantRole(DEFAULT_ADMIN_ROLE, owner());
```
- Found in contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol [Line: 28](../tests/2024-07-templegold/protocol/contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol#L28)
```solidity
dUSD.burn(from, amount);
```
- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L52)
```solidity
_checkpointDaiBalance(daiToken.balanceOf(address(this)));
```
- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 131](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L131)
```solidity
_checkpointDaiBalance(daiToken.balanceOf(address(this)));
```
- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 181](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L181)
```solidity
_checkpointDaiBalance(balance - amount);
```
- Found in contracts/governance/ElderElection.sol [Line: 61](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L61)
```solidity
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
```
- Found in contracts/governance/Templar.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L21)
```solidity
_grantRole(OWNER, msg.sender);
```
- Found in contracts/governance/Templar.sol [Line: 22](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L22)
```solidity
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
```
- Found in contracts/governance/TemplarMetadata.sol [Line: 22](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L22)
```solidity
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 149](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L149)
```solidity
_getBaseCache();
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 160](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L160)
```solidity
_getDebtorCache(_getBaseCache(), debtor, true);
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 638](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L638)
```solidity
_initBaseCache(baseCache);
```
- Found in contracts/v2/TempleDebtToken.sol [Line: 752](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L752)
```solidity
_initDebtorCache(_baseCache, _debtor, debtorCache, _roundUp);
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 126](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L126)
```solidity
_borrowTokenSet.add(address(token));
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 138](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L138)
```solidity
_borrowTokenSet.remove(address(token));
```
- Found in contracts/v2/TreasuryReservesVault.sol [Line: 318](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L318)
```solidity
_strategySet.remove(strategy);
```
- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L56)
```solidity
_identifiers.add(_identifier);
```
- Found in contracts/v2/strategies/RamosStrategy.sol [Line: 252](../tests/2024-07-templegold/protocol/contracts/v2/strategies/RamosStrategy.sol#L252)
```solidity
ramos.removeLiquidity(params.requestData, params.bptAmount);
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 394](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)
```solidity
daiToken.approve(previousTrv, 0);
```
- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 680](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L680)
```solidity
_initDebtTokenCache(cache);
```
</details>
```