From a8d1487d063bbb9e12e25ce1fa796bd83ef69cdb Mon Sep 17 00:00:00 2001 From: Mike Shultz Date: Thu, 7 Mar 2024 19:20:34 -0700 Subject: [PATCH] feat: log print and console.log calls made during transactions (#1930) * feat: log print and console.log calls made during transactions * refactor: improve contract check before calling log_print() * fix: import TypeGuard from typing_extensions for 3.8 support * fix: is_contract only available on Address model * fix: python 3.8 typing is bleh, fix import of Iterable * fix: unintended edit * fix: fail gracefully when provider does not implement get_call_tree * feat: adds post transaction hook to Web3Provider * refactor: adds ReceiptAPI.debug_logs prop and ReceiptAPI.print_debug_logs() * fix: bad string formatting * refactor: clarity, simplicity, and support recursive call tree walking * fix: manhandle the type checker * feat: pre-cache console contract for call trace beautification * fix: cast CONSOLE_CONTRACT_ID as ChecksumAddress * style: cleanup debugging noise * docs: update ape_ethereum._print's docstring header for clarity * refactor: print_debug_logs -> show_debug_logs * refactor: use DEBUG-LOG as logging prefix * refactor: split debug_logs into debug_logs_lines and debug_logs_typed * fix: unusual generator behavior * test: add tests for debug logs * style: lint * chore(debug): instrumentation to debug CI tests * feat: log print and console.log calls made during transactions * refactor: improve contract check before calling log_print() * fix: import TypeGuard from typing_extensions for 3.8 support * fix: is_contract only available on Address model * fix: python 3.8 typing is bleh, fix import of Iterable * fix: unintended edit * fix: fail gracefully when provider does not implement get_call_tree * feat: adds post transaction hook to Web3Provider * refactor: adds ReceiptAPI.debug_logs prop and ReceiptAPI.print_debug_logs() * fix: bad string formatting * refactor: clarity, simplicity, and support recursive call tree walking * fix: manhandle the type checker * feat: pre-cache console contract for call trace beautification * fix: cast CONSOLE_CONTRACT_ID as ChecksumAddress * style: cleanup debugging noise * docs: update ape_ethereum._print's docstring header for clarity * refactor: print_debug_logs -> show_debug_logs * refactor: use DEBUG-LOG as logging prefix * refactor: split debug_logs into debug_logs_lines and debug_logs_typed * fix: unusual generator behavior * test: add tests for debug logs * style: lint * chore(debug): instrumentation to debug CI tests * Revert "chore(debug): instrumentation to debug CI tests" This reverts commit 6edd31b4dd4a3a6ec2d45723cfb8ddb0180d4a6e. * fix: do not use assertion errors for logic branching * style: fstring > + Co-authored-by: antazoey * docs(style): . Co-authored-by: antazoey * style: cleanup of debug statements --------- Co-authored-by: antazoey --- src/ape/api/transactions.py | 21 +- src/ape_ethereum/_console_log_abi.py | 4239 +++++++++++++++++ src/ape_ethereum/_print.py | 104 + src/ape_ethereum/provider.py | 46 +- src/ape_ethereum/transactions.py | 24 +- tests/functional/conftest.py | 5 + .../contracts/ethereum/local/printing.json | 1 + tests/functional/geth/test_trace.py | 19 + 8 files changed, 4452 insertions(+), 7 deletions(-) create mode 100644 src/ape_ethereum/_console_log_abi.py create mode 100644 src/ape_ethereum/_print.py create mode 100644 tests/functional/data/contracts/ethereum/local/printing.json diff --git a/src/ape/api/transactions.py b/src/ape/api/transactions.py index 716bf7f8c7..78dbb44426 100644 --- a/src/ape/api/transactions.py +++ b/src/ape/api/transactions.py @@ -1,7 +1,7 @@ import sys import time from datetime import datetime -from typing import IO, TYPE_CHECKING, Any, Iterator, List, NoReturn, Optional, Union +from typing import IO, TYPE_CHECKING, Any, Iterator, List, NoReturn, Optional, Tuple, Union from eth_pydantic_types import HexBytes from eth_utils import is_0x_prefixed, is_hex, to_int @@ -294,6 +294,25 @@ def validate_txn_hash(cls, value): def call_tree(self) -> Optional[Any]: return None + @cached_property + def debug_logs_typed(self) -> List[Tuple[Any]]: + """Return any debug log data outputted by the transaction.""" + return [] + + @cached_property + def debug_logs_lines(self) -> List[str]: + """ + Return any debug log data outputted by the transaction as strings suitable for printing + """ + return [" ".join(map(str, ln)) for ln in self.debug_logs_typed] + + def show_debug_logs(self): + """ + Output debug logs to logging system + """ + for ln in self.debug_logs_lines: + logger.info(f"[DEBUG-LOG] {ln}") + @property def failed(self) -> bool: """ diff --git a/src/ape_ethereum/_console_log_abi.py b/src/ape_ethereum/_console_log_abi.py new file mode 100644 index 0000000000..2170c19a66 --- /dev/null +++ b/src/ape_ethereum/_console_log_abi.py @@ -0,0 +1,4239 @@ +CONSOLE_LOG_ABI = [ + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "address", "name": "p0", "type": "address"}], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bool", "name": "p0", "type": "bool"}], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "string", "name": "p0", "type": "string"}], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "bool", "name": "p2", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "uint256", "name": "p0", "type": "uint256"}], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "uint256", "name": "p3", "type": "uint256"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "bool", "name": "p1", "type": "bool"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "uint256", "name": "p0", "type": "uint256"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "string", "name": "p1", "type": "string"}, + {"internalType": "string", "name": "p2", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "bool", "name": "p3", "type": "bool"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "string", "name": "p0", "type": "string"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "address", "name": "p2", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "address", "name": "p0", "type": "address"}, + {"internalType": "address", "name": "p1", "type": "address"}, + {"internalType": "uint256", "name": "p2", "type": "uint256"}, + {"internalType": "string", "name": "p3", "type": "string"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bool", "name": "p0", "type": "bool"}, + {"internalType": "uint256", "name": "p1", "type": "uint256"}, + {"internalType": "string", "name": "p2", "type": "string"}, + {"internalType": "address", "name": "p3", "type": "address"}, + ], + "name": "log", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "address", "name": "p0", "type": "address"}], + "name": "logAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bool", "name": "p0", "type": "bool"}], + "name": "logBool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes", "name": "p0", "type": "bytes"}], + "name": "logBytes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes1", "name": "p0", "type": "bytes1"}], + "name": "logBytes1", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes10", "name": "p0", "type": "bytes10"}], + "name": "logBytes10", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes11", "name": "p0", "type": "bytes11"}], + "name": "logBytes11", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes12", "name": "p0", "type": "bytes12"}], + "name": "logBytes12", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes13", "name": "p0", "type": "bytes13"}], + "name": "logBytes13", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes14", "name": "p0", "type": "bytes14"}], + "name": "logBytes14", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes15", "name": "p0", "type": "bytes15"}], + "name": "logBytes15", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes16", "name": "p0", "type": "bytes16"}], + "name": "logBytes16", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes17", "name": "p0", "type": "bytes17"}], + "name": "logBytes17", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes18", "name": "p0", "type": "bytes18"}], + "name": "logBytes18", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes19", "name": "p0", "type": "bytes19"}], + "name": "logBytes19", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes2", "name": "p0", "type": "bytes2"}], + "name": "logBytes2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes20", "name": "p0", "type": "bytes20"}], + "name": "logBytes20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes21", "name": "p0", "type": "bytes21"}], + "name": "logBytes21", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes22", "name": "p0", "type": "bytes22"}], + "name": "logBytes22", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes23", "name": "p0", "type": "bytes23"}], + "name": "logBytes23", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes24", "name": "p0", "type": "bytes24"}], + "name": "logBytes24", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes25", "name": "p0", "type": "bytes25"}], + "name": "logBytes25", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes26", "name": "p0", "type": "bytes26"}], + "name": "logBytes26", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes27", "name": "p0", "type": "bytes27"}], + "name": "logBytes27", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes28", "name": "p0", "type": "bytes28"}], + "name": "logBytes28", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes29", "name": "p0", "type": "bytes29"}], + "name": "logBytes29", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes3", "name": "p0", "type": "bytes3"}], + "name": "logBytes3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes30", "name": "p0", "type": "bytes30"}], + "name": "logBytes30", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes31", "name": "p0", "type": "bytes31"}], + "name": "logBytes31", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes32", "name": "p0", "type": "bytes32"}], + "name": "logBytes32", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes4", "name": "p0", "type": "bytes4"}], + "name": "logBytes4", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes5", "name": "p0", "type": "bytes5"}], + "name": "logBytes5", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes6", "name": "p0", "type": "bytes6"}], + "name": "logBytes6", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes7", "name": "p0", "type": "bytes7"}], + "name": "logBytes7", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes8", "name": "p0", "type": "bytes8"}], + "name": "logBytes8", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes9", "name": "p0", "type": "bytes9"}], + "name": "logBytes9", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "int256", "name": "p0", "type": "int256"}], + "name": "logInt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "string", "name": "p0", "type": "string"}], + "name": "logString", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "uint256", "name": "p0", "type": "uint256"}], + "name": "logUint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, +] diff --git a/src/ape_ethereum/_print.py b/src/ape_ethereum/_print.py new file mode 100644 index 0000000000..aa16422983 --- /dev/null +++ b/src/ape_ethereum/_print.py @@ -0,0 +1,104 @@ +"""Utilities to extract debug log data from Vyper's print() and the Hardhat Solidity console.log +calls. + +There are two different implementations of the console.log functionality. Vyper's print() and +Hardhat's console.sol contract. Both send staticcalls to a specific non-existent contract that we +can read from the call tree. + +Vyper encodes these calls as `log(string,bytes)`. Where the first argument is an ABI signature +(e.g. "(uint256,uint8,string)") and the second arg is the printed data. This allows for a simple ABI +and very dynamic output. + +Hardhat's console.sol has a strict ABI (unless patched :-/) that mixes and matches all the basic +datatypes to overload all calls to `log()`. + +References +---------- +- Vyper `print()`: https://docs.vyperlang.org/en/latest/built-in-functions.html#print +- Hardhat's `console.sol`: https://github.com/NomicFoundation/hardhat/blob/e6a42cf330863a6c64624baedd82fc6c5218a20a/packages/hardhat-core/console.sol#L4 # noqa: E501 +- Discussion on dynamic ABI encoding (Vyper-style) for log calls: https://github.com/NomicFoundation/hardhat/issues/2666 # noqa: E501 +""" + +from typing import Any, Iterable, Tuple, cast + +from eth_abi import decode +from eth_typing import ChecksumAddress +from eth_utils import decode_hex +from ethpm_types import ContractType, MethodABI +from typing_extensions import TypeGuard + +import ape +from ape.types import CallTreeNode + +from ._console_log_abi import CONSOLE_LOG_ABI + +CONSOLE_CONTRACT_ID = cast(ChecksumAddress, "0x000000000000000000636F6e736F6c652e6c6f67") +VYPER_PRINT_METHOD_ID = "0x23cdd8e8" # log(string,bytes) + +console_contract = ContractType(abi=CONSOLE_LOG_ABI) +console_contract.name = "console" # TODO: Pretty confused why this can't be set in the constructor + + +def is_console_log(call: Any) -> TypeGuard[CallTreeNode]: + """Determine if a call is a starndard console.log() call""" + return ( + isinstance(call, CallTreeNode) + and call.contract_id == CONSOLE_CONTRACT_ID + and call.method_id in console_contract.identifier_lookup + ) + + +def is_vyper_print(call: Any) -> TypeGuard[CallTreeNode]: + """Determine if a call is a starndard Vyper print() call""" + if ( + isinstance(call, CallTreeNode) + and call.contract_id == CONSOLE_CONTRACT_ID + and call.method_id == VYPER_PRINT_METHOD_ID + and isinstance(call.inputs, str) + ): + bcalldata = decode_hex(call.inputs) + schema, _ = decode(["string", "bytes"], bcalldata) + try: + # Now we look at the first arg to try and determine if it's an ABI signature + first_type = schema.strip("()").split(",")[0] + # TODO: Tighten this up. This is not entirely accurate, but should mostly get us there. + if ( + first_type.startswith("uint") + or first_type.startswith("int") + or first_type.startswith("bytes") + or first_type == "string" + ): + return True + except IndexError: + # Empty string as first arg? + pass + return False + + +def console_log(method_abi: MethodABI, calldata: str) -> Tuple[Any]: + """Return logged data for console.log() calls""" + bcalldata = decode_hex(calldata) + data = ape.networks.ethereum.decode_calldata(method_abi, bcalldata) + return tuple(data.values()) + + +def vyper_print(calldata: str) -> Tuple[Any]: + """Return logged data for print() calls""" + bcalldata = decode_hex(calldata) + schema, payload = decode(["string", "bytes"], bcalldata) + data = decode(schema.strip("()").split(","), payload) + return tuple(data) + + +def extract_debug_logs(call_tree: CallTreeNode) -> Iterable[Tuple[Any]]: + """Filter calls to console.log() and print() from a transactions call tree""" + for call in call_tree.calls: + if is_vyper_print(call) and call.inputs is not None: + yield vyper_print(call.inputs) + elif is_console_log(call) and call.inputs is not None: + assert call.method_id is not None # is_console_log check already checked + method_abi = console_contract.identifier_lookup.get(call.method_id) + if isinstance(method_abi, MethodABI): + yield console_log(method_abi, call.inputs) + elif call.calls is not None: + yield from extract_debug_logs(call) diff --git a/src/ape_ethereum/provider.py b/src/ape_ethereum/provider.py index dfbd001c28..5b1cc8a776 100644 --- a/src/ape_ethereum/provider.py +++ b/src/ape_ethereum/provider.py @@ -5,7 +5,7 @@ from abc import ABC from concurrent.futures import ThreadPoolExecutor from copy import copy -from functools import cached_property +from functools import cached_property, wraps from itertools import tee from pathlib import Path from typing import Any, Dict, Iterator, List, Optional, Tuple, Union, cast @@ -40,7 +40,7 @@ from web3.providers.auto import load_provider_from_environment from web3.types import FeeHistory, RPCEndpoint, TxParams -from ape.api import BlockAPI, ProviderAPI, ReceiptAPI, TransactionAPI +from ape.api import Address, BlockAPI, ProviderAPI, ReceiptAPI, TransactionAPI from ape.api.networks import LOCAL_NETWORK_NAME from ape.exceptions import ( ApeException, @@ -70,6 +70,7 @@ ) from ape.utils import gas_estimation_error_message, run_until_complete, to_int from ape.utils.misc import DEFAULT_MAX_RETRIES_TX +from ape_ethereum._print import CONSOLE_CONTRACT_ID, console_contract from ape_ethereum.transactions import AccessList, AccessListTransaction DEFAULT_PORT = 8545 @@ -104,6 +105,30 @@ class Web3Provider(ProviderAPI, ABC): _web3: Optional[Web3] = None _client_version: Optional[str] = None + def __new__(cls, *args, **kwargs): + # Post-connection ops + def post_connect_hook(connect): + @wraps(connect) + def connect_wrapper(self): + connect(self) + self._post_connect() + + return connect_wrapper + + # Patching the provider to call a post send_transaction() hook + def post_tx_hook(send_tx): + @wraps(send_tx) + def send_tx_wrapper(self, txn: TransactionAPI) -> ReceiptAPI: + receipt = send_tx(self, txn) + self._post_send_transaction(txn, receipt) + return receipt + + return send_tx_wrapper + + setattr(cls, "send_transaction", post_tx_hook(cls.send_transaction)) + setattr(cls, "connect", post_connect_hook(cls.connect)) + return super().__new__(cls) # pydantic v2 doesn't want args + def __init__(self, *args, **kwargs): logger.create_logger("web3.RequestManager", handlers=(_sanitize_web3_url,)) logger.create_logger("web3.providers.HTTPProvider", handlers=(_sanitize_web3_url,)) @@ -864,7 +889,6 @@ def prepare_transaction(self, txn: TransactionAPI) -> TransactionAPI: and txn.gas_price is None ): txn.gas_price = self.gas_price - elif txn_type in (TransactionType.DYNAMIC, TransactionType.SHARED_BLOB): if txn.max_priority_fee is None: txn.max_priority_fee = self.priority_fee @@ -934,6 +958,7 @@ def send_transaction(self, txn: TransactionAPI) -> ReceiptAPI: ) # NOTE: Ensure to cache even the failed receipts. + # NOTE: Caching must happen before error enrichment. self.chain_manager.history.append(receipt) if receipt.failed: @@ -951,9 +976,22 @@ def send_transaction(self, txn: TransactionAPI) -> ReceiptAPI: # a VM error. receipt.raise_for_status() - logger.info(f"Confirmed {receipt.txn_hash} (total fees paid = {receipt.total_fees_paid})") return receipt + def _post_send_transaction(self, tx: TransactionAPI, receipt: ReceiptAPI): + """Execute post-transaction ops""" + + # TODO: Optional configuration? + if tx.receiver and Address(tx.receiver).is_contract: + # Look for and print any contract logging + receipt.show_debug_logs() + + logger.info(f"Confirmed {receipt.txn_hash} (total fees paid = {receipt.total_fees_paid})") + + def _post_connect(self): + # Register the console contract for trace enrichment + self.chain_manager.contracts._cache_contract_type(CONSOLE_CONTRACT_ID, console_contract) + def _create_call_tree_node( self, evm_call: EvmCallTreeNode, txn_hash: Optional[str] = None ) -> CallTreeNode: diff --git a/src/ape_ethereum/transactions.py b/src/ape_ethereum/transactions.py index 0ee2f0ad3c..e4ea07fcc5 100644 --- a/src/ape_ethereum/transactions.py +++ b/src/ape_ethereum/transactions.py @@ -1,7 +1,7 @@ import sys from enum import Enum, IntEnum from functools import cached_property -from typing import IO, Dict, List, Optional, Union +from typing import IO, Any, Dict, List, Optional, Tuple, Union from eth_abi import decode from eth_account import Account as EthAccount @@ -17,10 +17,11 @@ from ape.api import ReceiptAPI, TransactionAPI from ape.contracts import ContractEvent -from ape.exceptions import OutOfGasError, SignatureError, TransactionError +from ape.exceptions import APINotImplementedError, OutOfGasError, SignatureError, TransactionError from ape.logging import logger from ape.types import AddressType, CallTreeNode, ContractLog, ContractLogContainer, SourceTraceback from ape.utils import ZERO_ADDRESS +from ape_ethereum._print import extract_debug_logs class TransactionStatusEnum(IntEnum): @@ -207,6 +208,25 @@ def failed(self) -> bool: def call_tree(self) -> Optional[CallTreeNode]: return self.provider.get_call_tree(self.txn_hash) + @cached_property + def debug_logs_typed(self) -> List[Tuple[Any]]: + """ + Extract messages to console outputted by contracts via print() or console.log() statements + """ + + try: + self.call_tree + # Some providers do not implement this, so skip + except APINotImplementedError: + logger.debug("Call tree not available, skipping debug log extraction") + return list() + + # If the call tree is not available, no logs are available + if self.call_tree is None: + return list() + + return list(extract_debug_logs(self.call_tree)) + @cached_property def contract_type(self) -> Optional[ContractType]: if address := (self.receiver or self.contract_address): diff --git a/tests/functional/conftest.py b/tests/functional/conftest.py index 93128e3dc8..56997b7e2f 100644 --- a/tests/functional/conftest.py +++ b/tests/functional/conftest.py @@ -596,6 +596,11 @@ def vyper_factory(owner, get_contract_type): return owner.deploy(ContractContainer(get_contract_type("VyperFactory"))) +@pytest.fixture +def vyper_printing(owner, get_contract_type): + return owner.deploy(ContractContainer(get_contract_type("printing"))) + + @pytest.fixture def vyper_blueprint(owner, vyper_contract_container): receipt = owner.declare(vyper_contract_container) diff --git a/tests/functional/data/contracts/ethereum/local/printing.json b/tests/functional/data/contracts/ethereum/local/printing.json new file mode 100644 index 0000000000..26a539698b --- /dev/null +++ b/tests/functional/data/contracts/ethereum/local/printing.json @@ -0,0 +1 @@ +{"abi":[{"inputs":[{"name":"x","type":"uint256"}],"name":"print_uint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"x","type":"uint256"}],"name":"print_uint_prefixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"x","type":"uint256"}],"name":"print_uint_compat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"x","type":"uint256"}],"name":"print_uint_prefixed_compat","outputs":[],"stateMutability":"nonpayable","type":"function"}],"ast":{"ast_type":"Module","children":[{"ast_type":"FunctionDef","children":[{"ast_type":"arguments","children":[{"ast_type":"arg","children":[{"ast_type":"Name","children":[],"classification":1,"col_offset":18,"end_col_offset":25,"end_lineno":5,"lineno":5,"src":{"jump_code":"","length":7,"start":54}}],"classification":0,"col_offset":15,"end_col_offset":25,"end_lineno":5,"lineno":5,"src":{"jump_code":"","length":10,"start":51}}],"classification":1,"col_offset":15,"end_col_offset":25,"end_lineno":5,"lineno":5,"src":{"jump_code":"","length":10,"start":51}},{"ast_type":"Expr","children":[{"ast_type":"Call","children":[{"ast_type":"Name","children":[],"classification":1,"col_offset":10,"end_col_offset":11,"end_lineno":6,"lineno":6,"src":{"jump_code":"","length":1,"start":74}},{"ast_type":"Name","children":[],"classification":1,"col_offset":4,"end_col_offset":9,"end_lineno":6,"lineno":6,"src":{"jump_code":"","length":5,"start":68}}],"classification":0,"col_offset":4,"end_col_offset":12,"end_lineno":6,"lineno":6,"src":{"jump_code":"","length":8,"start":68}}],"classification":0,"col_offset":4,"end_col_offset":12,"end_lineno":6,"lineno":6,"src":{"jump_code":"","length":8,"start":68}},{"ast_type":"Name","children":[],"classification":1,"col_offset":1,"end_col_offset":9,"end_lineno":4,"lineno":4,"src":{"jump_code":"","length":8,"start":27}}],"classification":1,"col_offset":0,"end_col_offset":12,"end_lineno":6,"lineno":5,"name":"print_uint","src":{"jump_code":"","length":40,"start":36}},{"ast_type":"FunctionDef","children":[{"ast_type":"arguments","children":[{"ast_type":"arg","children":[{"ast_type":"Name","children":[],"classification":1,"col_offset":27,"end_col_offset":34,"end_lineno":10,"lineno":10,"src":{"jump_code":"","length":7,"start":116}}],"classification":0,"col_offset":24,"end_col_offset":34,"end_lineno":10,"lineno":10,"src":{"jump_code":"","length":10,"start":113}}],"classification":1,"col_offset":24,"end_col_offset":34,"end_lineno":10,"lineno":10,"src":{"jump_code":"","length":10,"start":113}},{"ast_type":"Expr","children":[{"ast_type":"Call","children":[{"ast_type":"Str","children":[],"classification":0,"col_offset":10,"end_col_offset":20,"end_lineno":11,"lineno":11,"src":{"jump_code":"","length":10,"start":136}},{"ast_type":"Name","children":[],"classification":1,"col_offset":22,"end_col_offset":23,"end_lineno":11,"lineno":11,"src":{"jump_code":"","length":1,"start":148}},{"ast_type":"Name","children":[],"classification":1,"col_offset":4,"end_col_offset":9,"end_lineno":11,"lineno":11,"src":{"jump_code":"","length":5,"start":130}}],"classification":0,"col_offset":4,"end_col_offset":24,"end_lineno":11,"lineno":11,"src":{"jump_code":"","length":20,"start":130}}],"classification":0,"col_offset":4,"end_col_offset":24,"end_lineno":11,"lineno":11,"src":{"jump_code":"","length":20,"start":130}},{"ast_type":"Name","children":[],"classification":1,"col_offset":1,"end_col_offset":9,"end_lineno":9,"lineno":9,"src":{"jump_code":"","length":8,"start":80}}],"classification":1,"col_offset":0,"end_col_offset":24,"end_lineno":11,"lineno":10,"name":"print_uint_prefixed","src":{"jump_code":"","length":61,"start":89}},{"ast_type":"FunctionDef","children":[{"ast_type":"arguments","children":[{"ast_type":"arg","children":[{"ast_type":"Name","children":[],"classification":1,"col_offset":25,"end_col_offset":32,"end_lineno":15,"lineno":15,"src":{"jump_code":"","length":7,"start":188}}],"classification":0,"col_offset":22,"end_col_offset":32,"end_lineno":15,"lineno":15,"src":{"jump_code":"","length":10,"start":185}}],"classification":1,"col_offset":22,"end_col_offset":32,"end_lineno":15,"lineno":15,"src":{"jump_code":"","length":10,"start":185}},{"ast_type":"Expr","children":[{"ast_type":"Call","children":[{"ast_type":"Name","children":[],"classification":1,"col_offset":10,"end_col_offset":11,"end_lineno":16,"lineno":16,"src":{"jump_code":"","length":1,"start":208}},{"ast_type":"Name","children":[],"classification":1,"col_offset":4,"end_col_offset":9,"end_lineno":16,"lineno":16,"src":{"jump_code":"","length":5,"start":202}},{"ast_type":"keyword","children":[{"ast_type":"NameConstant","children":[],"classification":0,"col_offset":28,"end_col_offset":32,"end_lineno":16,"lineno":16,"src":{"jump_code":"","length":4,"start":226}}],"classification":0,"col_offset":13,"end_col_offset":32,"end_lineno":16,"lineno":16,"src":{"jump_code":"","length":19,"start":211}}],"classification":0,"col_offset":4,"end_col_offset":33,"end_lineno":16,"lineno":16,"src":{"jump_code":"","length":29,"start":202}}],"classification":0,"col_offset":4,"end_col_offset":33,"end_lineno":16,"lineno":16,"src":{"jump_code":"","length":29,"start":202}},{"ast_type":"Name","children":[],"classification":1,"col_offset":1,"end_col_offset":9,"end_lineno":14,"lineno":14,"src":{"jump_code":"","length":8,"start":154}}],"classification":1,"col_offset":0,"end_col_offset":33,"end_lineno":16,"lineno":15,"name":"print_uint_compat","src":{"jump_code":"","length":68,"start":163}},{"ast_type":"FunctionDef","children":[{"ast_type":"arguments","children":[{"ast_type":"arg","children":[{"ast_type":"Name","children":[],"classification":1,"col_offset":34,"end_col_offset":41,"end_lineno":20,"lineno":20,"src":{"jump_code":"","length":7,"start":278}}],"classification":0,"col_offset":31,"end_col_offset":41,"end_lineno":20,"lineno":20,"src":{"jump_code":"","length":10,"start":275}}],"classification":1,"col_offset":31,"end_col_offset":41,"end_lineno":20,"lineno":20,"src":{"jump_code":"","length":10,"start":275}},{"ast_type":"Expr","children":[{"ast_type":"Call","children":[{"ast_type":"Str","children":[],"classification":0,"col_offset":10,"end_col_offset":20,"end_lineno":21,"lineno":21,"src":{"jump_code":"","length":10,"start":298}},{"ast_type":"Name","children":[],"classification":1,"col_offset":22,"end_col_offset":23,"end_lineno":21,"lineno":21,"src":{"jump_code":"","length":1,"start":310}},{"ast_type":"Name","children":[],"classification":1,"col_offset":4,"end_col_offset":9,"end_lineno":21,"lineno":21,"src":{"jump_code":"","length":5,"start":292}},{"ast_type":"keyword","children":[{"ast_type":"NameConstant","children":[],"classification":0,"col_offset":40,"end_col_offset":44,"end_lineno":21,"lineno":21,"src":{"jump_code":"","length":4,"start":328}}],"classification":0,"col_offset":25,"end_col_offset":44,"end_lineno":21,"lineno":21,"src":{"jump_code":"","length":19,"start":313}}],"classification":0,"col_offset":4,"end_col_offset":45,"end_lineno":21,"lineno":21,"src":{"jump_code":"","length":41,"start":292}}],"classification":0,"col_offset":4,"end_col_offset":45,"end_lineno":21,"lineno":21,"src":{"jump_code":"","length":41,"start":292}},{"ast_type":"Name","children":[],"classification":1,"col_offset":1,"end_col_offset":9,"end_lineno":19,"lineno":19,"src":{"jump_code":"","length":8,"start":235}}],"classification":1,"col_offset":0,"end_col_offset":45,"end_lineno":21,"lineno":20,"name":"print_uint_prefixed_compat","src":{"jump_code":"","length":89,"start":244}}],"classification":0,"col_offset":0,"end_col_offset":45,"end_lineno":21,"lineno":1,"name":"printing.vy","src":{"jump_code":"","length":333}},"contractName":"printing","deploymentBytecode":{"bytecode":"0x61034261001161000039610342610000f35f3560e01c60026003820660011b61033c01601e395f51565b63692c952181186100f8576024361034176103385760096040527f2875696e7432353629000000000000000000000000000000000000000000000060605260043560a05260206080526323cdd8e860c0525f5f60408060e0528060e001604051815260605160208201528051806020830101601f825f03163682375050601f19601f8251602001011690508101905080610100528060e001608051815260a05160208201528051806020830101601f825f03163682375050601f19601f8251602001011690508101905060040160dc6a636f6e736f6c652e6c6f675afa50005b639b5598bf8118610334576024361034176103385763b60e72cc6080525f5f60408060a05260086040527f636f6d62696e656400000000000000000000000000000000000000000000000060605260408160a00181518152602082015160208201528051806020830101601f825f03163682375050601f19601f82516020010116905090508101905060043560c052600401609c6a636f6e736f6c652e6c6f675afa5000610334565b6378b9e5b48118610334576024361034176103385760106080527f28737472696e672c75696e74323536290000000000000000000000000000000060a05260408060e05260086040527f636f6d62696e656400000000000000000000000000000000000000000000000060605260408160e00181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506004356101005260c0526323cdd8e8610160525f5f604080610180528061018001608051815260a05160208201528051806020830101601f825f03163682375050601f19601f82516020010116905081019050806101a0528061018001602060c0510180828260c060045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690508101905060040161017c6a636f6e736f6c652e6c6f675afa5000610334565b63c74de9188118610334576024361034176103385763f82c50f16040525f5f6004356060526020600401605c6a636f6e736f6c652e6c6f675afa50005b5f5ffd5b5f80fd01a1001802f784190342810600a16576797065728300030a0014"},"dev_messages":{},"devdoc":{},"methodIdentifiers":{"print_uint(uint256)":"0x692c9521","print_uint_compat(uint256)":"0xc74de918","print_uint_prefixed(uint256)":"0x78b9e5b4","print_uint_prefixed_compat(uint256)":"0x9b5598bf"},"pcmap":{"105":{"location":[6,4,6,12]},"245":{"location":[6,4,6,12]},"246":{"location":[5,0,6,12]},"247":{"location":[5,0,6,12]},"266":{"dev":"dev: Invalid calldata or value","location":[5,0,6,12]},"269":{"dev":"dev: Invalid calldata or value","location":[5,0,6,12]},"277":{"location":[21,4,21,45]},"290":{"location":[21,10,21,20]},"326":{"location":[21,10,21,20]},"327":{"location":[21,10,21,20]},"386":{"location":[21,22,21,23]},"410":{"location":[21,4,21,45]},"411":{"location":[20,0,21,45]},"412":{"location":[20,0,21,45]},"42":{"dev":"dev: Invalid calldata or value","location":null},"435":{"dev":"dev: Invalid calldata or value","location":[20,0,21,45]},"438":{"dev":"dev: Invalid calldata or value","location":[20,0,21,45]},"443":{"location":[11,4,11,24]},"45":{"dev":"dev: Invalid calldata or value","location":null},"479":{"location":[11,4,11,24]},"490":{"location":[11,10,11,20]},"50":{"location":[6,4,6,12]},"526":{"location":[11,10,11,20]},"527":{"location":[11,10,11,20]},"586":{"location":[11,22,11,23]},"595":{"location":[11,4,11,24]},"604":{"location":[11,4,11,24]},"752":{"location":[11,4,11,24]},"753":{"location":[10,0,11,24]},"754":{"location":[10,0,11,24]},"777":{"dev":"dev: Invalid calldata or value","location":[10,0,11,24]},"780":{"dev":"dev: Invalid calldata or value","location":[10,0,11,24]},"788":{"location":[16,4,16,33]},"791":{"location":[16,10,16,11]},"817":{"location":[16,4,16,33]},"818":{"location":[15,0,16,33]},"819":{"location":[15,0,16,33]},"823":{"dev":"dev: Fallback not defined","location":null},"86":{"location":[6,4,6,12]},"87":{"location":[6,10,6,11]},"97":{"location":[6,4,6,12]}},"runtimeBytecode":{"bytecode":"0x5f3560e01c60026003820660011b61033c01601e395f51565b63692c952181186100f8576024361034176103385760096040527f2875696e7432353629000000000000000000000000000000000000000000000060605260043560a05260206080526323cdd8e860c0525f5f60408060e0528060e001604051815260605160208201528051806020830101601f825f03163682375050601f19601f8251602001011690508101905080610100528060e001608051815260a05160208201528051806020830101601f825f03163682375050601f19601f8251602001011690508101905060040160dc6a636f6e736f6c652e6c6f675afa50005b639b5598bf8118610334576024361034176103385763b60e72cc6080525f5f60408060a05260086040527f636f6d62696e656400000000000000000000000000000000000000000000000060605260408160a00181518152602082015160208201528051806020830101601f825f03163682375050601f19601f82516020010116905090508101905060043560c052600401609c6a636f6e736f6c652e6c6f675afa5000610334565b6378b9e5b48118610334576024361034176103385760106080527f28737472696e672c75696e74323536290000000000000000000000000000000060a05260408060e05260086040527f636f6d62696e656400000000000000000000000000000000000000000000000060605260408160e00181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506004356101005260c0526323cdd8e8610160525f5f604080610180528061018001608051815260a05160208201528051806020830101601f825f03163682375050601f19601f82516020010116905081019050806101a0528061018001602060c0510180828260c060045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690508101905060040161017c6a636f6e736f6c652e6c6f675afa5000610334565b63c74de9188118610334576024361034176103385763f82c50f16040525f5f6004356060526020600401605c6a636f6e736f6c652e6c6f675afa50005b5f5ffd5b5f80fd01a1001802f7"},"sourceId":"printing.vy","sourcemap":"-1:-1:0:-;;;;;;;;;;;;;;;;:::-;:::-;;;;;:::-;;;;;;;:::-;;;68:8;-1:-1;;68:8;74:1;-1:-1;;;;;68:8;-1:-1;;68:8;-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;68:8;36:40;;-1:-1::-;;;;;:::-;;;;;;;:::-;;;292:41;-1:-1;;;;;;;;298:10;-1:-1;;298:10;;-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;310:1;-1:-1;;;;;;;;292:41;244:89;;-1:-1;:::-;:::-;;;;;:::-;;;;;;;:::-;;;130:20;-1:-1;;130:20;-1:-1;;;;;;136:10;-1:-1;;136:10;;-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;148:1;-1:-1;;;;130:20;-1:-1;;130:20;-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;130:20;89:61;;-1:-1;:::-;:::-;;;;;:::-;;;;;;;:::-;;;202:29;-1:-1;;208:1;-1:-1;;;;;;;;;202:29;163:68;;-1:-1::-;;;;:::-;;;","userdoc":{}} \ No newline at end of file diff --git a/tests/functional/geth/test_trace.py b/tests/functional/geth/test_trace.py index f50d8baf32..531358c936 100644 --- a/tests/functional/geth/test_trace.py +++ b/tests/functional/geth/test_trace.py @@ -171,3 +171,22 @@ def test_get_call_tree_erigon(mock_web3, mock_geth, parity_trace_response, txn_h actual = repr(result) expected = r"0xC17f2C69aE2E66FD87367E3260412EEfF637F70E.0x96d373e5\(\) \[\d+ gas\]" assert re.match(expected, actual) + + +@geth_process_test +def test_printing_debug_logs_vyper(geth_provider, geth_account, vyper_printing): + num = 789 + # Why is 6 afraid of 7? Because {num} + receipt = vyper_printing.print_uint(num, sender=geth_account) + assert receipt.status + assert len(list(receipt.debug_logs_typed)) == 1 + assert receipt.debug_logs_typed[0][0] == num + + +@geth_process_test +def test_printing_debug_logs_compat(geth_provider, geth_account, vyper_printing): + num = 456 + receipt = vyper_printing.print_uint_compat(num, sender=geth_account) + assert receipt.status + assert len(list(receipt.debug_logs_typed)) == 1 + assert receipt.debug_logs_typed[0][0] == num