Commit 5a5dd8f4 authored by protolambda's avatar protolambda Committed by GitHub

op-chain-ops: Go forge scripts runner (#11447)

* op-chain-ops: Go forge scripts runner

* fix lint

* op-chain-ops: encapsulate forge script tests in testdata
parent 1e2b19cb
package script
import (
"github.com/ethereum/go-ethereum/common"
)
type CheatCodesPrecompile struct {
h *Host
}
func (c *CheatCodesPrecompile) GetNonce(addr common.Address) uint64 {
return c.h.state.GetNonce(addr)
}
......@@ -7,13 +7,11 @@ import (
type ConsolePrecompile struct {
logger log.Logger
sender common.Address
sender func() common.Address
}
func (c *ConsolePrecompile) log(ctx ...any) {
// frame := c.h.CurrentCall()
// sender := frame.Sender
sender := c.sender
sender := c.sender()
// Log the sender, since the self-address is always equal to the ConsoleAddr
c.logger.With("sender", sender).Info("console", ctx...)
......
......@@ -7,6 +7,7 @@ import (
"github.com/stretchr/testify/require"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/log"
......@@ -26,7 +27,7 @@ func TestConsole(t *testing.T) {
t.Logf("bob: %s", bob)
c := &ConsolePrecompile{
logger: logger,
sender: sender,
sender: func() common.Address { return sender },
}
p, err := NewPrecompile[*ConsolePrecompile](c)
require.NoError(t, err)
......
package script
import (
"math/big"
"github.com/ethereum/go-ethereum/common"
)
var (
// DefaultSenderAddr is known as DEFAULT_SENDER = address(uint160(uint256(keccak256("foundry default caller"))))
DefaultSenderAddr = common.HexToAddress("0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38")
// DefaultScriptAddr is the address of the initial executing script, computed from:
// cast compute-address --nonce 1 0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38
DefaultScriptAddr = common.HexToAddress("0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496")
// VMAddr is known as VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code"))));
VMAddr = common.HexToAddress("0x7109709ECfa91a80626fF3989D68f67F5b1DD12D")
// ConsoleAddr is known as CONSOLE, "console.log" in ascii.
// Utils like console.sol and console2.sol work by executing a staticcall to this address.
ConsoleAddr = common.HexToAddress("0x000000000000000000636F6e736F6c652e6c6f67")
)
const (
// DefaultFoundryGasLimit is set to int64.max in foundry.toml
DefaultFoundryGasLimit = 9223372036854775807
)
type Context struct {
chainID *big.Int
sender common.Address
origin common.Address
feeRecipient common.Address
gasLimit uint64
blockNum uint64
timestamp uint64
prevRandao common.Hash
blobHashes []common.Hash
}
var DefaultContext = Context{
chainID: big.NewInt(1337),
sender: DefaultSenderAddr,
origin: DefaultSenderAddr,
feeRecipient: common.Address{},
gasLimit: DefaultFoundryGasLimit,
blockNum: 0,
timestamp: 0,
prevRandao: common.Hash{},
blobHashes: []common.Hash{},
}
package script
import (
"encoding/binary"
"fmt"
"math/big"
"github.com/holiman/uint256"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum-optimism/optimism/op-chain-ops/foundry"
)
// CallFrame encodes the scope context of the current call
type CallFrame struct {
Depth int
Opener vm.OpCode
Ctx *vm.ScopeContext
}
// Host is an EVM executor that runs Forge scripts.
type Host struct {
log log.Logger
af *foundry.ArtifactsFS
chainCfg *params.ChainConfig
env *vm.EVM
state *state.StateDB
stateDB state.Database
rawDB ethdb.Database
cheatcodes *Precompile[*CheatCodesPrecompile]
console *Precompile[*ConsolePrecompile]
callStack []CallFrame
}
// NewHost creates a Host that can load contracts from the given Artifacts FS,
// and with an EVM initialized to the given executionContext.
func NewHost(logger log.Logger, fs *foundry.ArtifactsFS, executionContext Context) *Host {
h := &Host{
log: logger,
af: fs,
}
// Init a default chain config, with all the mainnet L1 forks activated
h.chainCfg = &params.ChainConfig{
ChainID: executionContext.chainID,
// Ethereum forks in proof-of-work era.
HomesteadBlock: big.NewInt(0),
EIP150Block: big.NewInt(0),
EIP155Block: big.NewInt(0),
EIP158Block: big.NewInt(0),
ByzantiumBlock: big.NewInt(0),
ConstantinopleBlock: big.NewInt(0),
PetersburgBlock: big.NewInt(0),
IstanbulBlock: big.NewInt(0),
MuirGlacierBlock: big.NewInt(0),
BerlinBlock: big.NewInt(0),
LondonBlock: big.NewInt(0),
ArrowGlacierBlock: big.NewInt(0),
GrayGlacierBlock: big.NewInt(0),
MergeNetsplitBlock: big.NewInt(0),
// Ethereum forks in proof-of-stake era.
TerminalTotalDifficulty: big.NewInt(1),
TerminalTotalDifficultyPassed: true,
ShanghaiTime: new(uint64),
CancunTime: new(uint64),
PragueTime: nil,
VerkleTime: nil,
// OP-Stack forks are disabled, since we use this for L1.
BedrockBlock: nil,
RegolithTime: nil,
CanyonTime: nil,
EcotoneTime: nil,
FjordTime: nil,
GraniteTime: nil,
InteropTime: nil,
Optimism: nil,
}
// Create an in-memory database, to host our temporary script state changes
h.rawDB = rawdb.NewMemoryDatabase()
h.stateDB = state.NewDatabase(h.rawDB)
var err error
h.state, err = state.New(types.EmptyRootHash, h.stateDB, nil)
if err != nil {
panic(fmt.Errorf("failed to create memory state db: %w", err))
}
// Initialize a block-context for the EVM to access environment variables.
// The block context (after embedding inside of the EVM environment) may be mutated later.
blockContext := vm.BlockContext{
CanTransfer: core.CanTransfer,
Transfer: core.Transfer,
GetHash: func(n uint64) (out common.Hash) {
binary.BigEndian.PutUint64(out[:8], n)
return crypto.Keccak256Hash(out[:])
},
L1CostFunc: nil,
Coinbase: executionContext.feeRecipient,
GasLimit: executionContext.gasLimit,
BlockNumber: new(big.Int).SetUint64(executionContext.blockNum),
Time: executionContext.timestamp,
Difficulty: nil, // not used anymore post-merge
BaseFee: big.NewInt(0),
BlobBaseFee: big.NewInt(0),
Random: &executionContext.prevRandao,
}
// Initialize a transaction-context for the EVM to access environment variables.
// The transaction context (after embedding inside of the EVM environment) may be mutated later.
txContext := vm.TxContext{
Origin: executionContext.origin,
GasPrice: big.NewInt(0),
BlobHashes: executionContext.blobHashes,
BlobFeeCap: big.NewInt(0),
AccessEvents: state.NewAccessEvents(h.stateDB.PointCache()),
}
// Hook up the Host to capture the EVM environment changes
trHooks := &tracing.Hooks{
OnExit: h.onExit,
OnOpcode: h.onOpcode,
OnFault: h.onFault,
OnStorageChange: h.onStorageChange,
OnLog: h.onLog,
}
// Configure the EVM without basefee (because scripting), our trace hooks, and runtime precompile overrides.
vmCfg := vm.Config{
NoBaseFee: true,
Tracer: trHooks,
PrecompileOverrides: h.getPrecompile,
}
h.env = vm.NewEVM(blockContext, txContext, h.state, h.chainCfg, vmCfg)
return h
}
// EnableCheats enables the Forge/HVM cheat-codes precompile and the Hardhat-style console2 precompile.
func (h *Host) EnableCheats() error {
vmPrecompile, err := NewPrecompile[*CheatCodesPrecompile](&CheatCodesPrecompile{h: h})
if err != nil {
return fmt.Errorf("failed to init VM cheatcodes precompile: %w", err)
}
h.cheatcodes = vmPrecompile
// Solidity does EXTCODESIZE checks on functions without return-data.
// We need to insert some placeholder code to prevent it from aborting calls.
// Emulates Forge script: https://github.com/foundry-rs/foundry/blob/224fe9cbf76084c176dabf7d3b2edab5df1ab818/crates/evm/evm/src/executors/mod.rs#L108
h.state.SetCode(VMAddr, []byte{0x00})
consolePrecompile, err := NewPrecompile[*ConsolePrecompile](&ConsolePrecompile{
logger: h.log,
sender: h.MsgSender,
})
if err != nil {
return fmt.Errorf("failed to init console precompile: %w", err)
}
h.console = consolePrecompile
// The Console precompile does not need bytecode,
// calls all go through a console lib, which avoids the EXTCODESIZE.
return nil
}
// prelude is a helper function to prepare the Host for a new call/create on the EVM environment.
func (h *Host) prelude(from common.Address, to *common.Address) {
rules := h.chainCfg.Rules(h.env.Context.BlockNumber, true, h.env.Context.Time)
activePrecompiles := vm.ActivePrecompiles(rules)
h.env.StateDB.Prepare(rules, from, h.env.Context.Coinbase, to, activePrecompiles, nil)
}
// Call calls a contract in the EVM. The state changes persist.
func (h *Host) Call(from common.Address, to common.Address, input []byte, gas uint64, value *uint256.Int) (returnData []byte, leftOverGas uint64, err error) {
h.prelude(from, &to)
return h.env.Call(vm.AccountRef(from), to, input, gas, value)
}
// LoadContract loads the bytecode of a contract, and deploys it with regular CREATE.
func (h *Host) LoadContract(artifactName, contractName string) (common.Address, error) {
artifact, err := h.af.ReadArtifact(artifactName, contractName)
if err != nil {
return common.Address{}, fmt.Errorf("failed to load %s / %s: %w", artifactName, contractName, err)
}
h.prelude(h.env.TxContext.Origin, nil)
ret, addr, _, err := h.env.Create(vm.AccountRef(h.env.TxContext.Origin),
artifact.Bytecode.Object, DefaultFoundryGasLimit, uint256.NewInt(0))
if err != nil {
return common.Address{}, fmt.Errorf("failed to create contract, return: %x, err: %w", ret, err)
}
return addr, nil
}
// getPrecompile overrides any accounts during runtime, to insert special precompiles, if activated.
func (h *Host) getPrecompile(rules params.Rules, original vm.PrecompiledContract, addr common.Address) vm.PrecompiledContract {
switch addr {
case VMAddr:
return h.cheatcodes // nil if cheats are not enabled
case ConsoleAddr:
return h.console // nil if cheats are not enabled
default:
return original
}
}
// onExit is a trace-hook, which we use to maintain an accurate view of functions, and log any revert warnings.
func (h *Host) onExit(depth int, output []byte, gasUsed uint64, err error, reverted bool) {
// Note: onExit runs also when going deeper, exiting the context into a nested context.
addr := h.SelfAddress()
h.unwindCallstack(depth)
if reverted {
if msg, revertInspectErr := abi.UnpackRevert(output); revertInspectErr == nil {
h.log.Warn("Revert", "addr", addr, "err", err, "revertMsg", msg)
} else {
h.log.Warn("Revert", "addr", addr, "err", err, "revertData", hexutil.Bytes(output))
}
}
}
// onFault is a trace-hook, catches things more generic than regular EVM reverts.
func (h *Host) onFault(pc uint64, op byte, gas, cost uint64, scope tracing.OpContext, depth int, err error) {
h.log.Warn("Fault", "addr", scope.Address(), "err", err)
}
// unwindCallstack is a helper to remove call-stack entries.
func (h *Host) unwindCallstack(depth int) {
// pop the callstack until the depth matches
for len(h.callStack) > 0 && h.callStack[len(h.callStack)-1].Depth > depth {
h.callStack[len(h.callStack)-1] = CallFrame{} // don't hold on to the underlying call-frame resources
h.callStack = h.callStack[:len(h.callStack)-1]
}
}
// onOpcode is a trace-hook, used to maintain a view of the call-stack, and do any per op-code overrides.
func (h *Host) onOpcode(pc uint64, op byte, gas, cost uint64, scope tracing.OpContext, rData []byte, depth int, err error) {
h.unwindCallstack(depth)
scopeCtx := scope.(*vm.ScopeContext)
// Check if we are entering a new depth, add it to the call-stack if so.
// We do this here, instead of onEnter, to capture an initialized scope.
if len(h.callStack) == 0 || h.callStack[len(h.callStack)-1].Depth < depth {
h.callStack = append(h.callStack, CallFrame{
Depth: depth,
Opener: vm.OpCode(op),
Ctx: scopeCtx,
})
}
// Sanity check that top of the call-stack matches the scope context now
if len(h.callStack) == 0 || h.callStack[len(h.callStack)-1].Ctx != scopeCtx {
panic("scope context changed without call-frame pop/push")
}
}
// onStorageChange is a trace-hook to capture state changes
func (h *Host) onStorageChange(addr common.Address, slot common.Hash, prev, new common.Hash) {
h.log.Debug("storage change", "addr", addr, "slot", slot, "prev_value", prev, "new_value", new)
// future storage recording
}
// onLog is a trace-hook to capture log events
func (h *Host) onLog(ev *types.Log) {
logger := h.log
for i, topic := range ev.Topics {
logger = logger.With(fmt.Sprintf("topic%d", i), topic)
}
logger.Debug("log event", "data", hexutil.Bytes(ev.Data))
// future log recording
}
// CurrentCall returns the top of the callstack. Or zeroed if there was no call frame yet.
// If zeroed, the call-frame has a nil scope context.
func (h *Host) CurrentCall() CallFrame {
if len(h.callStack) == 0 {
return CallFrame{}
}
return h.callStack[len(h.callStack)-1]
}
// MsgSender returns the msg.sender of the current active EVM call-frame,
// or a zero address if there is no active call-frame.
func (h *Host) MsgSender() common.Address {
cf := h.CurrentCall()
if cf.Ctx == nil {
return common.Address{}
}
return cf.Ctx.Caller()
}
// SelfAddress returns the current executing address of the current active EVM call-frame,
// or a zero address if there is no active call-frame.
func (h *Host) SelfAddress() common.Address {
cf := h.CurrentCall()
if cf.Ctx == nil {
return common.Address{}
}
return cf.Ctx.Address()
}
package script
import (
"testing"
"github.com/holiman/uint256"
"github.com/stretchr/testify/require"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum-optimism/optimism/op-chain-ops/foundry"
"github.com/ethereum-optimism/optimism/op-service/testlog"
)
//go:generate ./testdata/generate.sh
func TestScript(t *testing.T) {
logger, captLog := testlog.CaptureLogger(t, log.LevelInfo)
af := foundry.OpenArtifactsDir("./testdata/test-artifacts")
scriptContext := DefaultContext
h := NewHost(logger, af, scriptContext)
addr, err := h.LoadContract("ScriptExample.s", "ScriptExample")
require.NoError(t, err)
require.NoError(t, h.EnableCheats())
input := bytes4("run()")
returnData, _, err := h.Call(scriptContext.sender, addr, input[:], DefaultFoundryGasLimit, uint256.NewInt(0))
require.NoError(t, err, "call failed: %x", string(returnData))
require.NotNil(t, captLog.FindLog(
testlog.NewAttributesFilter("p0", "sender nonce"),
testlog.NewAttributesFilter("p1", "1")))
}
################################################################
# PROFILE: DEFAULT (Local) #
################################################################
[profile.default]
# Compilation settings
src = 'src'
out = 'test-artifacts'
script = 'scripts'
optimizer = true
optimizer_runs = 999999
remappings = []
extra_output = ['devdoc', 'userdoc', 'metadata', 'storageLayout']
bytecode_hash = 'none'
build_info_path = 'artifacts/build-info'
ast = true
evm_version = "cancun"
# 5159 error code is selfdestruct error code
ignored_error_codes = ["transient-storage", "code-size", "init-code-size", 5159]
# We set the gas limit to max int64 to avoid running out of gas during testing, since the default
# gas limit is 1B and some of our tests require more gas than that, such as `test_callWithMinGas_noLeakageLow_succeeds`.
# We use this gas limit since it was the default gas limit prior to https://github.com/foundry-rs/foundry/pull/8274.
# Due to toml-rs limitations, if you increase the gas limit above this value it must be a string.
gas_limit = 9223372036854775807
# Test / Script Runner Settings
ffi = false
fs_permissions = []
libs = ["node_modules", "lib"]
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;
// Vm is a minimal interface to the forge cheatcode precompile
interface Vm {
function getNonce(address account) external view returns (uint64 nonce);
}
// console is a minimal version of the console2 lib.
library console {
address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);
function _castLogPayloadViewToPure(
function(bytes memory) internal view fnIn
) internal pure returns (function(bytes memory) internal pure fnOut) {
assembly {
fnOut := fnIn
}
}
function _sendLogPayload(bytes memory payload) internal pure {
_castLogPayloadViewToPure(_sendLogPayloadView)(payload);
}
function _sendLogPayloadView(bytes memory payload) private view {
uint256 payloadLength = payload.length;
address consoleAddress = CONSOLE_ADDRESS;
/// @solidity memory-safe-assembly
assembly {
let payloadStart := add(payload, 32)
let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)
}
}
function log(string memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(string memory p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1));
}
function log(string memory p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
}
/// @title ScriptExample
/// @notice ScriptExample is an example script. The Go forge script code tests that it can run this.
contract ScriptExample {
address internal constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code"))));
Vm internal constant vm = Vm(VM_ADDRESS);
/// @notice example function, runs through basic cheat-codes and console logs.
function run() public view {
console.log("contract addr", address(this));
console.log("contract nonce", vm.getNonce(address(this)));
console.log("sender addr", address(msg.sender));
console.log("sender nonce", vm.getNonce(address(msg.sender)));
console.log("done!");
}
}
{"abi":[{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"view"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610545806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c040622614610030575b600080fd5b61003861003a565b005b6100796040518060400160405280600d81526020017f636f6e747261637420616464720000000000000000000000000000000000000081525030610252565b604080518082018252600e81527f636f6e7472616374206e6f6e6365000000000000000000000000000000000000602082015290517f2d0335ab00000000000000000000000000000000000000000000000000000000815230600482015261014c9190737109709ecfa91a80626ff3989d68f67f5b1dd12d90632d0335ab906024015b602060405180830381865afa158015610119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013d919061042f565b67ffffffffffffffff166102e7565b61018b6040518060400160405280600b81526020017f73656e646572206164647200000000000000000000000000000000000000000081525033610252565b604080518082018252600c81527f73656e646572206e6f6e63650000000000000000000000000000000000000000602082015290517f2d0335ab0000000000000000000000000000000000000000000000000000000081523360048201526102129190737109709ecfa91a80626ff3989d68f67f5b1dd12d90632d0335ab906024016100fc565b6102506040518060400160405280600581526020017f646f6e6521000000000000000000000000000000000000000000000000000000815250610378565b565b6102e382826040516024016102689291906104cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af3330000000000000000000000000000000000000000000000000000000017905261040a565b5050565b6102e382826040516024016102fd929190610503565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc0000000000000000000000000000000000000000000000000000000017905261040a565b6104078160405160240161038c9190610525565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905261040a565b50565b6104078180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60006020828403121561044157600080fd5b815167ffffffffffffffff8116811461045957600080fd5b9392505050565b6000815180845260005b818110156104865760208185018101518683018201520161046a565b81811115610498576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6040815260006104de6040830185610460565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6040815260006105166040830185610460565b90508260208301529392505050565b602081526000610459602083018461046056fea164736f6c634300080f000a","sourceMap":"1688:574:0:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c040622614610030575b600080fd5b61003861003a565b005b6100796040518060400160405280600d81526020017f636f6e747261637420616464720000000000000000000000000000000000000081525030610252565b604080518082018252600e81527f636f6e7472616374206e6f6e6365000000000000000000000000000000000000602082015290517f2d0335ab00000000000000000000000000000000000000000000000000000000815230600482015261014c9190737109709ecfa91a80626ff3989d68f67f5b1dd12d90632d0335ab906024015b602060405180830381865afa158015610119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013d919061042f565b67ffffffffffffffff166102e7565b61018b6040518060400160405280600b81526020017f73656e646572206164647200000000000000000000000000000000000000000081525033610252565b604080518082018252600c81527f73656e646572206e6f6e63650000000000000000000000000000000000000000602082015290517f2d0335ab0000000000000000000000000000000000000000000000000000000081523360048201526102129190737109709ecfa91a80626ff3989d68f67f5b1dd12d90632d0335ab906024016100fc565b6102506040518060400160405280600581526020017f646f6e6521000000000000000000000000000000000000000000000000000000815250610378565b565b6102e382826040516024016102689291906104cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af3330000000000000000000000000000000000000000000000000000000017905261040a565b5050565b6102e382826040516024016102fd929190610503565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc0000000000000000000000000000000000000000000000000000000017905261040a565b6104078160405160240161038c9190610525565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905261040a565b50565b6104078180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60006020828403121561044157600080fd5b815167ffffffffffffffff8116811461045957600080fd5b9392505050565b6000815180845260005b818110156104865760208185018101518683018201520161046a565b81811115610498576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6040815260006104de6040830185610460565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6040815260006105166040830185610460565b90508260208301529392505050565b602081526000610459602083018461046056fea164736f6c634300080f000a","sourceMap":"1688:574:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1948:312;;;:::i;:::-;;;1985:43;;;;;;;;;;;;;;;;;;2022:4;1985:11;:43::i;:::-;2038:57;;;;;;;;;;;;;;;;2068:26;;;;;2088:4;2068:26;;;160:74:1;2038:57:0;;;2068:11;;;;133:18:1;;2068:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2038:57;;:11;:57::i;:::-;2105:47;;;;;;;;;;;;;;;;;;2140:10;2105:11;:47::i;:::-;2162:61;;;;;;;;;;;;;;;;2190:32;;;;;2210:10;2190:32;;;160:74:1;2162:61:0;;;2190:11;;;;133:18:1;;2190:32:0;14:226:1;2162:61:0;2233:20;;;;;;;;;;;;;;;;;;:11;:20::i;:::-;1948:312::o;1413:145::-;1480:71;1543:2;1547;1496:54;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1480:15;:71::i;:::-;1413:145;;:::o;1262:::-;1329:71;1392:2;1396;1345:54;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1329:15;:71::i;1135:121::-;1190:59;1245:2;1206:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1190:15;:59::i;:::-;1135:121;:::o;610:133::-;681:55;728:7;847:14;;333:42;1020:2;1007:16;;823:21;;847:14;1007:16;333:42;1056:5;1045:68;1036:77;;973:150;;749:380;:::o;245:288:1:-;314:6;367:2;355:9;346:7;342:23;338:32;335:52;;;383:1;380;373:12;335:52;415:9;409:16;465:18;458:5;454:30;447:5;444:41;434:69;;499:1;496;489:12;434:69;522:5;245:288;-1:-1:-1;;;245:288:1:o;538:531::-;580:3;618:5;612:12;645:6;640:3;633:19;670:1;680:162;694:6;691:1;688:13;680:162;;;756:4;812:13;;;808:22;;802:29;784:11;;;780:20;;773:59;709:12;680:162;;;860:6;857:1;854:13;851:87;;;926:1;919:4;910:6;905:3;901:16;897:27;890:38;851:87;-1:-1:-1;983:2:1;971:15;988:66;967:88;958:98;;;;1058:4;954:109;;538:531;-1:-1:-1;;538:531:1:o;1074:340::-;1251:2;1240:9;1233:21;1214:4;1271:45;1312:2;1301:9;1297:18;1289:6;1271:45;:::i;:::-;1263:53;;1364:42;1356:6;1352:55;1347:2;1336:9;1332:18;1325:83;1074:340;;;;;:::o;1419:291::-;1596:2;1585:9;1578:21;1559:4;1616:45;1657:2;1646:9;1642:18;1634:6;1616:45;:::i;:::-;1608:53;;1697:6;1692:2;1681:9;1677:18;1670:34;1419:291;;;;;:::o;1715:220::-;1864:2;1853:9;1846:21;1827:4;1884:45;1925:2;1914:9;1910:18;1902:6;1884:45;:::i","linkReferences":{}},"methodIdentifiers":{"run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"ScriptExample\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"run()\":{\"notice\":\"example function, runs through basic cheat-codes and console logs.\"}},\"notice\":\"ScriptExample is an example script. The Go forge script code tests that it can run this.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"scripts/ScriptExample.s.sol\":\"ScriptExample\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"scripts/ScriptExample.s.sol\":{\"keccak256\":\"0xce14e5bcf54722b372e76ff2d1f2c45ca19361f403a1de99bb5d76858ca4678a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19855e03fd3371f7b0f40c659eddb23a884976dac167e131eb86d0fd9106f079\",\"dweb:/ipfs/QmRJKr6rPvtxRNen9JFGyLa8wuxyuSxGdmk9ssoRWDMFg1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"run()":{"notice":"example function, runs through basic cheat-codes and console logs."}},"version":1}},"settings":{"remappings":[],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"scripts/ScriptExample.s.sol":"ScriptExample"},"evmVersion":"london","libraries":{}},"sources":{"scripts/ScriptExample.s.sol":{"keccak256":"0xce14e5bcf54722b372e76ff2d1f2c45ca19361f403a1de99bb5d76858ca4678a","urls":["bzz-raw://19855e03fd3371f7b0f40c659eddb23a884976dac167e131eb86d0fd9106f079","dweb:/ipfs/QmRJKr6rPvtxRNen9JFGyLa8wuxyuSxGdmk9ssoRWDMFg1"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","methods":{"run()":{"notice":"example function, runs through basic cheat-codes and console logs."}},"notice":"ScriptExample is an example script. The Go forge script code tests that it can run this."},"devdoc":{"version":1,"kind":"dev","title":"ScriptExample"},"ast":{"absolutePath":"scripts/ScriptExample.s.sol","id":191,"exportedSymbols":{"ScriptExample":[190],"Vm":[9],"console":[109]},"nodeType":"SourceUnit","src":"32:2231:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"32:23:0","nodes":[],"literals":["solidity","0.8",".15"]},{"id":9,"nodeType":"ContractDefinition","src":"120:93:0","nodes":[{"id":8,"nodeType":"FunctionDefinition","src":"139:72:0","nodes":[],"functionSelector":"2d0335ab","implemented":false,"kind":"function","modifiers":[],"name":"getNonce","nameLocation":"148:8:0","parameters":{"id":4,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3,"mutability":"mutable","name":"account","nameLocation":"165:7:0","nodeType":"VariableDeclaration","scope":8,"src":"157:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2,"name":"address","nodeType":"ElementaryTypeName","src":"157:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"156:17:0"},"returnParameters":{"id":7,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6,"mutability":"mutable","name":"nonce","nameLocation":"204:5:0","nodeType":"VariableDeclaration","scope":8,"src":"197:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5,"name":"uint64","nodeType":"ElementaryTypeName","src":"197:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"196:14:0"},"scope":9,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"Vm","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[9],"name":"Vm","nameLocation":"130:2:0","scope":191,"usedErrors":[]},{"id":109,"nodeType":"ContractDefinition","src":"268:1292:0","nodes":[{"id":15,"nodeType":"VariableDeclaration","src":"290:86:0","nodes":[],"constant":true,"mutability":"constant","name":"CONSOLE_ADDRESS","nameLocation":"307:15:0","scope":109,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"290:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"307830303030303030303030303030303030303036333646366537333646366336353265366336663637","id":13,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"333:42:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x000000000000000000636F6e736F6c652e6c6f67"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"325:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"325:7:0","typeDescriptions":{}}},"id":14,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"325:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"id":32,"nodeType":"FunctionDefinition","src":"383:221:0","nodes":[],"body":{"id":31,"nodeType":"Block","src":"542:62:0","nodes":[],"statements":[{"AST":{"nodeType":"YulBlock","src":"561:37:0","statements":[{"nodeType":"YulAssignment","src":"575:13:0","value":{"name":"fnIn","nodeType":"YulIdentifier","src":"584:4:0"},"variableNames":[{"name":"fnOut","nodeType":"YulIdentifier","src":"575:5:0"}]}]},"evmVersion":"london","externalReferences":[{"declaration":21,"isOffset":false,"isSlot":false,"src":"584:4:0","valueSize":1},{"declaration":28,"isOffset":false,"isSlot":false,"src":"575:5:0","valueSize":1}],"id":30,"nodeType":"InlineAssembly","src":"552:46:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_castLogPayloadViewToPure","nameLocation":"392:25:0","parameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"mutability":"mutable","name":"fnIn","nameLocation":"464:4:0","nodeType":"VariableDeclaration","scope":32,"src":"427:41:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) view"},"typeName":{"id":20,"nodeType":"FunctionTypeName","parameterTypes":{"id":18,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"436:12:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16,"name":"bytes","nodeType":"ElementaryTypeName","src":"436:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"435:14:0"},"returnParameterTypes":{"id":19,"nodeType":"ParameterList","parameters":[],"src":"464:0:0"},"src":"427:41:0","stateMutability":"view","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) view"},"visibility":"internal"},"visibility":"internal"}],"src":"417:57:0"},"returnParameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28,"mutability":"mutable","name":"fnOut","nameLocation":"535:5:0","nodeType":"VariableDeclaration","scope":32,"src":"498:42:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) pure"},"typeName":{"id":27,"nodeType":"FunctionTypeName","parameterTypes":{"id":25,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27,"src":"507:12:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23,"name":"bytes","nodeType":"ElementaryTypeName","src":"507:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"506:14:0"},"returnParameterTypes":{"id":26,"nodeType":"ParameterList","parameters":[],"src":"535:0:0"},"src":"498:42:0","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) pure"},"visibility":"internal"},"visibility":"internal"}],"src":"497:44:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":44,"nodeType":"FunctionDefinition","src":"610:133:0","nodes":[],"body":{"id":43,"nodeType":"Block","src":"671:72:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":40,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"728:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"arguments":[{"id":38,"name":"_sendLogPayloadView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"707:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) view"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) view"}],"id":37,"name":"_castLogPayloadViewToPure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"681:25:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_function_internal_view$_t_bytes_memory_ptr_$returns$__$_$returns$_t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$_$","typeString":"function (function (bytes memory) view) pure returns (function (bytes memory) pure)"}},"id":39,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"681:46:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"681:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42,"nodeType":"ExpressionStatement","src":"681:55:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendLogPayload","nameLocation":"619:15:0","parameters":{"id":35,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34,"mutability":"mutable","name":"payload","nameLocation":"648:7:0","nodeType":"VariableDeclaration","scope":44,"src":"635:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":33,"name":"bytes","nodeType":"ElementaryTypeName","src":"635:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"634:22:0"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[],"src":"671:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":60,"nodeType":"FunctionDefinition","src":"749:380:0","nodes":[],"body":{"id":59,"nodeType":"Block","src":"813:316:0","nodes":[],"statements":[{"assignments":[50],"declarations":[{"constant":false,"id":50,"mutability":"mutable","name":"payloadLength","nameLocation":"831:13:0","nodeType":"VariableDeclaration","scope":59,"src":"823:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53,"initialValue":{"expression":{"id":51,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"847:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":52,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"847:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"823:38:0"},{"assignments":[55],"declarations":[{"constant":false,"id":55,"mutability":"mutable","name":"consoleAddress","nameLocation":"879:14:0","nodeType":"VariableDeclaration","scope":59,"src":"871:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"871:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":57,"initialValue":{"id":56,"name":"CONSOLE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"896:15:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"871:40:0"},{"AST":{"nodeType":"YulBlock","src":"973:150:0","statements":[{"nodeType":"YulVariableDeclaration","src":"987:36:0","value":{"arguments":[{"name":"payload","nodeType":"YulIdentifier","src":"1011:7:0"},{"kind":"number","nodeType":"YulLiteral","src":"1020:2:0","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1007:3:0"},"nodeType":"YulFunctionCall","src":"1007:16:0"},"variables":[{"name":"payloadStart","nodeType":"YulTypedName","src":"991:12:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1036:77:0","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"1056:3:0"},"nodeType":"YulFunctionCall","src":"1056:5:0"},{"name":"consoleAddress","nodeType":"YulIdentifier","src":"1063:14:0"},{"name":"payloadStart","nodeType":"YulIdentifier","src":"1079:12:0"},{"name":"payloadLength","nodeType":"YulIdentifier","src":"1093:13:0"},{"kind":"number","nodeType":"YulLiteral","src":"1108:1:0","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1111:1:0","type":"","value":"0"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"1045:10:0"},"nodeType":"YulFunctionCall","src":"1045:68:0"},"variables":[{"name":"r","nodeType":"YulTypedName","src":"1040:1:0","type":""}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":55,"isOffset":false,"isSlot":false,"src":"1063:14:0","valueSize":1},{"declaration":46,"isOffset":false,"isSlot":false,"src":"1011:7:0","valueSize":1},{"declaration":50,"isOffset":false,"isSlot":false,"src":"1093:13:0","valueSize":1}],"id":58,"nodeType":"InlineAssembly","src":"964:159:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendLogPayloadView","nameLocation":"758:19:0","parameters":{"id":47,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46,"mutability":"mutable","name":"payload","nameLocation":"791:7:0","nodeType":"VariableDeclaration","scope":60,"src":"778:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45,"name":"bytes","nodeType":"ElementaryTypeName","src":"778:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"777:22:0"},"returnParameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"813:0:0"},"scope":109,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":74,"nodeType":"FunctionDefinition","src":"1135:121:0","nodes":[],"body":{"id":73,"nodeType":"Block","src":"1180:76:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6c6f6728737472696e6729","id":68,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1230:13:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50","typeString":"literal_string \"log(string)\""},"value":"log(string)"},{"id":69,"name":"p0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62,"src":"1245:2:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50","typeString":"literal_string \"log(string)\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":66,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1206:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"1206:23:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":70,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1206:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":65,"name":"_sendLogPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1190:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":71,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1190:59:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":72,"nodeType":"ExpressionStatement","src":"1190:59:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"1144:3:0","parameters":{"id":63,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62,"mutability":"mutable","name":"p0","nameLocation":"1162:2:0","nodeType":"VariableDeclaration","scope":74,"src":"1148:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":61,"name":"string","nodeType":"ElementaryTypeName","src":"1148:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1147:18:0"},"returnParameters":{"id":64,"nodeType":"ParameterList","parameters":[],"src":"1180:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":91,"nodeType":"FunctionDefinition","src":"1262:145:0","nodes":[],"body":{"id":90,"nodeType":"Block","src":"1319:88:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6c6f6728737472696e672c75696e7432353629","id":84,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1369:21:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_b60e72ccf6d57ab53eb84d7e94a9545806ed7f93c4d5673f11a64f03471e584e","typeString":"literal_string \"log(string,uint256)\""},"value":"log(string,uint256)"},{"id":85,"name":"p0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1392:2:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":86,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"1396:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b60e72ccf6d57ab53eb84d7e94a9545806ed7f93c4d5673f11a64f03471e584e","typeString":"literal_string \"log(string,uint256)\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1345:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"1345:23:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":87,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1345:54:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":81,"name":"_sendLogPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1329:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1329:71:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"1329:71:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"1271:3:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"p0","nameLocation":"1289:2:0","nodeType":"VariableDeclaration","scope":91,"src":"1275:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":75,"name":"string","nodeType":"ElementaryTypeName","src":"1275:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":78,"mutability":"mutable","name":"p1","nameLocation":"1301:2:0","nodeType":"VariableDeclaration","scope":91,"src":"1293:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77,"name":"uint256","nodeType":"ElementaryTypeName","src":"1293:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1274:30:0"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[],"src":"1319:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":108,"nodeType":"FunctionDefinition","src":"1413:145:0","nodes":[],"body":{"id":107,"nodeType":"Block","src":"1470:88:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6c6f6728737472696e672c6164647265737329","id":101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1520:21:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72","typeString":"literal_string \"log(string,address)\""},"value":"log(string,address)"},{"id":102,"name":"p0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"1543:2:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":103,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":95,"src":"1547:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72","typeString":"literal_string \"log(string,address)\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":99,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1496:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"1496:23:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1496:54:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":98,"name":"_sendLogPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1480:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1480:71:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":106,"nodeType":"ExpressionStatement","src":"1480:71:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"1422:3:0","parameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"p0","nameLocation":"1440:2:0","nodeType":"VariableDeclaration","scope":108,"src":"1426:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":92,"name":"string","nodeType":"ElementaryTypeName","src":"1426:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"p1","nameLocation":"1452:2:0","nodeType":"VariableDeclaration","scope":108,"src":"1444:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":94,"name":"address","nodeType":"ElementaryTypeName","src":"1444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1425:30:0"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"1470:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"console","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"linearizedBaseContracts":[109],"name":"console","nameLocation":"276:7:0","scope":191,"usedErrors":[]},{"id":190,"nodeType":"ContractDefinition","src":"1688:574:0","nodes":[{"id":124,"nodeType":"VariableDeclaration","src":"1718:94:0","nodes":[],"constant":true,"mutability":"constant","name":"VM_ADDRESS","nameLocation":"1744:10:0","scope":190,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"1718:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"6865766d20636865617420636f6465","id":119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1791:17:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d","typeString":"literal_string \"hevm cheat code\""},"value":"hevm cheat code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d","typeString":"literal_string \"hevm cheat code\""}],"id":118,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1781:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1781:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1773:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":116,"name":"uint256","nodeType":"ElementaryTypeName","src":"1773:7:0","typeDescriptions":{}}},"id":121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1773:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1765:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":114,"name":"uint160","nodeType":"ElementaryTypeName","src":"1765:7:0","typeDescriptions":{}}},"id":122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1765:46:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1757:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":112,"name":"address","nodeType":"ElementaryTypeName","src":"1757:7:0","typeDescriptions":{}}},"id":123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1757:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"id":130,"nodeType":"VariableDeclaration","src":"1818:40:0","nodes":[],"constant":true,"mutability":"constant","name":"vm","nameLocation":"1839:2:0","scope":190,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"},"typeName":{"id":126,"nodeType":"UserDefinedTypeName","pathNode":{"id":125,"name":"Vm","nodeType":"IdentifierPath","referencedDeclaration":9,"src":"1818:2:0"},"referencedDeclaration":9,"src":"1818:2:0","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"value":{"arguments":[{"id":128,"name":"VM_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124,"src":"1847:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":127,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"1844:2:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Vm_$9_$","typeString":"type(contract Vm)"}},"id":129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1844:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"visibility":"internal"},{"id":189,"nodeType":"FunctionDefinition","src":"1948:312:0","nodes":[],"body":{"id":188,"nodeType":"Block","src":"1975:285:0","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"636f6e74726163742061646472","id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1997:15:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa50728770d00fe8f6a0592f3565bbfaf063ee4077f1f5bbc003d091d33cd0c4","typeString":"literal_string \"contract addr\""},"value":"contract addr"},{"arguments":[{"id":140,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2022:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}],"id":139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2014:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:0","typeDescriptions":{}}},"id":141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2014:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_fa50728770d00fe8f6a0592f3565bbfaf063ee4077f1f5bbc003d091d33cd0c4","typeString":"literal_string \"contract addr\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"1985:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":108,"src":"1985:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1985:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":143,"nodeType":"ExpressionStatement","src":"1985:43:0"},{"expression":{"arguments":[{"hexValue":"636f6e7472616374206e6f6e6365","id":147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2050:16:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_3a23091615a5de8c0a35ffd8857a37e2c4e0b72f3ef8a34d6caf65efcd562e2f","typeString":"literal_string \"contract nonce\""},"value":"contract nonce"},{"arguments":[{"arguments":[{"id":152,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2088:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}],"id":151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2080:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":150,"name":"address","nodeType":"ElementaryTypeName","src":"2080:7:0","typeDescriptions":{}}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2080:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":148,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2068:2:0","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"id":149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNonce","nodeType":"MemberAccess","referencedDeclaration":8,"src":"2068:11:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint64_$","typeString":"function (address) view external returns (uint64)"}},"id":154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2068:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3a23091615a5de8c0a35ffd8857a37e2c4e0b72f3ef8a34d6caf65efcd562e2f","typeString":"literal_string \"contract nonce\""},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":144,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2038:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":91,"src":"2038:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256) pure"}},"id":155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2038:57:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":156,"nodeType":"ExpressionStatement","src":"2038:57:0"},{"expression":{"arguments":[{"hexValue":"73656e6465722061646472","id":160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2117:13:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_8125ca2decf812b25b65606ff16dad37cb198ff0433485a7926e50feafacfc35","typeString":"literal_string \"sender addr\""},"value":"sender addr"},{"arguments":[{"expression":{"id":163,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2140:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2140:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2132:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"2132:7:0","typeDescriptions":{}}},"id":165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2132:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8125ca2decf812b25b65606ff16dad37cb198ff0433485a7926e50feafacfc35","typeString":"literal_string \"sender addr\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":157,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2105:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":108,"src":"2105:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2105:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":167,"nodeType":"ExpressionStatement","src":"2105:47:0"},{"expression":{"arguments":[{"hexValue":"73656e646572206e6f6e6365","id":171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2174:14:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_db7deb43f2f9e0404016de53b7e64c4976b54149581f7534daae2551e8cf4e40","typeString":"literal_string \"sender nonce\""},"value":"sender nonce"},{"arguments":[{"arguments":[{"expression":{"id":176,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2210:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2210:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2202:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":174,"name":"address","nodeType":"ElementaryTypeName","src":"2202:7:0","typeDescriptions":{}}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2202:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":172,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2190:2:0","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"id":173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNonce","nodeType":"MemberAccess","referencedDeclaration":8,"src":"2190:11:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint64_$","typeString":"function (address) view external returns (uint64)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2190:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_db7deb43f2f9e0404016de53b7e64c4976b54149581f7534daae2551e8cf4e40","typeString":"literal_string \"sender nonce\""},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":168,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2162:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":91,"src":"2162:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256) pure"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":181,"nodeType":"ExpressionStatement","src":"2162:61:0"},{"expression":{"arguments":[{"hexValue":"646f6e6521","id":185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2245:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_080382d5c9e9e7c5e3d1d33f5e7422740375955180fadff167d8130e0c35f3fc","typeString":"literal_string \"done!\""},"value":"done!"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_080382d5c9e9e7c5e3d1d33f5e7422740375955180fadff167d8130e0c35f3fc","typeString":"literal_string \"done!\""}],"expression":{"id":182,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2233:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":74,"src":"2233:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2233:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":187,"nodeType":"ExpressionStatement","src":"2233:20:0"}]},"documentation":{"id":131,"nodeType":"StructuredDocumentation","src":"1865:78:0","text":"@notice example function, runs through basic cheat-codes and console logs."},"functionSelector":"c0406226","implemented":true,"kind":"function","modifiers":[],"name":"run","nameLocation":"1957:3:0","parameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"1960:2:0"},"returnParameters":{"id":133,"nodeType":"ParameterList","parameters":[],"src":"1975:0:0"},"scope":190,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[],"canonicalName":"ScriptExample","contractDependencies":[],"contractKind":"contract","documentation":{"id":110,"nodeType":"StructuredDocumentation","src":"1562:126:0","text":"@title ScriptExample\n @notice ScriptExample is an example script. The Go forge script code tests that it can run this."},"fullyImplemented":true,"linearizedBaseContracts":[190],"name":"ScriptExample","nameLocation":"1697:13:0","scope":191,"usedErrors":[]}],"license":"MIT"},"id":0}
\ No newline at end of file
{"abi":[{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getNonce(address)":"2d0335ab"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"scripts/ScriptExample.s.sol\":\"Vm\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"scripts/ScriptExample.s.sol\":{\"keccak256\":\"0xce14e5bcf54722b372e76ff2d1f2c45ca19361f403a1de99bb5d76858ca4678a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19855e03fd3371f7b0f40c659eddb23a884976dac167e131eb86d0fd9106f079\",\"dweb:/ipfs/QmRJKr6rPvtxRNen9JFGyLa8wuxyuSxGdmk9ssoRWDMFg1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":[],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"scripts/ScriptExample.s.sol":"Vm"},"evmVersion":"london","libraries":{}},"sources":{"scripts/ScriptExample.s.sol":{"keccak256":"0xce14e5bcf54722b372e76ff2d1f2c45ca19361f403a1de99bb5d76858ca4678a","urls":["bzz-raw://19855e03fd3371f7b0f40c659eddb23a884976dac167e131eb86d0fd9106f079","dweb:/ipfs/QmRJKr6rPvtxRNen9JFGyLa8wuxyuSxGdmk9ssoRWDMFg1"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev"},"ast":{"absolutePath":"scripts/ScriptExample.s.sol","id":191,"exportedSymbols":{"ScriptExample":[190],"Vm":[9],"console":[109]},"nodeType":"SourceUnit","src":"32:2231:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"32:23:0","nodes":[],"literals":["solidity","0.8",".15"]},{"id":9,"nodeType":"ContractDefinition","src":"120:93:0","nodes":[{"id":8,"nodeType":"FunctionDefinition","src":"139:72:0","nodes":[],"functionSelector":"2d0335ab","implemented":false,"kind":"function","modifiers":[],"name":"getNonce","nameLocation":"148:8:0","parameters":{"id":4,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3,"mutability":"mutable","name":"account","nameLocation":"165:7:0","nodeType":"VariableDeclaration","scope":8,"src":"157:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2,"name":"address","nodeType":"ElementaryTypeName","src":"157:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"156:17:0"},"returnParameters":{"id":7,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6,"mutability":"mutable","name":"nonce","nameLocation":"204:5:0","nodeType":"VariableDeclaration","scope":8,"src":"197:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5,"name":"uint64","nodeType":"ElementaryTypeName","src":"197:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"196:14:0"},"scope":9,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"Vm","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[9],"name":"Vm","nameLocation":"130:2:0","scope":191,"usedErrors":[]},{"id":109,"nodeType":"ContractDefinition","src":"268:1292:0","nodes":[{"id":15,"nodeType":"VariableDeclaration","src":"290:86:0","nodes":[],"constant":true,"mutability":"constant","name":"CONSOLE_ADDRESS","nameLocation":"307:15:0","scope":109,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"290:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"307830303030303030303030303030303030303036333646366537333646366336353265366336663637","id":13,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"333:42:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x000000000000000000636F6e736F6c652e6c6f67"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"325:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"325:7:0","typeDescriptions":{}}},"id":14,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"325:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"id":32,"nodeType":"FunctionDefinition","src":"383:221:0","nodes":[],"body":{"id":31,"nodeType":"Block","src":"542:62:0","nodes":[],"statements":[{"AST":{"nodeType":"YulBlock","src":"561:37:0","statements":[{"nodeType":"YulAssignment","src":"575:13:0","value":{"name":"fnIn","nodeType":"YulIdentifier","src":"584:4:0"},"variableNames":[{"name":"fnOut","nodeType":"YulIdentifier","src":"575:5:0"}]}]},"evmVersion":"london","externalReferences":[{"declaration":21,"isOffset":false,"isSlot":false,"src":"584:4:0","valueSize":1},{"declaration":28,"isOffset":false,"isSlot":false,"src":"575:5:0","valueSize":1}],"id":30,"nodeType":"InlineAssembly","src":"552:46:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_castLogPayloadViewToPure","nameLocation":"392:25:0","parameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"mutability":"mutable","name":"fnIn","nameLocation":"464:4:0","nodeType":"VariableDeclaration","scope":32,"src":"427:41:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) view"},"typeName":{"id":20,"nodeType":"FunctionTypeName","parameterTypes":{"id":18,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"436:12:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16,"name":"bytes","nodeType":"ElementaryTypeName","src":"436:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"435:14:0"},"returnParameterTypes":{"id":19,"nodeType":"ParameterList","parameters":[],"src":"464:0:0"},"src":"427:41:0","stateMutability":"view","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) view"},"visibility":"internal"},"visibility":"internal"}],"src":"417:57:0"},"returnParameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28,"mutability":"mutable","name":"fnOut","nameLocation":"535:5:0","nodeType":"VariableDeclaration","scope":32,"src":"498:42:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) pure"},"typeName":{"id":27,"nodeType":"FunctionTypeName","parameterTypes":{"id":25,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27,"src":"507:12:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23,"name":"bytes","nodeType":"ElementaryTypeName","src":"507:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"506:14:0"},"returnParameterTypes":{"id":26,"nodeType":"ParameterList","parameters":[],"src":"535:0:0"},"src":"498:42:0","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) pure"},"visibility":"internal"},"visibility":"internal"}],"src":"497:44:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":44,"nodeType":"FunctionDefinition","src":"610:133:0","nodes":[],"body":{"id":43,"nodeType":"Block","src":"671:72:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":40,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"728:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"arguments":[{"id":38,"name":"_sendLogPayloadView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"707:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) view"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) view"}],"id":37,"name":"_castLogPayloadViewToPure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"681:25:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_function_internal_view$_t_bytes_memory_ptr_$returns$__$_$returns$_t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$_$","typeString":"function (function (bytes memory) view) pure returns (function (bytes memory) pure)"}},"id":39,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"681:46:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"681:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42,"nodeType":"ExpressionStatement","src":"681:55:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendLogPayload","nameLocation":"619:15:0","parameters":{"id":35,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34,"mutability":"mutable","name":"payload","nameLocation":"648:7:0","nodeType":"VariableDeclaration","scope":44,"src":"635:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":33,"name":"bytes","nodeType":"ElementaryTypeName","src":"635:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"634:22:0"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[],"src":"671:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":60,"nodeType":"FunctionDefinition","src":"749:380:0","nodes":[],"body":{"id":59,"nodeType":"Block","src":"813:316:0","nodes":[],"statements":[{"assignments":[50],"declarations":[{"constant":false,"id":50,"mutability":"mutable","name":"payloadLength","nameLocation":"831:13:0","nodeType":"VariableDeclaration","scope":59,"src":"823:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53,"initialValue":{"expression":{"id":51,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"847:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":52,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"847:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"823:38:0"},{"assignments":[55],"declarations":[{"constant":false,"id":55,"mutability":"mutable","name":"consoleAddress","nameLocation":"879:14:0","nodeType":"VariableDeclaration","scope":59,"src":"871:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"871:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":57,"initialValue":{"id":56,"name":"CONSOLE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"896:15:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"871:40:0"},{"AST":{"nodeType":"YulBlock","src":"973:150:0","statements":[{"nodeType":"YulVariableDeclaration","src":"987:36:0","value":{"arguments":[{"name":"payload","nodeType":"YulIdentifier","src":"1011:7:0"},{"kind":"number","nodeType":"YulLiteral","src":"1020:2:0","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1007:3:0"},"nodeType":"YulFunctionCall","src":"1007:16:0"},"variables":[{"name":"payloadStart","nodeType":"YulTypedName","src":"991:12:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1036:77:0","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"1056:3:0"},"nodeType":"YulFunctionCall","src":"1056:5:0"},{"name":"consoleAddress","nodeType":"YulIdentifier","src":"1063:14:0"},{"name":"payloadStart","nodeType":"YulIdentifier","src":"1079:12:0"},{"name":"payloadLength","nodeType":"YulIdentifier","src":"1093:13:0"},{"kind":"number","nodeType":"YulLiteral","src":"1108:1:0","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1111:1:0","type":"","value":"0"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"1045:10:0"},"nodeType":"YulFunctionCall","src":"1045:68:0"},"variables":[{"name":"r","nodeType":"YulTypedName","src":"1040:1:0","type":""}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":55,"isOffset":false,"isSlot":false,"src":"1063:14:0","valueSize":1},{"declaration":46,"isOffset":false,"isSlot":false,"src":"1011:7:0","valueSize":1},{"declaration":50,"isOffset":false,"isSlot":false,"src":"1093:13:0","valueSize":1}],"id":58,"nodeType":"InlineAssembly","src":"964:159:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendLogPayloadView","nameLocation":"758:19:0","parameters":{"id":47,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46,"mutability":"mutable","name":"payload","nameLocation":"791:7:0","nodeType":"VariableDeclaration","scope":60,"src":"778:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45,"name":"bytes","nodeType":"ElementaryTypeName","src":"778:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"777:22:0"},"returnParameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"813:0:0"},"scope":109,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":74,"nodeType":"FunctionDefinition","src":"1135:121:0","nodes":[],"body":{"id":73,"nodeType":"Block","src":"1180:76:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6c6f6728737472696e6729","id":68,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1230:13:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50","typeString":"literal_string \"log(string)\""},"value":"log(string)"},{"id":69,"name":"p0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62,"src":"1245:2:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50","typeString":"literal_string \"log(string)\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":66,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1206:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"1206:23:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":70,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1206:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":65,"name":"_sendLogPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1190:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":71,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1190:59:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":72,"nodeType":"ExpressionStatement","src":"1190:59:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"1144:3:0","parameters":{"id":63,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62,"mutability":"mutable","name":"p0","nameLocation":"1162:2:0","nodeType":"VariableDeclaration","scope":74,"src":"1148:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":61,"name":"string","nodeType":"ElementaryTypeName","src":"1148:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1147:18:0"},"returnParameters":{"id":64,"nodeType":"ParameterList","parameters":[],"src":"1180:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":91,"nodeType":"FunctionDefinition","src":"1262:145:0","nodes":[],"body":{"id":90,"nodeType":"Block","src":"1319:88:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6c6f6728737472696e672c75696e7432353629","id":84,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1369:21:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_b60e72ccf6d57ab53eb84d7e94a9545806ed7f93c4d5673f11a64f03471e584e","typeString":"literal_string \"log(string,uint256)\""},"value":"log(string,uint256)"},{"id":85,"name":"p0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1392:2:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":86,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"1396:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b60e72ccf6d57ab53eb84d7e94a9545806ed7f93c4d5673f11a64f03471e584e","typeString":"literal_string \"log(string,uint256)\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1345:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"1345:23:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":87,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1345:54:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":81,"name":"_sendLogPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1329:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1329:71:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"1329:71:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"1271:3:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"p0","nameLocation":"1289:2:0","nodeType":"VariableDeclaration","scope":91,"src":"1275:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":75,"name":"string","nodeType":"ElementaryTypeName","src":"1275:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":78,"mutability":"mutable","name":"p1","nameLocation":"1301:2:0","nodeType":"VariableDeclaration","scope":91,"src":"1293:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77,"name":"uint256","nodeType":"ElementaryTypeName","src":"1293:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1274:30:0"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[],"src":"1319:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":108,"nodeType":"FunctionDefinition","src":"1413:145:0","nodes":[],"body":{"id":107,"nodeType":"Block","src":"1470:88:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6c6f6728737472696e672c6164647265737329","id":101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1520:21:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72","typeString":"literal_string \"log(string,address)\""},"value":"log(string,address)"},{"id":102,"name":"p0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"1543:2:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":103,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":95,"src":"1547:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72","typeString":"literal_string \"log(string,address)\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":99,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1496:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"1496:23:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1496:54:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":98,"name":"_sendLogPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1480:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1480:71:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":106,"nodeType":"ExpressionStatement","src":"1480:71:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"1422:3:0","parameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"p0","nameLocation":"1440:2:0","nodeType":"VariableDeclaration","scope":108,"src":"1426:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":92,"name":"string","nodeType":"ElementaryTypeName","src":"1426:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"p1","nameLocation":"1452:2:0","nodeType":"VariableDeclaration","scope":108,"src":"1444:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":94,"name":"address","nodeType":"ElementaryTypeName","src":"1444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1425:30:0"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"1470:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"console","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"linearizedBaseContracts":[109],"name":"console","nameLocation":"276:7:0","scope":191,"usedErrors":[]},{"id":190,"nodeType":"ContractDefinition","src":"1688:574:0","nodes":[{"id":124,"nodeType":"VariableDeclaration","src":"1718:94:0","nodes":[],"constant":true,"mutability":"constant","name":"VM_ADDRESS","nameLocation":"1744:10:0","scope":190,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"1718:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"6865766d20636865617420636f6465","id":119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1791:17:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d","typeString":"literal_string \"hevm cheat code\""},"value":"hevm cheat code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d","typeString":"literal_string \"hevm cheat code\""}],"id":118,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1781:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1781:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1773:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":116,"name":"uint256","nodeType":"ElementaryTypeName","src":"1773:7:0","typeDescriptions":{}}},"id":121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1773:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1765:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":114,"name":"uint160","nodeType":"ElementaryTypeName","src":"1765:7:0","typeDescriptions":{}}},"id":122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1765:46:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1757:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":112,"name":"address","nodeType":"ElementaryTypeName","src":"1757:7:0","typeDescriptions":{}}},"id":123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1757:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"id":130,"nodeType":"VariableDeclaration","src":"1818:40:0","nodes":[],"constant":true,"mutability":"constant","name":"vm","nameLocation":"1839:2:0","scope":190,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"},"typeName":{"id":126,"nodeType":"UserDefinedTypeName","pathNode":{"id":125,"name":"Vm","nodeType":"IdentifierPath","referencedDeclaration":9,"src":"1818:2:0"},"referencedDeclaration":9,"src":"1818:2:0","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"value":{"arguments":[{"id":128,"name":"VM_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124,"src":"1847:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":127,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"1844:2:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Vm_$9_$","typeString":"type(contract Vm)"}},"id":129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1844:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"visibility":"internal"},{"id":189,"nodeType":"FunctionDefinition","src":"1948:312:0","nodes":[],"body":{"id":188,"nodeType":"Block","src":"1975:285:0","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"636f6e74726163742061646472","id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1997:15:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa50728770d00fe8f6a0592f3565bbfaf063ee4077f1f5bbc003d091d33cd0c4","typeString":"literal_string \"contract addr\""},"value":"contract addr"},{"arguments":[{"id":140,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2022:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}],"id":139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2014:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:0","typeDescriptions":{}}},"id":141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2014:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_fa50728770d00fe8f6a0592f3565bbfaf063ee4077f1f5bbc003d091d33cd0c4","typeString":"literal_string \"contract addr\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"1985:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":108,"src":"1985:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1985:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":143,"nodeType":"ExpressionStatement","src":"1985:43:0"},{"expression":{"arguments":[{"hexValue":"636f6e7472616374206e6f6e6365","id":147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2050:16:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_3a23091615a5de8c0a35ffd8857a37e2c4e0b72f3ef8a34d6caf65efcd562e2f","typeString":"literal_string \"contract nonce\""},"value":"contract nonce"},{"arguments":[{"arguments":[{"id":152,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2088:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}],"id":151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2080:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":150,"name":"address","nodeType":"ElementaryTypeName","src":"2080:7:0","typeDescriptions":{}}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2080:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":148,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2068:2:0","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"id":149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNonce","nodeType":"MemberAccess","referencedDeclaration":8,"src":"2068:11:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint64_$","typeString":"function (address) view external returns (uint64)"}},"id":154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2068:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3a23091615a5de8c0a35ffd8857a37e2c4e0b72f3ef8a34d6caf65efcd562e2f","typeString":"literal_string \"contract nonce\""},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":144,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2038:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":91,"src":"2038:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256) pure"}},"id":155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2038:57:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":156,"nodeType":"ExpressionStatement","src":"2038:57:0"},{"expression":{"arguments":[{"hexValue":"73656e6465722061646472","id":160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2117:13:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_8125ca2decf812b25b65606ff16dad37cb198ff0433485a7926e50feafacfc35","typeString":"literal_string \"sender addr\""},"value":"sender addr"},{"arguments":[{"expression":{"id":163,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2140:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2140:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2132:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"2132:7:0","typeDescriptions":{}}},"id":165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2132:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8125ca2decf812b25b65606ff16dad37cb198ff0433485a7926e50feafacfc35","typeString":"literal_string \"sender addr\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":157,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2105:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":108,"src":"2105:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2105:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":167,"nodeType":"ExpressionStatement","src":"2105:47:0"},{"expression":{"arguments":[{"hexValue":"73656e646572206e6f6e6365","id":171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2174:14:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_db7deb43f2f9e0404016de53b7e64c4976b54149581f7534daae2551e8cf4e40","typeString":"literal_string \"sender nonce\""},"value":"sender nonce"},{"arguments":[{"arguments":[{"expression":{"id":176,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2210:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2210:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2202:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":174,"name":"address","nodeType":"ElementaryTypeName","src":"2202:7:0","typeDescriptions":{}}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2202:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":172,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2190:2:0","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"id":173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNonce","nodeType":"MemberAccess","referencedDeclaration":8,"src":"2190:11:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint64_$","typeString":"function (address) view external returns (uint64)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2190:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_db7deb43f2f9e0404016de53b7e64c4976b54149581f7534daae2551e8cf4e40","typeString":"literal_string \"sender nonce\""},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":168,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2162:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":91,"src":"2162:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256) pure"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":181,"nodeType":"ExpressionStatement","src":"2162:61:0"},{"expression":{"arguments":[{"hexValue":"646f6e6521","id":185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2245:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_080382d5c9e9e7c5e3d1d33f5e7422740375955180fadff167d8130e0c35f3fc","typeString":"literal_string \"done!\""},"value":"done!"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_080382d5c9e9e7c5e3d1d33f5e7422740375955180fadff167d8130e0c35f3fc","typeString":"literal_string \"done!\""}],"expression":{"id":182,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2233:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":74,"src":"2233:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2233:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":187,"nodeType":"ExpressionStatement","src":"2233:20:0"}]},"documentation":{"id":131,"nodeType":"StructuredDocumentation","src":"1865:78:0","text":"@notice example function, runs through basic cheat-codes and console logs."},"functionSelector":"c0406226","implemented":true,"kind":"function","modifiers":[],"name":"run","nameLocation":"1957:3:0","parameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"1960:2:0"},"returnParameters":{"id":133,"nodeType":"ParameterList","parameters":[],"src":"1975:0:0"},"scope":190,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[],"canonicalName":"ScriptExample","contractDependencies":[],"contractKind":"contract","documentation":{"id":110,"nodeType":"StructuredDocumentation","src":"1562:126:0","text":"@title ScriptExample\n @notice ScriptExample is an example script. The Go forge script code tests that it can run this."},"fullyImplemented":true,"linearizedBaseContracts":[190],"name":"ScriptExample","nameLocation":"1697:13:0","scope":191,"usedErrors":[]}],"license":"MIT"},"id":0}
\ No newline at end of file
{"abi":[],"bytecode":{"object":"0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"268:1292:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;268:1292:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"268:1292:0:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"scripts/ScriptExample.s.sol\":\"console\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"scripts/ScriptExample.s.sol\":{\"keccak256\":\"0xce14e5bcf54722b372e76ff2d1f2c45ca19361f403a1de99bb5d76858ca4678a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19855e03fd3371f7b0f40c659eddb23a884976dac167e131eb86d0fd9106f079\",\"dweb:/ipfs/QmRJKr6rPvtxRNen9JFGyLa8wuxyuSxGdmk9ssoRWDMFg1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":[],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"scripts/ScriptExample.s.sol":"console"},"evmVersion":"london","libraries":{}},"sources":{"scripts/ScriptExample.s.sol":{"keccak256":"0xce14e5bcf54722b372e76ff2d1f2c45ca19361f403a1de99bb5d76858ca4678a","urls":["bzz-raw://19855e03fd3371f7b0f40c659eddb23a884976dac167e131eb86d0fd9106f079","dweb:/ipfs/QmRJKr6rPvtxRNen9JFGyLa8wuxyuSxGdmk9ssoRWDMFg1"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev"},"ast":{"absolutePath":"scripts/ScriptExample.s.sol","id":191,"exportedSymbols":{"ScriptExample":[190],"Vm":[9],"console":[109]},"nodeType":"SourceUnit","src":"32:2231:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"32:23:0","nodes":[],"literals":["solidity","0.8",".15"]},{"id":9,"nodeType":"ContractDefinition","src":"120:93:0","nodes":[{"id":8,"nodeType":"FunctionDefinition","src":"139:72:0","nodes":[],"functionSelector":"2d0335ab","implemented":false,"kind":"function","modifiers":[],"name":"getNonce","nameLocation":"148:8:0","parameters":{"id":4,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3,"mutability":"mutable","name":"account","nameLocation":"165:7:0","nodeType":"VariableDeclaration","scope":8,"src":"157:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2,"name":"address","nodeType":"ElementaryTypeName","src":"157:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"156:17:0"},"returnParameters":{"id":7,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6,"mutability":"mutable","name":"nonce","nameLocation":"204:5:0","nodeType":"VariableDeclaration","scope":8,"src":"197:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5,"name":"uint64","nodeType":"ElementaryTypeName","src":"197:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"196:14:0"},"scope":9,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"Vm","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[9],"name":"Vm","nameLocation":"130:2:0","scope":191,"usedErrors":[]},{"id":109,"nodeType":"ContractDefinition","src":"268:1292:0","nodes":[{"id":15,"nodeType":"VariableDeclaration","src":"290:86:0","nodes":[],"constant":true,"mutability":"constant","name":"CONSOLE_ADDRESS","nameLocation":"307:15:0","scope":109,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"290:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"307830303030303030303030303030303030303036333646366537333646366336353265366336663637","id":13,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"333:42:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x000000000000000000636F6e736F6c652e6c6f67"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"325:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"325:7:0","typeDescriptions":{}}},"id":14,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"325:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"id":32,"nodeType":"FunctionDefinition","src":"383:221:0","nodes":[],"body":{"id":31,"nodeType":"Block","src":"542:62:0","nodes":[],"statements":[{"AST":{"nodeType":"YulBlock","src":"561:37:0","statements":[{"nodeType":"YulAssignment","src":"575:13:0","value":{"name":"fnIn","nodeType":"YulIdentifier","src":"584:4:0"},"variableNames":[{"name":"fnOut","nodeType":"YulIdentifier","src":"575:5:0"}]}]},"evmVersion":"london","externalReferences":[{"declaration":21,"isOffset":false,"isSlot":false,"src":"584:4:0","valueSize":1},{"declaration":28,"isOffset":false,"isSlot":false,"src":"575:5:0","valueSize":1}],"id":30,"nodeType":"InlineAssembly","src":"552:46:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_castLogPayloadViewToPure","nameLocation":"392:25:0","parameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"mutability":"mutable","name":"fnIn","nameLocation":"464:4:0","nodeType":"VariableDeclaration","scope":32,"src":"427:41:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) view"},"typeName":{"id":20,"nodeType":"FunctionTypeName","parameterTypes":{"id":18,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"436:12:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16,"name":"bytes","nodeType":"ElementaryTypeName","src":"436:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"435:14:0"},"returnParameterTypes":{"id":19,"nodeType":"ParameterList","parameters":[],"src":"464:0:0"},"src":"427:41:0","stateMutability":"view","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) view"},"visibility":"internal"},"visibility":"internal"}],"src":"417:57:0"},"returnParameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28,"mutability":"mutable","name":"fnOut","nameLocation":"535:5:0","nodeType":"VariableDeclaration","scope":32,"src":"498:42:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) pure"},"typeName":{"id":27,"nodeType":"FunctionTypeName","parameterTypes":{"id":25,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27,"src":"507:12:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23,"name":"bytes","nodeType":"ElementaryTypeName","src":"507:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"506:14:0"},"returnParameterTypes":{"id":26,"nodeType":"ParameterList","parameters":[],"src":"535:0:0"},"src":"498:42:0","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes) pure"},"visibility":"internal"},"visibility":"internal"}],"src":"497:44:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":44,"nodeType":"FunctionDefinition","src":"610:133:0","nodes":[],"body":{"id":43,"nodeType":"Block","src":"671:72:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":40,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"728:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"arguments":[{"id":38,"name":"_sendLogPayloadView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"707:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) view"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) view"}],"id":37,"name":"_castLogPayloadViewToPure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"681:25:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_function_internal_view$_t_bytes_memory_ptr_$returns$__$_$returns$_t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$_$","typeString":"function (function (bytes memory) view) pure returns (function (bytes memory) pure)"}},"id":39,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"681:46:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"681:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42,"nodeType":"ExpressionStatement","src":"681:55:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendLogPayload","nameLocation":"619:15:0","parameters":{"id":35,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34,"mutability":"mutable","name":"payload","nameLocation":"648:7:0","nodeType":"VariableDeclaration","scope":44,"src":"635:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":33,"name":"bytes","nodeType":"ElementaryTypeName","src":"635:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"634:22:0"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[],"src":"671:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":60,"nodeType":"FunctionDefinition","src":"749:380:0","nodes":[],"body":{"id":59,"nodeType":"Block","src":"813:316:0","nodes":[],"statements":[{"assignments":[50],"declarations":[{"constant":false,"id":50,"mutability":"mutable","name":"payloadLength","nameLocation":"831:13:0","nodeType":"VariableDeclaration","scope":59,"src":"823:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53,"initialValue":{"expression":{"id":51,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"847:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":52,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"847:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"823:38:0"},{"assignments":[55],"declarations":[{"constant":false,"id":55,"mutability":"mutable","name":"consoleAddress","nameLocation":"879:14:0","nodeType":"VariableDeclaration","scope":59,"src":"871:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"871:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":57,"initialValue":{"id":56,"name":"CONSOLE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"896:15:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"871:40:0"},{"AST":{"nodeType":"YulBlock","src":"973:150:0","statements":[{"nodeType":"YulVariableDeclaration","src":"987:36:0","value":{"arguments":[{"name":"payload","nodeType":"YulIdentifier","src":"1011:7:0"},{"kind":"number","nodeType":"YulLiteral","src":"1020:2:0","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1007:3:0"},"nodeType":"YulFunctionCall","src":"1007:16:0"},"variables":[{"name":"payloadStart","nodeType":"YulTypedName","src":"991:12:0","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1036:77:0","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"1056:3:0"},"nodeType":"YulFunctionCall","src":"1056:5:0"},{"name":"consoleAddress","nodeType":"YulIdentifier","src":"1063:14:0"},{"name":"payloadStart","nodeType":"YulIdentifier","src":"1079:12:0"},{"name":"payloadLength","nodeType":"YulIdentifier","src":"1093:13:0"},{"kind":"number","nodeType":"YulLiteral","src":"1108:1:0","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1111:1:0","type":"","value":"0"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"1045:10:0"},"nodeType":"YulFunctionCall","src":"1045:68:0"},"variables":[{"name":"r","nodeType":"YulTypedName","src":"1040:1:0","type":""}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":55,"isOffset":false,"isSlot":false,"src":"1063:14:0","valueSize":1},{"declaration":46,"isOffset":false,"isSlot":false,"src":"1011:7:0","valueSize":1},{"declaration":50,"isOffset":false,"isSlot":false,"src":"1093:13:0","valueSize":1}],"id":58,"nodeType":"InlineAssembly","src":"964:159:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendLogPayloadView","nameLocation":"758:19:0","parameters":{"id":47,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46,"mutability":"mutable","name":"payload","nameLocation":"791:7:0","nodeType":"VariableDeclaration","scope":60,"src":"778:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45,"name":"bytes","nodeType":"ElementaryTypeName","src":"778:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"777:22:0"},"returnParameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"813:0:0"},"scope":109,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":74,"nodeType":"FunctionDefinition","src":"1135:121:0","nodes":[],"body":{"id":73,"nodeType":"Block","src":"1180:76:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6c6f6728737472696e6729","id":68,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1230:13:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50","typeString":"literal_string \"log(string)\""},"value":"log(string)"},{"id":69,"name":"p0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62,"src":"1245:2:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50","typeString":"literal_string \"log(string)\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":66,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1206:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"1206:23:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":70,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1206:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":65,"name":"_sendLogPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1190:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":71,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1190:59:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":72,"nodeType":"ExpressionStatement","src":"1190:59:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"1144:3:0","parameters":{"id":63,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62,"mutability":"mutable","name":"p0","nameLocation":"1162:2:0","nodeType":"VariableDeclaration","scope":74,"src":"1148:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":61,"name":"string","nodeType":"ElementaryTypeName","src":"1148:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1147:18:0"},"returnParameters":{"id":64,"nodeType":"ParameterList","parameters":[],"src":"1180:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":91,"nodeType":"FunctionDefinition","src":"1262:145:0","nodes":[],"body":{"id":90,"nodeType":"Block","src":"1319:88:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6c6f6728737472696e672c75696e7432353629","id":84,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1369:21:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_b60e72ccf6d57ab53eb84d7e94a9545806ed7f93c4d5673f11a64f03471e584e","typeString":"literal_string \"log(string,uint256)\""},"value":"log(string,uint256)"},{"id":85,"name":"p0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1392:2:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":86,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"1396:2:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b60e72ccf6d57ab53eb84d7e94a9545806ed7f93c4d5673f11a64f03471e584e","typeString":"literal_string \"log(string,uint256)\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1345:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"1345:23:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":87,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1345:54:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":81,"name":"_sendLogPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1329:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1329:71:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"1329:71:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"1271:3:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"p0","nameLocation":"1289:2:0","nodeType":"VariableDeclaration","scope":91,"src":"1275:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":75,"name":"string","nodeType":"ElementaryTypeName","src":"1275:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":78,"mutability":"mutable","name":"p1","nameLocation":"1301:2:0","nodeType":"VariableDeclaration","scope":91,"src":"1293:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77,"name":"uint256","nodeType":"ElementaryTypeName","src":"1293:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1274:30:0"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[],"src":"1319:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":108,"nodeType":"FunctionDefinition","src":"1413:145:0","nodes":[],"body":{"id":107,"nodeType":"Block","src":"1470:88:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6c6f6728737472696e672c6164647265737329","id":101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1520:21:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72","typeString":"literal_string \"log(string,address)\""},"value":"log(string,address)"},{"id":102,"name":"p0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"1543:2:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":103,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":95,"src":"1547:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72","typeString":"literal_string \"log(string,address)\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":99,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1496:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"1496:23:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1496:54:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":98,"name":"_sendLogPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1480:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1480:71:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":106,"nodeType":"ExpressionStatement","src":"1480:71:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"1422:3:0","parameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"p0","nameLocation":"1440:2:0","nodeType":"VariableDeclaration","scope":108,"src":"1426:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":92,"name":"string","nodeType":"ElementaryTypeName","src":"1426:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"p1","nameLocation":"1452:2:0","nodeType":"VariableDeclaration","scope":108,"src":"1444:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":94,"name":"address","nodeType":"ElementaryTypeName","src":"1444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1425:30:0"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"1470:0:0"},"scope":109,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"console","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"linearizedBaseContracts":[109],"name":"console","nameLocation":"276:7:0","scope":191,"usedErrors":[]},{"id":190,"nodeType":"ContractDefinition","src":"1688:574:0","nodes":[{"id":124,"nodeType":"VariableDeclaration","src":"1718:94:0","nodes":[],"constant":true,"mutability":"constant","name":"VM_ADDRESS","nameLocation":"1744:10:0","scope":190,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"1718:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"6865766d20636865617420636f6465","id":119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1791:17:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d","typeString":"literal_string \"hevm cheat code\""},"value":"hevm cheat code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d","typeString":"literal_string \"hevm cheat code\""}],"id":118,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1781:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1781:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1773:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":116,"name":"uint256","nodeType":"ElementaryTypeName","src":"1773:7:0","typeDescriptions":{}}},"id":121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1773:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1765:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":114,"name":"uint160","nodeType":"ElementaryTypeName","src":"1765:7:0","typeDescriptions":{}}},"id":122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1765:46:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1757:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":112,"name":"address","nodeType":"ElementaryTypeName","src":"1757:7:0","typeDescriptions":{}}},"id":123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1757:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"id":130,"nodeType":"VariableDeclaration","src":"1818:40:0","nodes":[],"constant":true,"mutability":"constant","name":"vm","nameLocation":"1839:2:0","scope":190,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"},"typeName":{"id":126,"nodeType":"UserDefinedTypeName","pathNode":{"id":125,"name":"Vm","nodeType":"IdentifierPath","referencedDeclaration":9,"src":"1818:2:0"},"referencedDeclaration":9,"src":"1818:2:0","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"value":{"arguments":[{"id":128,"name":"VM_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124,"src":"1847:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":127,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"1844:2:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Vm_$9_$","typeString":"type(contract Vm)"}},"id":129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1844:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"visibility":"internal"},{"id":189,"nodeType":"FunctionDefinition","src":"1948:312:0","nodes":[],"body":{"id":188,"nodeType":"Block","src":"1975:285:0","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"636f6e74726163742061646472","id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1997:15:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa50728770d00fe8f6a0592f3565bbfaf063ee4077f1f5bbc003d091d33cd0c4","typeString":"literal_string \"contract addr\""},"value":"contract addr"},{"arguments":[{"id":140,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2022:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}],"id":139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2014:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:0","typeDescriptions":{}}},"id":141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2014:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_fa50728770d00fe8f6a0592f3565bbfaf063ee4077f1f5bbc003d091d33cd0c4","typeString":"literal_string \"contract addr\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"1985:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":108,"src":"1985:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1985:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":143,"nodeType":"ExpressionStatement","src":"1985:43:0"},{"expression":{"arguments":[{"hexValue":"636f6e7472616374206e6f6e6365","id":147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2050:16:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_3a23091615a5de8c0a35ffd8857a37e2c4e0b72f3ef8a34d6caf65efcd562e2f","typeString":"literal_string \"contract nonce\""},"value":"contract nonce"},{"arguments":[{"arguments":[{"id":152,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2088:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ScriptExample_$190","typeString":"contract ScriptExample"}],"id":151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2080:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":150,"name":"address","nodeType":"ElementaryTypeName","src":"2080:7:0","typeDescriptions":{}}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2080:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":148,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2068:2:0","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"id":149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNonce","nodeType":"MemberAccess","referencedDeclaration":8,"src":"2068:11:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint64_$","typeString":"function (address) view external returns (uint64)"}},"id":154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2068:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3a23091615a5de8c0a35ffd8857a37e2c4e0b72f3ef8a34d6caf65efcd562e2f","typeString":"literal_string \"contract nonce\""},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":144,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2038:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":91,"src":"2038:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256) pure"}},"id":155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2038:57:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":156,"nodeType":"ExpressionStatement","src":"2038:57:0"},{"expression":{"arguments":[{"hexValue":"73656e6465722061646472","id":160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2117:13:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_8125ca2decf812b25b65606ff16dad37cb198ff0433485a7926e50feafacfc35","typeString":"literal_string \"sender addr\""},"value":"sender addr"},{"arguments":[{"expression":{"id":163,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2140:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2140:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2132:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"2132:7:0","typeDescriptions":{}}},"id":165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2132:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8125ca2decf812b25b65606ff16dad37cb198ff0433485a7926e50feafacfc35","typeString":"literal_string \"sender addr\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":157,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2105:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":108,"src":"2105:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2105:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":167,"nodeType":"ExpressionStatement","src":"2105:47:0"},{"expression":{"arguments":[{"hexValue":"73656e646572206e6f6e6365","id":171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2174:14:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_db7deb43f2f9e0404016de53b7e64c4976b54149581f7534daae2551e8cf4e40","typeString":"literal_string \"sender nonce\""},"value":"sender nonce"},{"arguments":[{"arguments":[{"expression":{"id":176,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2210:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2210:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2202:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":174,"name":"address","nodeType":"ElementaryTypeName","src":"2202:7:0","typeDescriptions":{}}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2202:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":172,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2190:2:0","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$9","typeString":"contract Vm"}},"id":173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNonce","nodeType":"MemberAccess","referencedDeclaration":8,"src":"2190:11:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint64_$","typeString":"function (address) view external returns (uint64)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2190:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_db7deb43f2f9e0404016de53b7e64c4976b54149581f7534daae2551e8cf4e40","typeString":"literal_string \"sender nonce\""},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":168,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2162:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":91,"src":"2162:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256) pure"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":181,"nodeType":"ExpressionStatement","src":"2162:61:0"},{"expression":{"arguments":[{"hexValue":"646f6e6521","id":185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2245:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_080382d5c9e9e7c5e3d1d33f5e7422740375955180fadff167d8130e0c35f3fc","typeString":"literal_string \"done!\""},"value":"done!"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_080382d5c9e9e7c5e3d1d33f5e7422740375955180fadff167d8130e0c35f3fc","typeString":"literal_string \"done!\""}],"expression":{"id":182,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109,"src":"2233:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$109_$","typeString":"type(library console)"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log","nodeType":"MemberAccess","referencedDeclaration":74,"src":"2233:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2233:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":187,"nodeType":"ExpressionStatement","src":"2233:20:0"}]},"documentation":{"id":131,"nodeType":"StructuredDocumentation","src":"1865:78:0","text":"@notice example function, runs through basic cheat-codes and console logs."},"functionSelector":"c0406226","implemented":true,"kind":"function","modifiers":[],"name":"run","nameLocation":"1957:3:0","parameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"1960:2:0"},"returnParameters":{"id":133,"nodeType":"ParameterList","parameters":[],"src":"1975:0:0"},"scope":190,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[],"canonicalName":"ScriptExample","contractDependencies":[],"contractKind":"contract","documentation":{"id":110,"nodeType":"StructuredDocumentation","src":"1562:126:0","text":"@title ScriptExample\n @notice ScriptExample is an example script. The Go forge script code tests that it can run this."},"fullyImplemented":true,"linearizedBaseContracts":[190],"name":"ScriptExample","nameLocation":"1697:13:0","scope":191,"usedErrors":[]}],"license":"MIT"},"id":0}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment